{"version":3,"file":"shared-lib.BK-G6oMF.mjs","names":["l$2","l","c","s","i","r","v","b","w$1","$","m","S","h","x$1","d","y$1","A","T","E","x","R","N","B","V","z","U","K","O","j","H","ee","te","ue","F","G","ie","se","_","de","fe","Q$1","R$1","T$1","U$1","ce","V$1","W$1","ae","re","ne","Y$1","oe","X$1","I","le","Z$1","k","p","t","u","w","y","C","D","et","J","L","M","P","Q","W","X","Y","Z","fd","n","e","e.default","a","o","f","g","e","t","n","r","i","l","d","f","s","m","i","v","_","h","g","b","y","x","E","D","O","k","A","c","j","N","P","F","I","L","R","ee","z","B","V","H","U","W","G","K","q","J","Y","n","e","e.default","r","t","t.default","a","u","p","S","C","w","T","o","M","X","Z","Q","te","ne","re","ie","ae","oe","se","ce","$","le","ue","de","fe","e","t","n","r","i","l","d","f","s","m","i","v","_","h","g","b","y","x","E","D","O","k","A","c","j","N","P","F","I","L","R","z","B","V","H","U","W","G","K","q","J","Y","n","e","e.default","r","t","t.default","a","u","p","S","C","w","T","o","M","X","Z","Q","$","useMemo","useState","riveWebGL","riveCanvas","useRef","RenderTarget","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","React.useRef","React.useId","SVG","RichText","UtilsComponentMessage","generateUUID","_lut","clamp","euclideanModulo","lerp","denormalize","normalize","arrayNeedsUint32","createElementNS","createCanvasElement","warnOnce","_cache","LinearSRGBColorSpace","SRGBToLinear","LinearToSRGB","LinearTransfer","SRGBColorSpace","SRGBTransfer","serializeImage","ImageUtils","satForAxes","_testAxis","hue2rgb","_intersectionPointWorld","checkGeometryIntersection","_vA$1","_vB$1","_vC$1","_intersectionPoint","Vector3","Triangle","Vector2","cloneUniforms","mergeUniforms","cloneUniformsGroups","getUnlitUniformColorSpace","ColorManagement","convertArray","isTypedArray","AlphaFormat","LuminanceFormat","LuminanceAlphaFormat","RedFormat","RedIntegerFormat","RGFormat","RGIntegerFormat","RGBAFormat","RGBAIntegerFormat","RGB_S3TC_DXT1_Format","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT3_Format","RGBA_S3TC_DXT5_Format","RGB_PVRTC_2BPPV1_Format","RGBA_PVRTC_2BPPV1_Format","RGB_PVRTC_4BPPV1_Format","RGBA_PVRTC_4BPPV1_Format","RGB_ETC1_Format","RGB_ETC2_Format","RGBA_ETC2_EAC_Format","RGBA_ASTC_4x4_Format","RGBA_ASTC_5x4_Format","RGBA_ASTC_5x5_Format","RGBA_ASTC_6x5_Format","RGBA_ASTC_6x6_Format","RGBA_ASTC_8x5_Format","RGBA_ASTC_8x6_Format","RGBA_ASTC_8x8_Format","RGBA_ASTC_10x5_Format","RGBA_ASTC_10x6_Format","RGBA_ASTC_10x8_Format","RGBA_ASTC_10x10_Format","RGBA_ASTC_12x10_Format","RGBA_ASTC_12x12_Format","RGBA_BPTC_Format","RGB_BPTC_SIGNED_Format","RGB_BPTC_UNSIGNED_Format","RED_RGTC1_Format","SIGNED_RED_RGTC1_Format","RED_GREEN_RGTC2_Format","SIGNED_RED_GREEN_RGTC2_Format","UnsignedByteType","ByteType","UnsignedShortType","ShortType","HalfFloatType","UnsignedShort4444Type","UnsignedShort5551Type","UnsignedIntType","IntType","FloatType","REVISION","FrontSide","BackSide","NoBlending","NormalBlending","AddEquation","SrcAlphaFactor","OneMinusSrcAlphaFactor","LessEqualDepth","MultiplyOperation","AttachedBindMode","DetachedBindMode","UVMapping","CubeReflectionMapping","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestFilter","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","UnsignedInt248Type","DepthFormat","DepthStencilFormat","InterpolateDiscrete","InterpolateLinear","InterpolateSmooth","ZeroCurvatureEnding","ZeroSlopeEnding","WrapAroundEnding","BasicDepthPacking","RGBADepthPacking","TangentSpaceNormalMap","NoColorSpace","KeepStencilOp","AlwaysStencilFunc","StaticDrawUsage","GLSL3","WebGLCoordinateSystem","WebGPUCoordinateSystem","EventDispatcher","DEG2RAD","RAD2DEG","Matrix3","_m3","_canvas","_sourceId","Source","_textureId","Texture","Vector4","RenderTarget","WebGLRenderTarget","DataArrayTexture","Data3DTexture","Quaternion","_quaternion$4","_vector$c","Box3","_vector$b","_box$4","_center","_v1$7","_v0$2","_v2$4","_f0","_f1","_f2","_extents","_triangleNormal","_points","_box$3","_v1$6","_v2$3","Sphere","_vector$a","_segCenter","_segDir","_diff","_edge1","_edge2","_normal$1","Ray","Matrix4","_v1$5","_zero","_one","_z","_x","_y","_m1$2","_quaternion$3","Euler","Layers","_object3DId","_v1$4","_q1","_m1$1","_target","_position$3","_scale$2","_quaternion$2","_xAxis","_yAxis","_zAxis","_addedEvent","_removedEvent","Object3D","_v0$1","_v1$3","_v2$2","_v3$2","_vab","_vac","_vbc","_vap","_vbp","_vcp","_colorKeywords","_hslA","_hslB","Color","_color","_materialId","Material","MeshBasicMaterial","_vector$9","_vector2$1","_id$2","BufferAttribute","Uint16BufferAttribute","Uint32BufferAttribute","Float32BufferAttribute","_id$1","_m1","_obj","_offset","_box$2","_boxMorphTargets","_vector$8","BufferGeometry","_inverseMatrix$3","_ray$3","_sphere$6","_sphereHitAt","_tempA","_morphA","Mesh","BoxGeometry","UniformsUtils","default_vertex","default_fragment","ShaderMaterial","Camera","_v3$1","_minTarget","_maxTarget","PerspectiveCamera","fov","aspect","CubeCamera","CubeTexture","WebGLCubeRenderTarget","Group","_moveEvent","WebXRController","Scene","_basePosition","_skinIndex","_skinWeight","_vector3","_matrix4","_vertex","_sphere$5","_inverseMatrix$2","_ray$2","SkinnedMesh","Bone","DataTexture","_offsetMatrix","_identityMatrix","Skeleton","_vector1","_vector2","_normalMatrix","Plane","_sphere$3","_vector$6","Frustum","DepthTexture","PlaneGeometry","ShadowMaterial","MeshStandardMaterial","MeshDepthMaterial","MeshDistanceMaterial","Interpolant","CubicInterpolant","LinearInterpolant","DiscreteInterpolant","KeyframeTrack","BooleanKeyframeTrack","ColorKeyframeTrack","NumberKeyframeTrack","QuaternionLinearInterpolant","QuaternionKeyframeTrack","StringKeyframeTrack","VectorKeyframeTrack","LoadingManager","DefaultLoadingManager","Loader","Light","_projScreenMatrix$1","_lightPositionWorld$1","_lookTarget$1","LightShadow","OrthographicCamera","DirectionalLightShadow","DirectionalLight","AmbientLight","ArrayCamera","_RESERVED_CHARS_RE","_reservedRe","_wordChar","_wordCharOrDot","_directoryRe","_nodeRe","_objectRe","_propertyRe","_trackRe","_supportedObjectNames","Composite","PropertyBinding","WebGLAnimation","WebGLAttributes","WebGLBackground","Color","Mesh","BoxGeometry","ShaderMaterial","cloneUniforms","ShaderLib","_m1$1","ColorManagement","SRGBTransfer","PlaneGeometry","_rgb","getUnlitUniformColorSpace","WebGLBindingStates","WebGLBufferRenderer","WebGLCapabilities","WebGLClipping","Plane","Matrix3","WebGLCubeMaps","WebGLCubeRenderTarget","_createPlanes","LOD_MIN","EXTRA_LOD_SIGMA","BufferGeometry","BufferAttribute","_createRenderTarget","WebGLRenderTarget","_setViewport","_getBlurShader","MAX_SAMPLES","Vector3","_getCommonVertexShader","_getEquirectMaterial","_getCubemapMaterial","WebGLCubeUVMaps","PMREMGenerator","WebGLExtensions","WebGLGeometries","arrayNeedsUint32","Uint32BufferAttribute","Uint16BufferAttribute","WebGLIndexedBufferRenderer","WebGLInfo","WebGLMorphtargets","Vector4","DataArrayTexture","FloatType","Vector2","WebGLObjects","flatten","arrayCacheF32","arraysEqual","copyArray","allocTexUnits","arrayCacheI32","setValueV1f","setValueV2f","setValueV3f","setValueV4f","setValueM2","mat2array","setValueM3","mat3array","setValueM4","mat4array","setValueV1i","setValueV2i","setValueV3i","setValueV4i","setValueV1ui","setValueV2ui","setValueV3ui","setValueV4ui","setValueT1","emptyShadowTexture","emptyTexture","setValueT3D1","empty3dTexture","setValueT6","emptyCubeTexture","setValueT2DArray1","emptyArrayTexture","getSingularSetter","setValueV1fArray","setValueV2fArray","setValueV3fArray","setValueV4fArray","setValueM2Array","setValueM3Array","setValueM4Array","setValueV1iArray","setValueV2iArray","setValueV3iArray","setValueV4iArray","setValueV1uiArray","setValueV2uiArray","setValueV3uiArray","setValueV4uiArray","setValueT1Array","setValueT3DArray","setValueT6Array","setValueT2DArrayArray","getPureArraySetter","addUniform","parseUniform","RePathPart","SingleUniform","PureArrayUniform","StructuredUniform","WebGLShader","handleSource","getEncodingComponents","LinearTransfer","getShaderErrors","getTexelEncodingFunction","getToneMappingFunction","_v0","generateVertexExtensions","filterEmptyLine","generateDefines","fetchAttributeLocations","replaceLightNums","replaceClippingPlaneNums","resolveIncludes","includePattern","includeReplacer","ShaderChunk","shaderChunkMap","unrollLoops","unrollLoopPattern","loopReplacer","generatePrecision","generateShadowMapTypeDefine","generateEnvMapTypeDefine","generateEnvMapModeDefine","generateEnvMapBlendingDefine","generateCubeUVSize","WebGLProgram","WebGLUniforms","COMPLETION_STATUS_KHR","WebGLPrograms","Layers","WebGLShaderCache","LinearSRGBColorSpace","UniformsUtils","WebGLProperties","painterSortStable","reversePainterSortStable","WebGLRenderList","WebGLRenderLists","UniformsCache","ShadowUniformsCache","shadowCastingAndTexturingLightsFirst","WebGLLights","Matrix4","UniformsLib","WebGLRenderState","WebGLRenderStates","WebGLShadowMap","Frustum","MeshDepthMaterial","RGBADepthPacking","MeshDistanceMaterial","vertex","fragment","NearestFilter","WebGLState","WebGLTextures","createElementNS","RepeatWrapping","ClampToEdgeWrapping","MirroredRepeatWrapping","NearestMipmapNearestFilter","NearestMipmapLinearFilter","LinearFilter","LinearMipmapNearestFilter","LinearMipmapLinearFilter","DepthStencilFormat","WebGLUtils","WebGLMaterials","_m1","WebGLUniformsGroups","Euler","_flatCamera","OrthographicCamera","_clearColor","_oldTarget","_oldActiveCubeFace","_oldActiveMipmapLevel","PHI","INV_PHI","_axisDirections","HalfFloatType","RGBAFormat","PerspectiveCamera","MeshBasicMaterial","Texture","DepthTexture","Data3DTexture","CubeTexture","programIdCount","_id","WebGLShaderStage","nextVersion","_occlusion_vertex","_occlusion_fragment","WebXRDepthSensing","WebXRManager","EventDispatcher","ArrayCamera","WebXRController","UnsignedByteType","DepthFormat","UnsignedInt248Type","UnsignedIntType","RAD2DEG","WebGLRenderer","createCanvasElement","SRGBColorSpace","WebGLCoordinateSystem","mapLinear","extractDefaultValue","cssVariableRegex","RepeatWrapping","useRef","RenderTarget","useState","useCallback","BoxGeometry","Vector3","Uint16BufferAttribute","Float32BufferAttribute","Scene","PerspectiveCamera","WebGLRenderer","Bone","Skeleton","MeshStandardMaterial","Color","SkinnedMesh","Group","AmbientLight","DirectionalLight","ShadowMaterial","Mesh","PlaneGeometry","Texture","LinearFilter","SRGBColorSpace","RGBAFormat","axisY","Quaternion","containerStyles","emptyStateStyle","defaultEvents","useMemo","useMemo","RenderTarget","useMemo","getProps","useRef","useCallback","useState","SrcType","RenderTarget","useMemo","defaultEvents","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","Image1","fonts","css","className","ImageOrVideoFonts","ImageOrVideo","serializationHash","variantClassNames","transition1","addImageAlt","matchVariant","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","sharedStyle.css","sharedStyle.fonts","clamp","useMemo","useState","DESK_LIGHT_VERSION","ATTACH_INTERVAL","ATTACH_TIMEOUT","useRef","useLayoutEffect","useEffect","srcOf","useRef","RenderTarget","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","transformTemplate1","transformTemplate2","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","Image1","React.useRef","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","transformTemplate1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","Image1","SVG","RichText","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","transformTemplate1","transformTemplate2","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","Image1","SVG","RichText","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","transformTemplate1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","Image1","SVG","RichText","addPropertyOverrides","Project_Page1","TeamLausanne","MultichainZ","cycleOrder","serializationHash","variantClassNames","transition1","matchVariant","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","Image1","SVG","RichText","ImageOrVideoFonts","ImageOrVideo","serializationHash","variantClassNames","transition1","addImageAlt","matchVariant","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","useRef","useState","RenderTarget","ImageOrVideo","serializationHash","variantClassNames","transition1","addImageAlt","matchVariant","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","Icon","useMemo","Icon","useRef","useState","HouseFactory","React","RenderTarget","fonts","css","className","Phosphor","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","Image1","sharedStyle.css","sharedStyle.fonts","mask","SVG","getProps","Icon","React.forwardRef","RenderTarget","useState","useMemo","clamp","smoothstep","Node","useReducer","useRef","React__default","React.useRef","DEFAULTS","React.useContext","React.useState","React.useCallback","useState","useMemo","useEffect","React.useId","React.useMemo","React.Fragment","AudioContext","useLayoutEffect","React.useLayoutEffect","React.useEffect","React.Component","React.version","React.createContext","React.Suspense","T","useContext","useCallback","Fragment","hash","RenderTarget","useState","useRef","Canvas","_Fragment","mask","SVG","getProps","Icon","React.forwardRef","mask","SVG","getProps","Icon","React.forwardRef","mask","SVG","getProps","Icon","React.forwardRef","mask","SVG","getProps","Icon","React.forwardRef","mask","SVG","getProps","Icon","React.forwardRef","mask","SVG","getProps","Icon","React.forwardRef","mask","SVG","getProps","Icon","React.forwardRef","mask","SVG","getProps","Icon","React.forwardRef","fonts","css","className","addPropertyOverrides","enabledGestures","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","Download1","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","sharedStyle.css","sharedStyle.fonts","fonts","css","className","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","sharedStyle.css","sharedStyle.fonts","fonts","css","className","getProps","React.forwardRef","addPropertyOverrides","enabledGestures","serializationHash","variantClassNames","transition1","transformTemplate1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","Jira","createLayoutDependency","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","sharedStyle.css","sharedStyle.fonts","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","MotionDivWithFX","Stats","DownloadCV","Experience","MotionDivWithFXWithOptimizedAppearEffect","TechStackLogo","Awards","Lanyard","serializationHash","variantClassNames","transition1","animation","transition2","animation1","animation2","animation3","animation4","animation5","matchVariant","addImageAlt","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","Download","Figma","Framer","Webflow","Rive","Blender","Adobephotoshop","Adobeillustrator","Claude","useRef","hash","useMemo","RenderTarget","useState","NeonGlow","useRef","_Fragment","useRef","_Fragment","addPropertyOverrides","enabledGestures","cycleOrder","serializationHash","variantClassNames","transition1","transition2","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","__FramerMetadata__","NeonGlowFonts","NeonGlow","NavLinkFonts","NavLink","NavLinkInfo","SmartComponentScopedContainerWithFXWithOptimizedAppearEffect","serializationHash","variantClassNames","transition1","animation","animation1","matchVariant","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","useState","useRef","RenderTarget","useCallback","useMemo","useRef","useState","_Fragment","addPropertyOverrides","enabledGestures","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","addPropertyOverrides","enabledGestures","cycleOrder","serializationHash","variantClassNames","transition1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","__FramerMetadata__","addPropertyOverrides","cycleOrder","serializationHash","variantClassNames","transition1","transformTemplate1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","RichText","Image1","addPropertyOverrides","Nav_Link","Nav_LinkInfo","NavLinks","MotionDivWithFX","Navbar_Eyes","GooeyEffect","Button","NeonGlow1","NavLink","NavLinkInfo","cycleOrder","serializationHash","variantClassNames","transition1","matchVariant","animation","transformTemplate1","Transition","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","React.useRef","SVG","_Fragment","Image1","fonts","css","className","serializationHash","variantClassNames","transition1","React.useContext","React.useMemo","humanReadableVariantMap","React.Fragment","getProps","React.forwardRef","useRef","React.useId","sharedStyle.className","RichText","sharedStyle.css","sharedStyle.fonts","srcOf","useNight","STORE_VERSION","useSyncExternalStore","RenderTarget","useRef","useState","tip","TIP_VERSION","STORE_VERSION","useIsNight","useSyncExternalStore","RenderTarget","useRef","useState","useCallback","useNight","useSyncExternalStore","useIsNight","mix","clamp01","RenderTarget","useRef","useState","useCallback","TIP_VERSION","readDeskLight","hexToRgb","RenderTarget","useState","useRef","useCallback","_Fragment","useState","useRef","RenderTarget","STORE_VERSION","_Fragment","React.useRef","React.useState","RenderTarget","STORE_VERSION","RenderTarget","useState","useRef","useState","usePortalHost","STORE_VERSION","useRef","useCallback","MIN_W","MIN_H","_Fragment","clamp","useState","useMemo","useRef","useCallback","_Fragment","STORE_VERSION","useIsNight","useSyncExternalStore","NOOP","FALSE","RenderTarget","useState","useRef","useState","useRef","useCallback","_Fragment","useState","useRef","RenderTarget","_Fragment","useState","useMemo","useSyncExternalStore","w","RenderTarget","useRef","useState","useCallback","_Fragment","STORE_VERSION","React.useRef","React.useState","RenderTarget","React.useMemo","React.useCallback","FONTS","useSyncExternalStore","RenderTarget","useState","fonts","css","className","metadata","siteMetadata","__FramerMetadata__","Navbar","Eyebrow","RichText","Portefolio_V2","Image1","Polaroid","About","Case_Lausanne","Case_Streva","Case_Nebularis","StickerPeeling","EasterEgg","React.forwardRef","useRef","React.useId","React.useMemo","metadataProvider","sharedStyle.className","sharedStyle1.className","React.useContext","React.useRef","className","PropertyOverrides","React.Fragment","SVG","sharedStyle.css","sharedStyle1.css","sharedStyle.fonts","sharedStyle1.fonts","__FramerMetadata__","__FramerMetadata__"],"sources":["https:/ga.jspm.io/npm:react-dom@18.2.0/server.browser.js","https:/ga.jspm.io/npm:@rive-app/canvas@2.38.5/rive.js","https:/ga.jspm.io/npm:@rive-app/react-canvas@4.29.5/dist/index.js","https:/ga.jspm.io/npm:@rive-app/webgl2@2.38.5/rive.js","https:/ga.jspm.io/npm:@rive-app/react-webgl2@4.29.5/dist/index.js","https:/framerusercontent.com/modules/FYhRUfK47x1b4scDC0wi/ldRgwsJeGArd2bf0gWfV/RivePlayer_vX.js","https:/framerusercontent.com/modules/fMDE7Cqb2uOvQFAHEP2m/cRfVFRl0izzBulKFjOAe/W7oLCU4_B.js","https:/framer.com/m/Utils-Component-Message-ZVoG.js@cRfVFRl0izzBulKFjOAe","https:/framerusercontent.com/modules/aej5zpwxBpkMdzOteBwy/DWeAZ5wauvGM5oFwVdgS/Utils.js","https:/framer.com/m/Utils-FINc.js","https:/cdn.jsdelivr.net/npm/three@0.174.0/build/three.core.js","https:/cdn.jsdelivr.net/npm/three@0.174.0/build/three.module.js","https:/framerusercontent.com/modules/vrPzkqvimRd4wsTD6LxB/ATOQMEYyoBdJLNx7e6fj/Sticker_prod.js","https:/framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js","https:/framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js","https:/framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js","https:/framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js","https:/framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js","https:/framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js","https:/framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js","https:/framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js","https:/framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js","https:/framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js","https:/framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js","https:/framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js","https:/framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js","https:/framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js","https:/framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js","https:/framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/I6H5ZhUPA8PwvfVPIGXQ/Video.js","https:/framerusercontent.com/modules/6a55BpVDpKc43yB6oyqF/0UCzURSZXkMamlkv1D1I/zF1nofZnl.js","https:/framerusercontent.com/modules/SVc078NjbsUQ3C2VaErD/BbMhThOyTzMqgsiHo4bq/syzFyH9j3.js","https:/framerusercontent.com/modules/AcalmVONwffgsTbDNyuJ/EV89Zw5QDaJqE4gIJYnJ/bg2TieKfw.js","https:/framerusercontent.com/modules/oR7hmpMJhHauyYjOe9pm/oNbLrfbSnOKruFPtLrbP/DragPhysics_7.js","https:/framerusercontent.com/modules/IY58ppeKimCmneHKfx1K/VajG83u7IWYEau4Q0yWE/HoverReveal.js","https:/framerusercontent.com/modules/0QnSj8044a9ONo56iWNk/SONAQ16wLzD01LcqNHUn/CN54g_ttF.js","https:/framerusercontent.com/modules/zqgIQBXawqypSbToMYTz/YvFAycqftQJTi25KMR95/WindowTriggers.js","https:/framerusercontent.com/modules/i0iTvNIfp0wh7pNurpJN/a9EBPiNqPGTKNEHXGSYZ/CSjIChuq3.js","https:/framerusercontent.com/modules/YZTZr6GJ4Q9UCh5zjoIb/PLaoTDr3Aujuji7jr3cp/PpzAzD1yq.js","https:/framerusercontent.com/modules/U9uTSpRsnBRWJTvrurlr/rUabSwIwTiCBLbzeZj55/pyGFDNCIC.js","https:/framerusercontent.com/modules/B9IM0f3olil9zoSgzXD7/bTkZ0Q7Nuo9KLFhZzbO7/E1OqLRJyc.js","https:/framerusercontent.com/modules/vqAFrauC1sEDICdl5q9q/Jug3O5Uv0QtPZn3ktToA/EKP6NpKo4.js","https:/framerusercontent.com/modules/Dj2xoLlKT2pWyE9x2GFn/UfRPPfXUJBGdKusumfY4/CaseMedia.js","https:/framerusercontent.com/modules/Ti5uhjaPf94o3RuH08y1/dxXzVtZLIYwk1wJ4LOOw/FM4N8dqRT.js","https:/framerusercontent.com/modules/DyldKav0OOAWR3bCAlhK/8c3l9FzyOlGpbPncYhfc/nullstate.js","https:/framer.com/m/framer/icon-nullstate.js@0.7.0","https:/framerusercontent.com/modules/Qc8yuHkQmGO0kFiSWbkX/rVmMAFttOHuuiwSg6KjZ/House.js","https:/framer.com/m/phosphor-icons/House.js@0.0.57","https:/framerusercontent.com/modules/Ma20hU0GGRxLxZphbywl/OSpwWF91FHPVFyQJjMHt/utils.js","https:/framerusercontent.com/modules/tYScH7LTqUtz5KUaUAYP/p8dptk4UIND8hbFWz9V7/Phosphor.js","https:/framerusercontent.com/modules/aT9JHLtlD7EoJCjfZIrQ/mLb49f4qBayTNdxDANIC/RljaWjGmW.js","https:/framerusercontent.com/modules/QCbg3z6X2QxKo87NSE9f/ceCZs4dHx1OvoTTBC7NS/OzNKd05yb.js","https:/framerusercontent.com/modules/0xySQH8fvGGUCaNup3eY/BFB7ldZF3xBqPrqDKAxi/F7u8USv4w.js","https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js","https:/cdn.jsdelivr.net/gh/madebyisaacr/framer-university/files/lanyard.js","https:/framerusercontent.com/modules/2yubH7XCj0lNQM2KgO3a/Hd0fNQu5yff7kiB1tMm3/Lanyard_Prod.js","https:/framerusercontent.com/modules/aJE25NDq7NHMuFlSd6AB/AM3XIc5TYFsevDOk2FcW/EX6zeZSFI.js","https:/framerusercontent.com/modules/aumOm9OYhiH8tUFuHCog/04Mox71s2rKjktnvgVoe/TaUWSD3i5.js","https:/framerusercontent.com/modules/bYqisRDjItwaY0bOdnh8/cysfpX1xyKw7XQRV2Dsl/Y_T9Czc2t.js","https:/framerusercontent.com/modules/DdnswhdKoWukYYvP2SZq/r4zLjSIlACWbp3JTLcoe/u8F4E5kMi.js","https:/framerusercontent.com/modules/HWllFAzoknPMZ1Rm6jj6/fo4nSJxuFXsrABM33SP6/zTzsnIuYv.js","https:/framerusercontent.com/modules/k0CLIfSQAWH8ACagDu6x/Y6diechySrEnN6WHtiXy/YC_MuDD_8.js","https:/framerusercontent.com/modules/K0twZOZJKirwshgvz0b4/WK3oo0fKHvO2YSzWHFyq/pGOHj20yw.js","https:/framerusercontent.com/modules/kBkaj3LmBqcSU2IkUsBC/uaFLaKvU3aNJkwvPcVLe/Download.js","https:/framerusercontent.com/modules/Th7yItNlSWj2POy3mPQ0/6VWmNM3eqPviCEITfIsw/Bwzidm_eP.js","https:/framerusercontent.com/modules/dClKXvGAPVDLm2UwJ6Bc/vdHvzkpGNeNPmPL5kJgh/INY2J0Ntc.js","https:/framerusercontent.com/modules/qhYWuBkZxgtZo70o4njv/c8d55kAmhNDh7fQb0U6g/x2ZOZtrtQ.js","https:/framerusercontent.com/modules/nWXDfqkhNqGPhGb4I5On/y330Lw5AEk21y6V29ocP/VSbnu1hxE.js","https:/framerusercontent.com/modules/T4nyMfbF2DkySElHoVKf/f69Qvbkc7TvOHPdaV9IK/ur0mlyhQZ.js","https:/framerusercontent.com/modules/2z1LAayU89TtN34qcAvL/WipFcG3Y6Git8QHrTVIe/xYEC_wF3E.js","https:/framerusercontent.com/modules/lNH0tDOBde37KdhXfvGY/ybzRjw5z6zZdN4cfalxR/FTchGdtjO.js","https:/framerusercontent.com/modules/xObscYEc2Q3bK7tUfR0V/aeTebhOmX3iKMZBrlNlP/ubaGHlmVl.js","https:/framerusercontent.com/modules/tuawbfIPL0vBiySeln5T/SzylwYGW4Jv5IROC388y/GkACE400V.js","https:/framerusercontent.com/modules/LLuL0ZLQhwHqeXxzZcon/Fz0P04arsrtxydLjnNTK/ZLKkjUR7r.js","https:/framerusercontent.com/modules/DQFbzGttPKlMwy71Uc9k/3MiwR561SDAMqbaUGcxk/RzNEenUYo.js","https:/framerusercontent.com/modules/F4MfArLyripoeG7R4oNS/S5zw6PeyO8cUQIM98bdg/Gooey_Prod.js","https:/framerusercontent.com/modules/qASPtlF0hiJ1sCO4vARn/mSUyjDLk1ZwRj2FeOHSp/Glow.js","https:/framerusercontent.com/modules/GHwHT69casAsAJCijBP3/XZ7UsWcsT12G0xoelo9b/NeonGlow.js","https:/framerusercontent.com/modules/9fT3ZordlLGGPLs3y5v6/EMnCbwtnYs5I8qtf18yT/UMtXt1P8M.js","https:/framerusercontent.com/modules/l96pCBPgyHG38DdSpB01/Azoh8hpkyUCEgUt8GaU8/tXQFbbVGV.js","https:/framerusercontent.com/modules/vaRusbVGqjv3Ywug57xz/x2RTgWMXHvMg5WdVTj8A/CopyEmail.js","https:/framerusercontent.com/modules/vwL6IwR6scW2vGorjVhu/xbEcvuZzDwPdm6fPSZvh/FollowEyes_1.js","https:/framerusercontent.com/modules/Hjjvw6e2akREX2nac6G8/NYHQrT74oHQS87lrzWfO/wEW9DTaME.js","https:/framerusercontent.com/modules/ZlD6OiHUJhi1WRkfM2El/fvLyGN35H6a4OO8XWbIa/xF4HQVRlJ.js","https:/framerusercontent.com/modules/sayZQIzKqySm3EDFnwWZ/2pm5HzmqAoDzy0yY8G2O/xZuxTX1Ym.js","https:/framerusercontent.com/modules/5irIiXpQOvKCbF62vrw0/QvllwMUBrGr5ffWWueC5/T43_9icFM.js","https:/framerusercontent.com/modules/1eGBMiNtSMygJegnlyYN/vA3UK2eD3ay72qX8bn22/DU5VDI_MK.js","https:/framerusercontent.com/modules/3hd5KlioRKTpIviMSgZS/NNnGDj9H9dLgumQaw2im/V_54WsRbm.js","https:/framerusercontent.com/modules/Vu2brJnnseDy5ndf50ZK/mMPVic6tqD83uZddOR6s/Ambience.js","https:/framerusercontent.com/modules/hQiMbFGdDvUjQPA7mi05/dxvgthKQVqtQxRbABoV9/BlankZone.js","https:/framerusercontent.com/modules/mY5wK01fsGvdTqY1IcpB/aHala6FQwV45NgxB102L/BumperPlate.js","https:/framerusercontent.com/modules/NBAYQzdLcccUT4rpz8fA/9V4xWkuqLUVl7tZSIwy9/CRTTV.js","https:/framerusercontent.com/modules/924rHC75J19PwZIn4gjN/j3lHHSr7MYn7PdpernD3/CursorTip.js","https:/framerusercontent.com/modules/tq2ZDb9QBWYhlNf7t8jE/Y3BTyHteDFJCXyKZiBvW/DeskCopy.js","https:/framerusercontent.com/modules/11jJpnaXrkaFupycTGkf/FhlKbB0EPqBzNi2Uov1E/DeskGridLoader.js","https:/framerusercontent.com/modules/quKQt8GARaIhHlZzYNhb/AjkHQ4qn4X6dg8gr5xaC/DeskLight.js","https:/framerusercontent.com/modules/s6dkS95RrFHMSzq1wZoi/tZoqAIOXJB5iQjMktA1E/DeskWindow.js","https:/framerusercontent.com/modules/oGuDggXJoWq7JGWpVM1C/D8sjbcQVOZxdXLYLIu7Z/GameBoyCompanion.js","https:/framerusercontent.com/modules/NPrnJ5SbQVIZ6gsBBoSs/naRlAQiQTFXda875qf0b/Lamp.js","https:/framerusercontent.com/modules/QWpfjO787vGncdyf4Uzy/Z2q7E5svzsqhzW23t8a5/ManifestoWindow.js","https:/framerusercontent.com/modules/vDSOWKbOPOZlLd7Won7R/qBwYJFcmG4ptmga4CbYf/MobileNotice.js","https:/framerusercontent.com/modules/zys1r630DhIOaKCWmk3Q/v55tIKJvyeTXYmZPapve/OpenManifesto.js","https:/framerusercontent.com/modules/SlN5iRe7Tr7xRvhC3oBo/a7jjPlA6G5gbPrAFIV3A/PlantNight.js","https:/framerusercontent.com/modules/Ji3MbBrS0Qox3RZMU1e4/pgQtUpOcCoQ7CEBibpmu/Turntable.js","https:/framerusercontent.com/modules/vG3OgLIxLCKi4l9p0RGG/wrAu2cvtQfZvxuZL8qIH/VaporizeImageGL.js","https:/framerusercontent.com/modules/iXHfGLJAymu2Tj1k5fs0/1USt09ZZpAwRiK7pMuZh/Watch.js","https:/framerusercontent.com/modules/M8qzFW2mx3XANEHxwahR/fwbUXJEZRSdg5zz6wm0h/rVui4dYUr.js","https:/framerusercontent.com/modules/Ig01ZMdMSAdHDydYpwaj/SdvZ4FFtfSgBeUr1Ipa5/UN9fN7mvA.js","https:/framerusercontent.com/modules/vOjwxpQWV8L8Sv3bUhYn/pgAmvutxtkpg2mkQDGUi/siteMetadata.js","https:/framerusercontent.com/modules/5jnaCL2FMbJ2TFaX5AzB/xz4ljrF35DFWhAdEXRkL/augiA20Il.js","https:/framerusercontent.com/modules/npxNBJuqj9l08H0wFeua/p1ZOISnb2s1io2Tmgsko/augiA20Il.js","https:/framerusercontent.com/modules/5r5FlNqqwvQYKBXgdLGZ/m9J53drbnU1uiNzdnLgX/snippets.js","https:/framerusercontent.com/modules/7cPhjQw0EGNBHRZlzbhH/4hSO1fMoujYmMhk8FjXZ/NotFoundPage.js","https:/framer.com/m/framer/SitesNotFoundPage.js@1.4.0"],"sourcesContent":["import*as e from\"react\";var n=\"default\"in e?e.default:e;var a={};var o=n;function l$2(e){for(var n=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,a=1;a<arguments.length;a++)n+=\"&args[]=\"+encodeURIComponent(arguments[a]);return\"Minified React error #\"+e+\"; visit \"+n+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var l=Object.prototype.hasOwnProperty,i=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,s={},c={};function ja$1(e){if(l.call(c,e))return!0;if(l.call(s,e))return!1;if(i.test(e))return c[e]=!0;s[e]=!0;return!1}function r(e,n,a,o,l,i,s){this.acceptsBooleans=2===n||3===n||4===n;this.attributeName=o;this.attributeNamespace=l;this.mustUseProperty=a;this.propertyName=e;this.type=n;this.sanitizeURL=i;this.removeEmptyString=s}var d={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(e){d[e]=new r(e,0,!1,e,null,!1,!1)}));[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(e){var n=e[0];d[n]=new r(n,1,!1,e[1],null,!1,!1)}));[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(e){d[e]=new r(e,2,!1,e.toLowerCase(),null,!1,!1)}));[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(e){d[e]=new r(e,2,!1,e,null,!1,!1)}));\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(e){d[e]=new r(e,3,!1,e.toLowerCase(),null,!1,!1)}));[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(e){d[e]=new r(e,3,!0,e,null,!1,!1)}));[\"capture\",\"download\"].forEach((function(e){d[e]=new r(e,4,!1,e,null,!1,!1)}));[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(e){d[e]=new r(e,6,!1,e,null,!1,!1)}));[\"rowSpan\",\"start\"].forEach((function(e){d[e]=new r(e,5,!1,e.toLowerCase(),null,!1,!1)}));var f=/[\\-:]([a-z])/g;function la$1(e){return e[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(e){var n=e.replace(f,la$1);d[n]=new r(n,1,!1,e,null,!1,!1)}));\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(e){var n=e.replace(f,la$1);d[n]=new r(n,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)}));[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(e){var n=e.replace(f,la$1);d[n]=new r(n,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)}));[\"tabIndex\",\"crossOrigin\"].forEach((function(e){d[e]=new r(e,1,!1,e.toLowerCase(),null,!1,!1)}));d.xlinkHref=new r(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(e){d[e]=new r(e,1,!1,e.toLowerCase(),null,!0,!0)}));var h={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},g=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(h).forEach((function(e){g.forEach((function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1);h[n]=h[e]}))}));var b=/[\"'&<>]/;function v(e){if(\"boolean\"===typeof e||\"number\"===typeof e)return\"\"+e;e=\"\"+e;var n=b.exec(e);if(n){var a,o=\"\",l=0;for(a=n.index;a<e.length;a++){switch(e.charCodeAt(a)){case 34:n=\"&quot;\";break;case 38:n=\"&amp;\";break;case 39:n=\"&#x27;\";break;case 60:n=\"&lt;\";break;case 62:n=\"&gt;\";break;default:continue}l!==a&&(o+=e.substring(l,a));l=a+1;o+=n}e=l!==a?o+e.substring(l,a):o}return e}var m=/([A-Z])/g,S=/^ms-/,x=Array.isArray;function w$1(e,n){return{insertionMode:e,selectedValue:n}}function ra$1(e,n,a){switch(n){case\"select\":return w$1(1,null!=a.value?a.value:a.defaultValue);case\"svg\":return w$1(2,null);case\"math\":return w$1(3,null);case\"foreignObject\":return w$1(1,null);case\"table\":return w$1(4,null);case\"thead\":case\"tbody\":case\"tfoot\":return w$1(5,null);case\"colgroup\":return w$1(7,null);case\"tr\":return w$1(6,null)}return 4<=e.insertionMode||0===e.insertionMode?w$1(1,null):e}var $=new Map;function ta$1(e,n,a){if(\"object\"!==typeof a)throw Error(l$2(62));n=!0;for(var o in a)if(l.call(a,o)){var i=a[o];if(null!=i&&\"boolean\"!==typeof i&&\"\"!==i){if(0===o.indexOf(\"--\")){var s=v(o);i=v((\"\"+i).trim())}else{s=o;var c=$.get(s);void 0!==c||(c=v(s.replace(m,\"-$1\").toLowerCase().replace(S,\"-ms-\")),$.set(s,c)),s=c;i=\"number\"===typeof i?0===i||l.call(h,o)?\"\"+i:i+\"px\":v((\"\"+i).trim())}n?(n=!1,e.push(' style=\"',s,\":\",i)):e.push(\";\",s,\":\",i)}}n||e.push('\"')}function x$1(e,n,a,o){switch(a){case\"style\":ta$1(e,n,o);return;case\"defaultValue\":case\"defaultChecked\":case\"innerHTML\":case\"suppressContentEditableWarning\":case\"suppressHydrationWarning\":return}if(!(2<a.length)||\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1])if(n=d.hasOwnProperty(a)?d[a]:null,null!==n){switch(typeof o){case\"function\":case\"symbol\":return;case\"boolean\":if(!n.acceptsBooleans)return}a=n.attributeName;switch(n.type){case 3:o&&e.push(\" \",a,'=\"\"');break;case 4:!0===o?e.push(\" \",a,'=\"\"'):!1!==o&&e.push(\" \",a,'=\"',v(o),'\"');break;case 5:isNaN(o)||e.push(\" \",a,'=\"',v(o),'\"');break;case 6:!isNaN(o)&&1<=o&&e.push(\" \",a,'=\"',v(o),'\"');break;default:n.sanitizeURL&&(o=\"\"+o),e.push(\" \",a,'=\"',v(o),'\"')}}else if(ja$1(a)){switch(typeof o){case\"function\":case\"symbol\":return;case\"boolean\":if(n=a.toLowerCase().slice(0,5),\"data-\"!==n&&\"aria-\"!==n)return}e.push(\" \",a,'=\"',v(o),'\"')}}function y$1(e,n,a){if(null!=n){if(null!=a)throw Error(l$2(60));if(\"object\"!==typeof n||!(\"__html\"in n))throw Error(l$2(61));n=n.__html;null!==n&&void 0!==n&&e.push(\"\"+n)}}function ua$1(e){var n=\"\";o.Children.forEach(e,(function(e){null!=e&&(n+=e)}));return n}function va$1(e,n,a,o){e.push(A(a));var i,s=a=null;for(i in n)if(l.call(n,i)){var c=n[i];if(null!=c)switch(i){case\"children\":a=c;break;case\"dangerouslySetInnerHTML\":s=c;break;default:x$1(e,o,i,c)}}e.push(\">\");y$1(e,s,a);return\"string\"===typeof a?(e.push(v(a)),null):a}var E=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,T=new Map;function A(e){var n=T.get(e);if(void 0===n){if(!E.test(e))throw Error(l$2(65,e));n=\"<\"+e;T.set(e,n)}return n}function ya$1(e,n,a,o,i){switch(n){case\"select\":e.push(A(\"select\"));var s=null,c=null;for(g in a)if(l.call(a,g)){var d=a[g];if(null!=d)switch(g){case\"children\":s=d;break;case\"dangerouslySetInnerHTML\":c=d;break;case\"defaultValue\":case\"value\":break;default:x$1(e,o,g,d)}}e.push(\">\");y$1(e,c,s);return s;case\"option\":c=i.selectedValue;e.push(A(\"option\"));var f=d=null,h=null;var g=null;for(s in a)if(l.call(a,s)){var b=a[s];if(null!=b)switch(s){case\"children\":d=b;break;case\"selected\":h=b;break;case\"dangerouslySetInnerHTML\":g=b;break;case\"value\":f=b;default:x$1(e,o,s,b)}}if(null!=c)if(a=null!==f?\"\"+f:ua$1(d),x(c)){for(o=0;o<c.length;o++)if(\"\"+c[o]===a){e.push(' selected=\"\"');break}}else\"\"+c===a&&e.push(' selected=\"\"');else h&&e.push(' selected=\"\"');e.push(\">\");y$1(e,g,d);return d;case\"textarea\":e.push(A(\"textarea\"));g=c=s=null;for(d in a)if(l.call(a,d)&&(f=a[d],null!=f))switch(d){case\"children\":g=f;break;case\"value\":s=f;break;case\"defaultValue\":c=f;break;case\"dangerouslySetInnerHTML\":throw Error(l$2(91));default:x$1(e,o,d,f)}null===s&&null!==c&&(s=c);e.push(\">\");if(null!=g){if(null!=s)throw Error(l$2(92));if(x(g)&&1<g.length)throw Error(l$2(93));s=\"\"+g}\"string\"===typeof s&&\"\\n\"===s[0]&&e.push(\"\\n\");null!==s&&e.push(v(\"\"+s));return null;case\"input\":e.push(A(\"input\"));f=g=d=s=null;for(c in a)if(l.call(a,c)&&(h=a[c],null!=h))switch(c){case\"children\":case\"dangerouslySetInnerHTML\":throw Error(l$2(399,\"input\"));case\"defaultChecked\":f=h;break;case\"defaultValue\":d=h;break;case\"checked\":g=h;break;case\"value\":s=h;break;default:x$1(e,o,c,h)}null!==g?x$1(e,o,\"checked\",g):null!==f&&x$1(e,o,\"checked\",f);null!==s?x$1(e,o,\"value\",s):null!==d&&x$1(e,o,\"value\",d);e.push(\"/>\");return null;case\"menuitem\":e.push(A(\"menuitem\"));for(var m in a)if(l.call(a,m)&&(s=a[m],null!=s))switch(m){case\"children\":case\"dangerouslySetInnerHTML\":throw Error(l$2(400));default:x$1(e,o,m,s)}e.push(\">\");return null;case\"title\":e.push(A(\"title\"));s=null;for(b in a)if(l.call(a,b)&&(c=a[b],null!=c))switch(b){case\"children\":s=c;break;case\"dangerouslySetInnerHTML\":throw Error(l$2(434));default:x$1(e,o,b,c)}e.push(\">\");return s;case\"listing\":case\"pre\":e.push(A(n));c=s=null;for(f in a)if(l.call(a,f)&&(d=a[f],null!=d))switch(f){case\"children\":s=d;break;case\"dangerouslySetInnerHTML\":c=d;break;default:x$1(e,o,f,d)}e.push(\">\");if(null!=c){if(null!=s)throw Error(l$2(60));if(\"object\"!==typeof c||!(\"__html\"in c))throw Error(l$2(61));a=c.__html;null!==a&&void 0!==a&&(\"string\"===typeof a&&0<a.length&&\"\\n\"===a[0]?e.push(\"\\n\",a):e.push(\"\"+a))}\"string\"===typeof s&&\"\\n\"===s[0]&&e.push(\"\\n\");return s;case\"area\":case\"base\":case\"br\":case\"col\":case\"embed\":case\"hr\":case\"img\":case\"keygen\":case\"link\":case\"meta\":case\"param\":case\"source\":case\"track\":case\"wbr\":e.push(A(n));for(var S in a)if(l.call(a,S)&&(s=a[S],null!=s))switch(S){case\"children\":case\"dangerouslySetInnerHTML\":throw Error(l$2(399,n));default:x$1(e,o,S,s)}e.push(\"/>\");return null;case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return va$1(e,a,n,o);case\"html\":return 0===i.insertionMode&&e.push(\"<!DOCTYPE html>\"),va$1(e,a,n,o);default:if(-1===n.indexOf(\"-\")&&\"string\"!==typeof a.is)return va$1(e,a,n,o);e.push(A(n));c=s=null;for(h in a)if(l.call(a,h)&&(d=a[h],null!=d))switch(h){case\"children\":s=d;break;case\"dangerouslySetInnerHTML\":c=d;break;case\"style\":ta$1(e,o,d);break;case\"suppressContentEditableWarning\":case\"suppressHydrationWarning\":break;default:ja$1(h)&&\"function\"!==typeof d&&\"symbol\"!==typeof d&&e.push(\" \",h,'=\"',v(d),'\"')}e.push(\">\");y$1(e,c,s);return s}}function za$1(e,n,a){e.push('\\x3c!--$?--\\x3e<template id=\"');if(null===a)throw Error(l$2(395));e.push(a);return e.push('\"></template>')}function Aa$1(e,n,a,o){switch(a.insertionMode){case 0:case 1:return e.push('<div hidden id=\"'),e.push(n.segmentPrefix),n=o.toString(16),e.push(n),e.push('\">');case 2:return e.push('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),e.push(n.segmentPrefix),n=o.toString(16),e.push(n),e.push('\">');case 3:return e.push('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),e.push(n.segmentPrefix),n=o.toString(16),e.push(n),e.push('\">');case 4:return e.push('<table hidden id=\"'),e.push(n.segmentPrefix),n=o.toString(16),e.push(n),e.push('\">');case 5:return e.push('<table hidden><tbody id=\"'),e.push(n.segmentPrefix),n=o.toString(16),e.push(n),e.push('\">');case 6:return e.push('<table hidden><tr id=\"'),e.push(n.segmentPrefix),n=o.toString(16),e.push(n),e.push('\">');case 7:return e.push('<table hidden><colgroup id=\"'),e.push(n.segmentPrefix),n=o.toString(16),e.push(n),e.push('\">');default:throw Error(l$2(397))}}function Ba$1(e,n){switch(n.insertionMode){case 0:case 1:return e.push(\"</div>\");case 2:return e.push(\"</svg>\");case 3:return e.push(\"</math>\");case 4:return e.push(\"</table>\");case 5:return e.push(\"</tbody></table>\");case 6:return e.push(\"</tr></table>\");case 7:return e.push(\"</colgroup></table>\");default:throw Error(l$2(397))}}var R=/[<\\u2028\\u2029]/g;function Da$1(e){return JSON.stringify(e).replace(R,(function(e){switch(e){case\"<\":return\"\\\\u003c\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\")}}))}function Ea$1(e,n){n=void 0===n?\"\":n;return{bootstrapChunks:[],startInlineScript:\"<script>\",placeholderPrefix:n+\"P:\",segmentPrefix:n+\"S:\",boundaryPrefix:n+\"B:\",idPrefix:n,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1,generateStaticMarkup:e}}function Fa$1(e,n,a,o){if(a.generateStaticMarkup)return e.push(v(n)),!1;\"\"===n?e=o:(o&&e.push(\"\\x3c!-- --\\x3e\"),e.push(v(n)),e=!0);return e}var _=Object.assign,I=Symbol.for(\"react.element\"),B=Symbol.for(\"react.portal\"),N=Symbol.for(\"react.fragment\"),z=Symbol.for(\"react.strict_mode\"),V=Symbol.for(\"react.profiler\"),j=Symbol.for(\"react.provider\"),O=Symbol.for(\"react.context\"),H=Symbol.for(\"react.forward_ref\"),U=Symbol.for(\"react.suspense\"),K=Symbol.for(\"react.suspense_list\"),ee=Symbol.for(\"react.memo\"),te=Symbol.for(\"react.lazy\"),ne=Symbol.for(\"react.scope\"),re=Symbol.for(\"react.debug_trace_mode\"),ae=Symbol.for(\"react.legacy_hidden\"),oe=Symbol.for(\"react.default_value\"),le=Symbol.iterator;function Xa$1(e){if(null==e)return null;if(\"function\"===typeof e)return e.displayName||e.name||null;if(\"string\"===typeof e)return e;switch(e){case N:return\"Fragment\";case B:return\"Portal\";case V:return\"Profiler\";case z:return\"StrictMode\";case U:return\"Suspense\";case K:return\"SuspenseList\"}if(\"object\"===typeof e)switch(e.$$typeof){case O:return(e.displayName||\"Context\")+\".Consumer\";case j:return(e._context.displayName||\"Context\")+\".Provider\";case H:var n=e.render;e=e.displayName;e||(e=n.displayName||n.name||\"\",e=\"\"!==e?\"ForwardRef(\"+e+\")\":\"ForwardRef\");return e;case ee:return n=e.displayName||null,null!==n?n:Xa$1(e.type)||\"Memo\";case te:n=e._payload;e=e._init;try{return Xa$1(e(n))}catch(e){}}return null}var ue={};function Za$1(e,n){e=e.contextTypes;if(!e)return ue;var a,o={};for(a in e)o[a]=n[a];return o}var ie=null;function F(e,n){if(e!==n){e.context._currentValue2=e.parentValue;e=e.parent;var a=n.parent;if(null===e){if(null!==a)throw Error(l$2(401))}else{if(null===a)throw Error(l$2(401));F(e,a)}n.context._currentValue2=n.value}}function $a$1(e){e.context._currentValue2=e.parentValue;e=e.parent;null!==e&&$a$1(e)}function ab$1(e){var n=e.parent;null!==n&&ab$1(n);e.context._currentValue2=e.value}function bb$1(e,n){e.context._currentValue2=e.parentValue;e=e.parent;if(null===e)throw Error(l$2(402));e.depth===n.depth?F(e,n):bb$1(e,n)}function cb$1(e,n){var a=n.parent;if(null===a)throw Error(l$2(402));e.depth===a.depth?F(e,a):cb$1(e,a);n.context._currentValue2=n.value}function G(e){var n=ie;n!==e&&(null===n?ab$1(e):null===e?$a$1(n):n.depth===e.depth?F(n,e):n.depth>e.depth?bb$1(n,e):cb$1(n,e),ie=e)}var se={isMounted:function(){return!1},enqueueSetState:function(e,n){e=e._reactInternals;null!==e.queue&&e.queue.push(n)},enqueueReplaceState:function(e,n){e=e._reactInternals;e.replace=!0;e.queue=[n]},enqueueForceUpdate:function(){}};function eb$1(e,n,a,o){var l=void 0!==e.state?e.state:null;e.updater=se;e.props=a;e.state=l;var i={queue:[],replace:!1};e._reactInternals=i;var s=n.contextType;e.context=\"object\"===typeof s&&null!==s?s._currentValue2:o;s=n.getDerivedStateFromProps;\"function\"===typeof s&&(s=s(a,l),l=null===s||void 0===s?l:_({},l,s),e.state=l);if(\"function\"!==typeof n.getDerivedStateFromProps&&\"function\"!==typeof e.getSnapshotBeforeUpdate&&(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount))if(n=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),n!==e.state&&se.enqueueReplaceState(e,e.state,null),null!==i.queue&&0<i.queue.length)if(n=i.queue,s=i.replace,i.queue=null,i.replace=!1,s&&1===n.length)e.state=n[0];else{i=s?n[0]:e.state;l=!0;for(s=s?1:0;s<n.length;s++){var c=n[s];c=\"function\"===typeof c?c.call(e,i,a,o):c;null!=c&&(l?(l=!1,i=_({},i,c)):_(i,c))}e.state=i}else i.queue=null}var ce={id:1,overflow:\"\"};function gb$1(e,n,a){var o=e.id;e=e.overflow;var l=32-de(o)-1;o&=~(1<<l);a+=1;var i=32-de(n)+l;if(30<i){var s=l-l%5;i=(o&(1<<s)-1).toString(32);o>>=s;l-=s;return{id:1<<32-de(n)+l|a<<l|o,overflow:i+e}}return{id:1<<i|a<<l|o,overflow:e}}var de=Math.clz32?Math.clz32:hb$1,fe=Math.log,pe=Math.LN2;function hb$1(e){e>>>=0;return 0===e?32:31-(fe(e)/pe|0)|0}function kb$1(e,n){return e===n&&(0!==e||1/e===1/n)||e!==e&&n!==n}var he=\"function\"===typeof Object.is?Object.is:kb$1,ge=null,be=null,me=null,ye=null,ve=!1,ke=!1,we=0,Se=null,xe=0;function Q$1(){if(null===ge)throw Error(l$2(321));return ge}function pb$1(){if(0<xe)throw Error(l$2(312));return{memoizedState:null,queue:null,next:null}}function qb$1(){null===ye?null===me?(ve=!1,me=ye=pb$1()):(ve=!0,ye=me):null===ye.next?(ve=!1,ye=ye.next=pb$1()):(ve=!0,ye=ye.next);return ye}function rb$1(){be=ge=null;ke=!1;me=null;xe=0;ye=Se=null}function sb$1(e,n){return\"function\"===typeof n?n(e):n}function tb$1(e,n,a){ge=Q$1();ye=qb$1();if(ve){var o=ye.queue;n=o.dispatch;if(null!==Se&&(a=Se.get(o),void 0!==a)){Se.delete(o);o=ye.memoizedState;do{o=e(o,a.action),a=a.next}while(null!==a);ye.memoizedState=o;return[o,n]}return[ye.memoizedState,n]}e=e===sb$1?\"function\"===typeof n?n():n:void 0!==a?a(n):n;ye.memoizedState=e;e=ye.queue={last:null,dispatch:null};e=e.dispatch=ub$1.bind(null,ge,e);return[ye.memoizedState,e]}function vb$1(e,n){ge=Q$1();ye=qb$1();n=void 0===n?null:n;if(null!==ye){var a=ye.memoizedState;if(null!==a&&null!==n){var o=a[1];e:if(null===o)o=!1;else{for(var l=0;l<o.length&&l<n.length;l++)if(!he(n[l],o[l])){o=!1;break e}o=!0}if(o)return a[0]}}e=e();ye.memoizedState=[e,n];return e}function ub$1(e,n,a){if(25<=xe)throw Error(l$2(301));if(e===ge)if(ke=!0,e={action:a,next:null},null===Se&&(Se=new Map),a=Se.get(n),void 0===a)Se.set(n,e);else{for(n=a;null!==n.next;)n=n.next;n.next=e}}function wb$1(){throw Error(l$2(394))}function R$1(){}var $e={readContext:function(e){return e._currentValue2},useContext:function(e){Q$1();return e._currentValue2},useMemo:vb$1,useReducer:tb$1,useRef:function(e){ge=Q$1();ye=qb$1();var n=ye.memoizedState;return null===n?(e={current:e},ye.memoizedState=e):n},useState:function(e){return tb$1(sb$1,e)},useInsertionEffect:R$1,useLayoutEffect:function(){},useCallback:function(e,n){return vb$1((function(){return e}),n)},useImperativeHandle:R$1,useEffect:R$1,useDebugValue:R$1,useDeferredValue:function(e){Q$1();return e},useTransition:function(){Q$1();return[!1,wb$1]},useId:function(){var e=be.treeContext;var n=e.overflow;e=e.id;e=(e&~(1<<32-de(e)-1)).toString(32)+n;var a=Ce;if(null===a)throw Error(l$2(404));n=we++;e=\":\"+a.idPrefix+\"R\"+e;0<n&&(e+=\"H\"+n.toString(32));return e+\":\"},useMutableSource:function(e,n){Q$1();return n(e._source)},useSyncExternalStore:function(e,n,a){if(void 0===a)throw Error(l$2(407));return a()}},Ce=null,Ee=o.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function zb$1(e){console.error(e);return null}function T$1(){}function Ab$1(e,n,a,o,l,i,s,c,d){var f=[],h=new Set;n={destination:null,responseState:n,progressiveChunkSize:void 0===o?12800:o,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:h,pingedTasks:f,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===l?zb$1:l,onAllReady:void 0===i?T$1:i,onShellReady:void 0===s?T$1:s,onShellError:void 0===c?T$1:c,onFatalError:void 0===d?T$1:d};a=U$1(n,0,null,a,!1,!1);a.parentFlushed=!0;e=Bb$1(n,e,null,a,h,ue,null,ce);f.push(e);return n}function Bb$1(e,n,a,o,l,i,s,c){e.allPendingTasks++;null===a?e.pendingRootTasks++:a.pendingTasks++;var d={node:n,ping:function(){var n=e.pingedTasks;n.push(d);1===n.length&&Cb$1(e)},blockedBoundary:a,blockedSegment:o,abortSet:l,legacyContext:i,context:s,treeContext:c};l.add(d);return d}function U$1(e,n,a,o,l,i){return{status:0,id:-1,index:n,parentFlushed:!1,chunks:[],children:[],formatContext:o,boundary:a,lastPushedText:l,textEmbedded:i}}function V$1(e,n){e=e.onError(n);if(null!=e&&\"string\"!==typeof e)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof e+'\" instead');return e}function W$1(e,n){var a=e.onShellError;a(n);a=e.onFatalError;a(n);null!==e.destination?(e.status=2,e.destination.destroy(n)):(e.status=1,e.fatalError=n)}function Db$1(e,n,a,o,l){ge={};be=n;we=0;for(e=a(o,l);ke;)ke=!1,we=0,xe+=1,ye=null,e=a(o,l);rb$1();return e}function Eb$1(e,n,a,o){var l=a.render(),i=o.childContextTypes;if(null!==i&&void 0!==i){var s=n.legacyContext;if(\"function\"!==typeof a.getChildContext)o=s;else{a=a.getChildContext();for(var c in a)if(!(c in i))throw Error(l$2(108,Xa$1(o)||\"Unknown\",c));o=_({},s,a)}n.legacyContext=o;X$1(e,n,l);n.legacyContext=s}else X$1(e,n,l)}function Fb(e,n){if(e&&e.defaultProps){n=_({},n);e=e.defaultProps;for(var a in e)void 0===n[a]&&(n[a]=e[a]);return n}return n}function Gb$1(e,n,a,o,l){if(\"function\"===typeof a)if(a.prototype&&a.prototype.isReactComponent){l=Za$1(a,n.legacyContext);var i=a.contextType;i=new a(o,\"object\"===typeof i&&null!==i?i._currentValue2:l);eb$1(i,a,o,l);Eb$1(e,n,i,a)}else{i=Za$1(a,n.legacyContext);l=Db$1(e,n,a,o,i);var s=0!==we;if(\"object\"===typeof l&&null!==l&&\"function\"===typeof l.render&&void 0===l.$$typeof)eb$1(l,a,o,i),Eb$1(e,n,l,a);else if(s){o=n.treeContext;n.treeContext=gb$1(o,1,0);try{X$1(e,n,l)}finally{n.treeContext=o}}else X$1(e,n,l)}else{if(\"string\"!==typeof a){switch(a){case ae:case re:case z:case V:case N:X$1(e,n,o.children);return;case K:X$1(e,n,o.children);return;case ne:throw Error(l$2(343));case U:e:{a=n.blockedBoundary;l=n.blockedSegment;i=o.fallback;o=o.children;s=new Set;var c={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:s,errorDigest:null},d=U$1(e,l.chunks.length,c,l.formatContext,!1,!1);l.children.push(d);l.lastPushedText=!1;var f=U$1(e,0,null,l.formatContext,!1,!1);f.parentFlushed=!0;n.blockedBoundary=c;n.blockedSegment=f;try{if(Hb$1(e,n,o),e.responseState.generateStaticMarkup||f.lastPushedText&&f.textEmbedded&&f.chunks.push(\"\\x3c!-- --\\x3e\"),f.status=1,Y$1(c,f),0===c.pendingTasks)break e}catch(n){f.status=4,c.forceClientRender=!0,c.errorDigest=V$1(e,n)}finally{n.blockedBoundary=a,n.blockedSegment=l}n=Bb$1(e,i,a,d,s,n.legacyContext,n.context,n.treeContext);e.pingedTasks.push(n)}return}if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case H:o=Db$1(e,n,a.render,o,l);if(0!==we){a=n.treeContext;n.treeContext=gb$1(a,1,0);try{X$1(e,n,o)}finally{n.treeContext=a}}else X$1(e,n,o);return;case ee:a=a.type;o=Fb(a,o);Gb$1(e,n,a,o,l);return;case j:l=o.children;a=a._context;o=o.value;i=a._currentValue2;a._currentValue2=o;s=ie;ie=o={parent:s,depth:null===s?0:s.depth+1,context:a,parentValue:i,value:o};n.context=o;X$1(e,n,l);e=ie;if(null===e)throw Error(l$2(403));o=e.parentValue;e.context._currentValue2=o===oe?e.context._defaultValue:o;e=ie=e.parent;n.context=e;return;case O:o=o.children;o=o(a._currentValue2);X$1(e,n,o);return;case te:l=a._init;a=l(a._payload);o=Fb(a,o);Gb$1(e,n,a,o,void 0);return}throw Error(l$2(130,null==a?a:typeof a,\"\"))}l=n.blockedSegment;i=ya$1(l.chunks,a,o,e.responseState,l.formatContext);l.lastPushedText=!1;s=l.formatContext;l.formatContext=ra$1(s,a,o);Hb$1(e,n,i);l.formatContext=s;switch(a){case\"area\":case\"base\":case\"br\":case\"col\":case\"embed\":case\"hr\":case\"img\":case\"input\":case\"keygen\":case\"link\":case\"meta\":case\"param\":case\"source\":case\"track\":case\"wbr\":break;default:l.chunks.push(\"</\",a,\">\")}l.lastPushedText=!1}}function X$1(e,n,a){n.node=a;if(\"object\"===typeof a&&null!==a){switch(a.$$typeof){case I:Gb$1(e,n,a.type,a.props,a.ref);return;case B:throw Error(l$2(257));case te:var o=a._init;a=o(a._payload);X$1(e,n,a);return}if(x(a)){Ib$1(e,n,a);return}null===a||\"object\"!==typeof a?o=null:(o=le&&a[le]||a[\"@@iterator\"],o=\"function\"===typeof o?o:null);if(o&&(o=o.call(a))){a=o.next();if(!a.done){var l=[];do{l.push(a.value),a=o.next()}while(!a.done);Ib$1(e,n,l)}return}e=Object.prototype.toString.call(a);throw Error(l$2(31,\"[object Object]\"===e?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":e))}\"string\"===typeof a?(o=n.blockedSegment,o.lastPushedText=Fa$1(n.blockedSegment.chunks,a,e.responseState,o.lastPushedText)):\"number\"===typeof a&&(o=n.blockedSegment,o.lastPushedText=Fa$1(n.blockedSegment.chunks,\"\"+a,e.responseState,o.lastPushedText))}function Ib$1(e,n,a){for(var o=a.length,l=0;l<o;l++){var i=n.treeContext;n.treeContext=gb$1(i,o,l);try{Hb$1(e,n,a[l])}finally{n.treeContext=i}}}function Hb$1(e,n,a){var o=n.blockedSegment.formatContext,l=n.legacyContext,i=n.context;try{return X$1(e,n,a)}catch(d){if(rb$1(),\"object\"!==typeof d||null===d||\"function\"!==typeof d.then)throw n.blockedSegment.formatContext=o,n.legacyContext=l,n.context=i,G(i),d;a=d;var s=n.blockedSegment,c=U$1(e,s.chunks.length,null,s.formatContext,s.lastPushedText,!0);s.children.push(c);s.lastPushedText=!1;e=Bb$1(e,n.node,n.blockedBoundary,c,n.abortSet,n.legacyContext,n.context,n.treeContext).ping;a.then(e,e);n.blockedSegment.formatContext=o;n.legacyContext=l;n.context=i;G(i)}}function Jb$1(e){var n=e.blockedBoundary;e=e.blockedSegment;e.status=3;Kb$1(this,n,e)}function Lb$1(e,n,a){var o=e.blockedBoundary;e.blockedSegment.status=3;null===o?(n.allPendingTasks--,2!==n.status&&(n.status=2,null!==n.destination&&n.destination.push(null))):(o.pendingTasks--,o.forceClientRender||(o.forceClientRender=!0,e=void 0===a?Error(l$2(432)):a,o.errorDigest=n.onError(e),o.parentFlushed&&n.clientRenderedBoundaries.push(o)),o.fallbackAbortableTasks.forEach((function(e){return Lb$1(e,n,a)})),o.fallbackAbortableTasks.clear(),n.allPendingTasks--,0===n.allPendingTasks&&(o=n.onAllReady,o()))}function Y$1(e,n){if(0===n.chunks.length&&1===n.children.length&&null===n.children[0].boundary){var a=n.children[0];a.id=n.id;a.parentFlushed=!0;1===a.status&&Y$1(e,a)}else e.completedSegments.push(n)}function Kb$1(e,n,a){if(null===n){if(a.parentFlushed){if(null!==e.completedRootSegment)throw Error(l$2(389));e.completedRootSegment=a}e.pendingRootTasks--;0===e.pendingRootTasks&&(e.onShellError=T$1,n=e.onShellReady,n())}else n.pendingTasks--,n.forceClientRender||(0===n.pendingTasks?(a.parentFlushed&&1===a.status&&Y$1(n,a),n.parentFlushed&&e.completedBoundaries.push(n),n.fallbackAbortableTasks.forEach(Jb$1,e),n.fallbackAbortableTasks.clear()):a.parentFlushed&&1===a.status&&(Y$1(n,a),1===n.completedSegments.length&&n.parentFlushed&&e.partialBoundaries.push(n)));e.allPendingTasks--;0===e.allPendingTasks&&(e=e.onAllReady,e())}function Cb$1(e){if(2!==e.status){var n=ie,a=Ee.current;Ee.current=$e;var o=Ce;Ce=e.responseState;try{var l,i=e.pingedTasks;for(l=0;l<i.length;l++){var s=i[l];var c=e,d=s.blockedSegment;if(0===d.status){G(s.context);try{X$1(c,s,s.node),c.responseState.generateStaticMarkup||d.lastPushedText&&d.textEmbedded&&d.chunks.push(\"\\x3c!-- --\\x3e\"),s.abortSet.delete(s),d.status=1,Kb$1(c,s.blockedBoundary,d)}catch(e){if(rb$1(),\"object\"===typeof e&&null!==e&&\"function\"===typeof e.then){var f=s.ping;e.then(f,f)}else{s.abortSet.delete(s);d.status=4;var h=s.blockedBoundary,g=e,b=V$1(c,g);null===h?W$1(c,g):(h.pendingTasks--,h.forceClientRender||(h.forceClientRender=!0,h.errorDigest=b,h.parentFlushed&&c.clientRenderedBoundaries.push(h)));c.allPendingTasks--;if(0===c.allPendingTasks){var m=c.onAllReady;m()}}}}}i.splice(0,l);null!==e.destination&&Mb$1(e,e.destination)}catch(n){V$1(e,n),W$1(e,n)}finally{Ce=o,Ee.current=a,a===$e&&G(n)}}}function Z$1(e,n,a){a.parentFlushed=!0;switch(a.status){case 0:var o=a.id=e.nextSegmentId++;a.lastPushedText=!1;a.textEmbedded=!1;e=e.responseState;n.push('<template id=\"');n.push(e.placeholderPrefix);e=o.toString(16);n.push(e);return n.push('\"></template>');case 1:a.status=2;var l=!0;o=a.chunks;var i=0;a=a.children;for(var s=0;s<a.length;s++){for(l=a[s];i<l.index;i++)n.push(o[i]);l=Nb$1(e,n,l)}for(;i<o.length-1;i++)n.push(o[i]);i<o.length&&(l=n.push(o[i]));return l;default:throw Error(l$2(390))}}function Nb$1(e,n,a){var o=a.boundary;if(null===o)return Z$1(e,n,a);o.parentFlushed=!0;if(o.forceClientRender)return e.responseState.generateStaticMarkup||(o=o.errorDigest,n.push(\"\\x3c!--$!--\\x3e\"),n.push(\"<template\"),o&&(n.push(' data-dgst=\"'),o=v(o),n.push(o),n.push('\"')),n.push(\"></template>\")),Z$1(e,n,a),e=!!e.responseState.generateStaticMarkup||n.push(\"\\x3c!--/$--\\x3e\"),e;if(0<o.pendingTasks){o.rootSegmentID=e.nextSegmentId++;0<o.completedSegments.length&&e.partialBoundaries.push(o);var l=e.responseState;var i=l.nextSuspenseID++;l=l.boundaryPrefix+i.toString(16);o=o.id=l;za$1(n,e.responseState,o);Z$1(e,n,a);return n.push(\"\\x3c!--/$--\\x3e\")}if(o.byteSize>e.progressiveChunkSize)return o.rootSegmentID=e.nextSegmentId++,e.completedBoundaries.push(o),za$1(n,e.responseState,o.id),Z$1(e,n,a),n.push(\"\\x3c!--/$--\\x3e\");e.responseState.generateStaticMarkup||n.push(\"\\x3c!--$--\\x3e\");a=o.completedSegments;if(1!==a.length)throw Error(l$2(391));Nb$1(e,n,a[0]);e=!!e.responseState.generateStaticMarkup||n.push(\"\\x3c!--/$--\\x3e\");return e}function Ob$1(e,n,a){Aa$1(n,e.responseState,a.formatContext,a.id);Nb$1(e,n,a);return Ba$1(n,a.formatContext)}function Pb$1(e,n,a){for(var o=a.completedSegments,l=0;l<o.length;l++)Qb$1(e,n,a,o[l]);o.length=0;e=e.responseState;o=a.id;a=a.rootSegmentID;n.push(e.startInlineScript);e.sentCompleteBoundaryFunction?n.push('$RC(\"'):(e.sentCompleteBoundaryFunction=!0,n.push('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'));if(null===o)throw Error(l$2(395));a=a.toString(16);n.push(o);n.push('\",\"');n.push(e.segmentPrefix);n.push(a);return n.push('\")<\\/script>')}function Qb$1(e,n,a,o){if(2===o.status)return!0;var l=o.id;if(-1===l){if(-1===(o.id=a.rootSegmentID))throw Error(l$2(392));return Ob$1(e,n,o)}Ob$1(e,n,o);e=e.responseState;n.push(e.startInlineScript);e.sentCompleteSegmentFunction?n.push('$RS(\"'):(e.sentCompleteSegmentFunction=!0,n.push('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'));n.push(e.segmentPrefix);l=l.toString(16);n.push(l);n.push('\",\"');n.push(e.placeholderPrefix);n.push(l);return n.push('\")<\\/script>')}function Mb$1(e,n){try{var a=e.completedRootSegment;if(null!==a&&0===e.pendingRootTasks){Nb$1(e,n,a);e.completedRootSegment=null;var o=e.responseState.bootstrapChunks;for(a=0;a<o.length-1;a++)n.push(o[a]);a<o.length&&n.push(o[a])}var l,i=e.clientRenderedBoundaries;for(l=0;l<i.length;l++){var s=i[l];o=n;var c=e.responseState,d=s.id,f=s.errorDigest,h=s.errorMessage,g=s.errorComponentStack;o.push(c.startInlineScript);c.sentClientRenderFunction?o.push('$RX(\"'):(c.sentClientRenderFunction=!0,o.push('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'));if(null===d)throw Error(l$2(395));o.push(d);o.push('\"');if(f||h||g){o.push(\",\");var b=Da$1(f||\"\");o.push(b)}if(h||g){o.push(\",\");var m=Da$1(h||\"\");o.push(m)}if(g){o.push(\",\");var S=Da$1(g);o.push(S)}if(!o.push(\")<\\/script>\")){e.destination=null;l++;i.splice(0,l);return}}i.splice(0,l);var x=e.completedBoundaries;for(l=0;l<x.length;l++)if(!Pb$1(e,n,x[l])){e.destination=null;l++;x.splice(0,l);return}x.splice(0,l);var $=e.partialBoundaries;for(l=0;l<$.length;l++){var E=$[l];e:{i=e;s=n;var T=E.completedSegments;for(c=0;c<T.length;c++)if(!Qb$1(i,s,E,T[c])){c++;T.splice(0,c);var R=!1;break e}T.splice(0,c);R=!0}if(!R){e.destination=null;l++;$.splice(0,l);return}}$.splice(0,l);var _=e.completedBoundaries;for(l=0;l<_.length;l++)if(!Pb$1(e,n,_[l])){e.destination=null;l++;_.splice(0,l);return}_.splice(0,l)}finally{0===e.allPendingTasks&&0===e.pingedTasks.length&&0===e.clientRenderedBoundaries.length&&0===e.completedBoundaries.length&&n.push(null)}}function Rb$1(e,n){try{var a=e.abortableTasks;a.forEach((function(a){return Lb$1(a,e,n)}));a.clear();null!==e.destination&&Mb$1(e,e.destination)}catch(n){V$1(e,n),W$1(e,n)}}function Sb$1(){}function Tb$1(e,n,a,o){var l=!1,i=null,s=\"\",c={push:function(e){null!==e&&(s+=e);return!0},destroy:function(e){l=!0;i=e}},d=!1;e=Ab$1(e,Ea$1(a,n?n.identifierPrefix:void 0),{insertionMode:1,selectedValue:null},Infinity,Sb$1,void 0,(function(){d=!0}),void 0,void 0);Cb$1(e);Rb$1(e,o);if(1===e.status)e.status=2,c.destroy(e.fatalError);else if(2!==e.status&&null===e.destination){e.destination=c;try{Mb$1(e,c)}catch(n){V$1(e,n),W$1(e,n)}}if(l)throw i;if(!d)throw Error(l$2(426));return s}a.renderToNodeStream=function(){throw Error(l$2(207))};a.renderToStaticMarkup=function(e,n){return Tb$1(e,n,!0,'The server used \"renderToStaticMarkup\" which does not support Suspense. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};a.renderToStaticNodeStream=function(){throw Error(l$2(208))};a.renderToString=function(e,n){return Tb$1(e,n,!1,'The server used \"renderToString\" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to \"renderToReadableStream\" which supports Suspense on the server')};a.version=\"18.2.0\";var Fe=\"default\"in e?e.default:e;var Te={};var Re=Fe;function k(e){for(var n=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,a=1;a<arguments.length;a++)n+=\"&args[]=\"+encodeURIComponent(arguments[a]);return\"Minified React error #\"+e+\"; visit \"+n+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var Pe=null,_e=0;function p(e,n){if(0!==n.length)if(512<n.length)0<_e&&(e.enqueue(new Uint8Array(Pe.buffer,0,_e)),Pe=new Uint8Array(512),_e=0),e.enqueue(n);else{var a=Pe.length-_e;a<n.length&&(0===a?e.enqueue(Pe):(Pe.set(n.subarray(0,a),_e),e.enqueue(Pe),n=n.subarray(a)),Pe=new Uint8Array(512),_e=0);Pe.set(n,_e);_e+=n.length}}function t(e,n){p(e,n);return!0}function ba(e){Pe&&0<_e&&(e.enqueue(new Uint8Array(Pe.buffer,0,_e)),Pe=null,_e=0)}var Me=new TextEncoder;function u(e){return Me.encode(e)}function w(e){return Me.encode(e)}function da(e,n){\"function\"===typeof e.error?e.error(n):e.close()}var Ie=Object.prototype.hasOwnProperty,De=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,Be={},Ne={};function ia(e){if(Ie.call(Ne,e))return!0;if(Ie.call(Be,e))return!1;if(De.test(e))return Ne[e]=!0;Be[e]=!0;return!1}function y(e,n,a,o,l,i,s){this.acceptsBooleans=2===n||3===n||4===n;this.attributeName=o;this.attributeNamespace=l;this.mustUseProperty=a;this.propertyName=e;this.type=n;this.sanitizeURL=i;this.removeEmptyString=s}var ze={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(e){ze[e]=new y(e,0,!1,e,null,!1,!1)}));[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(e){var n=e[0];ze[n]=new y(n,1,!1,e[1],null,!1,!1)}));[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(e){ze[e]=new y(e,2,!1,e.toLowerCase(),null,!1,!1)}));[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(e){ze[e]=new y(e,2,!1,e,null,!1,!1)}));\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(e){ze[e]=new y(e,3,!1,e.toLowerCase(),null,!1,!1)}));[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(e){ze[e]=new y(e,3,!0,e,null,!1,!1)}));[\"capture\",\"download\"].forEach((function(e){ze[e]=new y(e,4,!1,e,null,!1,!1)}));[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(e){ze[e]=new y(e,6,!1,e,null,!1,!1)}));[\"rowSpan\",\"start\"].forEach((function(e){ze[e]=new y(e,5,!1,e.toLowerCase(),null,!1,!1)}));var Ve=/[\\-:]([a-z])/g;function ka(e){return e[1].toUpperCase()}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(e){var n=e.replace(Ve,ka);ze[n]=new y(n,1,!1,e,null,!1,!1)}));\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(e){var n=e.replace(Ve,ka);ze[n]=new y(n,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)}));[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(e){var n=e.replace(Ve,ka);ze[n]=new y(n,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)}));[\"tabIndex\",\"crossOrigin\"].forEach((function(e){ze[e]=new y(e,1,!1,e.toLowerCase(),null,!1,!1)}));ze.xlinkHref=new y(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(e){ze[e]=new y(e,1,!1,e.toLowerCase(),null,!0,!0)}));var Ae={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Le=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(Ae).forEach((function(e){Le.forEach((function(n){n=n+e.charAt(0).toUpperCase()+e.substring(1);Ae[n]=Ae[e]}))}));var je=/[\"'&<>]/;function C(e){if(\"boolean\"===typeof e||\"number\"===typeof e)return\"\"+e;e=\"\"+e;var n=je.exec(e);if(n){var a,o=\"\",l=0;for(a=n.index;a<e.length;a++){switch(e.charCodeAt(a)){case 34:n=\"&quot;\";break;case 38:n=\"&amp;\";break;case 39:n=\"&#x27;\";break;case 60:n=\"&lt;\";break;case 62:n=\"&gt;\";break;default:continue}l!==a&&(o+=e.substring(l,a));l=a+1;o+=n}e=l!==a?o+e.substring(l,a):o}return e}var Oe=/([A-Z])/g,qe=/^ms-/,We=Array.isArray,He=w(\"<script>\"),Ue=w(\"<\\/script>\"),Ze=w('<script src=\"'),Xe=w('<script type=\"module\" src=\"'),Je=w('\" async=\"\"><\\/script>'),Ge=/(<\\/|<)(s)(cript)/gi;function ya(e,n,a,o){return n+(\"s\"===a?\"\\\\u0073\":\"\\\\u0053\")+o}function za(e,n,a,o,l){e=void 0===e?\"\":e;n=void 0===n?He:w('<script nonce=\"'+C(n)+'\">');var i=[];void 0!==a&&i.push(n,u((\"\"+a).replace(Ge,ya)),Ue);if(void 0!==o)for(a=0;a<o.length;a++)i.push(Ze,u(C(o[a])),Je);if(void 0!==l)for(o=0;o<l.length;o++)i.push(Xe,u(C(l[o])),Je);return{bootstrapChunks:i,startInlineScript:n,placeholderPrefix:w(e+\"P:\"),segmentPrefix:w(e+\"S:\"),boundaryPrefix:e+\"B:\",idPrefix:e,nextSuspenseID:0,sentCompleteSegmentFunction:!1,sentCompleteBoundaryFunction:!1,sentClientRenderFunction:!1}}function D(e,n){return{insertionMode:e,selectedValue:n}}function Aa(e){return D(\"http://www.w3.org/2000/svg\"===e?2:\"http://www.w3.org/1998/Math/MathML\"===e?3:0,null)}function Ba(e,n,a){switch(n){case\"select\":return D(1,null!=a.value?a.value:a.defaultValue);case\"svg\":return D(2,null);case\"math\":return D(3,null);case\"foreignObject\":return D(1,null);case\"table\":return D(4,null);case\"thead\":case\"tbody\":case\"tfoot\":return D(5,null);case\"colgroup\":return D(7,null);case\"tr\":return D(6,null)}return 4<=e.insertionMode||0===e.insertionMode?D(1,null):e}var Qe=w(\"\\x3c!-- --\\x3e\");function Da(e,n,a,o){if(\"\"===n)return o;o&&e.push(Qe);e.push(u(C(n)));return!0}var Ye=new Map,Ke=w(' style=\"'),et=w(\":\"),tt=w(\";\");function Ia(e,n,a){if(\"object\"!==typeof a)throw Error(k(62));n=!0;for(var o in a)if(Ie.call(a,o)){var l=a[o];if(null!=l&&\"boolean\"!==typeof l&&\"\"!==l){if(0===o.indexOf(\"--\")){var i=u(C(o));l=u(C((\"\"+l).trim()))}else{i=o;var s=Ye.get(i);void 0!==s||(s=w(C(i.replace(Oe,\"-$1\").toLowerCase().replace(qe,\"-ms-\"))),Ye.set(i,s)),i=s;l=\"number\"===typeof l?0===l||Ie.call(Ae,o)?u(\"\"+l):u(l+\"px\"):u(C((\"\"+l).trim()))}n?(n=!1,e.push(Ke,i,et,l)):e.push(tt,i,et,l)}}n||e.push(at)}var nt=w(\" \"),rt=w('=\"'),at=w('\"'),ot=w('=\"\"');function J(e,n,a,o){switch(a){case\"style\":Ia(e,n,o);return;case\"defaultValue\":case\"defaultChecked\":case\"innerHTML\":case\"suppressContentEditableWarning\":case\"suppressHydrationWarning\":return}if(!(2<a.length)||\"o\"!==a[0]&&\"O\"!==a[0]||\"n\"!==a[1]&&\"N\"!==a[1])if(n=ze.hasOwnProperty(a)?ze[a]:null,null!==n){switch(typeof o){case\"function\":case\"symbol\":return;case\"boolean\":if(!n.acceptsBooleans)return}a=u(n.attributeName);switch(n.type){case 3:o&&e.push(nt,a,ot);break;case 4:!0===o?e.push(nt,a,ot):!1!==o&&e.push(nt,a,rt,u(C(o)),at);break;case 5:isNaN(o)||e.push(nt,a,rt,u(C(o)),at);break;case 6:!isNaN(o)&&1<=o&&e.push(nt,a,rt,u(C(o)),at);break;default:n.sanitizeURL&&(o=\"\"+o),e.push(nt,a,rt,u(C(o)),at)}}else if(ia(a)){switch(typeof o){case\"function\":case\"symbol\":return;case\"boolean\":if(n=a.toLowerCase().slice(0,5),\"data-\"!==n&&\"aria-\"!==n)return}e.push(nt,u(a),rt,u(C(o)),at)}}var lt=w(\">\"),ut=w(\"/>\");function L(e,n,a){if(null!=n){if(null!=a)throw Error(k(60));if(\"object\"!==typeof n||!(\"__html\"in n))throw Error(k(61));n=n.__html;null!==n&&void 0!==n&&e.push(u(\"\"+n))}}function La(e){var n=\"\";Re.Children.forEach(e,(function(e){null!=e&&(n+=e)}));return n}var it=w(' selected=\"\"');function Na(e,n,a,o){e.push(M(a));var l,i=a=null;for(l in n)if(Ie.call(n,l)){var s=n[l];if(null!=s)switch(l){case\"children\":a=s;break;case\"dangerouslySetInnerHTML\":i=s;break;default:J(e,o,l,s)}}e.push(lt);L(e,i,a);return\"string\"===typeof a?(e.push(u(C(a))),null):a}var st=w(\"\\n\"),ct=/^[a-zA-Z][a-zA-Z:_\\.\\-\\d]*$/,dt=new Map;function M(e){var n=dt.get(e);if(void 0===n){if(!ct.test(e))throw Error(k(65,e));n=w(\"<\"+e);dt.set(e,n)}return n}var ft=w(\"<!DOCTYPE html>\");function Sa(e,n,a,o,l){switch(n){case\"select\":e.push(M(\"select\"));var i=null,s=null;for(h in a)if(Ie.call(a,h)){var c=a[h];if(null!=c)switch(h){case\"children\":i=c;break;case\"dangerouslySetInnerHTML\":s=c;break;case\"defaultValue\":case\"value\":break;default:J(e,o,h,c)}}e.push(lt);L(e,s,i);return i;case\"option\":s=l.selectedValue;e.push(M(\"option\"));var d=c=null,f=null;var h=null;for(i in a)if(Ie.call(a,i)){var g=a[i];if(null!=g)switch(i){case\"children\":c=g;break;case\"selected\":f=g;break;case\"dangerouslySetInnerHTML\":h=g;break;case\"value\":d=g;default:J(e,o,i,g)}}if(null!=s)if(a=null!==d?\"\"+d:La(c),We(s)){for(o=0;o<s.length;o++)if(\"\"+s[o]===a){e.push(it);break}}else\"\"+s===a&&e.push(it);else f&&e.push(it);e.push(lt);L(e,h,c);return c;case\"textarea\":e.push(M(\"textarea\"));h=s=i=null;for(c in a)if(Ie.call(a,c)&&(d=a[c],null!=d))switch(c){case\"children\":h=d;break;case\"value\":i=d;break;case\"defaultValue\":s=d;break;case\"dangerouslySetInnerHTML\":throw Error(k(91));default:J(e,o,c,d)}null===i&&null!==s&&(i=s);e.push(lt);if(null!=h){if(null!=i)throw Error(k(92));if(We(h)&&1<h.length)throw Error(k(93));i=\"\"+h}\"string\"===typeof i&&\"\\n\"===i[0]&&e.push(st);null!==i&&e.push(u(C(\"\"+i)));return null;case\"input\":e.push(M(\"input\"));d=h=c=i=null;for(s in a)if(Ie.call(a,s)&&(f=a[s],null!=f))switch(s){case\"children\":case\"dangerouslySetInnerHTML\":throw Error(k(399,\"input\"));case\"defaultChecked\":d=f;break;case\"defaultValue\":c=f;break;case\"checked\":h=f;break;case\"value\":i=f;break;default:J(e,o,s,f)}null!==h?J(e,o,\"checked\",h):null!==d&&J(e,o,\"checked\",d);null!==i?J(e,o,\"value\",i):null!==c&&J(e,o,\"value\",c);e.push(ut);return null;case\"menuitem\":e.push(M(\"menuitem\"));for(var b in a)if(Ie.call(a,b)&&(i=a[b],null!=i))switch(b){case\"children\":case\"dangerouslySetInnerHTML\":throw Error(k(400));default:J(e,o,b,i)}e.push(lt);return null;case\"title\":e.push(M(\"title\"));i=null;for(g in a)if(Ie.call(a,g)&&(s=a[g],null!=s))switch(g){case\"children\":i=s;break;case\"dangerouslySetInnerHTML\":throw Error(k(434));default:J(e,o,g,s)}e.push(lt);return i;case\"listing\":case\"pre\":e.push(M(n));s=i=null;for(d in a)if(Ie.call(a,d)&&(c=a[d],null!=c))switch(d){case\"children\":i=c;break;case\"dangerouslySetInnerHTML\":s=c;break;default:J(e,o,d,c)}e.push(lt);if(null!=s){if(null!=i)throw Error(k(60));if(\"object\"!==typeof s||!(\"__html\"in s))throw Error(k(61));a=s.__html;null!==a&&void 0!==a&&(\"string\"===typeof a&&0<a.length&&\"\\n\"===a[0]?e.push(st,u(a)):e.push(u(\"\"+a)))}\"string\"===typeof i&&\"\\n\"===i[0]&&e.push(st);return i;case\"area\":case\"base\":case\"br\":case\"col\":case\"embed\":case\"hr\":case\"img\":case\"keygen\":case\"link\":case\"meta\":case\"param\":case\"source\":case\"track\":case\"wbr\":e.push(M(n));for(var m in a)if(Ie.call(a,m)&&(i=a[m],null!=i))switch(m){case\"children\":case\"dangerouslySetInnerHTML\":throw Error(k(399,n));default:J(e,o,m,i)}e.push(ut);return null;case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return Na(e,a,n,o);case\"html\":return 0===l.insertionMode&&e.push(ft),Na(e,a,n,o);default:if(-1===n.indexOf(\"-\")&&\"string\"!==typeof a.is)return Na(e,a,n,o);e.push(M(n));s=i=null;for(f in a)if(Ie.call(a,f)&&(c=a[f],null!=c))switch(f){case\"children\":i=c;break;case\"dangerouslySetInnerHTML\":s=c;break;case\"style\":Ia(e,o,c);break;case\"suppressContentEditableWarning\":case\"suppressHydrationWarning\":break;default:ia(f)&&\"function\"!==typeof c&&\"symbol\"!==typeof c&&e.push(nt,u(f),rt,u(C(c)),at)}e.push(lt);L(e,s,i);return i}}var pt=w(\"</\"),ht=w(\">\"),gt=w('<template id=\"'),bt=w('\"></template>'),mt=w(\"\\x3c!--$--\\x3e\"),yt=w('\\x3c!--$?--\\x3e<template id=\"'),vt=w('\"></template>'),kt=w(\"\\x3c!--$!--\\x3e\"),wt=w(\"\\x3c!--/$--\\x3e\"),St=w(\"<template\"),xt=w('\"'),$t=w(' data-dgst=\"');w(' data-msg=\"');w(' data-stck=\"');var Ct=w(\"></template>\");function fb(e,n,a){p(e,yt);if(null===a)throw Error(k(395));p(e,a);return t(e,vt)}var Et=w('<div hidden id=\"'),Ft=w('\">'),Tt=w(\"</div>\"),Rt=w('<svg aria-hidden=\"true\" style=\"display:none\" id=\"'),Pt=w('\">'),_t=w(\"</svg>\"),Mt=w('<math aria-hidden=\"true\" style=\"display:none\" id=\"'),It=w('\">'),Dt=w(\"</math>\"),Bt=w('<table hidden id=\"'),Nt=w('\">'),zt=w(\"</table>\"),Vt=w('<table hidden><tbody id=\"'),At=w('\">'),Lt=w(\"</tbody></table>\"),jt=w('<table hidden><tr id=\"'),Ot=w('\">'),qt=w(\"</tr></table>\"),Wt=w('<table hidden><colgroup id=\"'),Ht=w('\">'),Ut=w(\"</colgroup></table>\");function Bb(e,n,a,o){switch(a.insertionMode){case 0:case 1:return p(e,Et),p(e,n.segmentPrefix),p(e,u(o.toString(16))),t(e,Ft);case 2:return p(e,Rt),p(e,n.segmentPrefix),p(e,u(o.toString(16))),t(e,Pt);case 3:return p(e,Mt),p(e,n.segmentPrefix),p(e,u(o.toString(16))),t(e,It);case 4:return p(e,Bt),p(e,n.segmentPrefix),p(e,u(o.toString(16))),t(e,Nt);case 5:return p(e,Vt),p(e,n.segmentPrefix),p(e,u(o.toString(16))),t(e,At);case 6:return p(e,jt),p(e,n.segmentPrefix),p(e,u(o.toString(16))),t(e,Ot);case 7:return p(e,Wt),p(e,n.segmentPrefix),p(e,u(o.toString(16))),t(e,Ht);default:throw Error(k(397))}}function Cb(e,n){switch(n.insertionMode){case 0:case 1:return t(e,Tt);case 2:return t(e,_t);case 3:return t(e,Dt);case 4:return t(e,zt);case 5:return t(e,Lt);case 6:return t(e,qt);case 7:return t(e,Ut);default:throw Error(k(397))}}var Zt=w('function $RS(a,b){a=document.getElementById(a);b=document.getElementById(b);for(a.parentNode.removeChild(a);a.firstChild;)b.parentNode.insertBefore(a.firstChild,b);b.parentNode.removeChild(b)};$RS(\"'),Xt=w('$RS(\"'),Jt=w('\",\"'),Gt=w('\")<\\/script>'),Qt=w('function $RC(a,b){a=document.getElementById(a);b=document.getElementById(b);b.parentNode.removeChild(b);if(a){a=a.previousSibling;var f=a.parentNode,c=a.nextSibling,e=0;do{if(c&&8===c.nodeType){var d=c.data;if(\"/$\"===d)if(0===e)break;else e--;else\"$\"!==d&&\"$?\"!==d&&\"$!\"!==d||e++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;b.firstChild;)f.insertBefore(b.firstChild,c);a.data=\"$\";a._reactRetry&&a._reactRetry()}};$RC(\"'),Yt=w('$RC(\"'),Kt=w('\",\"'),en=w('\")<\\/script>'),tn=w('function $RX(b,c,d,e){var a=document.getElementById(b);a&&(b=a.previousSibling,b.data=\"$!\",a=a.dataset,c&&(a.dgst=c),d&&(a.msg=d),e&&(a.stck=e),b._reactRetry&&b._reactRetry())};$RX(\"'),nn=w('$RX(\"'),rn=w('\"'),an=w(\")<\\/script>\"),on=w(\",\"),ln=/[<\\u2028\\u2029]/g;function Sb(e){return JSON.stringify(e).replace(ln,(function(e){switch(e){case\"<\":return\"\\\\u003c\";case\"\\u2028\":return\"\\\\u2028\";case\"\\u2029\":return\"\\\\u2029\";default:throw Error(\"escapeJSStringsForInstructionScripts encountered a match it does not know how to replace. this means the match regex and the replacement characters are no longer in sync. This is a bug in React\")}}))}var un=Object.assign,sn=Symbol.for(\"react.element\"),cn=Symbol.for(\"react.portal\"),dn=Symbol.for(\"react.fragment\"),fn=Symbol.for(\"react.strict_mode\"),pn=Symbol.for(\"react.profiler\"),hn=Symbol.for(\"react.provider\"),gn=Symbol.for(\"react.context\"),bn=Symbol.for(\"react.forward_ref\"),mn=Symbol.for(\"react.suspense\"),yn=Symbol.for(\"react.suspense_list\"),vn=Symbol.for(\"react.memo\"),kn=Symbol.for(\"react.lazy\"),wn=Symbol.for(\"react.scope\"),Sn=Symbol.for(\"react.debug_trace_mode\"),xn=Symbol.for(\"react.legacy_hidden\"),$n=Symbol.for(\"react.default_value\"),Cn=Symbol.iterator;function jc(e){if(null==e)return null;if(\"function\"===typeof e)return e.displayName||e.name||null;if(\"string\"===typeof e)return e;switch(e){case dn:return\"Fragment\";case cn:return\"Portal\";case pn:return\"Profiler\";case fn:return\"StrictMode\";case mn:return\"Suspense\";case yn:return\"SuspenseList\"}if(\"object\"===typeof e)switch(e.$$typeof){case gn:return(e.displayName||\"Context\")+\".Consumer\";case hn:return(e._context.displayName||\"Context\")+\".Provider\";case bn:var n=e.render;e=e.displayName;e||(e=n.displayName||n.name||\"\",e=\"\"!==e?\"ForwardRef(\"+e+\")\":\"ForwardRef\");return e;case vn:return n=e.displayName||null,null!==n?n:jc(e.type)||\"Memo\";case kn:n=e._payload;e=e._init;try{return jc(e(n))}catch(e){}}return null}var En={};function lc(e,n){e=e.contextTypes;if(!e)return En;var a,o={};for(a in e)o[a]=n[a];return o}var Fn=null;function P(e,n){if(e!==n){e.context._currentValue=e.parentValue;e=e.parent;var a=n.parent;if(null===e){if(null!==a)throw Error(k(401))}else{if(null===a)throw Error(k(401));P(e,a)}n.context._currentValue=n.value}}function mc(e){e.context._currentValue=e.parentValue;e=e.parent;null!==e&&mc(e)}function nc(e){var n=e.parent;null!==n&&nc(n);e.context._currentValue=e.value}function oc(e,n){e.context._currentValue=e.parentValue;e=e.parent;if(null===e)throw Error(k(402));e.depth===n.depth?P(e,n):oc(e,n)}function pc(e,n){var a=n.parent;if(null===a)throw Error(k(402));e.depth===a.depth?P(e,a):pc(e,a);n.context._currentValue=n.value}function Q(e){var n=Fn;n!==e&&(null===n?nc(e):null===e?mc(n):n.depth===e.depth?P(n,e):n.depth>e.depth?oc(n,e):pc(n,e),Fn=e)}var Tn={isMounted:function(){return!1},enqueueSetState:function(e,n){e=e._reactInternals;null!==e.queue&&e.queue.push(n)},enqueueReplaceState:function(e,n){e=e._reactInternals;e.replace=!0;e.queue=[n]},enqueueForceUpdate:function(){}};function rc(e,n,a,o){var l=void 0!==e.state?e.state:null;e.updater=Tn;e.props=a;e.state=l;var i={queue:[],replace:!1};e._reactInternals=i;var s=n.contextType;e.context=\"object\"===typeof s&&null!==s?s._currentValue:o;s=n.getDerivedStateFromProps;\"function\"===typeof s&&(s=s(a,l),l=null===s||void 0===s?l:un({},l,s),e.state=l);if(\"function\"!==typeof n.getDerivedStateFromProps&&\"function\"!==typeof e.getSnapshotBeforeUpdate&&(\"function\"===typeof e.UNSAFE_componentWillMount||\"function\"===typeof e.componentWillMount))if(n=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),n!==e.state&&Tn.enqueueReplaceState(e,e.state,null),null!==i.queue&&0<i.queue.length)if(n=i.queue,s=i.replace,i.queue=null,i.replace=!1,s&&1===n.length)e.state=n[0];else{i=s?n[0]:e.state;l=!0;for(s=s?1:0;s<n.length;s++){var c=n[s];c=\"function\"===typeof c?c.call(e,i,a,o):c;null!=c&&(l?(l=!1,i=un({},i,c)):un(i,c))}e.state=i}else i.queue=null}var Rn={id:1,overflow:\"\"};function tc(e,n,a){var o=e.id;e=e.overflow;var l=32-Pn(o)-1;o&=~(1<<l);a+=1;var i=32-Pn(n)+l;if(30<i){var s=l-l%5;i=(o&(1<<s)-1).toString(32);o>>=s;l-=s;return{id:1<<32-Pn(n)+l|a<<l|o,overflow:i+e}}return{id:1<<i|a<<l|o,overflow:e}}var Pn=Math.clz32?Math.clz32:vc,_n=Math.log,Mn=Math.LN2;function vc(e){e>>>=0;return 0===e?32:31-(_n(e)/Mn|0)|0}function yc(e,n){return e===n&&(0!==e||1/e===1/n)||e!==e&&n!==n}var In=\"function\"===typeof Object.is?Object.is:yc,Dn=null,Bn=null,Nn=null,zn=null,Vn=!1,An=!1,Ln=0,jn=null,On=0;function W(){if(null===Dn)throw Error(k(321));return Dn}function Ec(){if(0<On)throw Error(k(312));return{memoizedState:null,queue:null,next:null}}function Fc(){null===zn?null===Nn?(Vn=!1,Nn=zn=Ec()):(Vn=!0,zn=Nn):null===zn.next?(Vn=!1,zn=zn.next=Ec()):(Vn=!0,zn=zn.next);return zn}function Gc(){Bn=Dn=null;An=!1;Nn=null;On=0;zn=jn=null}function Hc(e,n){return\"function\"===typeof n?n(e):n}function Ic(e,n,a){Dn=W();zn=Fc();if(Vn){var o=zn.queue;n=o.dispatch;if(null!==jn&&(a=jn.get(o),void 0!==a)){jn.delete(o);o=zn.memoizedState;do{o=e(o,a.action),a=a.next}while(null!==a);zn.memoizedState=o;return[o,n]}return[zn.memoizedState,n]}e=e===Hc?\"function\"===typeof n?n():n:void 0!==a?a(n):n;zn.memoizedState=e;e=zn.queue={last:null,dispatch:null};e=e.dispatch=Jc.bind(null,Dn,e);return[zn.memoizedState,e]}function Kc(e,n){Dn=W();zn=Fc();n=void 0===n?null:n;if(null!==zn){var a=zn.memoizedState;if(null!==a&&null!==n){var o=a[1];e:if(null===o)o=!1;else{for(var l=0;l<o.length&&l<n.length;l++)if(!In(n[l],o[l])){o=!1;break e}o=!0}if(o)return a[0]}}e=e();zn.memoizedState=[e,n];return e}function Jc(e,n,a){if(25<=On)throw Error(k(301));if(e===Dn)if(An=!0,e={action:a,next:null},null===jn&&(jn=new Map),a=jn.get(n),void 0===a)jn.set(n,e);else{for(n=a;null!==n.next;)n=n.next;n.next=e}}function Lc(){throw Error(k(394))}function Mc(){}var qn={readContext:function(e){return e._currentValue},useContext:function(e){W();return e._currentValue},useMemo:Kc,useReducer:Ic,useRef:function(e){Dn=W();zn=Fc();var n=zn.memoizedState;return null===n?(e={current:e},zn.memoizedState=e):n},useState:function(e){return Ic(Hc,e)},useInsertionEffect:Mc,useLayoutEffect:function(){},useCallback:function(e,n){return Kc((function(){return e}),n)},useImperativeHandle:Mc,useEffect:Mc,useDebugValue:Mc,useDeferredValue:function(e){W();return e},useTransition:function(){W();return[!1,Lc]},useId:function(){var e=Bn.treeContext;var n=e.overflow;e=e.id;e=(e&~(1<<32-Pn(e)-1)).toString(32)+n;var a=Wn;if(null===a)throw Error(k(404));n=Ln++;e=\":\"+a.idPrefix+\"R\"+e;0<n&&(e+=\"H\"+n.toString(32));return e+\":\"},useMutableSource:function(e,n){W();return n(e._source)},useSyncExternalStore:function(e,n,a){if(void 0===a)throw Error(k(407));return a()}},Wn=null,Hn=Re.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function Qc(e){console.error(e);return null}function X(){}function Rc(e,n,a,o,l,i,s,c,d){var f=[],h=new Set;n={destination:null,responseState:n,progressiveChunkSize:void 0===o?12800:o,status:0,fatalError:null,nextSegmentId:0,allPendingTasks:0,pendingRootTasks:0,completedRootSegment:null,abortableTasks:h,pingedTasks:f,clientRenderedBoundaries:[],completedBoundaries:[],partialBoundaries:[],onError:void 0===l?Qc:l,onAllReady:void 0===i?X:i,onShellReady:void 0===s?X:s,onShellError:void 0===c?X:c,onFatalError:void 0===d?X:d};a=Sc(n,0,null,a,!1,!1);a.parentFlushed=!0;e=Tc(n,e,null,a,h,En,null,Rn);f.push(e);return n}function Tc(e,n,a,o,l,i,s,c){e.allPendingTasks++;null===a?e.pendingRootTasks++:a.pendingTasks++;var d={node:n,ping:function(){var n=e.pingedTasks;n.push(d);1===n.length&&Uc(e)},blockedBoundary:a,blockedSegment:o,abortSet:l,legacyContext:i,context:s,treeContext:c};l.add(d);return d}function Sc(e,n,a,o,l,i){return{status:0,id:-1,index:n,parentFlushed:!1,chunks:[],children:[],formatContext:o,boundary:a,lastPushedText:l,textEmbedded:i}}function Y(e,n){e=e.onError(n);if(null!=e&&\"string\"!==typeof e)throw Error('onError returned something with a type other than \"string\". onError should return a string and may return null or undefined but must not return anything else. It received something of type \"'+typeof e+'\" instead');return e}function Vc(e,n){var a=e.onShellError;a(n);a=e.onFatalError;a(n);null!==e.destination?(e.status=2,da(e.destination,n)):(e.status=1,e.fatalError=n)}function Wc(e,n,a,o,l){Dn={};Bn=n;Ln=0;for(e=a(o,l);An;)An=!1,Ln=0,On+=1,zn=null,e=a(o,l);Gc();return e}function Xc(e,n,a,o){var l=a.render(),i=o.childContextTypes;if(null!==i&&void 0!==i){var s=n.legacyContext;if(\"function\"!==typeof a.getChildContext)o=s;else{a=a.getChildContext();for(var c in a)if(!(c in i))throw Error(k(108,jc(o)||\"Unknown\",c));o=un({},s,a)}n.legacyContext=o;Z(e,n,l);n.legacyContext=s}else Z(e,n,l)}function Yc(e,n){if(e&&e.defaultProps){n=un({},n);e=e.defaultProps;for(var a in e)void 0===n[a]&&(n[a]=e[a]);return n}return n}function Zc(e,n,a,o,l){if(\"function\"===typeof a)if(a.prototype&&a.prototype.isReactComponent){l=lc(a,n.legacyContext);var i=a.contextType;i=new a(o,\"object\"===typeof i&&null!==i?i._currentValue:l);rc(i,a,o,l);Xc(e,n,i,a)}else{i=lc(a,n.legacyContext);l=Wc(e,n,a,o,i);var s=0!==Ln;if(\"object\"===typeof l&&null!==l&&\"function\"===typeof l.render&&void 0===l.$$typeof)rc(l,a,o,i),Xc(e,n,l,a);else if(s){o=n.treeContext;n.treeContext=tc(o,1,0);try{Z(e,n,l)}finally{n.treeContext=o}}else Z(e,n,l)}else{if(\"string\"!==typeof a){switch(a){case xn:case Sn:case fn:case pn:case dn:Z(e,n,o.children);return;case yn:Z(e,n,o.children);return;case wn:throw Error(k(343));case mn:e:{a=n.blockedBoundary;l=n.blockedSegment;i=o.fallback;o=o.children;s=new Set;var c={id:null,rootSegmentID:-1,parentFlushed:!1,pendingTasks:0,forceClientRender:!1,completedSegments:[],byteSize:0,fallbackAbortableTasks:s,errorDigest:null},d=Sc(e,l.chunks.length,c,l.formatContext,!1,!1);l.children.push(d);l.lastPushedText=!1;var f=Sc(e,0,null,l.formatContext,!1,!1);f.parentFlushed=!0;n.blockedBoundary=c;n.blockedSegment=f;try{if($c(e,n,o),f.lastPushedText&&f.textEmbedded&&f.chunks.push(Qe),f.status=1,ad(c,f),0===c.pendingTasks)break e}catch(n){f.status=4,c.forceClientRender=!0,c.errorDigest=Y(e,n)}finally{n.blockedBoundary=a,n.blockedSegment=l}n=Tc(e,i,a,d,s,n.legacyContext,n.context,n.treeContext);e.pingedTasks.push(n)}return}if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case bn:o=Wc(e,n,a.render,o,l);if(0!==Ln){a=n.treeContext;n.treeContext=tc(a,1,0);try{Z(e,n,o)}finally{n.treeContext=a}}else Z(e,n,o);return;case vn:a=a.type;o=Yc(a,o);Zc(e,n,a,o,l);return;case hn:l=o.children;a=a._context;o=o.value;i=a._currentValue;a._currentValue=o;s=Fn;Fn=o={parent:s,depth:null===s?0:s.depth+1,context:a,parentValue:i,value:o};n.context=o;Z(e,n,l);e=Fn;if(null===e)throw Error(k(403));o=e.parentValue;e.context._currentValue=o===$n?e.context._defaultValue:o;e=Fn=e.parent;n.context=e;return;case gn:o=o.children;o=o(a._currentValue);Z(e,n,o);return;case kn:l=a._init;a=l(a._payload);o=Yc(a,o);Zc(e,n,a,o,void 0);return}throw Error(k(130,null==a?a:typeof a,\"\"))}l=n.blockedSegment;i=Sa(l.chunks,a,o,e.responseState,l.formatContext);l.lastPushedText=!1;s=l.formatContext;l.formatContext=Ba(s,a,o);$c(e,n,i);l.formatContext=s;switch(a){case\"area\":case\"base\":case\"br\":case\"col\":case\"embed\":case\"hr\":case\"img\":case\"input\":case\"keygen\":case\"link\":case\"meta\":case\"param\":case\"source\":case\"track\":case\"wbr\":break;default:l.chunks.push(pt,u(a),ht)}l.lastPushedText=!1}}function Z(e,n,a){n.node=a;if(\"object\"===typeof a&&null!==a){switch(a.$$typeof){case sn:Zc(e,n,a.type,a.props,a.ref);return;case cn:throw Error(k(257));case kn:var o=a._init;a=o(a._payload);Z(e,n,a);return}if(We(a)){bd(e,n,a);return}null===a||\"object\"!==typeof a?o=null:(o=Cn&&a[Cn]||a[\"@@iterator\"],o=\"function\"===typeof o?o:null);if(o&&(o=o.call(a))){a=o.next();if(!a.done){var l=[];do{l.push(a.value),a=o.next()}while(!a.done);bd(e,n,l)}return}e=Object.prototype.toString.call(a);throw Error(k(31,\"[object Object]\"===e?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":e))}\"string\"===typeof a?(o=n.blockedSegment,o.lastPushedText=Da(n.blockedSegment.chunks,a,e.responseState,o.lastPushedText)):\"number\"===typeof a&&(o=n.blockedSegment,o.lastPushedText=Da(n.blockedSegment.chunks,\"\"+a,e.responseState,o.lastPushedText))}function bd(e,n,a){for(var o=a.length,l=0;l<o;l++){var i=n.treeContext;n.treeContext=tc(i,o,l);try{$c(e,n,a[l])}finally{n.treeContext=i}}}function $c(e,n,a){var o=n.blockedSegment.formatContext,l=n.legacyContext,i=n.context;try{return Z(e,n,a)}catch(d){if(Gc(),\"object\"!==typeof d||null===d||\"function\"!==typeof d.then)throw n.blockedSegment.formatContext=o,n.legacyContext=l,n.context=i,Q(i),d;a=d;var s=n.blockedSegment,c=Sc(e,s.chunks.length,null,s.formatContext,s.lastPushedText,!0);s.children.push(c);s.lastPushedText=!1;e=Tc(e,n.node,n.blockedBoundary,c,n.abortSet,n.legacyContext,n.context,n.treeContext).ping;a.then(e,e);n.blockedSegment.formatContext=o;n.legacyContext=l;n.context=i;Q(i)}}function cd(e){var n=e.blockedBoundary;e=e.blockedSegment;e.status=3;dd(this,n,e)}function ed(e,n,a){var o=e.blockedBoundary;e.blockedSegment.status=3;null===o?(n.allPendingTasks--,2!==n.status&&(n.status=2,null!==n.destination&&n.destination.close())):(o.pendingTasks--,o.forceClientRender||(o.forceClientRender=!0,e=void 0===a?Error(k(432)):a,o.errorDigest=n.onError(e),o.parentFlushed&&n.clientRenderedBoundaries.push(o)),o.fallbackAbortableTasks.forEach((function(e){return ed(e,n,a)})),o.fallbackAbortableTasks.clear(),n.allPendingTasks--,0===n.allPendingTasks&&(o=n.onAllReady,o()))}function ad(e,n){if(0===n.chunks.length&&1===n.children.length&&null===n.children[0].boundary){var a=n.children[0];a.id=n.id;a.parentFlushed=!0;1===a.status&&ad(e,a)}else e.completedSegments.push(n)}function dd(e,n,a){if(null===n){if(a.parentFlushed){if(null!==e.completedRootSegment)throw Error(k(389));e.completedRootSegment=a}e.pendingRootTasks--;0===e.pendingRootTasks&&(e.onShellError=X,n=e.onShellReady,n())}else n.pendingTasks--,n.forceClientRender||(0===n.pendingTasks?(a.parentFlushed&&1===a.status&&ad(n,a),n.parentFlushed&&e.completedBoundaries.push(n),n.fallbackAbortableTasks.forEach(cd,e),n.fallbackAbortableTasks.clear()):a.parentFlushed&&1===a.status&&(ad(n,a),1===n.completedSegments.length&&n.parentFlushed&&e.partialBoundaries.push(n)));e.allPendingTasks--;0===e.allPendingTasks&&(e=e.onAllReady,e())}function Uc(e){if(2!==e.status){var n=Fn,a=Hn.current;Hn.current=qn;var o=Wn;Wn=e.responseState;try{var l,i=e.pingedTasks;for(l=0;l<i.length;l++){var s=i[l];var c=e,d=s.blockedSegment;if(0===d.status){Q(s.context);try{Z(c,s,s.node),d.lastPushedText&&d.textEmbedded&&d.chunks.push(Qe),s.abortSet.delete(s),d.status=1,dd(c,s.blockedBoundary,d)}catch(e){if(Gc(),\"object\"===typeof e&&null!==e&&\"function\"===typeof e.then){var f=s.ping;e.then(f,f)}else{s.abortSet.delete(s);d.status=4;var h=s.blockedBoundary,g=e,b=Y(c,g);null===h?Vc(c,g):(h.pendingTasks--,h.forceClientRender||(h.forceClientRender=!0,h.errorDigest=b,h.parentFlushed&&c.clientRenderedBoundaries.push(h)));c.allPendingTasks--;if(0===c.allPendingTasks){var m=c.onAllReady;m()}}}}}i.splice(0,l);null!==e.destination&&fd(e,e.destination)}catch(n){Y(e,n),Vc(e,n)}finally{Wn=o,Hn.current=a,a===qn&&Q(n)}}}function gd(e,n,a){a.parentFlushed=!0;switch(a.status){case 0:var o=a.id=e.nextSegmentId++;a.lastPushedText=!1;a.textEmbedded=!1;e=e.responseState;p(n,gt);p(n,e.placeholderPrefix);e=u(o.toString(16));p(n,e);return t(n,bt);case 1:a.status=2;var l=!0;o=a.chunks;var i=0;a=a.children;for(var s=0;s<a.length;s++){for(l=a[s];i<l.index;i++)p(n,o[i]);l=hd(e,n,l)}for(;i<o.length-1;i++)p(n,o[i]);i<o.length&&(l=t(n,o[i]));return l;default:throw Error(k(390))}}function hd(e,n,a){var o=a.boundary;if(null===o)return gd(e,n,a);o.parentFlushed=!0;if(o.forceClientRender)o=o.errorDigest,t(n,kt),p(n,St),o&&(p(n,$t),p(n,u(C(o))),p(n,xt)),t(n,Ct),gd(e,n,a);else if(0<o.pendingTasks){o.rootSegmentID=e.nextSegmentId++;0<o.completedSegments.length&&e.partialBoundaries.push(o);var l=e.responseState;var i=l.nextSuspenseID++;l=w(l.boundaryPrefix+i.toString(16));o=o.id=l;fb(n,e.responseState,o);gd(e,n,a)}else if(o.byteSize>e.progressiveChunkSize)o.rootSegmentID=e.nextSegmentId++,e.completedBoundaries.push(o),fb(n,e.responseState,o.id),gd(e,n,a);else{t(n,mt);a=o.completedSegments;if(1!==a.length)throw Error(k(391));hd(e,n,a[0])}return t(n,wt)}function id(e,n,a){Bb(n,e.responseState,a.formatContext,a.id);hd(e,n,a);return Cb(n,a.formatContext)}function jd(e,n,a){for(var o=a.completedSegments,l=0;l<o.length;l++)kd(e,n,a,o[l]);o.length=0;e=e.responseState;o=a.id;a=a.rootSegmentID;p(n,e.startInlineScript);e.sentCompleteBoundaryFunction?p(n,Yt):(e.sentCompleteBoundaryFunction=!0,p(n,Qt));if(null===o)throw Error(k(395));a=u(a.toString(16));p(n,o);p(n,Kt);p(n,e.segmentPrefix);p(n,a);return t(n,en)}function kd(e,n,a,o){if(2===o.status)return!0;var l=o.id;if(-1===l){if(-1===(o.id=a.rootSegmentID))throw Error(k(392));return id(e,n,o)}id(e,n,o);e=e.responseState;p(n,e.startInlineScript);e.sentCompleteSegmentFunction?p(n,Xt):(e.sentCompleteSegmentFunction=!0,p(n,Zt));p(n,e.segmentPrefix);l=u(l.toString(16));p(n,l);p(n,Jt);p(n,e.placeholderPrefix);p(n,l);return t(n,Gt)}function fd(e,n){Pe=new Uint8Array(512);_e=0;try{var a=e.completedRootSegment;if(null!==a&&0===e.pendingRootTasks){hd(e,n,a);e.completedRootSegment=null;var o=e.responseState.bootstrapChunks;for(a=0;a<o.length-1;a++)p(n,o[a]);a<o.length&&t(n,o[a])}var l,i=e.clientRenderedBoundaries;for(l=0;l<i.length;l++){var s=i[l];o=n;var c=e.responseState,d=s.id,f=s.errorDigest,h=s.errorMessage,g=s.errorComponentStack;p(o,c.startInlineScript);c.sentClientRenderFunction?p(o,nn):(c.sentClientRenderFunction=!0,p(o,tn));if(null===d)throw Error(k(395));p(o,d);p(o,rn);(f||h||g)&&(p(o,on),p(o,u(Sb(f||\"\"))));(h||g)&&(p(o,on),p(o,u(Sb(h||\"\"))));g&&(p(o,on),p(o,u(Sb(g))));if(!t(o,an)){e.destination=null;l++;i.splice(0,l);return}}i.splice(0,l);var b=e.completedBoundaries;for(l=0;l<b.length;l++)if(!jd(e,n,b[l])){e.destination=null;l++;b.splice(0,l);return}b.splice(0,l);ba(n);Pe=new Uint8Array(512);_e=0;var m=e.partialBoundaries;for(l=0;l<m.length;l++){var S=m[l];e:{i=e;s=n;var x=S.completedSegments;for(c=0;c<x.length;c++)if(!kd(i,s,S,x[c])){c++;x.splice(0,c);var $=!1;break e}x.splice(0,c);$=!0}if(!$){e.destination=null;l++;m.splice(0,l);return}}m.splice(0,l);var E=e.completedBoundaries;for(l=0;l<E.length;l++)if(!jd(e,n,E[l])){e.destination=null;l++;E.splice(0,l);return}E.splice(0,l)}finally{ba(n),0===e.allPendingTasks&&0===e.pingedTasks.length&&0===e.clientRenderedBoundaries.length&&0===e.completedBoundaries.length&&n.close()}}function ld(e,n){try{var a=e.abortableTasks;a.forEach((function(a){return ed(a,e,n)}));a.clear();null!==e.destination&&fd(e,e.destination)}catch(n){Y(e,n),Vc(e,n)}}Te.renderToReadableStream=function(e,n){return new Promise((function(a,o){var l,i,s=new Promise((function(e,n){i=e;l=n})),c=Rc(e,za(n?n.identifierPrefix:void 0,n?n.nonce:void 0,n?n.bootstrapScriptContent:void 0,n?n.bootstrapScripts:void 0,n?n.bootstrapModules:void 0),Aa(n?n.namespaceURI:void 0),n?n.progressiveChunkSize:void 0,n?n.onError:void 0,i,(function(){var e=new ReadableStream({type:\"bytes\",pull:function(e){if(1===c.status)c.status=2,da(e,c.fatalError);else if(2!==c.status&&null===c.destination){c.destination=e;try{fd(c,e)}catch(e){Y(c,e),Vc(c,e)}}},cancel:function(){ld(c)}},{highWaterMark:0});e.allReady=s;a(e)}),(function(e){s.catch((function(){}));o(e)}),l);if(n&&n.signal){var d=n.signal,q=function(){ld(c,d.reason);d.removeEventListener(\"abort\",q)};d.addEventListener(\"abort\",q)}Uc(c)}))};Te.version=\"18.2.0\";var Un={};var Zn,Xn;Zn=a;Xn=Te;Un.version=Zn.version;Un.renderToString=Zn.renderToString;Un.renderToStaticMarkup=Zn.renderToStaticMarkup;Un.renderToNodeStream=Zn.renderToNodeStream;Un.renderToStaticNodeStream=Zn.renderToStaticNodeStream;Un.renderToReadableStream=Xn.renderToReadableStream;const Jn=Un.version,Gn=Un.renderToString,Qn=Un.renderToStaticMarkup,Yn=Un.renderToNodeStream,Kn=Un.renderToStaticNodeStream,er=Un.renderToReadableStream;export{Un as default,Yn as renderToNodeStream,er as renderToReadableStream,Qn as renderToStaticMarkup,Kn as renderToStaticNodeStream,Gn as renderToString,Jn as version};\n\n//# sourceMappingURL=server.browser.js.map","var e=typeof globalThis<`u`?globalThis:typeof self<`u`?self:global,t={};(function e(n,r){t=r()})(t,()=>(()=>{var t=[,((e,t,n)=>{n.r(t),n.d(t,{Animation:()=>r.Animation});var r=n(2)}),((t,n,r)=>{r.r(n),r.d(n,{Animation:()=>i});var i=function(){function t(t,n,r,i){(this||e).animation=t,(this||e).artboard=n,(this||e).playing=i,(this||e).loopCount=0,(this||e).scrubTo=null,(this||e).instance=new r.LinearAnimationInstance(t,n)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e).animation.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"time\",{get:function(){return(this||e).instance.time},set:function(t){(this||e).instance.time=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"loopValue\",{get:function(){return(this||e).animation.loopValue},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"needsScrub\",{get:function(){return(this||e).scrubTo!==null},enumerable:!1,configurable:!0}),t.prototype.advance=function(t){(this||e).scrubTo===null?(this||e).instance.advance(t):((this||e).instance.time=0,(this||e).instance.advance((this||e).scrubTo),(this||e).scrubTo=null)},t.prototype.apply=function(t){(this||e).instance.apply(t)},t.prototype.cleanup=function(){(this||e).instance.delete()},t}()}),((t,n,r)=>{r.r(n),r.d(n,{RuntimeLoader:()=>s});var i=r(4),a=r(5),o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},o.apply(this||e,arguments)},s=function(){function e(){}return e.notifyError=function(t){var n;for(e.isLoading=!1;e.errorCallbackQueue.length>0;)(n=e.errorCallbackQueue.shift())==null||n(t);e.callBackQueue=[]},e.loadRuntime=function(){var t=e.wasmURL,n=e.wasmBinary;e.enablePerfMarks&&performance.mark(`rive:wasm-init:start`),i.default(o({locateFile:function(){return t}},n?{wasmBinary:n}:{})).then(function(t){var n;for(e.enablePerfMarks&&(performance.mark(`rive:wasm-init:end`),performance.measure(`rive:wasm-init`,`rive:wasm-init:start`,`rive:wasm-init:end`)),e.runtime=t,e.errorCallbackQueue=[];e.callBackQueue.length>0;)(n=e.callBackQueue.shift())==null||n(e.runtime)}).catch(function(n){var r={message:(n==null?void 0:n.message)||`Unknown error`,type:(n==null?void 0:n.name)||`Error`,wasmError:n instanceof WebAssembly.CompileError||n instanceof WebAssembly.RuntimeError,originalError:n};console.debug(`Rive WASM load error details:`,r);var i=e.wasmFallbackURL,a=i!==null&&t.toLowerCase()===i.toLowerCase();if(i!==null&&!a)console.warn(`Failed to load WASM from ${t} (${r.message}), trying fallback URL: ${i}`),e.wasmBinary=null,e.setWasmUrl(i),e.loadRuntime();else{var o=[`Could not load Rive WASM file from ${a?`the configured WASM URL or its fallback (${i})`:t}.`,`Possible reasons:`,`- Network connection is down`,`- WebAssembly is not supported in this environment`,`- The WASM file is corrupted or incompatible`,`\nError details:`,`- Type: ${r.type}`,`- Message: ${r.message}`,`- WebAssembly-specific error: ${r.wasmError}`,`\nTo resolve, you may need to:`,`1. Check your network connection`,`2. Set a new WASM source via RuntimeLoader.setWasmUrl()`,`3. Call RuntimeLoader.awaitInstance() again`].join(`\n`);console.error(o),e.notifyError(Error(o))}})},e.getInstance=function(t,n){e.isLoading||(e.isLoading=!0,e.loadRuntime()),e.runtime?t(e.runtime):(e.callBackQueue.push(t),n&&e.errorCallbackQueue.push(n))},e.awaitInstance=function(){return new Promise(function(t,n){return e.getInstance(t,n)})},e.setWasmUrl=function(t){e.wasmURL=t},e.getWasmUrl=function(){return e.wasmURL},e.setWasmFallbackUrl=function(t){e.wasmFallbackURL=t},e.getWasmFallbackUrl=function(){return e.wasmFallbackURL},e.setWasmBinary=function(t){if(t instanceof ArrayBuffer||t===null){e.wasmBinary=t;return}console.error(`setWasmBinary expects an ArrayBuffer or null`)},e.getWasmBinary=function(){return e.wasmBinary},e.isLoading=!1,e.callBackQueue=[],e.wasmURL=`https://unpkg.com/${a.name}@${a.version}/rive.wasm`,e.wasmFallbackURL=`https://cdn.jsdelivr.net/npm/${a.name}@${a.version}/rive_fallback.wasm`,e.wasmBinary=null,e.errorCallbackQueue=[],e.enablePerfMarks=!1,e}()}),((t,n,r)=>{r.r(n),r.d(n,{default:()=>i});let i=(()=>{var t=typeof document<`u`?document.currentScript?.src:void 0;return function(n={}){var r,i=n,a,o,s=new Promise((e,t)=>{a=e,o=t}),c=typeof window==`object`,l=typeof importScripts==`function`;function u(){function t(e){let t=i;r=n=0,i=/* @__PURE__ */ new Map,t.forEach(t=>{try{t(e)}catch(e){console.error(e)}}),this.gb(),a&&a.Hb()}let n=0,r=0,i=/* @__PURE__ */ new Map,a=null,o=null;(this||e).requestAnimationFrame=function(a){n||=requestAnimationFrame(t.bind(this||e));let o=++r;return i.set(o,a),o},(this||e).cancelAnimationFrame=function(e){i.delete(e),n&&i.size==0&&(cancelAnimationFrame(n),n=0)},(this||e).Fb=function(t){o&&(document.body.remove(o),o=null),t||(o=document.createElement(`div`),o.style.backgroundColor=`black`,o.style.position=`fixed`,o.style.right=0,o.style.top=0,o.style.color=`white`,o.style.padding=`4px`,o.innerHTML=`RIVE FPS`,t=function(e){o.innerHTML=`RIVE FPS `+e.toFixed(1)},document.body.appendChild(o)),a=new function(){let n=0,r=0;(this||e).Hb=function(){var e=performance.now();r?(++n,e-=r,1e3<e&&(t(1e3*n/e),n=r=0)):(r=e,n=0)}}},(this||e).Cb=function(){o&&(document.body.remove(o),o=null),a=null},(this||e).gb=function(){}}function d(t){console.assert(!0);let n=/* @__PURE__ */ new Map,r=-1/0;(this||e).push=function(e){return e=e+((1<<t)-1)>>t,n.has(e)&&clearTimeout(n.get(e)),n.set(e,setTimeout(function(){n.delete(e),n.length==0?r=-1/0:e==r&&(r=Math.max(...n.keys()),console.assert(r<e))},1e3)),r=Math.max(e,r),r<<t}}let f=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){f&&f();let t=i.decodeAudio;i.decodeAudio=function(e,n){e=t(e),n(e)};let n=i.decodeFont;i.decodeFont=function(e,t){e=n(e),t(e)};let r=i.setFallbackFontCb;i.setFallbackFontCallback=typeof r==`function`?function(e){r(e)}:function(){console.warn(`Module.setFallbackFontCallback called, but text support is not enabled in this build.`)};let a=i.FileAssetLoader;i.ptrToAsset=e=>{let t=i.ptrToFileAsset(e);return t.isImage?i.ptrToImageAsset(e):t.isFont?i.ptrToFontAsset(e):t.isAudio?i.ptrToAudioAsset(e):t},i.CustomFileAssetLoader=a.extend(`CustomFileAssetLoader`,{__construct:function({loadContents:t}){(this||e).__parent.__construct.call(this||e),(this||e).ub=t},loadContents:function(e,t){return e=i.ptrToAsset(e),this.ub(e,t)}}),i.CDNFileAssetLoader=a.extend(`CDNFileAssetLoader`,{__construct:function(){(this||e).__parent.__construct.call(this||e)},loadContents:function(e){let t=i.ptrToAsset(e);return e=t.cdnUuid,e===``?!1:((function(e,t){var n=new XMLHttpRequest;n.responseType=`arraybuffer`,n.onreadystatechange=function(){n.readyState==4&&n.status==200&&t(n)},n.open(`GET`,e,!0),n.send(null)})(t.cdnBaseUrl+`/`+e,e=>{t.decode(new Uint8Array(e.response))}),!0)}}),i.FallbackFileAssetLoader=a.extend(`FallbackFileAssetLoader`,{__construct:function(){(this||e).__parent.__construct.call(this||e),(this||e).bb=[]},addLoader:function(t){(this||e).bb.push(t)},loadContents:function(t,n){for(let r of(this||e).bb)if(r.loadContents(t,n))return!0;return!1}});let o=i.computeAlignment;i.computeAlignment=function(t,n,r,i,a=1){return o.call(this||e,t,n,r,i,a)}};let p=`createConicGradient createImageData createLinearGradient createPattern createRadialGradient getContextAttributes getImageData getLineDash getTransform isContextLost isPointInPath isPointInStroke measureText`.split(` `),m=new function(){function t(){if(!n){var e=document.createElement(`canvas`),t={alpha:1,depth:0,stencil:0,antialias:0,premultipliedAlpha:1,preserveDrawingBuffer:0,powerPreference:`high-performance`,failIfMajorPerformanceCaveat:0,enableExtensionsByDefault:1,explicitSwapControl:1,renderViaOffscreenBackBuffer:1};let s;if(/iPhone|iPad|iPod/i.test(navigator.userAgent)){if(s=e.getContext(`webgl`,t),r=1,!s)return console.log(`No WebGL support. Image mesh will not be drawn.`),!1}else if(s=e.getContext(`webgl2`,t))r=2;else if(s=e.getContext(`webgl`,t))r=1;else return console.log(`No WebGL support. Image mesh will not be drawn.`),!1;s=new Proxy(s,{get(e,t){if(e.isContextLost()){if(l||(console.error(`Cannot render the mesh because the GL Context was lost. Tried to invoke `,t),l=!0),typeof e[t]==`function`)return function(){}}else return typeof e[t]==`function`?function(...n){return e[t].apply(e,n)}:e[t]},set(e,t,n){if(e.isContextLost())l||(console.error(`Cannot render the mesh because the GL Context was lost. Tried to set property `+t),l=!0);else return e[t]=n,!0}}),i=Math.min(s.getParameter(s.MAX_RENDERBUFFER_SIZE),s.getParameter(s.MAX_TEXTURE_SIZE));function c(e,t,n){if(t=s.createShader(t),s.shaderSource(t,n),s.compileShader(t),n=s.getShaderInfoLog(t),0<(n||``).length)throw n;s.attachShader(e,t)}if(e=s.createProgram(),c(e,s.VERTEX_SHADER,`attribute vec2 vertex;\n                attribute vec2 uv;\n                uniform vec4 mat;\n                uniform vec2 translate;\n                varying vec2 st;\n                void main() {\n                    st = uv;\n                    gl_Position = vec4(mat2(mat) * vertex + translate, 0, 1);\n                }`),c(e,s.FRAGMENT_SHADER,`precision highp float;\n                uniform sampler2D image;\n                varying vec2 st;\n                void main() {\n                    gl_FragColor = texture2D(image, st);\n                }`),s.bindAttribLocation(e,0,`vertex`),s.bindAttribLocation(e,1,`uv`),s.linkProgram(e),t=s.getProgramInfoLog(e),0<(t||``).trim().length)throw t;a=s.getUniformLocation(e,`mat`),o=s.getUniformLocation(e,`translate`),s.useProgram(e),s.bindBuffer(s.ARRAY_BUFFER,s.createBuffer()),s.enableVertexAttribArray(0),s.enableVertexAttribArray(1),s.bindBuffer(s.ELEMENT_ARRAY_BUFFER,s.createBuffer()),s.uniform1i(s.getUniformLocation(e,`image`),0),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),n=s}return!0}let n=null,r=0,i=0,a=null,o=null,s=0,c=0,l=!1;t(),(this||e).Tb=function(){return t(),i},(this||e).Bb=function(e){n.deleteTexture&&n.deleteTexture(e)},(this||e).Ab=function(e){if(!t())return null;let i=n.createTexture();return i?(n.bindTexture(n.TEXTURE_2D,i),n.texImage2D(n.TEXTURE_2D,0,n.RGBA,n.RGBA,n.UNSIGNED_BYTE,e),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MAG_FILTER,n.LINEAR),r==2?(n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR_MIPMAP_LINEAR),n.generateMipmap(n.TEXTURE_2D)):n.texParameteri(n.TEXTURE_2D,n.TEXTURE_MIN_FILTER,n.LINEAR),i):null};let u=new d(8),f=new d(8),p=new d(10),m=new d(10);(this||e).Eb=function(e,r,i,l,d){if(t()){var h=u.push(e),g=f.push(r);if(n.canvas){(n.canvas.width!=h||n.canvas.height!=g)&&(n.canvas.width=h,n.canvas.height=g),n.viewport(0,g-r,e,r),n.disable(n.SCISSOR_TEST),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.SCISSOR_TEST),i.sort((e,t)=>t.nb-e.nb),h=p.push(l),s!=h&&(n.bufferData(n.ARRAY_BUFFER,8*h,n.DYNAMIC_DRAW),s=h),h=0;for(var _ of i)n.bufferSubData(n.ARRAY_BUFFER,h,_.La),h+=4*_.La.length;console.assert(h==4*l);for(var v of i)n.bufferSubData(n.ARRAY_BUFFER,h,v.rb),h+=4*v.rb.length;console.assert(h==8*l),h=m.push(d),c!=h&&(n.bufferData(n.ELEMENT_ARRAY_BUFFER,2*h,n.DYNAMIC_DRAW),c=h),_=0;for(var y of i)n.bufferSubData(n.ELEMENT_ARRAY_BUFFER,_,y.indices),_+=2*y.indices.length;console.assert(_==2*d),y=0,v=!0,h=_=0;for(let t of i){t.image.Da!=y&&(n.bindTexture(n.TEXTURE_2D,t.image.Ca||null),y=t.image.Da),t.Yb?(n.scissor(t.Ra,g-t.Sa-t.ab,t.kc,t.ab),v=!0):v&&(n.scissor(0,g-r,e,r),v=!1),i=2/e;let s=-2/r;n.uniform4f(a,t.da[0]*i*t.ua,t.da[1]*s*t.va,t.da[2]*i*t.ua,t.da[3]*s*t.va),n.uniform2f(o,t.da[4]*i*t.ua+i*(t.Ra-t.Ub*t.ua)-1,t.da[5]*s*t.va+s*(t.Sa-t.Vb*t.va)+1),n.vertexAttribPointer(0,2,n.FLOAT,!1,0,h),n.vertexAttribPointer(1,2,n.FLOAT,!1,0,h+4*l),n.drawElements(n.TRIANGLES,t.indices.length,n.UNSIGNED_SHORT,_),h+=4*t.La.length,_+=2*t.indices.length}console.assert(h==4*l),console.assert(_==2*d)}}},(this||e).canvas=function(){return t()&&n.canvas}},h=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){function t(e){switch(e){case f.srcOver:return`source-over`;case f.screen:return`screen`;case f.overlay:return`overlay`;case f.darken:return`darken`;case f.lighten:return`lighten`;case f.colorDodge:return`color-dodge`;case f.colorBurn:return`color-burn`;case f.hardLight:return`hard-light`;case f.softLight:return`soft-light`;case f.difference:return`difference`;case f.exclusion:return`exclusion`;case f.multiply:return`multiply`;case f.hue:return`hue`;case f.saturation:return`saturation`;case f.color:return`color`;case f.luminosity:return`luminosity`}}function n(e){return`rgba(`+((16711680&e)>>>16)+`,`+((65280&e)>>>8)+`,`+((255&e)>>>0)+`,`+((4278190080&e)>>>24)/255+`)`}function r(){0<T.length&&(m.Eb(w.drawWidth(),w.drawHeight(),T,E,D),T=[],D=E=0,w.reset(512,512));for(let e of C){for(let t of e.G)t();e.G=[]}C.clear()}h&&h();var a=i.RenderPaintStyle;let o=i.RenderPath,s=i.RenderPaint,c=i.Renderer,l=i.StrokeCap,d=i.StrokeJoin,f=i.BlendMode,g=a.fill,_=a.stroke,v=i.FillRule.evenOdd,y=1;var b=i.RenderImage.extend(`CanvasRenderImage`,{__construct:function({ha:t,sa:n}={}){(this||e).__parent.__construct.call(this||e),(this||e).Da=y,y=y+1&2147483647||1,(this||e).ha=t,(this||e).sa=n},__destruct:function(){(this||e).Ca&&(m.Bb((this||e).Ca),URL.revokeObjectURL((this||e).Oa)),(this||e).__parent.__destruct.call(this||e)},decode:function(t){var n=this||e;n.sa&&n.sa(n);var r=new Image;n.Oa=URL.createObjectURL(new Blob([t],{type:`image/png`})),r.onload=function(){n.tb=r,n.Ca=m.Ab(r),n.size(r.width,r.height),n.ha&&n.ha(n)},r.src=n.Oa}}),x=o.extend(`CanvasRenderPath`,{__construct:function(){(this||e).__parent.__construct.call(this||e),(this||e).R=new Path2D},rewind:function(){(this||e).R=new Path2D},addPath:function(t,n,r,i,a,o,s){var c=(this||e).R,l=c.addPath;t=t.R;let u=new DOMMatrix;u.a=n,u.b=r,u.c=i,u.d=a,u.e=o,u.f=s,l.call(c,t,u)},fillRule:function(t){(this||e).Na=t},moveTo:function(t,n){(this||e).R.moveTo(t,n)},lineTo:function(t,n){(this||e).R.lineTo(t,n)},cubicTo:function(t,n,r,i,a,o){(this||e).R.bezierCurveTo(t,n,r,i,a,o)},close:function(){(this||e).R.closePath()}}),S=s.extend(`CanvasRenderPaint`,{color:function(t){(this||e).Pa=n(t)},thickness:function(t){(this||e).xb=t},join:function(t){switch(t){case d.miter:(this||e).Ba=`miter`;break;case d.round:(this||e).Ba=`round`;break;case d.bevel:(this||e).Ba=`bevel`}},cap:function(t){switch(t){case l.butt:(this||e).Aa=`butt`;break;case l.round:(this||e).Aa=`round`;break;case l.square:(this||e).Aa=`square`}},style:function(t){(this||e).wb=t},blendMode:function(n){(this||e).sb=t(n)},clearGradient:function(){(this||e).fa=null},linearGradient:function(t,n,r,i){(this||e).fa={ob:t,pb:n,Va:r,Wa:i,Ja:[]}},radialGradient:function(t,n,r,i){(this||e).fa={ob:t,pb:n,Va:r,Wa:i,Ja:[],Sb:!0}},addStop:function(t,n){(this||e).fa.Ja.push({color:t,stop:n})},completeGradient:function(){},draw:function(t,r,i,a){let o=(this||e).wb;var s=(this||e).Pa,c=(this||e).fa;let l=t.globalCompositeOperation,u=t.globalAlpha;if(t.globalCompositeOperation=(this||e).sb,t.globalAlpha=a,c!=null){s=c.ob;let r=c.pb,i=c.Va;var d=c.Wa;a=c.Ja,c.Sb?(c=i-s,d-=r,s=t.createRadialGradient(s,r,0,s,r,Math.sqrt(c*c+d*d))):s=t.createLinearGradient(s,r,i,d);for(let e=0,t=a.length;e<t;e++)c=a[e],s.addColorStop(c.stop,n(c.color));(this||e).Pa=s,(this||e).fa=null}switch(o){case _:t.strokeStyle=s,t.lineWidth=(this||e).xb,t.lineCap=(this||e).Aa,t.lineJoin=(this||e).Ba,t.stroke(r);break;case g:t.fillStyle=s,t.fill(r,i)}t.globalCompositeOperation=l,t.globalAlpha=u}});let C=/* @__PURE__ */ new Set,w=null,T=[],E=0,D=0;var O=i.CanvasRenderer=c.extend(`Renderer`,{__construct:function(t){(this||e).__parent.__construct.call(this||e),(this||e).P=[1,0,0,1,0,0],(this||e).D=[1],(this||e).A=t.getContext(`2d`),(this||e).Ma=t,(this||e).G=[]},save:function(){(this||e).P.push(...(this||e).P.slice((this||e).P.length-6)),(this||e).D.push((this||e).D[(this||e).D.length-1]),(this||e).G.push((this||e).A.save.bind((this||e).A))},restore:function(){let t=(this||e).P.length-6;if(6>t)throw`restore() called without matching save().`;(this||e).P.splice(t),(this||e).D.pop(),(this||e).G.push((this||e).A.restore.bind((this||e).A))},transform:function(t,n,r,i,a,o){let s=(this||e).P,c=s.length-6;s.splice(c,6,s[c]*t+s[c+2]*n,s[c+1]*t+s[c+3]*n,s[c]*r+s[c+2]*i,s[c+1]*r+s[c+3]*i,s[c]*a+s[c+2]*o+s[c+4],s[c+1]*a+s[c+3]*o+s[c+5]),(this||e).G.push((this||e).A.transform.bind((this||e).A,t,n,r,i,a,o))},rotate:function(e){let t=Math.sin(e);e=Math.cos(e),this.transform(e,t,-t,e,0,0)},modulateOpacity:function(t){(this||e).D[(this||e).D.length-1]*=t},_drawPath:function(t,n){(this||e).G.push(n.draw.bind(n,(this||e).A,t.R,t.Na===v?`evenodd`:`nonzero`,Math.max(0,(this||e).D[(this||e).D.length-1])))},_drawRiveImage:function(n,r,i,a){var o=n.tb;if(o){var s=(this||e).A,c=t(i),l=Math.max(0,a*(this||e).D[(this||e).D.length-1]);(this||e).G.push(function(){s.globalCompositeOperation=c,s.globalAlpha=l,s.drawImage(o,0,0),s.globalAlpha=1})}},_getMatrix:function(t){let n=(this||e).P,r=n.length-6;for(let e=0;6>e;++e)t[e]=n[r+e]},_drawImageMesh:function(n,a,o,s,c,l,u,d,f,p,h,g,_,v){let y,b,x;try{y=i.HEAPF32.slice(c>>2,(c>>2)+l),b=i.HEAPF32.slice(u>>2,(u>>2)+d),x=i.HEAPU16.slice(f>>1,(f>>1)+p)}catch(e){console.error(`[Rive] _drawImageMesh: failed to read mesh data from WASM heap. Mesh skipped for this frame.`);return}a=(this||e).A.canvas.width,c=(this||e).A.canvas.height,u=_-h,d=v-g,h=Math.max(h,0),g=Math.max(g,0),_=Math.min(_,a),v=Math.min(v,c);let S=_-h,O=v-g;if(console.assert(S<=Math.min(u,a)),console.assert(O<=Math.min(d,c)),!(0>=S||0>=O)){_=S<u||O<d,a=v=1;var k=Math.ceil(S*v),A=Math.ceil(O*a);c=m.Tb(),k>c&&(v*=c/k,k=c),A>c&&(a*=c/A,A=c),w||(w=new i.DynamicRectanizer(c),w.reset(512,512)),c=w.addRect(k,A),0>c&&(r(),C.add(this||e),c=w.addRect(k,A),console.assert(0<=c));var j=c&65535,N=c>>16;T.push({da:(this||e).P.slice((this||e).P.length-6),image:n,Ra:j,Sa:N,Ub:h,Vb:g,kc:k,ab:A,ua:v,va:a,La:y,rb:b,indices:x,Yb:_,nb:n.Da<<1|!!_}),E+=l,D+=p;var P=(this||e).A,ee=t(o),te=Math.max(0,s*(this||e).D[(this||e).D.length-1]);(this||e).G.push(function(){P.save(),P.resetTransform(),P.globalCompositeOperation=ee,P.globalAlpha=te;let e=m.canvas();e&&P.drawImage(e,j,N,k,A,h,g,S,O),P.restore()})}},_clipPath:function(t){(this||e).G.push((this||e).A.clip.bind((this||e).A,t.R,t.Na===v?`evenodd`:`nonzero`))},clear:function(){C.add(this||e),(this||e).G.push((this||e).A.clearRect.bind((this||e).A,0,0,(this||e).Ma.width,(this||e).Ma.height))},flush:function(){},translate:function(e,t){this.transform(1,0,0,1,e,t)}});i.makeRenderer=function(e){let t=new O(e),n=t.A;return new Proxy(t,{get(e,r){if(typeof e[r]==`function`)return function(...t){return e[r].apply(e,t)};if(typeof n[r]==`function`){if(-1<p.indexOf(r))throw Error(`RiveException: Method call to '`+r+`()' is not allowed, as the renderer cannot immediately pass through the return                 values of any canvas 2d context methods.`);return function(...e){t.G.push(n[r].bind(n,...e))}}return e[r]},set(e,r,i){if(r in n)return t.G.push(()=>{n[r]=i}),!0}})},i.decodeImage=function(e,t){new b({ha:t}).decode(e)},i.renderFactory={makeRenderPaint:function(){return new S},makeRenderPath:function(){return new x},makeRenderImage:function(){let e=A;return new b({sa:()=>{e.total++},ha:()=>{if(e.loaded++,e.loaded===e.total){let t=e.ready;t&&(t(),e.ready=null)}}})}};let k=i.load,A=null;i.load=function(e,t,n=!0){let r=new i.FallbackFileAssetLoader;return t!==void 0&&r.addLoader(t),n&&(t=new i.CDNFileAssetLoader,r.addLoader(t)),new Promise(function(t){let n=null;A={total:0,loaded:0,ready:function(){t(n)}},n=k(e,r),A.total==0&&t(n)})};let j=i.RendererWrapper.prototype.align;i.RendererWrapper.prototype.align=function(t,n,r,i,a=1){j.call(this||e,t,n,r,i,a)},a=new u,i.requestAnimationFrame=a.requestAnimationFrame.bind(a),i.cancelAnimationFrame=a.cancelAnimationFrame.bind(a),i.enableFPSCounter=a.Fb.bind(a),i.disableFPSCounter=a.Cb,a.gb=r,i.resolveAnimationFrame=r,i.cleanup=function(){w&&w.delete()}};var g=Object.assign({},i),_=`./this.program`,v=``,y,b;(c||l)&&(l?v=self.location.href:typeof document<`u`&&document.currentScript&&(v=document.currentScript.src),t&&(v=t),v=v.startsWith(`blob:`)?``:v.substr(0,v.replace(/[?#].*/,``).lastIndexOf(`/`)+1),l&&(b=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),y=(e,t,n)=>{if(se(e)){var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{r.status==200||r.status==0&&r.response?t(r.response):n()},r.onerror=n,r.send(null)}else fetch(e,{credentials:`same-origin`}).then(e=>e.ok?e.arrayBuffer():Promise.reject(Error(e.status+` : `+e.url))).then(t,n)});var x=i.print||console.log.bind(console),S=i.printErr||console.error.bind(console);Object.assign(i,g),g=null,i.thisProgram&&(_=i.thisProgram);var C;i.wasmBinary&&(C=i.wasmBinary);var w,T=!1,E,D,O,k,A,j,N,P;function ee(){var e=w.buffer;i.HEAP8=E=new Int8Array(e),i.HEAP16=O=new Int16Array(e),i.HEAPU8=D=new Uint8Array(e),i.HEAPU16=k=new Uint16Array(e),i.HEAP32=A=new Int32Array(e),i.HEAPU32=j=new Uint32Array(e),i.HEAPF32=N=new Float32Array(e),i.HEAPF64=P=new Float64Array(e)}var te=[],ne=[],re=[];function ie(){var e=i.preRun.shift();te.unshift(e)}var F=0,I=null,L=null;function ae(e){throw i.onAbort?.(e),e=`Aborted(`+e+`)`,S(e),T=!0,e=new WebAssembly.RuntimeError(e+`. Build with -sASSERTIONS for more info.`),o(e),e}var oe=e=>e.startsWith(`data:application/octet-stream;base64,`),se=e=>e.startsWith(`file://`),ce;function le(e){if(e==ce&&C)return new Uint8Array(C);if(b)return b(e);throw`both async and sync fetching of the wasm failed`}function ue(e){return C?Promise.resolve().then(()=>le(e)):new Promise((t,n)=>{y(e,e=>t(new Uint8Array(e)),()=>{try{t(le(e))}catch(e){n(e)}})})}function de(e,t,n){return ue(e).then(e=>WebAssembly.instantiate(e,t)).then(n,e=>{S(`failed to asynchronously prepare wasm: ${e}`),ae(e)})}function fe(e,t){var n=ce;return C||typeof WebAssembly.instantiateStreaming!=`function`||oe(n)||se(n)||typeof fetch!=`function`?de(n,e,t):fetch(n,{credentials:`same-origin`}).then(r=>WebAssembly.instantiateStreaming(r,e).then(t,function(r){return S(`wasm streaming compile failed: ${r}`),S(`falling back to ArrayBuffer instantiation`),de(n,e,t)}))}var pe,me,R={486221:(e,t,n,r,i)=>{if(typeof window>`u`||(window.AudioContext||window.webkitAudioContext)===void 0)return 0;if(window.miniaudio===void 0){window.miniaudio={referenceCount:0},window.miniaudio.device_type={},window.miniaudio.device_type.playback=e,window.miniaudio.device_type.capture=t,window.miniaudio.device_type.duplex=n,window.miniaudio.device_state={},window.miniaudio.device_state.stopped=r,window.miniaudio.device_state.started=i;let a=window.miniaudio;a.devices=[],a.track_device=function(e){for(var t=0;t<a.devices.length;++t)if(a.devices[t]==null)return a.devices[t]=e,t;return a.devices.push(e),a.devices.length-1},a.untrack_device_by_index=function(e){for(a.devices[e]=null;0<a.devices.length&&a.devices[a.devices.length-1]==null;)a.devices.pop()},a.untrack_device=function(e){for(var t=0;t<a.devices.length;++t)if(a.devices[t]==e)return a.untrack_device_by_index(t)},a.get_device_by_index=function(e){return a.devices[e]},a.unlock_event_types=[`touchend`,`click`],a.unlock=function(){for(var e=0;e<a.devices.length;++e){var t=a.devices[e];t!=null&&t.I!=null&&t.state===a.device_state.started&&t.I.resume().then(()=>{Kn(t.hb)},e=>{console.error(`Failed to resume audiocontext`,e)})}a.unlock_event_types.map(function(e){document.removeEventListener(e,a.unlock,!0)})},a.unlock_event_types.map(function(e){document.addEventListener(e,a.unlock,!0)})}return window.miniaudio.referenceCount+=1,1},488399:()=>{window.miniaudio!==void 0&&(window.miniaudio.unlock_event_types.map(function(e){document.removeEventListener(e,window.miniaudio.unlock,!0)}),--window.miniaudio.referenceCount,window.miniaudio.referenceCount===0&&delete window.miniaudio)},488703:()=>navigator.mediaDevices!==void 0&&navigator.mediaDevices.getUserMedia!==void 0,488807:()=>{try{var e=new(window.AudioContext||window.webkitAudioContext),t=e.sampleRate;return e.close(),t}catch(e){return 0}},488978:(e,t,n,r,i,a)=>{if(window.miniaudio===void 0)return-1;var o={},s={};return e==window.miniaudio.device_type.playback&&n!=0&&(s.sampleRate=n),o.I=new(window.AudioContext||window.webkitAudioContext)(s),o.I.suspend(),o.state=window.miniaudio.device_state.stopped,n=0,e!=window.miniaudio.device_type.playback&&(n=t),o.W=o.I.createScriptProcessor(r,n,t),o.W.onaudioprocess=function(n){if((o.na==null||o.na.length==0)&&(o.na=new Float32Array(N.buffer,i,r*t)),e==window.miniaudio.device_type.capture||e==window.miniaudio.device_type.duplex){for(var s=0;s<t;s+=1)for(var c=n.inputBuffer.getChannelData(s),l=o.na,u=0;u<r;u+=1)l[u*t+s]=c[u];qn(a,r,i)}if(e==window.miniaudio.device_type.playback||e==window.miniaudio.device_type.duplex)for(Jn(a,r,i),s=0;s<n.outputBuffer.numberOfChannels;++s)for(c=n.outputBuffer.getChannelData(s),l=o.na,u=0;u<r;u+=1)c[u]=l[u*t+s];else for(s=0;s<n.outputBuffer.numberOfChannels;++s)n.outputBuffer.getChannelData(s).fill(0)},e!=window.miniaudio.device_type.capture&&e!=window.miniaudio.device_type.duplex||navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then(function(e){o.wa=o.I.createMediaStreamSource(e),o.wa.connect(o.W),o.W.connect(o.I.destination)}).catch(function(e){console.log(`Failed to get user media: `+e)}),e==window.miniaudio.device_type.playback&&o.W.connect(o.I.destination),o.hb=a,window.miniaudio.track_device(o)},491855:e=>window.miniaudio.get_device_by_index(e).I.sampleRate,491928:e=>{e=window.miniaudio.get_device_by_index(e),e.W!==void 0&&(e.W.onaudioprocess=function(){},e.W.disconnect(),e.W=void 0),e.wa!==void 0&&(e.wa.disconnect(),e.wa=void 0),e.I.close(),e.I=void 0,e.hb=void 0},492328:e=>{window.miniaudio.untrack_device_by_index(e)},492378:e=>{e=window.miniaudio.get_device_by_index(e),e.I.resume(),e.state=window.miniaudio.device_state.started},492517:e=>{e=window.miniaudio.get_device_by_index(e),e.I.suspend(),e.state=window.miniaudio.device_state.stopped}},he=e=>{for(;0<e.length;)e.shift()(i)};function z(){var e=A[mt>>2];return mt+=4,e}var ge=(e,t)=>{for(var n=0,r=e.length-1;0<=r;r--){var i=e[r];i===`.`?e.splice(r,1):i===`..`?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n;n--)e.unshift(`..`);return e},_e=e=>{var t=e.charAt(0)===`/`,n=e.substr(-1)===`/`;return(e=ge(e.split(`/`).filter(e=>!!e),!t).join(`/`))||t||(e=`.`),e&&n&&(e+=`/`),(t?`/`:``)+e},ve=e=>{var t=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],!e&&!t?`.`:(t&&=t.substr(0,t.length-1),e+t)},ye=e=>{if(e===`/`)return`/`;e=_e(e),e=e.replace(/\\/$/,``);var t=e.lastIndexOf(`/`);return t===-1?e:e.substr(t+1)},be=()=>{if(typeof crypto==`object`&&typeof crypto.getRandomValues==`function`)return e=>crypto.getRandomValues(e);ae(`initRandomDevice`)},xe=e=>(xe=be())(e),Se=(...e)=>{for(var t=``,n=!1,r=e.length-1;-1<=r&&!n;r--){if(n=0<=r?e[r]:`/`,typeof n!=`string`)throw TypeError(`Arguments to path.resolve must be strings`);if(!n)return``;t=n+`/`+t,n=n.charAt(0)===`/`}return t=ge(t.split(`/`).filter(e=>!!e),!n).join(`/`),(n?`/`:``)+t||`.`},Ce=typeof TextDecoder<`u`?new TextDecoder(`utf8`):void 0,we=(e,t,n)=>{var r=t+n;for(n=t;e[n]&&!(n>=r);)++n;if(16<n-t&&e.buffer&&Ce)return Ce.decode(e.subarray(t,n));for(r=``;t<n;){var i=e[t++];if(i&128){var a=e[t++]&63;if((i&224)==192)r+=String.fromCharCode((i&31)<<6|a);else{var o=e[t++]&63;i=(i&240)==224?(i&15)<<12|a<<6|o:(i&7)<<18|a<<12|o<<6|e[t++]&63,65536>i?r+=String.fromCharCode(i):(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|i&1023))}}else r+=String.fromCharCode(i)}return r},Te=[],Ee=e=>{for(var t=0,n=0;n<e.length;++n){var r=e.charCodeAt(n);127>=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},De=(e,t,n,r)=>{if(!(0<r))return 0;var i=n;r=n+r-1;for(var a=0;a<e.length;++a){var o=e.charCodeAt(a);if(55296<=o&&57343>=o){var s=e.charCodeAt(++a);o=65536+((o&1023)<<10)|s&1023}if(127>=o){if(n>=r)break;t[n++]=o}else{if(2047>=o){if(n+1>=r)break;t[n++]=192|o>>6}else{if(65535>=o){if(n+2>=r)break;t[n++]=224|o>>12}else{if(n+3>=r)break;t[n++]=240|o>>18,t[n++]=128|o>>12&63}t[n++]=128|o>>6&63}t[n++]=128|o&63}}return t[n]=0,n-i};function Oe(e,t){var n=Array(Ee(e)+1);return e=De(e,n,0,n.length),t&&(n.length=e),n}var ke=[];function Ae(e,t){ke[e]={input:[],F:[],T:t},tt(e,je)}var je={open(e){var t=ke[e.node.ta];if(!t)throw new M(43);e.o=t,e.seekable=!1},close(e){e.o.T.la(e.o)},la(e){e.o.T.la(e.o)},read(e,t,n,r){if(!e.o||!e.o.T.$a)throw new M(60);for(var i=0,a=0;a<r;a++){try{var o=e.o.T.$a(e.o)}catch(e){throw new M(29)}if(o===void 0&&i===0)throw new M(6);if(o==null)break;i++,t[n+a]=o}return i&&(e.node.timestamp=Date.now()),i},write(e,t,n,r){if(!e.o||!e.o.T.Ga)throw new M(60);try{for(var i=0;i<r;i++)e.o.T.Ga(e.o,t[n+i])}catch(e){throw new M(29)}return r&&(e.node.timestamp=Date.now()),i}},Me={$a(){a:{if(!Te.length){var e=null;if(typeof window<`u`&&typeof window.prompt==`function`&&(e=window.prompt(`Input: `),e!==null&&(e+=`\n`)),!e){e=null;break a}Te=Oe(e,!0)}e=Te.shift()}return e},Ga(e,t){t===null||t===10?(x(we(e.F,0)),e.F=[]):t!=0&&e.F.push(t)},la(e){e.F&&0<e.F.length&&(x(we(e.F,0)),e.F=[])},Pb(){return{uc:25856,wc:5,tc:191,vc:35387,sc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},Qb(){return 0},Rb(){return[24,80]}},Ne={Ga(e,t){t===null||t===10?(S(we(e.F,0)),e.F=[]):t!=0&&e.F.push(t)},la(e){e.F&&0<e.F.length&&(S(we(e.F,0)),e.F=[])}};function Pe(e,t){var n=e.j?e.j.length:0;n>=t||(t=Math.max(t,n*(1048576>n?2:1.125)>>>0),n!=0&&(t=Math.max(t,256)),n=e.j,e.j=new Uint8Array(t),0<e.u&&e.j.set(n.subarray(0,e.u),0))}var B={L:null,S(){return B.createNode(null,`/`,16895,0)},createNode(e,t,n,r){if((n&61440)==24576||(n&61440)==4096)throw new M(63);return B.L||(B.L={dir:{node:{V:B.i.V,N:B.i.N,ga:B.i.ga,qa:B.i.qa,lb:B.i.lb,qb:B.i.qb,mb:B.i.mb,kb:B.i.kb,xa:B.i.xa},stream:{Z:B.l.Z}},file:{node:{V:B.i.V,N:B.i.N},stream:{Z:B.l.Z,read:B.l.read,write:B.l.write,Qa:B.l.Qa,cb:B.l.cb,fb:B.l.fb}},link:{node:{V:B.i.V,N:B.i.N,ia:B.i.ia},stream:{}},Ta:{node:{V:B.i.V,N:B.i.N},stream:et}}),n=qe(e,t,n,r),(n.mode&61440)==16384?(n.i=B.L.dir.node,n.l=B.L.dir.stream,n.j={}):(n.mode&61440)==32768?(n.i=B.L.file.node,n.l=B.L.file.stream,n.u=0,n.j=null):(n.mode&61440)==40960?(n.i=B.L.link.node,n.l=B.L.link.stream):(n.mode&61440)==8192&&(n.i=B.L.Ta.node,n.l=B.L.Ta.stream),n.timestamp=Date.now(),e&&(e.j[t]=n,e.timestamp=n.timestamp),n},Ac(e){return e.j?e.j.subarray?e.j.subarray(0,e.u):new Uint8Array(e.j):new Uint8Array},i:{V(e){var t={};return t.yc=(e.mode&61440)==8192?e.id:1,t.Cc=e.id,t.mode=e.mode,t.Gc=1,t.uid=0,t.Bc=0,t.ta=e.ta,(e.mode&61440)==16384?t.size=4096:(e.mode&61440)==32768?t.size=e.u:(e.mode&61440)==40960?t.size=e.link.length:t.size=0,t.qc=new Date(e.timestamp),t.Fc=new Date(e.timestamp),t.xc=new Date(e.timestamp),t.yb=4096,t.rc=Math.ceil(t.size/t.yb),t},N(e,t){if(t.mode!==void 0&&(e.mode=t.mode),t.timestamp!==void 0&&(e.timestamp=t.timestamp),t.size!==void 0&&(t=t.size,e.u!=t))if(t==0)e.j=null,e.u=0;else{var n=e.j;e.j=new Uint8Array(t),n&&e.j.set(n.subarray(0,Math.min(t,e.u))),e.u=t}},ga(){throw He[44]},qa(e,t,n,r){return B.createNode(e,t,n,r)},lb(e,t,n){if((e.mode&61440)==16384){try{var r=Ke(t,n)}catch(e){}if(r)for(var i in r.j)throw new M(55)}delete e.parent.j[e.name],e.parent.timestamp=Date.now(),e.name=n,t.j[n]=e,t.timestamp=e.parent.timestamp},qb(e,t){delete e.j[t],e.timestamp=Date.now()},mb(e,t){var n=Ke(e,t),r;for(r in n.j)throw new M(55);delete e.j[t],e.timestamp=Date.now()},kb(e){var t=[`.`,`..`],n;for(n of Object.keys(e.j))t.push(n);return t},xa(e,t,n){return e=B.createNode(e,t,41471,0),e.link=n,e},ia(e){if((e.mode&61440)!=40960)throw new M(28);return e.link}},l:{read(e,t,n,r,i){var a=e.node.j;if(i>=e.node.u)return 0;if(e=Math.min(e.node.u-i,r),8<e&&a.subarray)t.set(a.subarray(i,i+e),n);else for(r=0;r<e;r++)t[n+r]=a[i+r];return e},write(e,t,n,r,i,a){if(t.buffer===E.buffer&&(a=!1),!r)return 0;if(e=e.node,e.timestamp=Date.now(),t.subarray&&(!e.j||e.j.subarray)){if(a)return e.j=t.subarray(n,n+r),e.u=r;if(e.u===0&&i===0)return e.j=t.slice(n,n+r),e.u=r;if(i+r<=e.u)return e.j.set(t.subarray(n,n+r),i),r}if(Pe(e,i+r),e.j.subarray&&t.subarray)e.j.set(t.subarray(n,n+r),i);else for(a=0;a<r;a++)e.j[i+a]=t[n+a];return e.u=Math.max(e.u,i+r),r},Z(e,t,n){if(n===1?t+=e.position:n===2&&(e.node.mode&61440)==32768&&(t+=e.node.u),0>t)throw new M(28);return t},Qa(e,t,n){Pe(e.node,t+n),e.node.u=Math.max(e.node.u,t+n)},cb(e,t,n,r,i){if((e.node.mode&61440)!=32768)throw new M(43);if(e=e.node.j,i&2||e.buffer!==E.buffer){if((0<n||n+t<e.length)&&(e=e.subarray?e.subarray(n,n+t):Array.prototype.slice.call(e,n,n+t)),n=!0,ae(),t=void 0,!t)throw new M(48);E.set(e,t)}else n=!1,t=e.byteOffset;return{m:t,pc:n}},fb(e,t,n,r){return B.l.write(e,t,0,r,n,!1),0}}},Fe=(e,t)=>{var n=0;return e&&(n|=365),t&&(n|=146),n},Ie=null,Le={},Re=[],ze=1,Be=null,Ve=!0,M=class{constructor(e){this.name=`ErrnoError`,this.Y=e}},He={},Nb=class{constructor(){this.ma={},this.node=null}get flags(){return this.ma.flags}set flags(e){this.ma.flags=e}get position(){return this.ma.position}set position(e){this.ma.position=e}},Ob=class{constructor(e,t,n,r){e||=this,this.parent=e,this.S=e.S,this.ra=null,this.id=ze++,this.name=t,this.mode=n,this.i={},this.l={},this.ta=r}get read(){return(this.mode&365)==365}set read(e){e?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)==146}set write(e){e?this.mode|=146:this.mode&=-147}};function Ue(e,t={}){if(e=Se(e),!e)return{path:``,node:null};if(t=Object.assign({Za:!0,Ia:0},t),8<t.Ia)throw new M(32);e=e.split(`/`).filter(e=>!!e);for(var n=Ie,r=`/`,i=0;i<e.length;i++){var a=i===e.length-1;if(a&&t.parent)break;if(n=Ke(n,e[i]),r=_e(r+`/`+e[i]),n.ra&&(!a||a&&t.Za)&&(n=n.ra.root),!a||t.Ya){for(a=0;(n.mode&61440)==40960;)if(n=ot(r),r=Se(ve(r),n),n=Ue(r,{Ia:t.Ia+1}).node,40<a++)throw new M(32)}}return{path:r,node:n}}function We(e){for(var t;;){if(e===e.parent)return e=e.S.eb,t?e[e.length-1]===`/`?e+t:`${e}/${t}`:e;t=t?`${e.name}/${t}`:e.name,e=e.parent}}function Ge(e,t){for(var n=0,r=0;r<t.length;r++)n=(n<<5)-n+t.charCodeAt(r)|0;return(e+n>>>0)%Be.length}function Ke(e,t){var n=(e.mode&61440)==16384?(n=Ye(e,`x`))?n:e.i.ga?0:2:54;if(n)throw new M(n);for(n=Be[Ge(e.id,t)];n;n=n.Xb){var r=n.name;if(n.parent.id===e.id&&r===t)return n}return e.i.ga(e,t)}function qe(e,t,n,r){return e=new Ob(e,t,n,r),t=Ge(e.parent.id,e.name),e.Xb=Be[t],Be[t]=e}function Je(e){var t=[`r`,`w`,`rw`][e&3];return e&512&&(t+=`w`),t}function Ye(e,t){if(Ve)return 0;if(!t.includes(`r`)||e.mode&292){if(t.includes(`w`)&&!(e.mode&146)||t.includes(`x`)&&!(e.mode&73))return 2}else return 2;return 0}function Xe(e,t){try{return Ke(e,t),20}catch(e){}return Ye(e,`wx`)}function Ze(e){if(e=Re[e],!e)throw new M(8);return e}function Qe(e,t=-1){if(e=Object.assign(new Nb,e),t==-1)a:{for(t=0;4096>=t;t++)if(!Re[t])break a;throw new M(33)}return e.U=t,Re[t]=e}function $e(e,t=-1){return e=Qe(e,t),e.l?.zc?.(e),e}var et={open(e){e.l=Le[e.node.ta].l,e.l.open?.(e)},Z(){throw new M(70)}};function tt(e,t){Le[e]={l:t}}function nt(e,t){var n=t===`/`;if(n&&Ie)throw new M(10);if(!n&&t){var r=Ue(t,{Za:!1});if(t=r.path,r=r.node,r.ra)throw new M(10);if((r.mode&61440)!=16384)throw new M(54)}t={type:e,Ic:{},eb:t,Wb:[]},e=e.S(t),e.S=t,t.root=e,n?Ie=e:r&&(r.ra=t,r.S&&r.S.Wb.push(t))}function rt(e,t,n){var r=Ue(e,{parent:!0}).node;if(e=ye(e),!e||e===`.`||e===`..`)throw new M(28);var i=Xe(r,e);if(i)throw new M(i);if(!r.i.qa)throw new M(63);return r.i.qa(r,e,t,n)}function V(e){return rt(e,16895,0)}function it(e,t,n){n===void 0&&(n=t,t=438),rt(e,t|8192,n)}function at(e,t){if(!Se(e))throw new M(44);var n=Ue(t,{parent:!0}).node;if(!n)throw new M(44);t=ye(t);var r=Xe(n,t);if(r)throw new M(r);if(!n.i.xa)throw new M(63);n.i.xa(n,t,e)}function ot(e){if(e=Ue(e).node,!e)throw new M(44);if(!e.i.ia)throw new M(28);return Se(We(e.parent),e.i.ia(e))}function st(e,t,n){if(e===``)throw new M(44);if(typeof t==`string`){var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090}[t];if(r===void 0)throw Error(`Unknown file open mode: ${t}`);t=r}if(n=t&64?(n===void 0?438:n)&4095|32768:0,typeof e==`object`)var a=e;else{e=_e(e);try{a=Ue(e,{Ya:!(t&131072)}).node}catch(e){}}if(r=!1,t&64)if(a){if(t&128)throw new M(20)}else a=rt(e,n,0),r=!0;if(!a)throw new M(44);if((a.mode&61440)==8192&&(t&=-513),t&65536&&(a.mode&61440)!=16384)throw new M(54);if(!r&&(n=a?(a.mode&61440)==40960?32:(a.mode&61440)==16384&&(Je(t)!==`r`||t&512)?31:Ye(a,Je(t)):44))throw new M(n);if(t&512&&!r){if(n=a,n=typeof n==`string`?Ue(n,{Ya:!0}).node:n,!n.i.N)throw new M(63);if((n.mode&61440)==16384)throw new M(31);if((n.mode&61440)!=32768)throw new M(28);if(r=Ye(n,`w`))throw new M(r);n.i.N(n,{size:0,timestamp:Date.now()})}return t&=-131713,a=Qe({node:a,path:We(a),flags:t,seekable:!0,position:0,l:a.l,jc:[],error:!1}),a.l.open&&a.l.open(a),!i.logReadFiles||t&1||(pt||={},e in pt||(pt[e]=1)),a}function ct(e,t,n){if(e.U===null)throw new M(8);if(!e.seekable||!e.l.Z)throw new M(70);if(n!=0&&n!=1&&n!=2)throw new M(28);e.position=e.l.Z(e,t,n),e.jc=[]}var lt;function ut(e,t,n){e=_e(`/dev/`+e);var r=Fe(!!t,!!n);dt||=64;var i=dt++<<8|0;tt(i,{open(e){e.seekable=!1},close(){n?.buffer?.length&&n(10)},read(e,n,r,i){for(var a=0,o=0;o<i;o++){try{var s=t()}catch(e){throw new M(29)}if(s===void 0&&a===0)throw new M(6);if(s==null)break;a++,n[r+o]=s}return a&&(e.node.timestamp=Date.now()),a},write(e,t,r,i){for(var a=0;a<i;a++)try{n(t[r+a])}catch(e){throw new M(29)}return i&&(e.node.timestamp=Date.now()),a}}),it(e,r,i)}var dt,ft={},pt,mt=void 0,ht=(e,t)=>Object.defineProperty(t,\"name\",{value:e}),gt=[],H=[],U,W=e=>{if(!e)throw new U(`Cannot use deleted val. handle = `+e);return H[e]},G=e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let t=gt.pop()||H.length;return H[t]=e,H[t+1]=1,t}},_t=t=>{var n=Error,r=ht(t,function(n){(this||e).name=t,(this||e).message=n,n=Error(n).stack,n!==void 0&&((this||e).stack=this.toString()+`\n`+n.replace(/^Error(:[^\\n]*)?\\n/,``))});return r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return(this||e).message===void 0?(this||e).name:`${(this||e).name}: ${(this||e).message}`},r},vt,yt,K=e=>{for(var t=``;D[e];)t+=yt[D[e++]];return t},bt=[],xt=()=>{for(;bt.length;){var e=bt.pop();e.g.ca=!1,e.delete()}},St,q={},Ct=(e,t)=>{if(t===void 0)throw new U(`ptr should not be undefined`);for(;e.B;)t=e.ja(t),e=e.B;return t},wt={},Tt=e=>{e=Gn(e);var t=K(e);return $(e),t},Et=(e,t)=>{var n=wt[e];if(n===void 0)throw e=`${t} has unknown type ${Tt(e)}`,new U(e);return n},Dt=()=>{},Ot=!1,kt=(e,t,n)=>t===n?e:n.B===void 0?null:(e=kt(e,t,n.B),e===null?null:n.Db(e)),At={},jt=(e,t)=>(t=Ct(e,t),q[t]),Mt,Nt=(e,t)=>{if(!t.s||!t.m)throw new Mt(`makeClassHandle requires ptr and ptrType`);if(!!t.H!=!!t.C)throw new Mt(`Both smartPtrType and smartPtr must be specified`);return t.count={value:1},Pt(Object.create(e,{g:{value:t,writable:!0}}))},Pt=e=>typeof FinalizationRegistry>`u`?(Pt=e=>e,e):(Ot=new FinalizationRegistry(e=>{e=e.g,--e.count.value,e.count.value===0&&(e.C?e.H.M(e.C):e.s.h.M(e.m))}),Pt=e=>{var t=e.g;return t.C&&Ot.register(e,{g:t},e),e},Dt=e=>{Ot.unregister(e)},Pt(e)),Ft={},It=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Lt(e){return this.fromWireType(j[e>>2])}var Rt={},zt={},J=(e,t,n)=>{function r(t){if(t=n(t),t.length!==e.length)throw new Mt(`Mismatched type converter count`);for(var r=0;r<e.length;++r)Y(e[r],t[r])}e.forEach(function(e){zt[e]=t});var i=Array(t.length),a=[],o=0;t.forEach((e,t)=>{wt.hasOwnProperty(e)?i[t]=wt[e]:(a.push(e),Rt.hasOwnProperty(e)||(Rt[e]=[]),Rt[e].push(()=>{i[t]=wt[e],++o,o===a.length&&r(i)}))}),a.length===0&&r(i)};function Bt(e,t,n={}){var r=t.name;if(!e)throw new U(`type \"${r}\" must have a positive integer typeid pointer`);if(wt.hasOwnProperty(e)){if(n.Nb)return;throw new U(`Cannot register type '${r}' twice`)}wt[e]=t,delete zt[e],Rt.hasOwnProperty(e)&&(t=Rt[e],delete Rt[e],t.forEach(e=>e()))}function Y(e,t,n={}){if(!(`argPackAdvance`in t))throw TypeError(`registerType registeredInstance requires argPackAdvance`);return Bt(e,t,n)}var Vt=e=>{throw new U(e.g.s.h.name+` instance already deleted`)};function Ht(){}var Ut=(t,n,r)=>{if(t[n].v===void 0){var i=t[n];t[n]=function(...i){if(!t[n].v.hasOwnProperty(i.length))throw new U(`Function '${r}' called with an invalid number of arguments (${i.length}) - expects one of (${t[n].v})!`);return t[n].v[i.length].apply(this||e,i)},t[n].v=[],t[n].v[i.ba]=i}},Wt=(e,t,n)=>{if(i.hasOwnProperty(e)){if(n===void 0||i[e].v!==void 0&&i[e].v[n]!==void 0)throw new U(`Cannot register public name '${e}' twice`);if(Ut(i,e,e),i.hasOwnProperty(n))throw new U(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`);i[e].v[n]=t}else i[e]=t,n!==void 0&&(i[e].Hc=n)},Gt=e=>{if(e===void 0)return`_unknown`;e=e.replace(/[^a-zA-Z0-9_]/g,`$`);var t=e.charCodeAt(0);return 48<=t&&57>=t?`_${e}`:e};function Kt(t,n,r,i,a,o,s,c){(this||e).name=t,(this||e).constructor=n,(this||e).K=r,(this||e).M=i,(this||e).B=a,(this||e).Ib=o,(this||e).ja=s,(this||e).Db=c,(this||e).ib=[]}var qt=(e,t,n)=>{for(;t!==n;){if(!t.ja)throw new U(`Expected null or instance of ${n.name}, got an instance of ${t.name}`);e=t.ja(e),t=t.B}return e};function Jt(t,n){if(n===null){if((this||e).Fa)throw new U(`null is not a valid ${(this||e).name}`);return 0}if(!n.g)throw new U(`Cannot pass \"${mn(n)}\" as a ${(this||e).name}`);if(!n.g.m)throw new U(`Cannot pass deleted object as a pointer of type ${(this||e).name}`);return qt(n.g.m,n.g.s.h,(this||e).h)}function Yt(t,n){if(n===null){if((this||e).Fa)throw new U(`null is not a valid ${(this||e).name}`);if((this||e).pa){var r=this.Ha();return t!==null&&t.push((this||e).M,r),r}return 0}if(!n||!n.g)throw new U(`Cannot pass \"${mn(n)}\" as a ${(this||e).name}`);if(!n.g.m)throw new U(`Cannot pass deleted object as a pointer of type ${(this||e).name}`);if(!(this||e).oa&&n.g.s.oa)throw new U(`Cannot convert argument of type ${n.g.H?n.g.H.name:n.g.s.name} to parameter type ${(this||e).name}`);if(r=qt(n.g.m,n.g.s.h,(this||e).h),(this||e).pa){if(n.g.C===void 0)throw new U(`Passing raw pointer to smart pointer is illegal`);switch((this||e).dc){case 0:if(n.g.H===(this||e))r=n.g.C;else throw new U(`Cannot convert argument of type ${n.g.H?n.g.H.name:n.g.s.name} to parameter type ${(this||e).name}`);break;case 1:r=n.g.C;break;case 2:if(n.g.H===(this||e))r=n.g.C;else{var i=n.clone();r=this.$b(r,G(()=>i.delete())),t!==null&&t.push((this||e).M,r)}break;default:throw new U(`Unsupporting sharing policy`)}}return r}function Xt(t,n){if(n===null){if((this||e).Fa)throw new U(`null is not a valid ${(this||e).name}`);return 0}if(!n.g)throw new U(`Cannot pass \"${mn(n)}\" as a ${(this||e).name}`);if(!n.g.m)throw new U(`Cannot pass deleted object as a pointer of type ${(this||e).name}`);if(n.g.s.oa)throw new U(`Cannot convert argument of type ${n.g.s.name} to parameter type ${(this||e).name}`);return qt(n.g.m,n.g.s.h,(this||e).h)}function Zt(t,n,r,i,a,o,s,c,l,u,d){(this||e).name=t,(this||e).h=n,(this||e).Fa=r,(this||e).oa=i,(this||e).pa=a,(this||e).Zb=o,(this||e).dc=s,(this||e).jb=c,(this||e).Ha=l,(this||e).$b=u,(this||e).M=d,a||n.B!==void 0?(this||e).toWireType=Yt:((this||e).toWireType=i?Jt:Xt,(this||e).J=null)}var Qt=(e,t,n)=>{if(!i.hasOwnProperty(e))throw new Mt(`Replacing nonexistent public symbol`);i[e].v!==void 0&&n!==void 0?i[e].v[n]=t:(i[e]=t,i[e].ba=n)},$t=[],en,tn=e=>{var t=$t[e];return t||(e>=$t.length&&($t.length=e+1),$t[e]=t=en.get(e)),t},nn=(e,t,n=[])=>(e.includes(`j`)?(e=e.replace(/p/g,`i`),t=(0,i[`dynCall_`+e])(t,...n)):t=tn(t)(...n),t),rn=(e,t)=>(...n)=>nn(e,t,n),X=(e,t)=>{e=K(e);var n=e.includes(`j`)?rn(e,t):tn(t);if(typeof n!=`function`)throw new U(`unknown function pointer with signature ${e}: ${t}`);return n},an,Z=(e,t)=>{function n(e){i[e]||wt[e]||(zt[e]?zt[e].forEach(n):(r.push(e),i[e]=!0))}var r=[],i={};throw t.forEach(n),new an(`${e}: `+r.map(Tt).join([`, `]))};function on(e){for(var t=1;t<e.length;++t)if(e[t]!==null&&e[t].J===void 0)return!0;return!1}function sn(t,n,r,i,a){var o=n.length;if(2>o)throw new U(`argTypes array size mismatch! Must at least get return value and 'this' types!`);var s=n[1]!==null&&r!==null,c=on(n),l=n[0].name!==`void`,u=o-2,d=Array(u),f=[],p=[];return ht(t,function(...r){if(r.length!==u)throw new U(`function ${t} called with ${r.length} arguments, expected ${u}`);if(p.length=0,f.length=s?2:1,f[0]=a,s){var o=n[1].toWireType(p,this||e);f[1]=o}for(var m=0;m<u;++m)d[m]=n[m+2].toWireType(p,r[m]),f.push(d[m]);if(r=i(...f),c)It(p);else for(m=s?1:2;m<n.length;m++){var h=m===1?o:d[m-2];n[m].J!==null&&n[m].J(h)}return o=l?n[0].fromWireType(r):void 0,o})}var cn=(e,t)=>{for(var n=[],r=0;r<e;r++)n.push(j[t+4*r>>2]);return n},ln=e=>{e=e.trim();let t=e.indexOf(`(`);return t===-1?e:e.substr(0,t)},un=(e,t,n)=>{if(!(e instanceof Object))throw new U(`${n} with invalid \"this\": ${e}`);if(!(e instanceof t.h.constructor))throw new U(`${n} incompatible with \"this\" of type ${e.constructor.name}`);if(!e.g.m)throw new U(`cannot call emscripten binding method ${n} on deleted object`);return qt(e.g.m,e.g.s.h,t.h)},dn=e=>{9<e&&--H[e+1]===0&&(H[e]=void 0,gt.push(e))},fn={name:`emscripten::val`,fromWireType:e=>{var t=W(e);return dn(e),t},toWireType:(e,t)=>G(t),argPackAdvance:8,readValueFromPointer:Lt,J:null},pn=(e,t,n)=>{switch(t){case 1:return n?function(e){return this.fromWireType(E[e])}:function(e){return this.fromWireType(D[e])};case 2:return n?function(e){return this.fromWireType(O[e>>1])}:function(e){return this.fromWireType(k[e>>1])};case 4:return n?function(e){return this.fromWireType(A[e>>2])}:function(e){return this.fromWireType(j[e>>2])};default:throw TypeError(`invalid integer width (${t}): ${e}`)}},mn=e=>{if(e===null)return`null`;var t=typeof e;return t===`object`||t===`array`||t===`function`?e.toString():``+e},hn=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(N[e>>2])};case 8:return function(e){return this.fromWireType(P[e>>3])};default:throw TypeError(`invalid float width (${t}): ${e}`)}},gn=(e,t,n)=>{switch(t){case 1:return n?e=>E[e]:e=>D[e];case 2:return n?e=>O[e>>1]:e=>k[e>>1];case 4:return n?e=>A[e>>2]:e=>j[e>>2];default:throw TypeError(`invalid integer width (${t}): ${e}`)}},_n=typeof TextDecoder<`u`?new TextDecoder(`utf-16le`):void 0,vn=(e,t)=>{for(var n=e>>1,r=n+t/2;!(n>=r)&&k[n];)++n;if(n<<=1,32<n-e&&_n)return _n.decode(D.subarray(e,n));for(n=``,r=0;!(r>=t/2);++r){var i=O[e+2*r>>1];if(i==0)break;n+=String.fromCharCode(i)}return n},yn=(e,t,n)=>{if(n??=2147483647,2>n)return 0;n-=2;var r=t;n=n<2*e.length?n/2:e.length;for(var i=0;i<n;++i)O[t>>1]=e.charCodeAt(i),t+=2;return O[t>>1]=0,t-r},bn=e=>2*e.length,xn=(e,t)=>{for(var n=0,r=``;!(n>=t/4);){var i=A[e+4*n>>2];if(i==0)break;++n,65536<=i?(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|i&1023)):r+=String.fromCharCode(i)}return r},Sn=(e,t,n)=>{if(n??=2147483647,4>n)return 0;var r=t;n=r+n-4;for(var i=0;i<e.length;++i){var a=e.charCodeAt(i);if(55296<=a&&57343>=a){var o=e.charCodeAt(++i);a=65536+((a&1023)<<10)|o&1023}if(A[t>>2]=a,t+=4,t+4>n)break}return A[t>>2]=0,t-r},Cn=e=>{for(var t=0,n=0;n<e.length;++n){var r=e.charCodeAt(n);55296<=r&&57343>=r&&++n,t+=4}return t},wn=(e,t,n)=>{var r=[];return e=e.toWireType(r,n),r.length&&(j[t>>2]=G(r)),e},Tn=[],En={},Dn=e=>{var t=En[e];return t===void 0?K(e):t},On=e=>{var t=Tn.length;return Tn.push(e),t},kn=(e,t)=>{for(var n=Array(e),r=0;r<e;++r)n[r]=Et(j[t+4*r>>2],`parameter `+r);return n},An=Reflect.construct,jn=e=>e%4==0&&(e%100!=0||e%400==0),Mn=[0,31,60,91,121,152,182,213,244,274,305,335],Nn=[0,31,59,90,120,151,181,212,243,273,304,334],Pn=[],Fn={},In=()=>{if(!Ln){var e={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(typeof navigator==`object`&&navigator.languages&&navigator.languages[0]||`C`).replace(`-`,`_`)+`.UTF-8`,_:_||`./this.program`},t;for(t in Fn)Fn[t]===void 0?delete e[t]:e[t]=Fn[t];var n=[];for(t in e)n.push(`${t}=${e[t]}`);Ln=n}return Ln},Ln,Rn=[31,29,31,30,31,30,31,31,30,31,30,31],zn=[31,28,31,30,31,30,31,31,30,31,30,31],Bn=(e,t,n,r)=>{function i(e,t,n){for(e=typeof e==`number`?e.toString():e||``;e.length<t;)e=n[0]+e;return e}function a(e,t){return i(e,t,`0`)}function o(e,t){function n(e){return 0>e?-1:+(0<e)}var r;return(r=n(e.getFullYear()-t.getFullYear()))===0&&(r=n(e.getMonth()-t.getMonth()))===0&&(r=n(e.getDate()-t.getDate())),r}function s(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function c(e){var t=e.$;for(e=new Date(new Date(e.aa+1900,0,1).getTime());0<t;){var n=e.getMonth(),r=(jn(e.getFullYear())?Rn:zn)[n];if(t>r-e.getDate())t-=r-e.getDate()+1,e.setDate(1),11>n?e.setMonth(n+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1));else{e.setDate(e.getDate()+t);break}}return n=new Date(e.getFullYear()+1,0,4),t=s(new Date(e.getFullYear(),0,4)),n=s(n),0>=o(t,e)?0>=o(n,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}var l=j[r+40>>2];for(var u in r={hc:A[r>>2],fc:A[r+4>>2],ya:A[r+8>>2],Ka:A[r+12>>2],za:A[r+16>>2],aa:A[r+20>>2],O:A[r+24>>2],$:A[r+28>>2],Kc:A[r+32>>2],ec:A[r+36>>2],ic:l&&l?we(D,l):``},n=n?we(D,n):``,l={\"%c\":`%a %b %d %H:%M:%S %Y`,\"%D\":`%m/%d/%y`,\"%F\":`%Y-%m-%d`,\"%h\":`%b`,\"%r\":`%I:%M:%S %p`,\"%R\":`%H:%M`,\"%T\":`%H:%M:%S`,\"%x\":`%m/%d/%y`,\"%X\":`%H:%M:%S`,\"%Ec\":`%c`,\"%EC\":`%C`,\"%Ex\":`%m/%d/%y`,\"%EX\":`%H:%M:%S`,\"%Ey\":`%y`,\"%EY\":`%Y`,\"%Od\":`%d`,\"%Oe\":`%e`,\"%OH\":`%H`,\"%OI\":`%I`,\"%Om\":`%m`,\"%OM\":`%M`,\"%OS\":`%S`,\"%Ou\":`%u`,\"%OU\":`%U`,\"%OV\":`%V`,\"%Ow\":`%w`,\"%OW\":`%W`,\"%Oy\":`%y`},l)n=n.replace(new RegExp(u,`g`),l[u]);var d=`Sunday Monday Tuesday Wednesday Thursday Friday Saturday`.split(` `),f=`January February March April May June July August September October November December`.split(` `);for(u in l={\"%a\":e=>d[e.O].substring(0,3),\"%A\":e=>d[e.O],\"%b\":e=>f[e.za].substring(0,3),\"%B\":e=>f[e.za],\"%C\":e=>a((e.aa+1900)/100|0,2),\"%d\":e=>a(e.Ka,2),\"%e\":e=>i(e.Ka,2,` `),\"%g\":e=>c(e).toString().substring(2),\"%G\":c,\"%H\":e=>a(e.ya,2),\"%I\":e=>(e=e.ya,e==0?e=12:12<e&&(e-=12),a(e,2)),\"%j\":e=>{for(var t=0,n=0;n<=e.za-1;t+=(jn(e.aa+1900)?Rn:zn)[n++]);return a(e.Ka+t,3)},\"%m\":e=>a(e.za+1,2),\"%M\":e=>a(e.fc,2),\"%n\":()=>`\n`,\"%p\":e=>0<=e.ya&&12>e.ya?`AM`:`PM`,\"%S\":e=>a(e.hc,2),\"%t\":()=>`\t`,\"%u\":e=>e.O||7,\"%U\":e=>a(Math.floor((e.$+7-e.O)/7),2),\"%V\":e=>{var t=Math.floor((e.$+7-(e.O+6)%7)/7);if(2>=(e.O+371-e.$-2)%7&&t++,t)t==53&&(n=(e.O+371-e.$)%7,n==4||n==3&&jn(e.aa)||(t=1));else{t=52;var n=(e.O+7-e.$-1)%7;(n==4||n==5&&jn(e.aa%400-1))&&t++}return a(t,2)},\"%w\":e=>e.O,\"%W\":e=>a(Math.floor((e.$+7-(e.O+6)%7)/7),2),\"%y\":e=>(e.aa+1900).toString().substring(2),\"%Y\":e=>e.aa+1900,\"%z\":e=>{e=e.ec;var t=0<=e;return e=Math.abs(e)/60,(t?`+`:`-`)+String(`0000`+(e/60*100+e%60)).slice(-4)},\"%Z\":e=>e.ic,\"%%\":()=>`%`},n=n.replace(/%%/g,`\\0\\0`),l)n.includes(u)&&(n=n.replace(new RegExp(u,`g`),l[u](r)));return n=n.replace(/\\0\\0/g,`%`),u=Oe(n,!1),u.length>t?0:(E.set(u,e),u.length-1)};[44].forEach(e=>{He[e]=new M(e),He[e].stack=`<generic error, no stack>`}),Be=Array(4096),nt(B,`/`),V(`/tmp`),V(`/home`),V(`/home/web_user`),(function(){V(`/dev`),tt(259,{read:()=>0,write:(e,t,n,r)=>r}),it(`/dev/null`,259),Ae(1280,Me),Ae(1536,Ne),it(`/dev/tty`,1280),it(`/dev/tty1`,1536);var e=new Uint8Array(1024),t=0,n=()=>(t===0&&(t=xe(e).byteLength),e[--t]);ut(`random`,n),ut(`urandom`,n),V(`/dev/shm`),V(`/dev/shm/tmp`)})(),(function(){V(`/proc`);var e=V(`/proc/self`);V(`/proc/self/fd`),nt({S(){var t=qe(e,`fd`,16895,73);return t.i={ga(e,t){var n=Ze(+t);return e={parent:null,S:{eb:`fake`},i:{ia:()=>n.path}},e.parent=e}},t}},`/proc/self/fd`)})(),U=i.BindingError=class extends Error{constructor(e){super(e),this.name=`BindingError`}},H.push(0,1,void 0,1,null,1,!0,1,!1,1),i.count_emval_handles=()=>H.length/2-5-gt.length,vt=i.PureVirtualError=_t(`PureVirtualError`);for(var Vn=Array(256),Hn=0;256>Hn;++Hn)Vn[Hn]=String.fromCharCode(Hn);yt=Vn,i.getInheritedInstanceCount=()=>Object.keys(q).length,i.getLiveInheritedInstances=()=>{var e=[],t;for(t in q)q.hasOwnProperty(t)&&e.push(q[t]);return e},i.flushPendingDeletes=xt,i.setDelayFunction=e=>{St=e,bt.length&&St&&St(xt)},Mt=i.InternalError=class extends Error{constructor(e){super(e),this.name=`InternalError`}},Object.assign(Ht.prototype,{isAliasOf:function(t){if(!((this||e)instanceof Ht&&t instanceof Ht))return!1;var n=(this||e).g.s.h,r=(this||e).g.m;t.g=t.g;var i=t.g.s.h;for(t=t.g.m;n.B;)r=n.ja(r),n=n.B;for(;i.B;)t=i.ja(t),i=i.B;return n===i&&r===t},clone:function(){if((this||e).g.m||Vt(this||e),(this||e).g.ea)return(this||e).g.count.value+=1,this||e;var t=Pt,n=Object,r=n.create,i=Object.getPrototypeOf(this||e),a=(this||e).g;return t=t(r.call(n,i,{g:{value:{count:a.count,ca:a.ca,ea:a.ea,m:a.m,s:a.s,C:a.C,H:a.H}}})),t.g.count.value+=1,t.g.ca=!1,t},delete(){if((this||e).g.m||Vt(this||e),(this||e).g.ca&&!(this||e).g.ea)throw new U(`Object already scheduled for deletion`);Dt(this||e);var t=(this||e).g;--t.count.value,t.count.value===0&&(t.C?t.H.M(t.C):t.s.h.M(t.m)),(this||e).g.ea||((this||e).g.C=void 0,(this||e).g.m=void 0)},isDeleted:function(){return!(this||e).g.m},deleteLater:function(){if((this||e).g.m||Vt(this||e),(this||e).g.ca&&!(this||e).g.ea)throw new U(`Object already scheduled for deletion`);return bt.push(this||e),bt.length===1&&St&&St(xt),(this||e).g.ca=!0,this||e}}),Object.assign(Zt.prototype,{Jb(t){return(this||e).jb&&(t=this.jb(t)),t},Ua(t){(this||e).M?.(t)},argPackAdvance:8,readValueFromPointer:Lt,fromWireType:function(t){function n(){return(this||e).pa?Nt((this||e).h.K,{s:(this||e).Zb,m:r,H:this||e,C:t}):Nt((this||e).h.K,{s:this||e,m:t})}var r=this.Jb(t);if(!r)return this.Ua(t),null;var i=jt((this||e).h,r);if(i!==void 0)return i.g.count.value===0?(i.g.m=r,i.g.C=t,i.clone()):(i=i.clone(),this.Ua(t),i);if(i=(this||e).h.Ib(r),i=At[i],!i)return n.call(this||e);i=(this||e).oa?i.zb:i.pointerType;var a=kt(r,(this||e).h,i.h);return a===null?n.call(this||e):(this||e).pa?Nt(i.h.K,{s:i,m:a,H:this||e,C:t}):Nt(i.h.K,{s:i,m:a})}}),an=i.UnboundTypeError=_t(`UnboundTypeError`);var Un={__syscall_fcntl64:function(e,t,n){mt=n;try{var r=Ze(e);switch(t){case 0:var i=z();if(0>i)break;for(;Re[i];)i++;return $e(r,i).U;case 1:case 2:return 0;case 3:return r.flags;case 4:return i=z(),r.flags|=i,0;case 12:return i=z(),O[i+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return-e.Y}},__syscall_ioctl:function(e,t,n){mt=n;try{var r=Ze(e);switch(t){case 21509:return r.o?0:-59;case 21505:if(!r.o)return-59;if(r.o.T.Pb){e=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var i=z();A[i>>2]=25856,A[i+4>>2]=5,A[i+8>>2]=191,A[i+12>>2]=35387;for(var a=0;32>a;a++)E[i+a+17]=e[a]||0}return 0;case 21510:case 21511:case 21512:return r.o?0:-59;case 21506:case 21507:case 21508:if(!r.o)return-59;if(r.o.T.Qb)for(i=z(),e=[],a=0;32>a;a++)e.push(E[i+a+17]);return 0;case 21519:return r.o?(i=z(),A[i>>2]=0):-59;case 21520:return r.o?-28:-59;case 21531:if(i=z(),!r.l.Ob)throw new M(59);return r.l.Ob(r,t,i);case 21523:return r.o?(r.o.T.Rb&&(a=[24,80],i=z(),O[i>>1]=a[0],O[i+2>>1]=a[1]),0):-59;case 21524:return r.o?0:-59;case 21515:return r.o?0:-59;default:return-28}}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return-e.Y}},__syscall_openat:function(e,t,n,r){mt=r;try{t=t?we(D,t):``;var i=t;if(i.charAt(0)===`/`)t=i;else{var a=e===-100?`/`:Ze(e).path;if(i.length==0)throw new M(44);t=_e(a+`/`+i)}var o=r?z():0;return st(t,n,o).U}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return-e.Y}},_abort_js:()=>{ae(``)},_embind_create_inheriting_constructor:(t,n,r)=>{t=K(t),n=Et(n,`wrapper`),r=W(r);var i=n.h,a=i.K,o=i.B.K,s=i.B.constructor;return t=ht(t,function(...t){i.B.ib.forEach(function(t){if((this||e)[t]===o[t])throw new vt(`Pure virtual function ${t} must be implemented in JavaScript`)}.bind(this||e)),Object.defineProperty(this||e,\"__parent\",{value:a}),this.__construct(...t)}),a.__construct=function(...t){if((this||e)===a)throw new U(`Pass correct 'this' to __construct`);t=s.implement(this||e,...t),Dt(t);var n=t.g;if(t.notifyOnDestruction(),n.ea=!0,Object.defineProperties(this||e,{g:{value:n}}),Pt(this||e),t=n.m,t=Ct(i,t),q.hasOwnProperty(t))throw new U(`Tried to register registered instance: ${t}`);q[t]=this||e},a.__destruct=function(){if((this||e)===a)throw new U(`Pass correct 'this' to __destruct`);Dt(this||e);var t=(this||e).g.m;if(t=Ct(i,t),q.hasOwnProperty(t))delete q[t];else throw new U(`Tried to unregister unregistered instance: ${t}`)},t.prototype=Object.create(a),Object.assign(t.prototype,r),G(t)},_embind_finalize_value_object:e=>{var t=Ft[e];delete Ft[e];var n=t.Ha,r=t.M,i=t.Xa,a=i.map(e=>e.Mb).concat(i.map(e=>e.bc));J([e],a,e=>{var a={};return i.forEach((t,n)=>{var r=e[n],o=t.Kb,s=t.Lb,c=e[n+i.length],l=t.ac,u=t.cc;a[t.Gb]={read:e=>r.fromWireType(o(s,e)),write:(e,t)=>{var n=[];l(u,e,c.toWireType(n,t)),It(n)}}}),[{name:t.name,fromWireType:e=>{var t={},n;for(n in a)t[n]=a[n].read(e);return r(e),t},toWireType:(e,t)=>{for(var i in a)if(!(i in t))throw TypeError(`Missing field: \"${i}\"`);var o=n();for(i in a)a[i].write(o,t[i]);return e!==null&&e.push(r,o),o},argPackAdvance:8,readValueFromPointer:Lt,J:r}]})},_embind_register_bigint:()=>{},_embind_register_bool:(e,t,n,r)=>{t=K(t),Y(e,{name:t,fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:r},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(D[e])},J:null})},_embind_register_class:(t,n,r,i,a,o,s,c,l,u,d,f,p)=>{d=K(d),o=X(a,o),c&&=X(s,c),u&&=X(l,u),p=X(f,p);var m=Gt(d);Wt(m,function(){Z(`Cannot construct ${d} due to unbound types`,[i])}),J([t,n,r],i?[i]:[],n=>{if(n=n[0],i)var r=n.h,a=r.K;else a=Ht.prototype;n=ht(d,function(...t){if(Object.getPrototypeOf(this||e)!==s)throw new U(`Use 'new' to construct `+d);if(l.X===void 0)throw new U(d+` has no accessible constructor`);var n=l.X[t.length];if(n===void 0)throw new U(`Tried to invoke ctor of ${d} with invalid number of parameters (${t.length}) - expected (${Object.keys(l.X).toString()}) parameters instead!`);return n.apply(this||e,t)});var s=Object.create(a,{constructor:{value:n}});n.prototype=s;var l=new Kt(d,n,s,p,r,o,c,u);if(l.B){var f;(f=l.B).ka??(f.ka=[]),l.B.ka.push(l)}return r=new Zt(d,l,!0,!1,!1),f=new Zt(d+`*`,l,!1,!1,!1),a=new Zt(d+` const*`,l,!1,!0,!1),At[t]={pointerType:f,zb:a},Qt(m,n),[r,f,a]})},_embind_register_class_class_function:(e,t,n,r,i,a,o)=>{var s=cn(n,r);t=K(t),t=ln(t),a=X(i,a),J([],[e],e=>{function r(){Z(`Cannot call ${i} due to unbound types`,s)}e=e[0];var i=`${e.name}.${t}`;t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]);var c=e.h.constructor;return c[t]===void 0?(r.ba=n-1,c[t]=r):(Ut(c,t,i),c[t].v[n-1]=r),J([],s,r=>{if(r=sn(i,[r[0],null].concat(r.slice(1)),null,a,o),c[t].v===void 0?(r.ba=n-1,c[t]=r):c[t].v[n-1]=r,e.h.ka)for(let n of e.h.ka)n.constructor.hasOwnProperty(t)||(n.constructor[t]=r);return[]}),[]})},_embind_register_class_class_property:(e,t,n,r,i,a,o,s)=>{t=K(t),a=X(i,a),J([],[e],e=>{e=e[0];var i=`${e.name}.${t}`,c={get(){Z(`Cannot access ${i} due to unbound types`,[n])},enumerable:!0,configurable:!0};return c.set=s?()=>{Z(`Cannot access ${i} due to unbound types`,[n])}:()=>{throw new U(`${i} is a read-only property`)},Object.defineProperty(e.h.constructor,t,c),J([],[n],n=>{n=n[0];var i={get(){return n.fromWireType(a(r))},enumerable:!0};return s&&(s=X(o,s),i.set=e=>{var t=[];s(r,n.toWireType(t,e)),It(t)}),Object.defineProperty(e.h.constructor,t,i),[]}),[]})},_embind_register_class_constructor:(e,t,n,r,i,a)=>{var o=cn(t,n);i=X(r,i),J([],[e],e=>{e=e[0];var n=`constructor ${e.name}`;if(e.h.X===void 0&&(e.h.X=[]),e.h.X[t-1]!==void 0)throw new U(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.h.X[t-1]=()=>{Z(`Cannot construct ${e.name} due to unbound types`,o)},J([],o,r=>(r.splice(1,0,null),e.h.X[t-1]=sn(n,r,null,i,a),[])),[]})},_embind_register_class_function:(e,t,n,r,i,a,o,s)=>{var c=cn(n,r);t=K(t),t=ln(t),a=X(i,a),J([],[e],e=>{function r(){Z(`Cannot call ${i} due to unbound types`,c)}e=e[0];var i=`${e.name}.${t}`;t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]),s&&e.h.ib.push(t);var l=e.h.K,u=l[t];return u===void 0||u.v===void 0&&u.className!==e.name&&u.ba===n-2?(r.ba=n-2,r.className=e.name,l[t]=r):(Ut(l,t,i),l[t].v[n-2]=r),J([],c,r=>(r=sn(i,r,e,a,o),l[t].v===void 0?(r.ba=n-2,l[t]=r):l[t].v[n-2]=r,[])),[]})},_embind_register_class_property:(t,n,r,i,a,o,s,c,l,u)=>{n=K(n),a=X(i,a),J([],[t],t=>{t=t[0];var i=`${t.name}.${n}`,d={get(){Z(`Cannot access ${i} due to unbound types`,[r,s])},enumerable:!0,configurable:!0};return d.set=l?()=>Z(`Cannot access ${i} due to unbound types`,[r,s]):()=>{throw new U(i+` is a read-only property`)},Object.defineProperty(t.h.K,n,d),J([],l?[r,s]:[r],r=>{var s=r[0],d={get(){var n=un(this||e,t,i+` getter`);return s.fromWireType(a(o,n))},enumerable:!0};if(l){l=X(c,l);var f=r[1];d.set=function(n){var r=un(this||e,t,i+` setter`),a=[];l(u,r,f.toWireType(a,n)),It(a)}}return Object.defineProperty(t.h.K,n,d),[]}),[]})},_embind_register_emval:e=>Y(e,fn),_embind_register_enum:(t,n,r,i)=>{function a(){}n=K(n),a.values={},Y(t,{name:n,constructor:a,fromWireType:function(t){return(this||e).constructor.values[t]},toWireType:(e,t)=>t.value,argPackAdvance:8,readValueFromPointer:pn(n,r,i),J:null}),Wt(n,a)},_embind_register_enum_value:(e,t,n)=>{var r=Et(e,`enum`);t=K(t),e=r.constructor,r=Object.create(r.constructor.prototype,{value:{value:n},constructor:{value:ht(`${r.name}_${t}`,function(){})}}),e.values[n]=r,e[t]=r},_embind_register_float:(e,t,n)=>{t=K(t),Y(e,{name:t,fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:hn(t,n),J:null})},_embind_register_function:(e,t,n,r,i,a)=>{var o=cn(t,n);e=K(e),e=ln(e),i=X(r,i),Wt(e,function(){Z(`Cannot call ${e} due to unbound types`,o)},t-1),J([],o,n=>(Qt(e,sn(e,[n[0],null].concat(n.slice(1)),null,i,a),t-1),[]))},_embind_register_integer:(e,t,n,r,i)=>{if(t=K(t),i===-1&&(i=4294967295),i=e=>e,r===0){var a=32-8*n;i=e=>e<<a>>>a}var o=t.includes(`unsigned`)?function(e,t){return t>>>0}:function(e,t){return t};Y(e,{name:t,fromWireType:i,toWireType:o,argPackAdvance:8,readValueFromPointer:gn(t,n,r!==0),J:null})},_embind_register_memory_view:(e,t,n)=>{function r(e){return new i(E.buffer,j[e+4>>2],j[e>>2])}var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];n=K(n),Y(e,{name:n,fromWireType:r,argPackAdvance:8,readValueFromPointer:r},{Nb:!0})},_embind_register_std_string:(e,t)=>{t=K(t);var n=t===`std::string`;Y(e,{name:t,fromWireType:function(e){var t=j[e>>2],r=e+4;if(n)for(var i=r,a=0;a<=t;++a){var o=r+a;if(a==t||D[o]==0){if(i=i?we(D,i,o-i):``,s===void 0)var s=i;else s+=`\\0`,s+=i;i=o+1}}else{for(s=Array(t),a=0;a<t;++a)s[a]=String.fromCharCode(D[r+a]);s=s.join(``)}return $(e),s},toWireType:function(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var r=typeof t==`string`;if(!(r||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array))throw new U(`Cannot pass non-string to std::string`);var i=n&&r?Ee(t):t.length,a=Wn(4+i+1),o=a+4;if(j[a>>2]=i,n&&r)De(t,D,o,i+1);else if(r)for(r=0;r<i;++r){var s=t.charCodeAt(r);if(255<s)throw $(o),new U(`String has UTF-16 code units that do not fit in 8 bits`);D[o+r]=s}else for(r=0;r<i;++r)D[o+r]=t[r];return e!==null&&e.push($,a),a},argPackAdvance:8,readValueFromPointer:Lt,J(e){$(e)}})},_embind_register_std_wstring:(e,t,n)=>{if(n=K(n),t===2)var r=vn,i=yn,a=bn,o=e=>k[e>>1];else t===4&&(r=xn,i=Sn,a=Cn,o=e=>j[e>>2]);Y(e,{name:n,fromWireType:e=>{for(var n=j[e>>2],i,a=e+4,s=0;s<=n;++s){var c=e+4+s*t;(s==n||o(c)==0)&&(a=r(a,c-a),i===void 0?i=a:(i+=`\\0`,i+=a),a=c+t)}return $(e),i},toWireType:(e,r)=>{if(typeof r!=`string`)throw new U(`Cannot pass non-string to C++ string type ${n}`);var o=a(r),s=Wn(4+o+t);return j[s>>2]=o/t,i(r,s+4,o+t),e!==null&&e.push($,s),s},argPackAdvance:8,readValueFromPointer:Lt,J(e){$(e)}})},_embind_register_value_object:(e,t,n,r,i,a)=>{Ft[e]={name:K(t),Ha:X(n,r),M:X(i,a),Xa:[]}},_embind_register_value_object_field:(e,t,n,r,i,a,o,s,c,l)=>{Ft[e].Xa.push({Gb:K(t),Mb:n,Kb:X(r,i),Lb:a,bc:o,ac:X(s,c),cc:l})},_embind_register_void:(e,t)=>{t=K(t),Y(e,{Dc:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},_emscripten_get_now_is_monotonic:()=>1,_emscripten_memcpy_js:(e,t,n)=>D.copyWithin(e,t,t+n),_emscripten_throw_longjmp:()=>{throw 1/0},_emval_as:(e,t,n)=>(e=W(e),t=Et(t,`emval::as`),wn(t,n,e)),_emval_call:(e,t,n,r)=>(e=Tn[e],t=W(t),e(null,t,n,r)),_emval_call_method:(e,t,n,r,i)=>(e=Tn[e],t=W(t),n=Dn(n),e(t,t[n],r,i)),_emval_decref:dn,_emval_get_method_caller:(e,t,n)=>{var r=kn(e,t),i=r.shift();e--;var a=Array(e);return t=`methodCaller<(${r.map(e=>e.name).join(`, `)}) => ${i.name}>`,On(ht(t,(t,o,s,c)=>{for(var l=0,u=0;u<e;++u)a[u]=r[u].readValueFromPointer(c+l),l+=r[u].argPackAdvance;return t=n===1?An(o,a):o.apply(t,a),wn(i,s,t)}))},_emval_get_module_property:e=>(e=Dn(e),G(i[e])),_emval_get_property:(e,t)=>(e=W(e),t=W(t),G(e[t])),_emval_incref:e=>{9<e&&(H[e+1]+=1)},_emval_new_array:()=>G([]),_emval_new_cstring:e=>G(Dn(e)),_emval_new_object:()=>G({}),_emval_run_destructors:e=>{It(W(e)),dn(e)},_emval_set_property:(e,t,n)=>{e=W(e),t=W(t),n=W(n),e[t]=n},_emval_take_value:(e,t)=>(e=Et(e,`_emval_take_value`),e=e.readValueFromPointer(t),G(e)),_gmtime_js:function(e,t,n){e=/* @__PURE__ */ new Date(1e3*(t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN)),A[n>>2]=e.getUTCSeconds(),A[n+4>>2]=e.getUTCMinutes(),A[n+8>>2]=e.getUTCHours(),A[n+12>>2]=e.getUTCDate(),A[n+16>>2]=e.getUTCMonth(),A[n+20>>2]=e.getUTCFullYear()-1900,A[n+24>>2]=e.getUTCDay(),A[n+28>>2]=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},_localtime_js:function(e,t,n){e=/* @__PURE__ */ new Date(1e3*(t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN)),A[n>>2]=e.getSeconds(),A[n+4>>2]=e.getMinutes(),A[n+8>>2]=e.getHours(),A[n+12>>2]=e.getDate(),A[n+16>>2]=e.getMonth(),A[n+20>>2]=e.getFullYear()-1900,A[n+24>>2]=e.getDay(),A[n+28>>2]=(jn(e.getFullYear())?Mn:Nn)[e.getMonth()]+e.getDate()-1|0,A[n+36>>2]=-(60*e.getTimezoneOffset()),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();A[n+32>>2]=(t!=r&&e.getTimezoneOffset()==Math.min(r,t))|0},_tzset_js:(e,t,n,r)=>{var i=(/* @__PURE__ */ new Date()).getFullYear(),a=new Date(i,0,1),o=new Date(i,6,1);i=a.getTimezoneOffset();var s=o.getTimezoneOffset();j[e>>2]=60*Math.max(i,s),A[t>>2]=Number(i!=s),e=e=>e.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:`short`}).split(` `)[1],a=e(a),o=e(o),s<i?(De(a,D,n,17),De(o,D,r,17)):(De(a,D,r,17),De(o,D,n,17))},emscripten_asm_const_int:(e,t,n)=>{Pn.length=0;for(var r;r=D[t++];){var i=r!=105;i&=r!=112,n+=i&&n%8?4:0,Pn.push(r==112?j[n>>2]:r==105?A[n>>2]:P[n>>3]),n+=i?8:4}return R[e](...Pn)},emscripten_date_now:()=>Date.now(),emscripten_get_now:()=>performance.now(),emscripten_resize_heap:e=>{var t=D.length;if(e>>>=0,2147483648<e)return!1;for(var n=1;4>=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);var i=Math;r=Math.max(e,r);a:{i=(i.min.call(i,2147483648,r+(65536-r%65536)%65536)-w.buffer.byteLength+65535)/65536;try{w.grow(i),ee();var a=1;break a}catch(e){}a=void 0}if(a)return!0}return!1},environ_get:(e,t)=>{var n=0;return In().forEach((r,i)=>{var a=t+n;for(i=j[e+4*i>>2]=a,a=0;a<r.length;++a)E[i++]=r.charCodeAt(a);E[i]=0,n+=r.length+1}),0},environ_sizes_get:(e,t)=>{var n=In();j[e>>2]=n.length;var r=0;return n.forEach(e=>r+=e.length+1),j[t>>2]=r,0},fd_close:function(e){try{var t=Ze(e);if(t.U===null)throw new M(8);t.Ea&&(t.Ea=null);try{t.l.close&&t.l.close(t)}catch(e){throw e}finally{Re[t.U]=null}return t.U=null,0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},fd_read:function(e,t,n,r){try{a:{var i=Ze(e);e=t;for(var a,o=t=0;o<n;o++){var s=j[e>>2],c=j[e+4>>2];e+=8;var l=i,u=a,d=E;if(0>c||0>u)throw new M(28);if(l.U===null||(l.flags&2097155)==1)throw new M(8);if((l.node.mode&61440)==16384)throw new M(31);if(!l.l.read)throw new M(28);var f=u!==void 0;if(!f)u=l.position;else if(!l.seekable)throw new M(70);var p=l.l.read(l,d,s,c,u);f||(l.position+=p);var m=p;if(0>m){var h=-1;break a}if(t+=m,m<c)break;a!==void 0&&(a+=m)}h=t}return j[r>>2]=h,0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},fd_seek:function(e,t,n,r,i){t=n+2097152>>>0<4194305-!!t?(t>>>0)+4294967296*n:NaN;try{if(isNaN(t))return 61;var a=Ze(e);return ct(a,t,r),me=[a.position>>>0,(pe=a.position,1<=+Math.abs(pe)?0<pe?Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],A[i>>2]=me[0],A[i+4>>2]=me[1],a.Ea&&t===0&&r===0&&(a.Ea=null),0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},fd_write:function(e,t,n,r){try{a:{var i=Ze(e);e=t;for(var a,o=t=0;o<n;o++){var s=j[e>>2],c=j[e+4>>2];e+=8;var l=i,u=s,d=c,f=a,p=E;if(0>d||0>f)throw new M(28);if(l.U===null||!(l.flags&2097155))throw new M(8);if((l.node.mode&61440)==16384)throw new M(31);if(!l.l.write)throw new M(28);l.seekable&&l.flags&1024&&ct(l,0,2);var m=f!==void 0;if(!m)f=l.position;else if(!l.seekable)throw new M(70);var h=l.l.write(l,p,u,d,f,void 0);m||(l.position+=h);var g=h;if(0>g){var _=-1;break a}t+=g,a!==void 0&&(a+=g)}_=t}return j[r>>2]=_,0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},invoke_vii:Qn,isWindowsBrowser:function(){return-1<navigator.platform.indexOf(`Win`)},strftime:Bn,strftime_l:(e,t,n,r)=>Bn(e,t,n,r),wasm_start_image_decode:function(e,t,n){t=i.HEAP8.subarray(t,t+n),n=new Uint8Array(n),n.set(t),createImageBitmap(new Blob([n])).then(function(t){var n=new OffscreenCanvas(t.width,t.height).getContext(`2d`);n.drawImage(t,0,0),n=n.getImageData(0,0,t.width,t.height);var r=n.data.length,a=i.vb(r);i.lc.set(n.data,a),i.nc(e,t.width,t.height,a,r)}).catch(function(t){t=t.message||`decode failed`;var n=i.Ec(t)+1,r=i.vb(n);i.Jc(t,r,n),i.oc(e,r),i.mc(r)})}},Q=function(){function e(e){return Q=e.exports,w=Q.memory,ee(),en=Q.__indirect_function_table,ne.unshift(Q.__wasm_call_ctors),F--,i.monitorRunDependencies?.(F),F==0&&(I!==null&&(clearInterval(I),I=null),L&&(e=L,L=null,e())),Q}var t={env:Un,wasi_snapshot_preview1:Un};if(F++,i.monitorRunDependencies?.(F),i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(e){S(`Module.instantiateWasm callback failed with error: ${e}`),o(e)}return ce||=oe(`canvas_advanced.wasm`)?`canvas_advanced.wasm`:i.locateFile?i.locateFile(`canvas_advanced.wasm`,v):v+`canvas_advanced.wasm`,fe(t,function(t){e(t.instance)}).catch(o),{}}(),$=e=>($=Q.free)(e),Wn=e=>(Wn=Q.malloc)(e),Gn=e=>(Gn=Q.__getTypeName)(e);i._wasm_image_decode_complete=(e,t,n,r,a)=>(i._wasm_image_decode_complete=Q.wasm_image_decode_complete)(e,t,n,r,a),i._wasm_image_decode_error=(e,t)=>(i._wasm_image_decode_error=Q.wasm_image_decode_error)(e,t);var Kn=i._ma_device__on_notification_unlocked=e=>(Kn=i._ma_device__on_notification_unlocked=Q.ma_device__on_notification_unlocked)(e);i._ma_malloc_emscripten=(e,t)=>(i._ma_malloc_emscripten=Q.ma_malloc_emscripten)(e,t),i._ma_free_emscripten=(e,t)=>(i._ma_free_emscripten=Q.ma_free_emscripten)(e,t);var qn=i._ma_device_process_pcm_frames_capture__webaudio=(e,t,n)=>(qn=i._ma_device_process_pcm_frames_capture__webaudio=Q.ma_device_process_pcm_frames_capture__webaudio)(e,t,n),Jn=i._ma_device_process_pcm_frames_playback__webaudio=(e,t,n)=>(Jn=i._ma_device_process_pcm_frames_playback__webaudio=Q.ma_device_process_pcm_frames_playback__webaudio)(e,t,n),Yn=(e,t)=>(Yn=Q.setThrew)(e,t),Xn=e=>(Xn=Q._emscripten_stack_restore)(e),Zn=()=>(Zn=Q.emscripten_stack_get_current)();i.dynCall_iiji=(e,t,n,r,a)=>(i.dynCall_iiji=Q.dynCall_iiji)(e,t,n,r,a),i.dynCall_jiji=(e,t,n,r,a)=>(i.dynCall_jiji=Q.dynCall_jiji)(e,t,n,r,a),i.dynCall_iiiji=(e,t,n,r,a,o)=>(i.dynCall_iiiji=Q.dynCall_iiiji)(e,t,n,r,a,o),i.dynCall_iij=(e,t,n,r)=>(i.dynCall_iij=Q.dynCall_iij)(e,t,n,r),i.dynCall_jii=(e,t,n)=>(i.dynCall_jii=Q.dynCall_jii)(e,t,n),i.dynCall_viijii=(e,t,n,r,a,o,s)=>(i.dynCall_viijii=Q.dynCall_viijii)(e,t,n,r,a,o,s),i.dynCall_iiiiij=(e,t,n,r,a,o,s)=>(i.dynCall_iiiiij=Q.dynCall_iiiiij)(e,t,n,r,a,o,s),i.dynCall_iiiiijj=(e,t,n,r,a,o,s,c,l)=>(i.dynCall_iiiiijj=Q.dynCall_iiiiijj)(e,t,n,r,a,o,s,c,l),i.dynCall_iiiiiijj=(e,t,n,r,a,o,s,c,l,u)=>(i.dynCall_iiiiiijj=Q.dynCall_iiiiiijj)(e,t,n,r,a,o,s,c,l,u);function Qn(e,t,n){var r=Zn();try{tn(e)(t,n)}catch(e){if(Xn(r),e!==e+0)throw e;Yn(1,0)}}var $n;L=function e(){$n||er(),$n||(L=e)};function er(){function e(){if(!$n&&($n=!0,i.calledRun=!0,!T)){if(i.noFSInit||lt||(lt=!0,i.stdin=i.stdin,i.stdout=i.stdout,i.stderr=i.stderr,i.stdin?ut(`stdin`,i.stdin):at(`/dev/tty`,`/dev/stdin`),i.stdout?ut(`stdout`,null,i.stdout):at(`/dev/tty`,`/dev/stdout`),i.stderr?ut(`stderr`,null,i.stderr):at(`/dev/tty1`,`/dev/stderr`),st(`/dev/stdin`,0),st(`/dev/stdout`,1),st(`/dev/stderr`,1)),Ve=!1,he(ne),a(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),i.postRun)for(typeof i.postRun==`function`&&(i.postRun=[i.postRun]);i.postRun.length;){var e=i.postRun.shift();re.unshift(e)}he(re)}}if(!(0<F)){if(i.preRun)for(typeof i.preRun==`function`&&(i.preRun=[i.preRun]);i.preRun.length;)ie();he(te),0<F||(i.setStatus?(i.setStatus(`Running...`),setTimeout(function(){setTimeout(function(){i.setStatus(``)},1),e()},1)):e())}}if(i.preInit)for(typeof i.preInit==`function`&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.pop()();return er(),r=s,r}})()}),(e=>{e.exports=/* @__PURE__ */ JSON.parse(`{\"name\":\"@rive-app/canvas\",\"version\":\"2.38.5\",\"description\":\"Rive's canvas based web api.\",\"main\":\"rive.js\",\"homepage\":\"https://rive.app\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/rive-app/rive-wasm/tree/master/js\"},\"keywords\":[\"rive\",\"animation\"],\"author\":\"Rive\",\"contributors\":[\"Luigi Rosso <luigi@rive.app> (https://rive.app)\",\"Maxwell Talbot <max@rive.app> (https://rive.app)\",\"Arthur Vivian <arthur@rive.app> (https://rive.app)\",\"Umberto Sonnino <umberto@rive.app> (https://rive.app)\",\"Matthew Sullivan <matt.j.sullivan@gmail.com> (mailto:matt.j.sullivan@gmail.com)\"],\"license\":\"MIT\",\"files\":[\"rive.js\",\"rive.js.map\",\"rive.wasm\",\"rive_fallback.wasm\",\"rive.d.ts\",\"rive_advanced.mjs.d.ts\",\"runtimeLoader.d.ts\",\"utils\"],\"typings\":\"rive.d.ts\",\"dependencies\":{},\"browser\":{\"fs\":false,\"path\":false}}`)}),((e,t,n)=>{n.r(t),n.d(t,{AudioAssetWrapper:()=>o.AudioAssetWrapper,AudioWrapper:()=>o.AudioWrapper,BLANK_URL:()=>a.BLANK_URL,CustomFileAssetLoaderWrapper:()=>o.CustomFileAssetLoaderWrapper,FileAssetWrapper:()=>o.FileAssetWrapper,FileFinalizer:()=>o.FileFinalizer,FocusSessionState:()=>i.FocusSessionState,FontAssetWrapper:()=>o.FontAssetWrapper,FontWrapper:()=>o.FontWrapper,ImageAssetWrapper:()=>o.ImageAssetWrapper,ImageWrapper:()=>o.ImageWrapper,KeyboardInteractions:()=>i.KeyboardInteractions,RiveFont:()=>s.RiveFont,createFinalization:()=>o.createFinalization,finalizationRegistry:()=>o.finalizationRegistry,registerTouchInteractions:()=>r.registerTouchInteractions,sanitizeUrl:()=>a.sanitizeUrl});var r=n(7),i=n(8),a=n(9),o=n(10),s=n(11)}),((e,t,n)=>{n.r(t),n.d(t,{registerTouchInteractions:()=>o});var r=void 0,i=function(e,t,n){var r,i=[];if(t)for(var a=0;a<e.length;a++){var o=e[a];i.push({clientX:o.clientX,clientY:o.clientY,identifier:o.identifier})}else{var s=n===null?e[0]:(r=Array.from(e).find(function(e){return e.identifier===n}))==null?null:r;s&&i.push({clientX:s.clientX,clientY:s.clientY,identifier:s.identifier})}return i},a=function(e,t,n,r){var a,o=e;return(a=o.changedTouches)!=null&&a.length?(!t&&[`touchstart`,`touchmove`].includes(e.type)&&e.preventDefault(),i(o.changedTouches,n,r)):[{clientX:e.clientX,clientY:e.clientY,identifier:0}]},o=function(e){var t=e.canvas,n=e.artboard,i=e.stateMachines,o=i===void 0?[]:i,s=e.renderer,c=e.rive,l=e.fit,u=e.alignment,d=e.isTouchScrollEnabled,f=d===void 0?!1:d,p=e.dispatchPointerExit,m=p===void 0?!0:p,h=e.enableMultiTouch,g=h===void 0?!1:h,_=e.layoutScaleFactor,v=_===void 0?1:_,y=e.advanceAndDrain;if(!t||!o.length||!s||!c||!n||typeof window>`u`)return null;var b=null,x=!1,S=null,C=function(e){var t;if(x&&e instanceof MouseEvent){e.type==`mouseup`&&(x=!1);return}x=f&&e.type===`touchend`&&b===`touchstart`,b=e.type;var r=e.currentTarget.getBoundingClientRect();if(!g&&e.type===`touchstart`&&S===null){var i=(t=e.changedTouches)==null?void 0:t[0];i&&(S=i.identifier)}var s=a(e,f,g,g?null:S),d=c.computeAlignment(l,u,{minX:0,minY:0,maxX:r.width,maxY:r.height},n.bounds,v),p=new c.Mat2D;switch(d.invert(p),s.forEach(function(e){var t=e.clientX,n=e.clientY;if(!(!t&&!n)){var i=t-r.left,a=n-r.top,o=new c.Vec2D(i,a),s=c.mapXY(p,o),l=s.x(),u=s.y();e.transformedX=l,e.transformedY=u,s.delete(),o.delete()}}),p.delete(),d.delete(),e.type){case`mouseout`:for(var h=function(e){m?s.forEach(function(t){e.pointerExit(t.transformedX,t.transformedY,t.identifier)}):s.forEach(function(t){e.pointerMove(t.transformedX,t.transformedY,t.identifier)})},_=0,C=o;_<C.length;_++){var w=C[_];h(w)}break;case`touchmove`:case`mouseover`:case`mousemove`:for(var T=function(e){s.forEach(function(t){e.pointerMove(t.transformedX,t.transformedY,t.identifier)})},E=0,D=o;E<D.length;E++){var w=D[E];T(w)}break;case`touchstart`:case`mousedown`:for(var O=function(e){s.forEach(function(t){e.pointerDown(t.transformedX,t.transformedY,t.identifier)})},k=0,A=o;k<A.length;k++){var w=A[k];O(w)}y(0);break;case`touchend`:for(var j=function(e){s.forEach(function(t){e.pointerUp(t.transformedX,t.transformedY,t.identifier),e.pointerExit(t.transformedX,t.transformedY,t.identifier)})},N=0,P=o;N<P.length;N++){var w=P[N];j(w)}y(0),!g&&s.some(function(e){return e.identifier===S})&&(S=null);break;case`mouseup`:for(var ee=function(e){s.forEach(function(t){e.pointerUp(t.transformedX,t.transformedY,t.identifier)})},te=0,ne=o;te<ne.length;te++){var w=ne[te];ee(w)}y(0);break;default:}},w=function(){S=null},T=C.bind(r);return t.addEventListener(`mouseover`,T),t.addEventListener(`mouseout`,T),t.addEventListener(`mousemove`,T),t.addEventListener(`mousedown`,T),t.addEventListener(`mouseup`,T),t.addEventListener(`touchmove`,T,{passive:f}),t.addEventListener(`touchstart`,T,{passive:f}),t.addEventListener(`touchend`,T),t.addEventListener(`touchcancel`,w),function(){t.removeEventListener(`mouseover`,T),t.removeEventListener(`mouseout`,T),t.removeEventListener(`mousemove`,T),t.removeEventListener(`mousedown`,T),t.removeEventListener(`mouseup`,T),t.removeEventListener(`touchmove`,T),t.removeEventListener(`touchstart`,T),t.removeEventListener(`touchend`,T),t.removeEventListener(`touchcancel`,w)}}}),((t,n,r)=>{r.r(n),r.d(n,{FocusSessionState:()=>i,KeyboardInteractions:()=>a});var i;(function(e){e.NotFocused=`notFocused`,e.EntryPending=`entryPending`,e.RiveFocused=`riveFocused`})(i||(i={}));var a=function(){function t(t){var n=t.canvas,r=t.stateMachine,a=t.hasFocusNodes,o=this||e;(this||e).focusSessionState=i.NotFocused,(this||e).onCanvasFocus=function(e){o.hasFocusNodes&&(o.mainSm.focusState().hasFocus||(o.focusSessionState=i.EntryPending,o.isKeyboardDrivenFocus()&&(o.cameFromBeforeCanvas(e.relatedTarget)?o.mainSm.focusNext():o.mainSm.focusPrevious())&&(o.focusSessionState=i.RiveFocused)))},(this||e).onCanvasBlur=function(e){o.focusSessionState=i.NotFocused},(this||e).onKeyDown=function(e){o.focusSessionState!==i.NotFocused&&e.code===`Tab`&&o.hasFocusNodes&&((e.shiftKey?o.mainSm.focusPrevious():o.mainSm.focusNext())?(o.focusSessionState=i.RiveFocused,e.preventDefault()):o.focusSessionState=i.NotFocused)},(this||e).canvas=n,(this||e).mainSm=r,(this||e).hasFocusNodes=a,n.addEventListener(`focus`,(this||e).onCanvasFocus),n.addEventListener(`blur`,(this||e).onCanvasBlur),n.addEventListener(`keydown`,(this||e).onKeyDown)}return t.prototype.setFocusSessionState=function(t){(this||e).focusSessionState=t},t.prototype.notifyRiveFocused=function(){(this||e).focusSessionState=i.RiveFocused},t.prototype.isKeyboardDrivenFocus=function(){try{return(this||e).canvas.matches(`:focus-visible`)}catch(e){return!1}},t.prototype.cameFromBeforeCanvas=function(t){if(!t)return!0;var n=(this||e).canvas.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_PRECEDING?!0:!(n&Node.DOCUMENT_POSITION_FOLLOWING)},t.prototype.cleanup=function(){(this||e).canvas.removeEventListener(`focus`,(this||e).onCanvasFocus),(this||e).canvas.removeEventListener(`blur`,(this||e).onCanvasBlur),(this||e).canvas.removeEventListener(`keydown`,(this||e).onKeyDown)},t}()}),((e,t,n)=>{n.r(t),n.d(t,{BLANK_URL:()=>l,sanitizeUrl:()=>f});var r=/^([^\\w]*)(javascript|data|vbscript)/im,i=/&#(\\w+)(^\\w|;)?/g,a=/&(newline|tab);/gi,o=/[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim,s=/^.+(:|&colon;)/gim,c=[`.`,`/`],l=`about:blank`;function u(e){return c.indexOf(e[0])>-1}function d(e){return e.replace(o,``).replace(i,function(e,t){return String.fromCharCode(t)})}function f(e){if(!e)return l;var t=d(e).replace(a,``).replace(o,``).trim();if(!t)return l;if(u(t))return t;var n=t.match(s);if(!n)return t;var i=n[0];return r.test(i)?l:t}}),((t,n,r)=>{r.r(n),r.d(n,{AudioAssetWrapper:()=>m,AudioWrapper:()=>l,CustomFileAssetLoaderWrapper:()=>d,FileAssetWrapper:()=>f,FileFinalizer:()=>a,FontAssetWrapper:()=>h,FontWrapper:()=>u,ImageAssetWrapper:()=>p,ImageWrapper:()=>c,createFinalization:()=>v,finalizationRegistry:()=>_});var i=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)};return function(n,r){if(typeof r!=`function`&&r!==null)throw TypeError(`Class extends value `+String(r)+` is not a constructor or null`);t(n,r);function i(){(this||e).constructor=n}n.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),a=function(){function t(t){(this||e).selfUnref=!1,(this||e)._file=t}return t.prototype.unref=function(){(this||e)._file&&(this||e)._file.unref()},t}(),o=function(){function t(t){(this||e)._finalizableObject=t}return t.prototype.unref=function(){(this||e)._finalizableObject.unref()},t}(),s=function(){function t(){(this||e).selfUnref=!1}return t.prototype.unref=function(){},t}(),c=function(t){i(n,t);function n(n){var r=t.call(this||e)||this||e;return r._nativeImage=n,r}return Object.defineProperty(n.prototype,\"nativeImage\",{get:function(){return(this||e)._nativeImage},enumerable:!1,configurable:!0}),n.prototype.unref=function(){(this||e).selfUnref&&(this||e)._nativeImage.unref()},n}(s),l=function(t){i(n,t);function n(n){var r=t.call(this||e)||this||e;return r._nativeAudio=n,r}return Object.defineProperty(n.prototype,\"nativeAudio\",{get:function(){return(this||e)._nativeAudio},enumerable:!1,configurable:!0}),n.prototype.unref=function(){(this||e).selfUnref&&(this||e)._nativeAudio.unref()},n}(s),u=function(t){i(n,t);function n(n){var r=t.call(this||e)||this||e;return r._nativeFont=n,r}return Object.defineProperty(n.prototype,\"nativeFont\",{get:function(){return(this||e)._nativeFont},enumerable:!1,configurable:!0}),n.prototype.unref=function(){(this||e).selfUnref&&(this||e)._nativeFont.unref()},n}(s),d=function(){function t(t,n){(this||e)._assetLoaderCallback=n,(this||e).assetLoader=new t.CustomFileAssetLoader({loadContents:(this||e).loadContents.bind(this||e)})}return t.prototype.loadContents=function(e,t){var n;if(e.isImage)n=new p(e);else if(e.isAudio)n=new m(e);else if(e.isFont)n=new h(e);else return!1;return this._assetLoaderCallback(n,t)},t}(),f=function(){function t(t){(this||e)._nativeFileAsset=t}return t.prototype.decode=function(t){(this||e)._nativeFileAsset.decode(t)},Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._nativeFileAsset.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"fileExtension\",{get:function(){return(this||e)._nativeFileAsset.fileExtension},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"uniqueFilename\",{get:function(){return(this||e)._nativeFileAsset.uniqueFilename},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isAudio\",{get:function(){return(this||e)._nativeFileAsset.isAudio},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isImage\",{get:function(){return(this||e)._nativeFileAsset.isImage},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isFont\",{get:function(){return(this||e)._nativeFileAsset.isFont},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"cdnUuid\",{get:function(){return(this||e)._nativeFileAsset.cdnUuid},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"nativeFileAsset\",{get:function(){return(this||e)._nativeFileAsset},enumerable:!1,configurable:!0}),t}(),p=function(t){i(n,t);function n(){return t!==null&&t.apply(this||e,arguments)||this||e}return n.prototype.setRenderImage=function(t){(this||e)._nativeFileAsset.setRenderImage(t.nativeImage)},n}(f),m=function(t){i(n,t);function n(){return t!==null&&t.apply(this||e,arguments)||this||e}return n.prototype.setAudioSource=function(t){(this||e)._nativeFileAsset.setAudioSource(t.nativeAudio)},n}(f),h=function(t){i(n,t);function n(){return t!==null&&t.apply(this||e,arguments)||this||e}return n.prototype.setFont=function(t){(this||e)._nativeFileAsset.setFont(t.nativeFont)},n}(f),g=function(){function e(e){}return e.prototype.register=function(e){e.selfUnref=!0},e.prototype.unregister=function(e){},e}(),_=new(typeof FinalizationRegistry<`u`?FinalizationRegistry:g)(function(e){e==null||e.unref()}),v=function(e,t){var n=new o(t);_.register(e,n)}}),((e,t,n)=>{n.r(t),n.d(t,{RiveFont:()=>i});var r=n(3),i=function(){function e(){}return e.setFallbackFontCallback=function(t){e._fallbackFontCallback=t==null?null:t,e._wireFallbackProc()},e._fontToPtr=function(e){var t;if(e==null)return null;var n=e.nativeFont,r=(t=n==null?void 0:n.ptr)==null?void 0:t.call(n);return r==null?null:r},e._getFallbackPtr=function(t,n){return n<0||n>=t.length?null:e._fontToPtr(t[n])},e._wireFallbackProc=function(){r.RuntimeLoader.getInstance(function(t){var n=e._fallbackFontCallback;n?t.setFallbackFontCallback(function(t,r,i){var a=n(t,i);return a?Array.isArray(a)?e._getFallbackPtr(a,r):r===0?e._fontToPtr(a):null:null}):t.setFallbackFontCallback(null)})},e._fallbackFontCallback=null,e}()})],n={};function r(e){var i=n[e];if(i!==void 0)return i.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return(()=>{r.r(i),r.d(i,{Alignment:()=>m,DataEnum:()=>ie,DataType:()=>ne,DrawOptimizationOptions:()=>h,EventType:()=>T,Fit:()=>p,Layout:()=>g,LoopType:()=>E,Rive:()=>te,RiveEventType:()=>y,RiveFile:()=>ee,RiveFont:()=>a.RiveFont,RuntimeLoader:()=>n.RuntimeLoader,StateMachineInput:()=>v,StateMachineInputType:()=>_,Testing:()=>he,ViewModel:()=>re,ViewModelInstance:()=>I,ViewModelInstanceArtboard:()=>pe,ViewModelInstanceAssetImage:()=>fe,ViewModelInstanceBoolean:()=>se,ViewModelInstanceColor:()=>de,ViewModelInstanceEnum:()=>le,ViewModelInstanceList:()=>ue,ViewModelInstanceNumber:()=>oe,ViewModelInstanceString:()=>ae,ViewModelInstanceTrigger:()=>ce,ViewModelInstanceValue:()=>L,decodeAudio:()=>z,decodeFont:()=>_e,decodeImage:()=>ge});var t=r(1),n=r(3),a=r(6),o=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)};return function(n,r){if(typeof r!=`function`&&r!==null)throw TypeError(`Class extends value `+String(r)+` is not a constructor or null`);t(n,r);function i(){(this||e).constructor=n}n.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),s=function(){return s=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},s.apply(this||e,arguments)},c=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},l=function(t,n){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,a,o,s=Object.create((typeof Iterator==`function`?Iterator:Object).prototype);return s.next=c(0),s.throw=c(1),s.return=c(2),typeof Symbol==`function`&&(s[Symbol.iterator]=function(){return this||e}),s;function c(e){return function(t){return l([e,t])}}function l(e){if(i)throw TypeError(`Generator is already executing.`);for(;s&&(s=0,e[0]&&(r=0)),r;)try{if(i=1,a&&(o=e[0]&2?a.return:e[0]?a.throw||((o=a.return)&&o.call(a),0):a.next)&&!(o=o.call(a,e[1])).done)return o;switch(a=0,o&&(e=[e[0]&2,o.value]),e[0]){case 0:case 1:o=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++,a=e[1],e=[0];continue;case 7:e=r.ops.pop(),r.trys.pop();continue;default:if((o=r.trys,!(o=o.length>0&&o[o.length-1]))&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!o||e[1]>o[0]&&e[1]<o[3])){r.label=e[1];break}if(e[0]===6&&r.label<o[1]){r.label=o[1],o=e;break}if(o&&r.label<o[2]){r.label=o[2],r.ops.push(e);break}o[2]&&r.ops.pop(),r.trys.pop();continue}e=n.call(t,r)}catch(t){e=[6,t],a=0}finally{i=o=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}},u=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||(a=Array.prototype.slice.call(t,0,r)),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},d=function(t){o(n,t);function n(){var n=t!==null&&t.apply(this||e,arguments)||this||e;return n.isHandledError=!0,n}return n}(Error),f=function(e){return e&&e.isHandledError?e.message:`Problem loading file; may be corrupt!`},p;(function(e){e.Cover=`cover`,e.Contain=`contain`,e.Fill=`fill`,e.FitWidth=`fitWidth`,e.FitHeight=`fitHeight`,e.None=`none`,e.ScaleDown=`scaleDown`,e.Layout=`layout`})(p||(p={}));var m;(function(e){e.Center=`center`,e.TopLeft=`topLeft`,e.TopCenter=`topCenter`,e.TopRight=`topRight`,e.CenterLeft=`centerLeft`,e.CenterRight=`centerRight`,e.BottomLeft=`bottomLeft`,e.BottomCenter=`bottomCenter`,e.BottomRight=`bottomRight`})(m||(m={}));var h;(function(e){e.AlwaysDraw=`alwaysDraw`,e.DrawOnChanged=`drawOnChanged`})(h||(h={}));var g=function(){function t(t){var n,r,i,a,o,s,c;(this||e).fit=(n=t==null?void 0:t.fit)==null?p.Contain:n,(this||e).alignment=(r=t==null?void 0:t.alignment)==null?m.Center:r,(this||e).layoutScaleFactor=(i=t==null?void 0:t.layoutScaleFactor)==null?1:i,(this||e).minX=(a=t==null?void 0:t.minX)==null?0:a,(this||e).minY=(o=t==null?void 0:t.minY)==null?0:o,(this||e).maxX=(s=t==null?void 0:t.maxX)==null?0:s,(this||e).maxY=(c=t==null?void 0:t.maxY)==null?0:c}return t.new=function(e){var n=e.fit,r=e.alignment,i=e.minX,a=e.minY,o=e.maxX,s=e.maxY;return console.warn(\"This function is deprecated: please use `new Layout({})` instead\"),new t({fit:n,alignment:r,minX:i,minY:a,maxX:o,maxY:s})},t.prototype.copyWith=function(n){var r=n.fit,i=n.alignment,a=n.layoutScaleFactor,o=n.minX,s=n.minY,c=n.maxX,l=n.maxY;return new t({fit:r==null?(this||e).fit:r,alignment:i==null?(this||e).alignment:i,layoutScaleFactor:a==null?(this||e).layoutScaleFactor:a,minX:o==null?(this||e).minX:o,minY:s==null?(this||e).minY:s,maxX:c==null?(this||e).maxX:c,maxY:l==null?(this||e).maxY:l})},t.prototype.runtimeFit=function(t){if((this||e).cachedRuntimeFit)return(this||e).cachedRuntimeFit;var n=(this||e).fit===p.Cover?t.Fit.cover:(this||e).fit===p.Contain?t.Fit.contain:(this||e).fit===p.Fill?t.Fit.fill:(this||e).fit===p.FitWidth?t.Fit.fitWidth:(this||e).fit===p.FitHeight?t.Fit.fitHeight:(this||e).fit===p.ScaleDown?t.Fit.scaleDown:(this||e).fit===p.Layout?t.Fit.layout:t.Fit.none;return(this||e).cachedRuntimeFit=n,n},t.prototype.runtimeAlignment=function(t){if((this||e).cachedRuntimeAlignment)return(this||e).cachedRuntimeAlignment;var n=(this||e).alignment===m.TopLeft?t.Alignment.topLeft:(this||e).alignment===m.TopCenter?t.Alignment.topCenter:(this||e).alignment===m.TopRight?t.Alignment.topRight:(this||e).alignment===m.CenterLeft?t.Alignment.centerLeft:(this||e).alignment===m.CenterRight?t.Alignment.centerRight:(this||e).alignment===m.BottomLeft?t.Alignment.bottomLeft:(this||e).alignment===m.BottomCenter?t.Alignment.bottomCenter:(this||e).alignment===m.BottomRight?t.Alignment.bottomRight:t.Alignment.center;return(this||e).cachedRuntimeAlignment=n,n},t}(),_;(function(e){e[e.Number=56]=`Number`,e[e.Trigger=58]=`Trigger`,e[e.Boolean=59]=`Boolean`})(_||(_={}));var v=function(){function t(t,n){(this||e).type=t,(this||e).runtimeInput=n}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e).runtimeInput.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"value\",{get:function(){return(this||e).runtimeInput.value},set:function(t){(this||e).runtimeInput.value=t},enumerable:!1,configurable:!0}),t.prototype.fire=function(){(this||e).type===_.Trigger&&(this||e).runtimeInput.fire()},t.prototype.delete=function(){(this||e).runtimeInput=null},t}(),y;(function(e){e[e.General=128]=`General`,e[e.OpenUrl=131]=`OpenUrl`})(y||(y={}));var b=function(){function t(t){(this||e).isBindableArtboard=!1,(this||e).isBindableArtboard=t}return t}(),x=function(t){o(n,t);function n(n,r){var i=t.call(this||e,!1)||this||e;return i.nativeArtboard=n,i.file=r,i}return n}(b),S=function(t){o(n,t);function n(n){var r=t.call(this||e,!0)||this||e;return r.selfUnref=!1,r.nativeArtboard=n,r}return Object.defineProperty(n.prototype,\"viewModel\",{set:function(t){(this||e).nativeViewModel=t.nativeInstance},enumerable:!1,configurable:!0}),n.prototype.destroy=function(){var t;(this||e).selfUnref&&((this||e).nativeArtboard.unref(),(t=(this||e).nativeViewModel)==null||t.unref())},n}(b),C=function(){function t(t,n,r,i){(this||e).stateMachine=t,(this||e).playing=r,(this||e).artboard=i,(this||e).inputs=[],(this||e).instance=new n.StateMachineInstance(t,i),this.initInputs(n),(this||e).hasFocusNodes=(this||e).instance.hasFocusNodes()}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e).stateMachine.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"statesChanged\",{get:function(){for(var t=[],n=0;n<(this||e).instance.stateChangedCount();n++)t.push((this||e).instance.stateChangedNameByIndex(n));return t},enumerable:!1,configurable:!0}),t.prototype.advance=function(t){(this||e).instance.advance(t)},t.prototype.advanceAndApply=function(t){(this||e).instance.advanceAndApply(t)},t.prototype.reportedEventCount=function(){return(this||e).instance.reportedEventCount()},t.prototype.reportedEventAt=function(t){return(this||e).instance.reportedEventAt(t)},t.prototype.initInputs=function(t){for(var n=0;n<(this||e).instance.inputCount();n++){var r=(this||e).instance.input(n);(this||e).inputs.push(this.mapRuntimeInput(r,t))}},t.prototype.mapRuntimeInput=function(e,t){if(e.type===t.SMIInput.bool)return new v(_.Boolean,e.asBool());if(e.type===t.SMIInput.number)return new v(_.Number,e.asNumber());if(e.type===t.SMIInput.trigger)return new v(_.Trigger,e.asTrigger())},t.prototype.cleanup=function(){(this||e).inputs.forEach(function(e){e.delete()}),(this||e).inputs.length=0,(this||e).instance.delete()},t.prototype.bindViewModelInstance=function(t){t.runtimeInstance!=null&&(this||e).instance.bindViewModelInstance(t.runtimeInstance)},t.prototype.focusState=function(){return(this||e).instance.focusState()},t.prototype.clearFocus=function(){(this||e).instance.clearFocus()},t}(),w=function(){function n(t,n,r,i,a){i===void 0&&(i=[]),a===void 0&&(a=[]),(this||e).runtime=t,(this||e).artboard=n,(this||e).eventManager=r,(this||e).animations=i,(this||e).stateMachines=a}return n.prototype.add=function(n,r,i){if(i===void 0&&(i=!0),n=R(n),n.length===0)(this||e).animations.forEach(function(e){return e.playing=r}),(this||e).stateMachines.forEach(function(e){return e.playing=r});else for(var a=(this||e).animations.map(function(e){return e.name}),o=(this||e).stateMachines.map(function(e){return e.name}),s=0;s<n.length;s++){var c=a.indexOf(n[s]),l=o.indexOf(n[s]);if(c>=0||l>=0)c>=0?(this||e).animations[c].playing=r:(this||e).stateMachines[l].playing=r;else{var u=(this||e).artboard.animationByName(n[s]);if(u){var d=new t.Animation(u,(this||e).artboard,(this||e).runtime,r);d.advance(0),d.apply(1),(this||e).animations.push(d)}else{var f=(this||e).artboard.stateMachineByName(n[s]);if(f){var p=new C(f,(this||e).runtime,r,(this||e).artboard);(this||e).stateMachines.push(p)}}}}return i&&(r?(this||e).eventManager.fire({type:T.Play,data:(this||e).playing}):(this||e).eventManager.fire({type:T.Pause,data:(this||e).paused})),r?(this||e).playing:(this||e).paused},n.prototype.initLinearAnimations=function(n,r,i){i===void 0&&(i=!1);for(var a=(this||e).animations.map(function(e){return e.name}),o=0;o<n.length;o++){var s=a.indexOf(n[o]);if(s>=0)(this||e).animations[s].playing=r;else{var c=(this||e).artboard.animationByName(n[o]);if(c){var l=new t.Animation(c,(this||e).artboard,(this||e).runtime,r);l.advance(0),l.apply(1),(this||e).animations.push(l)}else if(i)throw new d(`State Machine with name ${n[o]} not found`);else console.error(`Animation with name ${n[o]} not found.`)}}},n.prototype.initStateMachines=function(t,n){for(var r=(this||e).stateMachines.map(function(e){return e.name}),i=0;i<t.length;i++){var a=r.indexOf(t[i]);if(a>=0)(this||e).stateMachines[a].playing=n;else{var o=(this||e).artboard.stateMachineByName(t[i]);if(o){var s=new C(o,(this||e).runtime,n,(this||e).artboard);(this||e).stateMachines.push(s)}else console.warn(`State Machine with name ${t[i]} not found. Falling back to find an animation with the same name.`),this.initLinearAnimations([t[i]],n,!0)}}},n.prototype.play=function(e){return this.add(e,!0)},n.prototype.advanceIfPaused=function(){(this||e).stateMachines.forEach(function(e){e.playing||e.advanceAndApply(0)})},n.prototype.pause=function(e){return this.add(e,!1)},n.prototype.scrub=function(t,n){var r=(this||e).animations.filter(function(e){return t.includes(e.name)});return r.forEach(function(e){return e.scrubTo=n}),r.map(function(e){return e.name})},Object.defineProperty(n.prototype,\"playing\",{get:function(){return(this||e).animations.filter(function(e){return e.playing}).map(function(e){return e.name}).concat((this||e).stateMachines.filter(function(e){return e.playing}).map(function(e){return e.name}))},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"paused\",{get:function(){return(this||e).animations.filter(function(e){return!e.playing}).map(function(e){return e.name}).concat((this||e).stateMachines.filter(function(e){return!e.playing}).map(function(e){return e.name}))},enumerable:!1,configurable:!0}),n.prototype.stop=function(t){var n=this||e;t=R(t);var r=[];if(t.length===0)r=(this||e).animations.map(function(e){return e.name}).concat((this||e).stateMachines.map(function(e){return e.name})),(this||e).animations.forEach(function(e){return e.cleanup()}),(this||e).stateMachines.forEach(function(e){return e.cleanup()}),(this||e).animations.splice(0,(this||e).animations.length),(this||e).stateMachines.splice(0,(this||e).stateMachines.length);else{var i=(this||e).animations.filter(function(e){return t.includes(e.name)});i.forEach(function(e){e.cleanup(),n.animations.splice(n.animations.indexOf(e),1)});var a=(this||e).stateMachines.filter(function(e){return t.includes(e.name)});a.forEach(function(e){e.cleanup(),n.stateMachines.splice(n.stateMachines.indexOf(e),1)}),r=i.map(function(e){return e.name}).concat(a.map(function(e){return e.name}))}return(this||e).eventManager.fire({type:T.Stop,data:r}),r},Object.defineProperty(n.prototype,\"isPlaying\",{get:function(){return(this||e).animations.reduce(function(e,t){return e||t.playing},!1)||(this||e).stateMachines.reduce(function(e,t){return e||t.playing},!1)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"isPaused\",{get:function(){return!(this||e).isPlaying&&((this||e).animations.length>0||(this||e).stateMachines.length>0)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"isStopped\",{get:function(){return(this||e).animations.length===0&&(this||e).stateMachines.length===0},enumerable:!1,configurable:!0}),n.prototype.atLeastOne=function(t,n){n===void 0&&(n=!0);var r;return(this||e).animations.length===0&&(this||e).stateMachines.length===0&&((this||e).artboard.animationCount()>0?this.add([r=(this||e).artboard.animationByIndex(0).name],t,n):(this||e).artboard.stateMachineCount()>0&&this.add([r=(this||e).artboard.stateMachineByIndex(0).name],t,n)),r},n.prototype.handleLooping=function(){for(var t=0,n=(this||e).animations.filter(function(e){return e.playing});t<n.length;t++){var r=n[t];r.loopValue===0&&r.loopCount?(r.loopCount=0,this.stop(r.name)):r.loopValue===1&&r.loopCount?((this||e).eventManager.fire({type:T.Loop,data:{animation:r.name,type:E.Loop}}),r.loopCount=0):r.loopValue===2&&r.loopCount>1&&((this||e).eventManager.fire({type:T.Loop,data:{animation:r.name,type:E.PingPong}}),r.loopCount=0)}},n.prototype.handleStateChanges=function(){for(var t=[],n=0,r=(this||e).stateMachines.filter(function(e){return e.playing});n<r.length;n++){var i=r[n];t.push.apply(t,i.statesChanged)}t.length>0&&(this||e).eventManager.fire({type:T.StateChange,data:t})},n.prototype.handleAdvancing=function(t){(this||e).eventManager.fire({type:T.Advance,data:t})},n}(),T;(function(e){e.Load=`load`,e.LoadError=`loaderror`,e.Play=`play`,e.Pause=`pause`,e.Stop=`stop`,e.Loop=`loop`,e.Draw=`draw`,e.Advance=`advance`,e.StateChange=`statechange`,e.RiveEvent=`riveevent`,e.AudioStatusChange=`audiostatuschange`})(T||(T={}));var E;(function(e){e.OneShot=`oneshot`,e.Loop=`loop`,e.PingPong=`pingpong`})(E||(E={}));var D=function(){function t(t){t===void 0&&(t=[]),(this||e).listeners=t}return t.prototype.getListeners=function(t){return(this||e).listeners.filter(function(e){return e.type===t})},t.prototype.add=function(t){(this||e).listeners.includes(t)||(this||e).listeners.push(t)},t.prototype.remove=function(t){for(var n=0;n<(this||e).listeners.length;n++){var r=(this||e).listeners[n];if(r.type===t.type&&r.callback===t.callback){(this||e).listeners.splice(n,1);break}}},t.prototype.removeAll=function(t){var n=this||e;t?(this||e).listeners.filter(function(e){return e.type===t}).forEach(function(e){return n.remove(e)}):(this||e).listeners.splice(0,(this||e).listeners.length)},t.prototype.fire=function(e){this.getListeners(e.type).forEach(function(t){return t.callback(e)})},t}(),O=function(){function t(t){(this||e).eventManager=t,(this||e).queue=[]}return t.prototype.add=function(t){(this||e).queue.push(t)},t.prototype.process=function(){for(;(this||e).queue.length>0;){var t=(this||e).queue.shift();t!=null&&t.action&&t.action(),t!=null&&t.event&&(this||e).eventManager.fire(t.event)}},t}(),k;(function(e){e[e.AVAILABLE=0]=`AVAILABLE`,e[e.UNAVAILABLE=1]=`UNAVAILABLE`})(k||(k={}));var A=new(function(t){o(n,t);function n(){var n=t!==null&&t.apply(this||e,arguments)||this||e;return n._started=!1,n._enabled=!1,n._status=k.UNAVAILABLE,n}return n.prototype.delay=function(t){return c(this||e,void 0,void 0,function(){return l(this||e,function(e){return[2,new Promise(function(e){return setTimeout(e,t)})]})})},n.prototype.timeout=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(e){return[2,new Promise(function(e,t){return setTimeout(t,50)})]})})},n.prototype.reportToListeners=function(){this.fire({type:T.AudioStatusChange}),this.removeAll()},n.prototype.enableAudio=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(t){return(this||e)._enabled||((this||e)._enabled=!0,(this||e)._status=k.AVAILABLE,this.reportToListeners()),[2]})})},n.prototype.testAudio=function(){return c(this||e,void 0,void 0,function(){var t;return l(this||e,function(n){switch(n.label){case 0:if(!((this||e)._status===k.UNAVAILABLE&&(this||e)._audioContext!==null))return[3,4];n.label=1;case 1:return n.trys.push([1,3,,4]),[4,Promise.race([(this||e)._audioContext.resume(),this.timeout()])];case 2:return n.sent(),this.enableAudio(),[3,4];case 3:return t=n.sent(),[3,4];case 4:return[2]}})})},n.prototype._establishAudio=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(t){switch(t.label){case 0:return(this||e)._started?[3,5]:((this||e)._started=!0,typeof window>`u`?(this.enableAudio(),[3,5]):[3,1]);case 1:(this||e)._audioContext=new AudioContext,this.listenForUserAction(),t.label=2;case 2:return(this||e)._status===k.UNAVAILABLE?[4,this.testAudio()]:[3,5];case 3:return t.sent(),[4,this.delay(1e3)];case 4:return t.sent(),[3,2];case 5:return[2]}})})},n.prototype.listenForUserAction=function(){var t=this||e,n=function(){return c(t,void 0,void 0,function(){return l(this||e,function(e){return this.enableAudio(),[2]})})};document.addEventListener(`pointerdown`,n,{once:!0})},n.prototype.establishAudio=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(e){return this._establishAudio(),[2]})})},Object.defineProperty(n.prototype,\"systemVolume\",{get:function(){return(this||e)._status===k.UNAVAILABLE?(this.testAudio(),0):1},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"status\",{get:function(){return(this||e)._status},enumerable:!1,configurable:!0}),n}(D)),j=function(){function e(){}return e.prototype.observe=function(){},e.prototype.unobserve=function(){},e.prototype.disconnect=function(){},e}(),N=globalThis.ResizeObserver||j,P=new(function(){function t(){var t=this||e;(this||e)._elementsMap=/* @__PURE__ */ new Map,(this||e)._onObservedEntry=function(e){var n=t._elementsMap.get(e.target);n===null?t._resizeObserver.unobserve(e.target):n.onResize(e.target.clientWidth==0||e.target.clientHeight==0)},(this||e)._onObserved=function(e){e.forEach(t._onObservedEntry)},(this||e)._resizeObserver=new N((this||e)._onObserved)}return t.prototype.add=function(t,n){var r={onResize:n,element:t};return(this||e)._elementsMap.set(t,r),(this||e)._resizeObserver.observe(t),r},t.prototype.remove=function(t){(this||e)._resizeObserver.unobserve(t.element),(this||e)._elementsMap.delete(t.element)},t}()),ee=function(){function t(t){(this||e).enableRiveAssetCDN=!0,(this||e).enablePerfMarks=!1,(this||e).referenceCount=0,(this||e).destroyed=!1,(this||e).selfUnref=!1,(this||e).bindableArtboards=[],(this||e).src=t.src,(this||e).buffer=t.buffer,t.assetLoader&&((this||e).assetLoader=t.assetLoader),(this||e).enableRiveAssetCDN=typeof t.enableRiveAssetCDN==`boolean`?t.enableRiveAssetCDN:!0,(this||e).enablePerfMarks=!!t.enablePerfMarks,(this||e).enablePerfMarks&&(n.RuntimeLoader.enablePerfMarks=!0),(this||e).eventManager=new D,t.onLoad&&this.on(T.Load,t.onLoad),t.onLoadError&&this.on(T.LoadError,t.onLoadError)}return t.prototype.releaseFile=function(){var t;(this||e).selfUnref&&((t=(this||e).file)==null||t.unref()),(this||e).file=null},t.prototype.releaseBindableArtboards=function(){(this||e).bindableArtboards.forEach(function(e){return e.destroy()})},t.prototype.initData=function(){return c(this||e,void 0,void 0,function(){var n,r,i,o,s,c;return l(this||e,function(l){switch(l.label){case 0:if(!((this||e).src&&!(this||e).buffer))return[3,4];l.label=1;case 1:return l.trys.push([1,3,,4]),n=this||e,[4,me((this||e).src)];case 2:return n.buffer=l.sent(),[3,4];case 3:throw r=l.sent(),r instanceof Error?r:new d(t.fileLoadErrorMessage);case 4:return(this||e).destroyed?[2]:((this||e).assetLoader&&(o=new a.CustomFileAssetLoaderWrapper((this||e).runtime,(this||e).assetLoader),i=o.assetLoader),(this||e).enablePerfMarks&&performance.mark(`rive:file-load:start`),s=this||e,[4,(this||e).runtime.load(new Uint8Array((this||e).buffer),i,(this||e).enableRiveAssetCDN)]);case 5:return s.file=l.sent(),(this||e).enablePerfMarks&&(performance.mark(`rive:file-load:end`),performance.measure(`rive:file-load`,`rive:file-load:start`,`rive:file-load:end`)),c=new a.FileFinalizer((this||e).file),a.finalizationRegistry.register(this||e,c),(this||e).destroyed?(this.releaseFile(),[2]):((this||e).file===null?this.fireLoadError(t.fileLoadErrorMessage):(this||e).eventManager.fire({type:T.Load,data:this||e}),[2])}})})},t.prototype.loadRiveFileBytes=function(){return c(this||e,void 0,void 0,function(){var t;return l(this||e,function(n){return(this||e).enablePerfMarks&&performance.mark(`rive:fetch-riv:start`),t=(this||e).src?me((this||e).src):Promise.resolve((this||e).buffer),(this||e).enablePerfMarks&&(this||e).src&&t.then(function(){performance.mark(`rive:fetch-riv:end`),performance.measure(`rive:fetch-riv`,`rive:fetch-riv:start`,`rive:fetch-riv:end`)}),[2,t]})})},t.prototype.loadRuntime=function(){return c(this||e,void 0,void 0,function(){var t;return l(this||e,function(r){return(this||e).enablePerfMarks&&performance.mark(`rive:await-wasm:start`),t=n.RuntimeLoader.awaitInstance(),(this||e).enablePerfMarks&&t.then(function(){performance.mark(`rive:await-wasm:end`),performance.measure(`rive:await-wasm`,`rive:await-wasm:start`,`rive:await-wasm:end`)}),[2,t]})})},t.prototype.init=function(){return c(this||e,void 0,void 0,function(){var n,r,i,a;return l(this||e,function(o){switch(o.label){case 0:if(!(this||e).src&&!(this||e).buffer)return this.fireLoadError(t.missingErrorMessage),[2];o.label=1;case 1:return o.trys.push([1,4,,5]),[4,Promise.all([this.loadRiveFileBytes(),this.loadRuntime()])];case 2:return n=o.sent(),r=n[0],i=n[1],(this||e).destroyed?[2]:((this||e).buffer=r,(this||e).runtime=i,(this||e).enablePerfMarks&&performance.mark(`rive:init-data:start`),[4,this.initData()]);case 3:return o.sent(),(this||e).enablePerfMarks&&(performance.mark(`rive:init-data:end`),performance.measure(`rive:init-data`,`rive:init-data:start`,`rive:init-data:end`)),[3,5];case 4:return a=o.sent(),this.fireLoadError(a instanceof Error?a.message:t.fileLoadErrorMessage),[3,5];case 5:return[2]}})})},t.prototype.fireLoadError=function(t){throw(this||e).eventManager.fire({type:T.LoadError,data:t}),new d(t)},t.prototype.on=function(t,n){(this||e).eventManager.add({type:t,callback:n})},t.prototype.off=function(t,n){(this||e).eventManager.remove({type:t,callback:n})},t.prototype.cleanup=function(){--(this||e).referenceCount,(this||e).referenceCount<=0&&(this.removeAllRiveEventListeners(),this.releaseFile(),this.releaseBindableArtboards(),(this||e).destroyed=!0)},t.prototype.removeAllRiveEventListeners=function(t){(this||e).eventManager.removeAll(t)},t.prototype.getInstance=function(){if((this||e).file!==null)return(this||e).referenceCount+=1,(this||e).file},t.prototype.destroyIfUnused=function(){(this||e).referenceCount<=0&&this.cleanup()},t.prototype.createBindableArtboard=function(t){if(t!=null){var n=new S(t);return(0,a.createFinalization)(n,n.nativeArtboard),(this||e).bindableArtboards.push(n),n}return null},t.prototype.getArtboard=function(t){var n=(this||e).file.artboardByName(t);if(n!=null)return new x(n,this||e)},t.prototype.getBindableArtboard=function(t){var n=(this||e).file.bindableArtboardByName(t);return this.createBindableArtboard(n)},t.prototype.getDefaultBindableArtboard=function(){var t=(this||e).file.bindableArtboardDefault();return this.createBindableArtboard(t)},t.prototype.internalBindableArtboardFromArtboard=function(t){var n=(this||e).file.internalBindableArtboardFromArtboard(t);return this.createBindableArtboard(n)},t.prototype.viewModelByName=function(t){var n=(this||e).file.viewModelByName(t);return n===null?null:new re(n)},t.missingErrorMessage=`Rive source file or data buffer required`,t.fileLoadErrorMessage=`The file failed to load`,t}(),te=function(){function t(t){var r=this||e,i,a,o;(this||e).loaded=!1,(this||e).destroyed=!1,(this||e)._observed=null,(this||e).readyForPlaying=!1,(this||e).artboard=null,(this||e).eventCleanup=null,(this||e)._keyboardInteractions=null,(this||e).shouldDisableRiveListeners=!1,(this||e).automaticallyHandleEvents=!1,(this||e).dispatchPointerExit=!0,(this||e).enableMultiTouch=!1,(this||e).enableRiveAssetCDN=!0,(this||e)._volume=1,(this||e)._artboardWidth=void 0,(this||e)._artboardHeight=void 0,(this||e)._devicePixelRatioUsed=1,(this||e)._hasZeroSize=!1,(this||e)._needsRedraw=!1,(this||e)._currentCanvasWidth=0,(this||e)._currentCanvasHeight=0,(this||e)._audioEventListener=null,(this||e)._boundDraw=null,(this||e)._pageVisibilityHandler=null,(this||e)._explicitlyStoppedRendering=!1,(this||e)._viewModelInstance=null,(this||e)._dataEnums=null,(this||e)._tabIndex=null,(this||e)._prevHasFocus=!1,(this||e)._focusOptions={allowFocusInterrupt:!1},(this||e).drawOptimization=h.DrawOnChanged,(this||e).enablePerfMarks=!1,(this||e).durations=[],(this||e).frameTimes=[],(this||e).frameCount=0,(this||e).isTouchScrollEnabled=!1,(this||e).onCanvasResize=function(e){var t=r._hasZeroSize!==e;r._hasZeroSize=e,e?(!r._layout.maxX||!r._layout.maxY)&&r.resizeToCanvas():t&&r.resizeDrawingSurfaceToCanvas()},(this||e).frameRequestId=null,(this||e).renderSecondTimer=0,(this||e)._boundDraw=(this||e).draw.bind(this||e),typeof document<`u`&&((this||e)._pageVisibilityHandler=(this||e)._onPageVisibilityChange.bind(this||e),document.addEventListener(`visibilitychange`,(this||e)._pageVisibilityHandler)),(this||e).canvas=t.canvas,t.canvas.constructor===HTMLCanvasElement&&((this||e)._observed=P.add((this||e).canvas,(this||e).onCanvasResize)),(this||e)._currentCanvasWidth=(this||e).canvas.width,(this||e)._currentCanvasHeight=(this||e).canvas.height,(this||e).src=t.src,(this||e).buffer=t.buffer,(this||e).riveFile=t.riveFile,(this||e).layout=(i=t.layout)==null?new g:i,(this||e).shouldDisableRiveListeners=!!t.shouldDisableRiveListeners,(this||e).isTouchScrollEnabled=!!t.isTouchScrollEnabled,(this||e).automaticallyHandleEvents=!!t.automaticallyHandleEvents,(this||e).dispatchPointerExit=t.dispatchPointerExit===!1?t.dispatchPointerExit:(this||e).dispatchPointerExit,(this||e).enableMultiTouch=!!t.enableMultiTouch,(this||e).drawOptimization=(a=t.drawingOptions)==null?(this||e).drawOptimization:a,(this||e).enableRiveAssetCDN=t.enableRiveAssetCDN===void 0?!0:t.enableRiveAssetCDN,(this||e).enablePerfMarks=!!t.enablePerfMarks,(this||e).enablePerfMarks&&(n.RuntimeLoader.enablePerfMarks=!0),(this||e)._focusOptions=(o=t.focusOptions)==null?(this||e)._focusOptions:o,(this||e).eventManager=new D,t.onLoad&&this.on(T.Load,t.onLoad),t.onLoadError&&this.on(T.LoadError,t.onLoadError),t.onPlay&&this.on(T.Play,t.onPlay),t.onPause&&this.on(T.Pause,t.onPause),t.onStop&&this.on(T.Stop,t.onStop),t.onLoop&&this.on(T.Loop,t.onLoop),t.onStateChange&&this.on(T.StateChange,t.onStateChange),t.onAdvance&&this.on(T.Advance,t.onAdvance),t.onload&&!t.onLoad&&this.on(T.Load,t.onload),t.onloaderror&&!t.onLoadError&&this.on(T.LoadError,t.onloaderror),t.onplay&&!t.onPlay&&this.on(T.Play,t.onplay),t.onpause&&!t.onPause&&this.on(T.Pause,t.onpause),t.onstop&&!t.onStop&&this.on(T.Stop,t.onstop),t.onloop&&!t.onLoop&&this.on(T.Loop,t.onloop),t.onstatechange&&!t.onStateChange&&this.on(T.StateChange,t.onstatechange),t.assetLoader&&((this||e).assetLoader=t.assetLoader),(this||e).taskQueue=new O((this||e).eventManager),this.init({src:(this||e).src,buffer:(this||e).buffer,riveFile:(this||e).riveFile,autoplay:t.autoplay,autoBind:t.autoBind,animations:t.animations,stateMachines:t.stateMachines,artboard:t.artboard,useOffscreenRenderer:t.useOffscreenRenderer,tabIndex:t.tabIndex})}return Object.defineProperty(t.prototype,\"viewModelCount\",{get:function(){return(this||e).file.viewModelCount()},enumerable:!1,configurable:!0}),t.new=function(e){return console.warn(\"This function is deprecated: please use `new Rive({})` instead\"),new t(e)},t.prototype.onSystemAudioChanged=function(){(this||e).volume=(this||e)._volume},t.prototype.init=function(r){var i=this||e,a=r.src,o=r.buffer,s=r.riveFile,c=r.animations,l=r.stateMachines,u=r.artboard,f=r.autoplay,p=f===void 0?!1:f,m=r.useOffscreenRenderer,h=m===void 0?!1:m,g=r.autoBind,_=g===void 0?!1:g,v=r.tabIndex;if(!(this||e).destroyed){if((this||e).src=a,(this||e).buffer=o,(this||e).riveFile=s,(this||e)._tabIndex=v==null?null:v,!(this||e).src&&!(this||e).buffer&&!(this||e).riveFile)throw new d(t.missingErrorMessage);var y=R(c),b=R(l);(this||e).loaded=!1,(this||e).readyForPlaying=!1,n.RuntimeLoader.awaitInstance().then(function(e){if(!i.destroyed){i.runtime=e,i.removeRiveListeners(),i.deleteRiveRenderer(),i.enablePerfMarks&&performance.mark(`rive:make-renderer:start`);try{if(i.renderer=i.runtime.makeRenderer(i.canvas,h),!i.renderer)throw Error(`Renderer is null, cannot render Rive on the canvas.`)}catch(e){throw console.error(e),new d(`Unable to create the renderer, your environment may not support WebGL. Try the @rive-app/canvas runtime as an alternative.`)}i.enablePerfMarks&&(performance.mark(`rive:make-renderer:end`),performance.measure(`rive:make-renderer`,`rive:make-renderer:start`,`rive:make-renderer:end`)),i.canvas.width||i.canvas.height||i.resizeDrawingSurfaceToCanvas(),i.initData(u,y,b,p,_).then(function(e){if(e)return i.setupRiveListeners()}).catch(function(e){console.error(e)})}}).catch(function(e){i.eventManager.fire({type:T.LoadError,data:e.message})})}},t.prototype.setupRiveListeners=function(t){var n=this||e;if((this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions(),!(this||e).shouldDisableRiveListeners){var r=(this||e).animator.stateMachines.filter(function(e){return e.playing}),i=r.filter(function(e){return n.runtime.hasListeners(e.instance)}).map(function(e){return e.instance}),o=(this||e).isTouchScrollEnabled,s=(this||e).dispatchPointerExit,c=(this||e).enableMultiTouch;t&&`isTouchScrollEnabled`in t&&(o=t.isTouchScrollEnabled),(this||e).eventCleanup=(0,a.registerTouchInteractions)({canvas:(this||e).canvas,artboard:(this||e).artboard,stateMachines:i,renderer:(this||e).renderer,rive:(this||e).runtime,fit:(this||e)._layout.runtimeFit((this||e).runtime),alignment:(this||e)._layout.runtimeAlignment((this||e).runtime),isTouchScrollEnabled:o,dispatchPointerExit:s,enableMultiTouch:c,layoutScaleFactor:(this||e)._layout.layoutScaleFactor,advanceAndDrain:(this||e).advanceAndReportChanges.bind(this||e)});var l=r.filter(function(e){return e.hasFocusNodes});if(l.length){var u=(this||e).canvas.tabIndex;(u===-1||isNaN(u))&&((this||e).canvas.tabIndex=(this||e)._tabIndex===null?0:(this||e)._tabIndex),typeof window<`u`&&((this||e)._keyboardInteractions=new a.KeyboardInteractions({canvas:(this||e).canvas,stateMachine:l[0].instance,hasFocusNodes:!0}))}}},t.prototype.cleanupKeyboardInteractions=function(){(this||e)._keyboardInteractions&&((this||e)._keyboardInteractions.cleanup(),(this||e)._keyboardInteractions=null)},t.prototype.removeRiveListeners=function(){(this||e).eventCleanup&&(this.eventCleanup(),(this||e).eventCleanup=null),this.cleanupKeyboardInteractions()},t.prototype.initializeAudio=function(){var t=this||e,n;A.status==k.UNAVAILABLE&&((this||e).file.hasAudio||(n=(this||e).artboard)!=null&&n.hasAudio&&(this||e)._audioEventListener===null)&&((this||e)._audioEventListener={type:T.AudioStatusChange,callback:function(){return t.onSystemAudioChanged()}},A.add((this||e)._audioEventListener),A.establishAudio())},t.prototype.initArtboardSize=function(){(this||e).artboard&&((this||e)._artboardWidth=(this||e).artboard.width=(this||e)._artboardWidth||(this||e).artboard.width,(this||e)._artboardHeight=(this||e).artboard.height=(this||e)._artboardHeight||(this||e).artboard.height)},t.prototype.initData=function(t,n,r,i,a){return c(this||e,void 0,void 0,function(){var o,s,c,u;return l(this||e,function(l){switch(l.label){case 0:return l.trys.push([0,3,,4]),(this||e).riveFile==null?(o=new ee({src:(this||e).src,buffer:(this||e).buffer,enableRiveAssetCDN:(this||e).enableRiveAssetCDN,assetLoader:(this||e).assetLoader,enablePerfMarks:(this||e).enablePerfMarks}),(this||e).riveFile=o,[4,o.init()]):[3,2];case 1:if(l.sent(),(this||e).destroyed)return o.destroyIfUnused(),[2,!1];l.label=2;case 2:(this||e).file=(this||e).riveFile.getInstance(),this.initArtboard(t,n,r,i,a),this.initArtboardSize(),this.initializeAudio();try{(this||e).loaded=!0,(this||e).eventManager.fire({type:T.Load,data:(u=(this||e).src)==null?`buffer`:u})}catch(e){console.error(e)}return(this||e).animator.advanceIfPaused(),(this||e).readyForPlaying=!0,(this||e).taskQueue.process(),this.drawFrame(),[2,!0];case 3:return s=l.sent(),c=f(s),(this||e).eventManager.fire({type:T.LoadError,data:c}),[2,Promise.reject(c)];case 4:return[2]}})})},t.prototype.initArtboard=function(t,n,r,i,o){if((this||e).file){var s=t?(this||e).file.artboardByName(t):(this||e).file.defaultArtboard();if(!s)throw new d(`Invalid artboard name or no default artboard`);(this||e).artboard=s,s.volume=(this||e)._volume*A.systemVolume,(this||e).animator=new w((this||e).runtime,(this||e).artboard,(this||e).eventManager);var c;if(n.length>0||r.length>0?(c=n.concat(r),(this||e).animator.initLinearAnimations(n,i),(this||e).animator.initStateMachines(r,i)):c=[(this||e).animator.atLeastOne(i,!1)],(this||e).taskQueue.add({event:{type:i?T.Play:T.Pause,data:c}}),o){var l=(this||e).file.defaultArtboardViewModel(s);if(l!==null){var u=l.defaultInstance();if(u!==null){var f=new I(u,null);(0,a.createFinalization)(f,f.runtimeInstance),this.bindViewModelInstance(f)}}}}},t.prototype.drawFrame=function(){var t,n;(t=document==null?void 0:document.timeline)!=null&&t.currentTime?(this||e).loaded&&(this||e).artboard&&!(this||e).frameRequestId&&(this._boundDraw(document.timeline.currentTime),(n=(this||e).runtime)==null||n.resolveAnimationFrame()):this.scheduleRendering()},t.prototype._canvasSizeChanged=function(){var t=!1;return(this||e).canvas&&((this||e).canvas.width!==(this||e)._currentCanvasWidth&&((this||e)._currentCanvasWidth=(this||e).canvas.width,t=!0),(this||e).canvas.height!==(this||e)._currentCanvasHeight&&((this||e)._currentCanvasHeight=(this||e).canvas.height,t=!0)),t},t.prototype.pollFocusState=function(){if(!(this||e)._keyboardInteractions){(this||e)._prevHasFocus=!1;return}var t=(this||e).animator.stateMachines.find(function(e){return e.playing&&e.hasFocusNodes});if(!t){(this||e)._prevHasFocus=!1;return}if((this||e).canvas instanceof HTMLCanvasElement){if(t.focusState().hasFocus){(this||e)._keyboardInteractions.notifyRiveFocused(),(this||e)._prevHasFocus||((this||e).canvas!==document.activeElement&&(this||e)._focusOptions.allowFocusInterrupt&&(this||e).canvas.focus(),(this||e)._prevHasFocus=!0);return}(this||e)._prevHasFocus=!1,(this||e)._keyboardInteractions.focusSessionState===a.FocusSessionState.RiveFocused&&(this||e)._keyboardInteractions.setFocusSessionState(a.FocusSessionState.NotFocused)}},t.prototype.advanceAndReportChanges=function(t){for(var n,r=(this||e).animator.animations.filter(function(e){return e.playing||e.needsScrub}).sort(function(e){return e.needsScrub?-1:1}),i=0,o=r;i<o.length;i++){var s=o[i];s.advance(t),s.instance.didLoop&&(s.loopCount+=1),s.apply(1)}for(var c=(this||e).animator.stateMachines.filter(function(e){return e.playing}),l=(this||e).enablePerfMarks&&(this||e).frameCount<3?(this||e).frameCount:-1,u=0,d=c;u<d.length;u++){var f=d[u],p=f.reportedEventCount();if(p)for(var m=0;m<p;m++){var h=f.reportedEventAt(m);if(h)if(h.type===y.OpenUrl){if((this||e).eventManager.fire({type:T.RiveEvent,data:h}),(this||e).automaticallyHandleEvents){var g=document.createElement(`a`),_=h,v=_.url,b=_.target,x=(0,a.sanitizeUrl)(v);v&&g.setAttribute(`href`,x),b&&g.setAttribute(`target`,b),x&&x!==a.BLANK_URL&&g.click()}}else (this||e).eventManager.fire({type:T.RiveEvent,data:h})}l>=0&&performance.mark(`rive:sm-advance:start:f${l}`),f.advanceAndApply(t),l>=0&&(performance.mark(`rive:sm-advance:end:f${l}`),performance.measure(`rive:sm-advance:f${l}`,`rive:sm-advance:start:f${l}`,`rive:sm-advance:end:f${l}`))}(this||e).animator.stateMachines.length==0&&(this||e).artboard.advance(t),(this||e).animator.handleLooping(),(this||e).animator.handleStateChanges(),(this||e).animator.handleAdvancing(t),this.pollFocusState(),(n=(this||e)._viewModelInstance)==null||n.handleCallbacks()},t.prototype.draw=function(t,n){(this||e).frameRequestId=null;var r=performance.now(),i=(this||e).enablePerfMarks&&(this||e).frameCount<3?(this||e).frameCount:-1;(this||e).lastRenderTime||((this||e).lastRenderTime=t),(this||e).renderSecondTimer+=t-(this||e).lastRenderTime,(this||e).renderSecondTimer>5e3&&((this||e).renderSecondTimer=0,n==null||n());var a=(t-(this||e).lastRenderTime)/1e3;(this||e).lastRenderTime=t,this.advanceAndReportChanges(a);var o=(this||e).renderer;(this||e)._hasZeroSize||((this||e).drawOptimization==h.AlwaysDraw||(this||e).artboard.didChange()||(this||e)._needsRedraw||this._canvasSizeChanged())&&(o.clear(),o.save(),i>=0&&performance.mark(`rive:align-renderer:start:f${i}`),this.alignRenderer(),i>=0&&(performance.mark(`rive:align-renderer:end:f${i}`),performance.measure(`rive:align-renderer:f${i}`,`rive:align-renderer:start:f${i}`,`rive:align-renderer:end:f${i}`)),i>=0&&performance.mark(`rive:artboard-draw:start:f${i}`),(this||e).artboard.draw(o),i>=0&&(performance.mark(`rive:artboard-draw:end:f${i}`),performance.measure(`rive:artboard-draw:f${i}`,`rive:artboard-draw:start:f${i}`,`rive:artboard-draw:end:f${i}`)),o.restore(),i>=0&&performance.mark(`rive:renderer-flush:start:f${i}`),o.flush(),i>=0&&(performance.mark(`rive:renderer-flush:end:f${i}`),performance.measure(`rive:renderer-flush:f${i}`,`rive:renderer-flush:start:f${i}`,`rive:renderer-flush:end:f${i}`)),(this||e)._needsRedraw=!1),(this||e).frameCount++;var s=performance.now();for((this||e).frameTimes.push(s),(this||e).durations.push(s-r);(this||e).frameTimes[0]<=s-1e3;)(this||e).frameTimes.shift(),(this||e).durations.shift();(this||e).animator.isPlaying?this.scheduleRendering():((this||e).animator.isPaused||(this||e).animator.isStopped)&&((this||e).lastRenderTime=0)},t.prototype.alignRenderer=function(){var t=this||e,n=t.renderer,r=t.runtime,i=t._layout,a=t.artboard;n.align(i.runtimeFit(r),i.runtimeAlignment(r),{minX:i.minX,minY:i.minY,maxX:i.maxX,maxY:i.maxY},a.bounds,(this||e)._devicePixelRatioUsed*i.layoutScaleFactor)},Object.defineProperty(t.prototype,\"fps\",{get:function(){return(this||e).durations.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"frameTime\",{get:function(){return(this||e).durations.length===0?0:((this||e).durations.reduce(function(e,t){return e+t},0)/(this||e).durations.length).toFixed(4)},enumerable:!1,configurable:!0}),t.prototype.cleanup=function(){var t,n,r,i;(this||e).destroyed=!0,this.stopRendering(),(n=(t=(this||e).renderer)==null?void 0:t.bindContext)==null||n.call(t),this.cleanupInstances(),(this||e)._observed!==null&&P.remove((this||e)._observed),this.removeRiveListeners(),(this||e).file&&((r=(this||e).riveFile)==null||r.cleanup(),(this||e).file=null),(this||e).riveFile=null,this.deleteRiveRenderer(),(this||e)._audioEventListener!==null&&(A.remove((this||e)._audioEventListener),(this||e)._audioEventListener=null),(this||e)._pageVisibilityHandler&&(document.removeEventListener(`visibilitychange`,(this||e)._pageVisibilityHandler),(this||e)._pageVisibilityHandler=null),(i=(this||e)._viewModelInstance)==null||i.cleanup(),(this||e)._viewModelInstance=null,(this||e)._dataEnums=null},t.prototype.deleteRiveRenderer=function(){var t;(t=(this||e).renderer)==null||t.delete(),(this||e).renderer=null},t.prototype.cleanupInstances=function(){(this||e).eventCleanup!==null&&this.eventCleanup(),this.cleanupKeyboardInteractions(),this.stop(),(this||e).artboard&&((this||e).artboard.delete(),(this||e).artboard=null)},t.prototype.retrieveTextRun=function(t){var n;if(!t){console.warn(`No text run name provided`);return}if(!(this||e).artboard){console.warn(`Tried to access text run, but the Artboard is null`);return}var r=(this||e).artboard.textRun(t);if(!r){console.warn(`Could not access a text run with name '${t}' in the '${(n=(this||e).artboard)==null?void 0:n.name}' Artboard. Note that you must rename a text run node in the Rive editor to make it queryable at runtime.`);return}return r},t.prototype.getTextRunValue=function(e){var t=this.retrieveTextRun(e);return t?t.text:void 0},t.prototype.setTextRunValue=function(e,t){var n=this.retrieveTextRun(e);n&&(n.text=t)},t.prototype.play=function(t,n){var r=this||e;if(t=R(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return r.play(t,n)}});return}(this||e).animator.play(t),(this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions(),this.setupRiveListeners(),this.startRendering()},t.prototype.pause=function(t){var n=this||e;if(t=R(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return n.pause(t)}});return}(this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions(),(this||e).animator.pause(t)},t.prototype.scrub=function(t,n){var r=this||e;if(t=R(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return r.scrub(t,n)}});return}(this||e).animator.scrub(t,n||0),this.drawFrame()},t.prototype.stop=function(t){var n=this||e;if(t=R(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return n.stop(t)}});return}(this||e).animator&&(this||e).animator.stop(t),(this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions()},t.prototype.reset=function(t){var n,r,i=t==null?void 0:t.artboard,a=R(t==null?void 0:t.animations),o=R(t==null?void 0:t.stateMachines),s=(n=t==null?void 0:t.autoplay)==null?!1:n,c=(r=t==null?void 0:t.autoBind)==null?!1:r;this.cleanupInstances(),this.initArtboard(i,a,o,s,c),(this||e).taskQueue.process()},t.prototype.load=function(t){(this||e).file=null,this.stop(),this.init(t)},Object.defineProperty(t.prototype,\"layout\",{get:function(){return(this||e)._layout},set:function(t){(this||e)._layout=t,(!t.maxX||!t.maxY)&&this.resizeToCanvas(),(this||e).loaded&&!(this||e).animator.isPlaying&&this.drawFrame()},enumerable:!1,configurable:!0}),t.prototype.resizeToCanvas=function(){(this||e)._layout=(this||e).layout.copyWith({minX:0,minY:0,maxX:(this||e).canvas.width,maxY:(this||e).canvas.height})},t.prototype.resizeDrawingSurfaceToCanvas=function(t){if((this||e).canvas instanceof HTMLCanvasElement&&window){var n=(this||e).canvas.getBoundingClientRect(),r=n.width,i=n.height,a=t||window.devicePixelRatio||1;if((this||e).devicePixelRatioUsed=a,(this||e).canvas.width=a*r,(this||e).canvas.height=a*i,(this||e)._needsRedraw=!0,this.resizeToCanvas(),this.drawFrame(),(this||e).layout.fit===p.Layout){var o=(this||e)._layout.layoutScaleFactor;(this||e).artboard.width=r/o,(this||e).artboard.height=i/o}}},Object.defineProperty(t.prototype,\"source\",{get:function(){return(this||e).src},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"activeArtboard\",{get:function(){return(this||e).artboard?(this||e).artboard.name:``},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"animationNames\",{get:function(){if(!(this||e).loaded||!(this||e).artboard)return[];for(var t=[],n=0;n<(this||e).artboard.animationCount();n++)t.push((this||e).artboard.animationByIndex(n).name);return t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"stateMachineNames\",{get:function(){if(!(this||e).loaded||!(this||e).artboard)return[];for(var t=[],n=0;n<(this||e).artboard.stateMachineCount();n++)t.push((this||e).artboard.stateMachineByIndex(n).name);return t},enumerable:!1,configurable:!0}),t.prototype.stateMachineInputs=function(t){if((this||e).loaded){var n=(this||e).animator.stateMachines.find(function(e){return e.name===t});return n==null?void 0:n.inputs}},t.prototype.retrieveInputAtPath=function(t,n){if(!t){console.warn(`No input name provided for path '${n}'`);return}if(!(this||e).artboard){console.warn(`Tried to access input: '${t}', at path: '${n}', but the Artboard is null`);return}var r=(this||e).artboard.inputByPath(t,n);if(!r){console.warn(`Could not access an input with name: '${t}', at path:'${n}'`);return}return r},t.prototype.setBooleanStateAtPath=function(e,t,n){var r=this.retrieveInputAtPath(e,n);r&&(r.type===_.Boolean?r.asBool().value=t:console.warn(`Input with name: '${e}', at path:'${n}' is not a boolean`))},t.prototype.setNumberStateAtPath=function(e,t,n){var r=this.retrieveInputAtPath(e,n);r&&(r.type===_.Number?r.asNumber().value=t:console.warn(`Input with name: '${e}', at path:'${n}' is not a number`))},t.prototype.fireStateAtPath=function(e,t){var n=this.retrieveInputAtPath(e,t);n&&(n.type===_.Trigger?n.asTrigger().fire():console.warn(`Input with name: '${e}', at path:'${t}' is not a trigger`))},t.prototype.retrieveTextAtPath=function(t,n){if(!t){console.warn(`No text name provided for path '${n}'`);return}if(!n){console.warn(`No path provided for text '${t}'`);return}if(!(this||e).artboard){console.warn(`Tried to access text: '${t}', at path: '${n}', but the Artboard is null`);return}var r=(this||e).artboard.textByPath(t,n);if(!r){console.warn(`Could not access text with name: '${t}', at path:'${n}'`);return}return r},t.prototype.getTextRunValueAtPath=function(e,t){var n=this.retrieveTextAtPath(e,t);if(!n){console.warn(`Could not get text with name: '${e}', at path:'${t}'`);return}return n.text},t.prototype.setTextRunValueAtPath=function(e,t,n){var r=this.retrieveTextAtPath(e,n);if(!r){console.warn(`Could not set text with name: '${e}', at path:'${n}'`);return}r.text=t},Object.defineProperty(t.prototype,\"playingStateMachineNames\",{get:function(){return(this||e).loaded?(this||e).animator.stateMachines.filter(function(e){return e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"playingAnimationNames\",{get:function(){return(this||e).loaded?(this||e).animator.animations.filter(function(e){return e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"pausedAnimationNames\",{get:function(){return(this||e).loaded?(this||e).animator.animations.filter(function(e){return!e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"pausedStateMachineNames\",{get:function(){return(this||e).loaded?(this||e).animator.stateMachines.filter(function(e){return!e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isPlaying\",{get:function(){return(this||e).animator.isPlaying},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isPaused\",{get:function(){return(this||e).animator.isPaused},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isStopped\",{get:function(){var t,n;return(n=(t=(this||e).animator)==null?void 0:t.isStopped)==null?!0:n},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"bounds\",{get:function(){return(this||e).artboard?(this||e).artboard.bounds:void 0},enumerable:!1,configurable:!0}),t.prototype.on=function(t,n){(this||e).eventManager.add({type:t,callback:n})},t.prototype.off=function(t,n){(this||e).eventManager.remove({type:t,callback:n})},t.prototype.unsubscribe=function(e,t){console.warn(\"This function is deprecated: please use `off()` instead.\"),this.off(e,t)},t.prototype.removeAllRiveEventListeners=function(t){(this||e).eventManager.removeAll(t)},t.prototype.unsubscribeAll=function(e){console.warn(\"This function is deprecated: please use `removeAllRiveEventListeners()` instead.\"),this.removeAllRiveEventListeners(e)},t.prototype.stopRendering=function(){(this||e)._explicitlyStoppedRendering=!0,(this||e).loaded&&(this||e).frameRequestId&&((this||e).runtime.cancelAnimationFrame?(this||e).runtime.cancelAnimationFrame((this||e).frameRequestId):cancelAnimationFrame((this||e).frameRequestId),(this||e).frameRequestId=null)},t.prototype.startRendering=function(){(this||e)._explicitlyStoppedRendering=!1,this.drawFrame()},t.prototype.scheduleRendering=function(){(this||e).loaded&&(this||e).artboard&&!(this||e).frameRequestId&&((this||e).runtime.requestAnimationFrame?(this||e).frameRequestId=(this||e).runtime.requestAnimationFrame((this||e)._boundDraw):(this||e).frameRequestId=requestAnimationFrame((this||e)._boundDraw))},t.prototype._onPageVisibilityChange=function(){var t,n;document.hidden?((this||e).frameRequestId!==null&&((t=(this||e).runtime)!=null&&t.cancelAnimationFrame?(this||e).runtime.cancelAnimationFrame((this||e).frameRequestId):cancelAnimationFrame((this||e).frameRequestId),(this||e).frameRequestId=null),(this||e).lastRenderTime=0):(n=(this||e).animator)!=null&&n.isPlaying&&!(this||e)._explicitlyStoppedRendering&&this.scheduleRendering()},t.prototype.enableFPSCounter=function(t){(this||e).runtime.enableFPSCounter(t)},t.prototype.disableFPSCounter=function(){(this||e).runtime.disableFPSCounter()},Object.defineProperty(t.prototype,\"contents\",{get:function(){if((this||e).loaded){for(var t={artboards:[]},n=0;n<(this||e).file.artboardCount();n++){for(var r=(this||e).file.artboardByIndex(n),i={name:r.name,animations:[],stateMachines:[]},a=0;a<r.animationCount();a++){var o=r.animationByIndex(a);i.animations.push(o.name)}for(var s=0;s<r.stateMachineCount();s++){for(var c=r.stateMachineByIndex(s),l=c.name,u=new(this||e).runtime.StateMachineInstance(c,r),d=[],f=0;f<u.inputCount();f++){var p=u.input(f);d.push({name:p.name,type:p.type})}i.stateMachines.push({name:l,inputs:d})}t.artboards.push(i)}return t}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"volume\",{get:function(){return(this||e).artboard&&(this||e).artboard.volume!==(this||e)._volume&&((this||e)._volume=(this||e).artboard.volume),(this||e)._volume},set:function(t){(this||e)._volume=t,(this||e).artboard&&((this||e).artboard.volume=t*A.systemVolume)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"artboardWidth\",{get:function(){var t;return(this||e).artboard?(this||e).artboard.width:(t=(this||e)._artboardWidth)==null?0:t},set:function(t){(this||e)._artboardWidth=t,(this||e).artboard&&((this||e).artboard.width=t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"artboardHeight\",{get:function(){var t;return(this||e).artboard?(this||e).artboard.height:(t=(this||e)._artboardHeight)==null?0:t},set:function(t){(this||e)._artboardHeight=t,(this||e).artboard&&((this||e).artboard.height=t)},enumerable:!1,configurable:!0}),t.prototype.resetArtboardSize=function(){(this||e).artboard?((this||e).artboard.resetArtboardSize(),(this||e)._artboardWidth=(this||e).artboard.width,(this||e)._artboardHeight=(this||e).artboard.height):((this||e)._artboardWidth=void 0,(this||e)._artboardHeight=void 0)},Object.defineProperty(t.prototype,\"devicePixelRatioUsed\",{get:function(){return(this||e)._devicePixelRatioUsed},set:function(t){(this||e)._devicePixelRatioUsed=t},enumerable:!1,configurable:!0}),t.prototype.bindViewModelInstance=function(t){var n;(this||e).artboard&&!(this||e).destroyed&&t&&t.runtimeInstance&&(t.internalIncrementReferenceCount(),(n=(this||e)._viewModelInstance)==null||n.cleanup(),(this||e)._viewModelInstance=t,(this||e).animator.stateMachines.length>0?(this||e).animator.stateMachines.forEach(function(e){return e.bindViewModelInstance(t)}):(this||e).artboard.bindViewModelInstance(t.runtimeInstance))},Object.defineProperty(t.prototype,\"viewModelInstance\",{get:function(){return(this||e)._viewModelInstance},enumerable:!1,configurable:!0}),t.prototype.viewModelByIndex=function(t){var n=(this||e).file.viewModelByIndex(t);return n===null?null:new re(n)},t.prototype.viewModelByName=function(t){var n;return(n=(this||e).riveFile)==null?void 0:n.viewModelByName(t)},t.prototype.enums=function(){if((this||e)._dataEnums===null){var t=(this||e).file.enums();(this||e)._dataEnums=t.map(function(e){return new ie(e)})}return(this||e)._dataEnums},t.prototype.defaultViewModel=function(){if((this||e).artboard){var t=(this||e).file.defaultArtboardViewModel((this||e).artboard);if(t)return new re(t)}return null},t.prototype.getArtboard=function(t){var n,r;return(r=(n=(this||e).riveFile)==null?void 0:n.getArtboard(t))==null?null:r},t.prototype.getBindableArtboard=function(t){var n,r;return(r=(n=(this||e).riveFile)==null?void 0:n.getBindableArtboard(t))==null?null:r},t.prototype.getDefaultBindableArtboard=function(){var t,n;return(n=(t=(this||e).riveFile)==null?void 0:t.getDefaultBindableArtboard())==null?null:n},t.prototype.clearFocus=function(){(this||e).animator.stateMachines.filter(function(e){return e.playing&&e.hasFocusNodes}).forEach(function(e){return e.clearFocus()})},t.missingErrorMessage=`Rive source file or data buffer required`,t.cleanupErrorMessage=`Attempt to use file after calling cleanup.`,t}(),ne;(function(e){e.none=`none`,e.string=`string`,e.number=`number`,e.boolean=`boolean`,e.color=`color`,e.list=`list`,e.enumType=`enumType`,e.trigger=`trigger`,e.viewModel=`viewModel`,e.integer=`integer`,e.listIndex=`listIndex`,e.image=`image`,e.artboard=`artboard`})(ne||(ne={}));var re=function(){function t(t){(this||e)._viewModel=t}return Object.defineProperty(t.prototype,\"instanceCount\",{get:function(){return(this||e)._viewModel.instanceCount},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._viewModel.name},enumerable:!1,configurable:!0}),t.prototype.instanceByIndex=function(t){var n=(this||e)._viewModel.instanceByIndex(t);if(n!==null){var r=new I(n,null);return(0,a.createFinalization)(r,n),r}return null},t.prototype.instanceByName=function(t){var n=(this||e)._viewModel.instanceByName(t);if(n!==null){var r=new I(n,null);return(0,a.createFinalization)(r,n),r}return null},t.prototype.defaultInstance=function(){var t=(this||e)._viewModel.defaultInstance();if(t!==null){var n=new I(t,null);return(0,a.createFinalization)(n,t),n}return null},t.prototype.instance=function(){var t=(this||e)._viewModel.instance();if(t!==null){var n=new I(t,null);return(0,a.createFinalization)(n,t),n}return null},Object.defineProperty(t.prototype,\"properties\",{get:function(){return(this||e)._viewModel.getProperties()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"instanceNames\",{get:function(){return(this||e)._viewModel.getInstanceNames()},enumerable:!1,configurable:!0}),t}(),ie=function(){function t(t){(this||e)._dataEnum=t}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._dataEnum.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"values\",{get:function(){return(this||e)._dataEnum.values},enumerable:!1,configurable:!0}),t}(),F;(function(e){e.Number=`number`,e.String=`string`,e.Boolean=`boolean`,e.Color=`color`,e.Trigger=`trigger`,e.Enum=`enum`,e.List=`list`,e.Image=`image`,e.Artboard=`artboard`})(F||(F={}));var I=function(){function t(t,n){(this||e)._parents=[],(this||e)._children=[],(this||e)._viewModelInstances=/* @__PURE__ */ new Map,(this||e)._propertiesWithCallbacks=[],(this||e)._referenceCount=0,(this||e).selfUnref=!1,(this||e)._runtimeInstance=t,n!==null&&(this||e)._parents.push(n)}return Object.defineProperty(t.prototype,\"runtimeInstance\",{get:function(){return(this||e)._runtimeInstance},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"nativeInstance\",{get:function(){return(this||e)._runtimeInstance},enumerable:!1,configurable:!0}),t.prototype.handleCallbacks=function(){(this||e)._propertiesWithCallbacks.length!==0&&((this||e)._propertiesWithCallbacks.forEach(function(e){e.handleCallbacks()}),(this||e)._propertiesWithCallbacks.forEach(function(e){e.clearChanges()})),(this||e)._children.forEach(function(e){return e.handleCallbacks()})},t.prototype.addParent=function(t){(this||e)._parents.includes(t)||((this||e)._parents.push(t),((this||e)._propertiesWithCallbacks.length>0||(this||e)._children.length>0)&&t.addToViewModelCallbacks(this||e))},t.prototype.removeParent=function(t){var n=(this||e)._parents.indexOf(t);n!==-1&&((this||e)._parents[n].removeFromViewModelCallbacks(this||e),(this||e)._parents.splice(n,1))},t.prototype.addToPropertyCallbacks=function(t){var n=this||e;(this||e)._propertiesWithCallbacks.includes(t)||((this||e)._propertiesWithCallbacks.push(t),(this||e)._propertiesWithCallbacks.length>0&&(this||e)._parents.forEach(function(e){e.addToViewModelCallbacks(n)}))},t.prototype.removeFromPropertyCallbacks=function(t){var n=this||e;(this||e)._propertiesWithCallbacks.includes(t)&&((this||e)._propertiesWithCallbacks=(this||e)._propertiesWithCallbacks.filter(function(e){return e!==t}),(this||e)._children.length===0&&(this||e)._propertiesWithCallbacks.length===0&&(this||e)._parents.forEach(function(e){e.removeFromViewModelCallbacks(n)}))},t.prototype.addToViewModelCallbacks=function(t){var n=this||e;(this||e)._children.includes(t)||((this||e)._children.push(t),(this||e)._parents.forEach(function(e){e.addToViewModelCallbacks(n)}))},t.prototype.removeFromViewModelCallbacks=function(t){var n=this||e;(this||e)._children.includes(t)&&((this||e)._children=(this||e)._children.filter(function(e){return e!==t}),(this||e)._children.length===0&&(this||e)._propertiesWithCallbacks.length===0&&(this||e)._parents.forEach(function(e){e.removeFromViewModelCallbacks(n)}))},t.prototype.clearCallbacks=function(){(this||e)._propertiesWithCallbacks.forEach(function(e){e.clearCallbacks()})},t.prototype.propertyFromPath=function(e,t){var n=e.split(`/`);return this.propertyFromPathSegments(n,0,t)},t.prototype.viewModelFromPathSegments=function(e,t){var n=this.internalViewModelInstance(e[t]);return n===null?null:t==e.length-1?n:n.viewModelFromPathSegments(e,t++)},t.prototype.propertyFromPathSegments=function(t,n,r){var i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x;if(n<t.length-1){var S=this.internalViewModelInstance(t[n]);return S===null?null:S.propertyFromPathSegments(t,n+1,r)}var C=null;switch(r){case F.Number:if(C=(a=(i=(this||e)._runtimeInstance)==null?void 0:i.number(t[n]))==null?null:a,C!==null)return new oe(C,this||e);break;case F.String:if(C=(s=(o=(this||e)._runtimeInstance)==null?void 0:o.string(t[n]))==null?null:s,C!==null)return new ae(C,this||e);break;case F.Boolean:if(C=(l=(c=(this||e)._runtimeInstance)==null?void 0:c.boolean(t[n]))==null?null:l,C!==null)return new se(C,this||e);break;case F.Color:if(C=(d=(u=(this||e)._runtimeInstance)==null?void 0:u.color(t[n]))==null?null:d,C!==null)return new de(C,this||e);break;case F.Trigger:if(C=(p=(f=(this||e)._runtimeInstance)==null?void 0:f.trigger(t[n]))==null?null:p,C!==null)return new ce(C,this||e);break;case F.Enum:if(C=(h=(m=(this||e)._runtimeInstance)==null?void 0:m.enum(t[n]))==null?null:h,C!==null)return new le(C,this||e);break;case F.List:if(C=(_=(g=(this||e)._runtimeInstance)==null?void 0:g.list(t[n]))==null?null:_,C!==null)return new ue(C,this||e);break;case F.Image:if(C=(y=(v=(this||e)._runtimeInstance)==null?void 0:v.image(t[n]))==null?null:y,C!==null)return new fe(C,this||e);break;case F.Artboard:if(C=(x=(b=(this||e)._runtimeInstance)==null?void 0:b.artboard(t[n]))==null?null:x,C!==null)return new pe(C,this||e);break}return null},t.prototype.internalViewModelInstance=function(n){var r;if((this||e)._viewModelInstances.has(n))return(this||e)._viewModelInstances.get(n);var i=(r=(this||e)._runtimeInstance)==null?void 0:r.viewModel(n);if(i!==null){var o=new t(i,this||e);return(0,a.createFinalization)(o,i),o.internalIncrementReferenceCount(),(this||e)._viewModelInstances.set(n,o),o}return null},t.prototype.number=function(e){return this.propertyFromPath(e,F.Number)},t.prototype.string=function(e){return this.propertyFromPath(e,F.String)},t.prototype.boolean=function(e){return this.propertyFromPath(e,F.Boolean)},t.prototype.color=function(e){return this.propertyFromPath(e,F.Color)},t.prototype.trigger=function(e){return this.propertyFromPath(e,F.Trigger)},t.prototype.enum=function(e){return this.propertyFromPath(e,F.Enum)},t.prototype.list=function(e){return this.propertyFromPath(e,F.List)},t.prototype.image=function(e){return this.propertyFromPath(e,F.Image)},t.prototype.artboard=function(e){return this.propertyFromPath(e,F.Artboard)},t.prototype.viewModel=function(t){var n=t.split(`/`),r=n.length>1?this.viewModelFromPathSegments(n.slice(0,n.length-1),0):this||e;return r==null?null:r.internalViewModelInstance(n[n.length-1])},t.prototype.internalReplaceViewModel=function(t,n){var r;if(n.runtimeInstance!==null){var i=((r=(this||e)._runtimeInstance)==null?void 0:r.replaceViewModel(t,n.runtimeInstance))||!1;if(i){n.internalIncrementReferenceCount();var a=this.internalViewModelInstance(t);a!==null&&(a.removeParent(this||e),(this||e)._children.includes(a)&&((this||e)._children=(this||e)._children.filter(function(e){return e!==a})),a.cleanup()),(this||e)._viewModelInstances.set(t,n),n.addParent(this||e)}return i}return!1},t.prototype.replaceViewModel=function(t,n){var r,i=t.split(`/`),a=i.length>1?this.viewModelFromPathSegments(i.slice(0,i.length-1),0):this||e;return(r=a==null?void 0:a.internalReplaceViewModel(i[i.length-1],n))==null?!1:r},t.prototype.incrementReferenceCount=function(){var t;(this||e)._referenceCount++,(t=(this||e)._runtimeInstance)==null||t.incrementReferenceCount()},t.prototype.decrementReferenceCount=function(){var t;(this||e)._referenceCount--,(t=(this||e)._runtimeInstance)==null||t.decrementReferenceCount()},Object.defineProperty(t.prototype,\"properties\",{get:function(){var t;return((t=(this||e)._runtimeInstance)==null?void 0:t.getProperties().map(function(e){return s({},e)}))||[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"viewModelName\",{get:function(){var t,n;return(n=(t=(this||e)._runtimeInstance)==null?void 0:t.getViewModelName())==null?``:n},enumerable:!1,configurable:!0}),t.prototype.internalIncrementReferenceCount=function(){(this||e)._referenceCount++},t.prototype.cleanup=function(){var t=this||e,n;if((this||e)._referenceCount--,(this||e)._referenceCount<=0){(this||e).selfUnref&&((n=(this||e)._runtimeInstance)==null||n.unref()),(this||e)._runtimeInstance=null,this.clearCallbacks(),(this||e)._propertiesWithCallbacks=[],(this||e)._viewModelInstances.forEach(function(e){e.cleanup()}),(this||e)._viewModelInstances.clear();var r=u([],(this||e)._children,!0);(this||e)._children.length=0;var i=u([],(this||e)._parents,!0);(this||e)._parents.length=0,r.forEach(function(e){e.removeParent(t)}),i.forEach(function(e){e.removeFromViewModelCallbacks(t)})}},t}(),L=function(){function t(t,n){(this||e).callbacks=[],(this||e)._viewModelInstanceValue=t,(this||e)._parentViewModel=n}return t.prototype.on=function(t){(this||e).callbacks.length===0&&(this||e)._viewModelInstanceValue.clearChanges(),(this||e).callbacks.includes(t)||((this||e).callbacks.push(t),(this||e)._parentViewModel.addToPropertyCallbacks(this||e))},t.prototype.off=function(t){t?(this||e).callbacks=(this||e).callbacks.filter(function(e){return e!==t}):(this||e).callbacks.length=0,(this||e).callbacks.length===0&&(this||e)._parentViewModel.removeFromPropertyCallbacks(this||e)},t.prototype.internalHandleCallback=function(e){},t.prototype.handleCallbacks=function(){var t=this||e;(this||e)._viewModelInstanceValue.hasChanged&&(this||e).callbacks.forEach(function(e){t.internalHandleCallback(e)})},t.prototype.clearChanges=function(){(this||e)._viewModelInstanceValue.clearChanges()},t.prototype.clearCallbacks=function(){(this||e).callbacks.length=0},Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._viewModelInstanceValue.name},enumerable:!1,configurable:!0}),t}(),ae=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(L),oe=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(L),se=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(L),ce=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return n.prototype.trigger=function(){return(this||e)._viewModelInstanceValue.trigger()},n.prototype.internalHandleCallback=function(e){e()},n}(L),le=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"valueIndex\",{get:function(){return(this||e)._viewModelInstanceValue.valueIndex},set:function(t){(this||e)._viewModelInstanceValue.valueIndex=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"values\",{get:function(){return(this||e)._viewModelInstanceValue.values},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(L),ue=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"length\",{get:function(){return(this||e)._viewModelInstanceValue.size},enumerable:!1,configurable:!0}),n.prototype.addInstance=function(t){t.runtimeInstance!=null&&((this||e)._viewModelInstanceValue.addInstance(t.runtimeInstance),t.addParent((this||e)._parentViewModel))},n.prototype.addInstanceAt=function(t,n){return t.runtimeInstance!=null&&(this||e)._viewModelInstanceValue.addInstanceAt(t.runtimeInstance,n)?(t.addParent((this||e)._parentViewModel),!0):!1},n.prototype.removeInstance=function(t){t.runtimeInstance!=null&&((this||e)._viewModelInstanceValue.removeInstance(t.runtimeInstance),t.removeParent((this||e)._parentViewModel))},n.prototype.removeInstanceAt=function(t){(this||e)._viewModelInstanceValue.removeInstanceAt(t)},n.prototype.instanceAt=function(t){var n=(this||e)._viewModelInstanceValue.instanceAt(t);if(n!=null){var r=new I(n,(this||e)._parentViewModel);return(0,a.createFinalization)(r,n),r}return null},n.prototype.swap=function(t,n){(this||e)._viewModelInstanceValue.swap(t,n)},n.prototype.internalHandleCallback=function(e){e()},n}(L),de=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.rgb=function(t,n,r){(this||e)._viewModelInstanceValue.rgb(t,n,r)},n.prototype.rgba=function(t,n,r,i){(this||e)._viewModelInstanceValue.argb(i,t,n,r)},n.prototype.argb=function(t,n,r,i){(this||e)._viewModelInstanceValue.argb(t,n,r,i)},n.prototype.alpha=function(t){(this||e)._viewModelInstanceValue.alpha(t)},n.prototype.opacity=function(t){(this||e)._viewModelInstanceValue.alpha(Math.round(Math.max(0,Math.min(1,t))*255))},n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(L),fe=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{set:function(t){var n;(this||e)._viewModelInstanceValue.value((n=t==null?void 0:t.nativeImage)==null?null:n)},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(e){e()},n}(L),pe=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{set:function(t){var n,r,i=t.isBindableArtboard?t:t.file.internalBindableArtboardFromArtboard(t.nativeArtboard);(this||e)._viewModelInstanceValue.value((n=i==null?void 0:i.nativeArtboard)==null?null:n),i!=null&&i.nativeViewModel&&(this||e)._viewModelInstanceValue.viewModelInstance((r=i==null?void 0:i.nativeViewModel)==null?null:r)},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(e){e()},n}(L),me=function(t){return c(void 0,void 0,void 0,function(){var n,r,i;return l(this||e,function(e){switch(e.label){case 0:return n=new Request(t),[4,fetch(n)];case 1:if(r=e.sent(),!r.ok)throw Error(`Failed to fetch the Rive file: HTTP ${r.status}`);return[4,r.arrayBuffer()];case 2:return i=e.sent(),[2,i]}})})},R=function(e){return typeof e==`string`?[e]:e instanceof Array?e:[]},he={EventManager:D,TaskQueueManager:O},z=function(t){return c(void 0,void 0,void 0,function(){var r,i,o;return l(this||e,function(e){switch(e.label){case 0:return r=new Promise(function(e){return n.RuntimeLoader.getInstance(function(n){n.decodeAudio(t,e)})}),[4,r];case 1:return i=e.sent(),o=new a.AudioWrapper(i),a.finalizationRegistry.register(o,i),[2,o]}})})},ge=function(t){return c(void 0,void 0,void 0,function(){var r,i,o;return l(this||e,function(e){switch(e.label){case 0:return r=new Promise(function(e){return n.RuntimeLoader.getInstance(function(n){n.decodeImage(t,e)})}),[4,r];case 1:return i=e.sent(),o=new a.ImageWrapper(i),a.finalizationRegistry.register(o,i),[2,o]}})})},_e=function(t){return c(void 0,void 0,void 0,function(){var r,i,o;return l(this||e,function(e){switch(e.label){case 0:return r=new Promise(function(e){return n.RuntimeLoader.getInstance(function(n){n.decodeFont(t,e)})}),[4,r];case 1:return i=e.sent(),o=new a.FontWrapper(i),a.finalizationRegistry.register(o,i),[2,o]}})})}})(),i})());var n=t;const r=t.rive,i=t.__esModule;export{i as __esModule,n as default,r as rive};\n//# sourceMappingURL=rive.js.map\n","import*as e from\"react\";import*as t from\"@rive-app/canvas\";var n=e;try{`default`in e&&(n=e.default)}catch(e){}var r=t;try{`default`in t&&(r=t.default)}catch(e){}var i=typeof globalThis<`u`?globalThis:typeof self<`u`?self:global,a={};Object.defineProperty(a,\"__esModule\",{value:!0});var o,s=n,c=r;function l(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var u=/* @__PURE__ */ l(s);function d(e){var t=e||f(),n=s.useState(t),r=n[0],i=n[1];return s.useEffect(function(){if(`u`>typeof window&&`matchMedia`in window){var t=function(){i(e||f())},n=window.matchMedia(`screen and (resolution: `+r+`dppx)`);return n.hasOwnProperty(`addEventListener`)?n.addEventListener(`change`,t):n.addListener(t),function(){n.hasOwnProperty(`removeEventListener`)?n.removeEventListener(`change`,t):n.removeListener(t)}}},[r,e]),r}function f(){return Math.min(Math.max(1,`u`>typeof window&&typeof window.devicePixelRatio==`number`?window.devicePixelRatio:1),3)}var p=/* @__PURE__ */ function(){function e(){}var t=e.prototype;return t.observe=function(){},t.unobserve=function(){},t.disconnect=function(){},e}();function m(e,t){var n=0;return function(){for(var r=this||i,a=arguments.length,o=Array(a),s=0;s<a;s++)o[s]=arguments[s];clearTimeout(n),n=window.setTimeout(function(){return e.apply(r,o)},t)}}var h=globalThis.ResizeObserver||p,g=globalThis.ResizeObserver!==void 0,_=!g;function v(e,t){t===void 0&&(t=!0);var n=s.useState({width:0,height:0}),r=n[0],i=n[1];s.useEffect(function(){if(`u`>typeof window&&t){var e=function(){i({width:window.innerWidth,height:window.innerHeight})};return _&&(e(),window.addEventListener(`resize`,e)),function(){return window.removeEventListener(`resize`,e)}}},[]);var a=s.useRef(new h(m(function(e){g&&i({width:e[e.length-1].contentRect.width,height:e[e.length-1].contentRect.height})},0)));return s.useEffect(function(){var n=a.current;if(!t)return void n.disconnect();var r=e.current;return e.current&&g&&n.observe(e.current),function(){n.disconnect(),r&&g&&n.unobserve(r)}},[e,a]),r}var y={useDevicePixelRatio:!0,fitCanvasToArtboardHeight:!1,useOffscreenRenderer:!0,shouldResizeCanvasToContainer:!0};function b(e){return Object.assign({},y,e)}function x(e){var t=e.riveLoaded,n=t!==void 0&&t,r=e.canvasElem,i=e.containerRef,a=e.options,o=e.onCanvasHasResized,c=e.artboardBounds,l=b(a===void 0?{}:a),u=s.useState({height:0,width:0}),f=u[0],p=f.height,m=f.width,h=u[1],g=s.useState({height:0,width:0}),_=g[0],y=_.height,x=_.width,S=g[1],C=s.useState(!0),w=C[0],T=C[1],E=l.fitCanvasToArtboardHeight,D=l.shouldResizeCanvasToContainer,O=l.useDevicePixelRatio,k=l.customDevicePixelRatio,A=v(i,D),j=d(k),M=c==null?{}:c,N=M.maxX,P=M.maxY,F=s.useCallback(function(){var e,t,n,r,a=(e=(n=i.current)==null?void 0:n.clientWidth)==null?0:e,o=(t=(r=i.current)==null?void 0:r.clientHeight)==null?0:t;return E&&c?{width:a,height:c.maxY/c.maxX*a}:{width:a,height:o}},[i,E,N,P]);s.useEffect(function(){if(D&&i.current&&n){var e=F(),t=e.width,a=e.height,s=!1;if(r){var c=t!==m||a!==p;if(l.fitCanvasToArtboardHeight&&c&&(i.current.style.height=a+`px`,s=!0),l.useDevicePixelRatio){var u=t*j!==x||a*j!==y;if(c||u){var d=j*t,f=j*a;r.width=d,r.height=f,r.style.width=t+`px`,r.style.height=a+`px`,S({width:d,height:f}),s=!0}}else c&&(r.width=t,r.height=a,S({width:t,height:a}),s=!0);h({width:t,height:a})}o&&(w||s)&&o&&o(),w&&T(!1)}},[r,i,A,j,F,w,T,y,x,p,m,o,D,E,O,n]),s.useEffect(function(){S({width:0,height:0})},[r])}var S=/* @__PURE__ */ function(){function e(){}var t=e.prototype;return t.observe=function(){},t.unobserve=function(){},t.disconnect=function(){},e}(),C=globalThis.IntersectionObserver||S,w=/* @__PURE__ */ function(){function e(){var e=this||i;(this||i).elementsMap=/* @__PURE__ */ new Map,(this||i).onObserved=function(t){t.forEach(function(t){var n=e.elementsMap.get(t.target);n&&n(t)})},(this||i).observer=new C((this||i).onObserved)}var t=e.prototype;return t.registerCallback=function(e,t){(this||i).observer.observe(e),(this||i).elementsMap.set(e,t)},t.removeCallback=function(e){(this||i).observer.unobserve(e),(this||i).elementsMap.delete(e)},e}(),T=function(){return o||(o=new w),o};function E(){return{observe:s.useCallback(function(e,t){T().registerCallback(e,t)},[]),unobserve:s.useCallback(function(e){T().removeCallback(e)},[])}}function D(){return(D=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this||i,arguments)}function O(e,t){if(e==null)return{};var n,r,i={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n]);return i}function k(e){var t=e.setContainerRef,n=e.setCanvasRef,r=e.className,i=r===void 0?``:r,a=e.style,o=e.children,s=O(e,[`setContainerRef`,`setCanvasRef`,`className`,`style`,`children`]),c=D({width:`100%`,height:`100%`},a);return/* @__PURE__ */ u.default.createElement(`div`,D({ref:t,className:i},!i&&{style:c}),/* @__PURE__ */ u.default.createElement(`canvas`,D({ref:n,style:{verticalAlign:`top`,width:0,height:0}},s),o))}function A(e,t){t===void 0&&(t={});var n=s.useState(null),r=n[0],i=n[1],a=s.useRef(null),o=s.useRef(null),l=s.useState(null),f=l[0],p=l[1],m=!!e,h=b(t),g=d(),_=s.useCallback(function(){if(f){if(f.layout&&f.layout.fit===c.Fit.Layout&&r){var e=g*f.layout.layoutScaleFactor;f.devicePixelRatioUsed=g,f.artboardWidth=(r==null?void 0:r.width)/e,f.artboardHeight=(r==null?void 0:r.height)/e}f.startRendering(),f.resizeToCanvas()}},[f,g]);x({riveLoaded:!!f,canvasElem:r,containerRef:a,options:h,onCanvasHasResized:_,artboardBounds:f==null?void 0:f.bounds});var v=s.useCallback(function(e){e===null&&r&&(r.height=0,r.width=0),i(e)},[]);s.useEffect(function(){if(r&&e){var t,n=f!=null;if(f==null){var i=h.useOffscreenRenderer,a=e.onRiveReady,s=O(e,[`onRiveReady`]);t=new c.Rive(D({useOffscreenRenderer:i},s,{canvas:r})),o.current!=null&&o.current.cleanup(),o.current=t,t.on(c.EventType.Load,function(){n=!0,a&&a(t),r?p(t):t.cleanup()})}return function(){n||t==null||t.cleanup()}}},[r,m,f]);var y=s.useCallback(function(e){a.current=e},[]),S=E(),C=S.observe,w=S.unobserve;s.useEffect(function(){var e,t=!1,n=function(){if(r&&t){var e=r.getBoundingClientRect();e.width>0&&e.height>0&&e.top<(window.innerHeight||document.documentElement.clientHeight)&&e.bottom>0&&e.left<(window.innerWidth||document.documentElement.clientWidth)&&e.right>0&&(f==null||f.startRendering(),t=!1)}};return r&&!1!==h.shouldUseIntersectionObserver&&C(r,function(r){r.isIntersecting?f&&f.startRendering():f&&f.stopRendering(),t=!r.isIntersecting,clearTimeout(e),r.isIntersecting||r.boundingClientRect.width!==0||(e=setTimeout(n,10))}),function(){r&&w(r)}},[C,w,f,r,h.shouldUseIntersectionObserver]),s.useEffect(function(){return function(){f&&(f.cleanup(),p(null))}},[f,r]),s.useEffect(function(){return function(){o.current!=null&&o.current.cleanup()}},[]);var T=e==null?void 0:e.animations;s.useEffect(function(){f&&T&&(f.isPlaying?(f.stop(f.animationNames),f.play(T)):f.isPaused&&(f.stop(f.animationNames),f.pause(T)))},[T,f]);var A=s.useCallback(function(e){return/* @__PURE__ */ u.default.createElement(k,D({setContainerRef:y,setCanvasRef:v},e))},[v,y]);return{canvas:r,container:a.current,setCanvasRef:v,setContainerRef:y,rive:f,RiveComponent:A}}function j(e,t){if(e==null)return{};var n,r,i={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n]);return i}var M=function(e){var t=e.src,n=e.artboard,r=e.animations,i=e.stateMachines,a=e.layout,o=e.useOffscreenRenderer,s=e.shouldDisableRiveListeners,c=e.shouldResizeCanvasToContainer,l=e.automaticallyHandleEvents,d=e.children,f=j(e,[`src`,`artboard`,`animations`,`stateMachines`,`layout`,`useOffscreenRenderer`,`shouldDisableRiveListeners`,`shouldResizeCanvasToContainer`,`automaticallyHandleEvents`,`children`]),p=A({src:t,artboard:n,animations:r,layout:a,stateMachines:i,autoplay:!0,shouldDisableRiveListeners:s!==void 0&&s,automaticallyHandleEvents:l!==void 0&&l},{useOffscreenRenderer:o===void 0||o,shouldResizeCanvasToContainer:c===void 0||c}).RiveComponent;return/* @__PURE__ */ u.default.createElement(p,f,d)};function N(e,t,n,r){var i=s.useState(null),a=i[0],o=i[1];return s.useEffect(function(){var i=function(){if(e&&t&&n||o(null),e&&t&&n){var i=e.stateMachineInputs(t);if(i){var a=i.find(function(e){return e.name===n});r!==void 0&&a&&(a.value=r),o(a||null)}}else o(null)};i(),e&&e.on(c.EventType.Load,function(){i()})},[e]),a}function P(e,t){var n=t==null?{}:t,r=n.name,i=n.useDefault,a=s.useState(null),o=a[0],l=a[1];return s.useEffect(function(){var t=function(){if(!e)return void l(null);var t=null;l(t=r==null?e.defaultViewModel()||null:(e.viewModelByName==null?void 0:e.viewModelByName.call(e,r))||null)};return t(),e&&e.on(c.EventType.Load,t),function(){e&&e.off(c.EventType.Load,t)}},[e,r,i!==void 0&&i]),o}function F(e,t){var n=t==null?{}:t,r=n.name,i=n.useDefault,a=i!==void 0&&i,o=n.useNew,c=o!==void 0&&o,l=n.rive,u=s.useState(null),d=u[0],f=u[1];return s.useEffect(function(){if(!e)return void f(null);var t=null;f(t=r==null?a?(e.defaultInstance==null?void 0:e.defaultInstance.call(e))||null:c?(e.instance==null?void 0:e.instance.call(e))||null:(e.defaultInstance==null?void 0:e.defaultInstance.call(e))||null:e.instanceByName(r)||null),l&&t&&l.viewModelInstance!==t&&l.bindViewModelInstance(t)},[e,r,a,c,l]),d}function I(){return(I=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this||i,arguments)}function L(e,t,n){var r=s.useState(null),i=r[0],a=r[1],o=s.useState(n.defaultValue),c=o[0],l=o[1],u=s.useState(null),d=u[0],f=u[1],p=s.useRef(null),m=s.useRef(e),h=s.useRef(n);s.useEffect(function(){h.current=n},[n]);var g=s.useCallback(function(){var e=p.current,t=m.current,n=h.current;if(!e||!t)return a(null),l(n.defaultValue),f(null),function(){};var r=n.getProperty(e,t);if(r){a(r),l(n.getValue(r)),n.getExtendedData&&f(n.getExtendedData(r));var i=function(){l(n.getValue(r)),n.getExtendedData&&f(n.getExtendedData(r)),n.onPropertyEvent&&n.onPropertyEvent()};return r.on(i),function(){r.off(i)}}return function(){}},[]);s.useEffect(function(){return p.current=t,m.current=e,g()},[t,e,g]);var _=s.useCallback(function(e){if(i&&p.current===t)try{e(i),h.current.getExtendedData&&f(h.current.getExtendedData(i));return}catch(e){}if(p.current)try{var n=h.current.getProperty(p.current,m.current);n&&(a(n),e(n),h.current.getExtendedData&&f(h.current.getExtendedData(n)))}catch(e){}},[i,t]),v=s.useMemo(function(){return h.current.buildPropertyOperations(_)},[_]),y=I({value:c},v);return n.getExtendedData&&(y.extendedData=d),y}function R(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.number(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,setValue:n.setValue}}function ee(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.string(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,setValue:n.setValue}}function z(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.boolean(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,setValue:n.setValue}}function B(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.color(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})},setRgb:function(t,n,r){e(function(e){e.rgb(t,n,r)})},setRgba:function(t,n,r,i){e(function(e){e.rgba(t,n,r,i)})},setAlpha:function(t){e(function(e){e.alpha(t)})},setOpacity:function(t){e(function(e){e.opacity(t)})}}},[])});return{value:n.value,setValue:n.setValue,setRgb:n.setRgb,setRgba:n.setRgba,setAlpha:n.setAlpha,setOpacity:n.setOpacity}}function V(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.enum(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,getExtendedData:s.useCallback(function(e){return e.values},[]),buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,values:n.extendedData||[],setValue:n.setValue}}function H(e,t,n){var r=(n==null?{}:n).onTrigger;return{trigger:L(e,t,{getProperty:s.useCallback(function(e,t){return e.trigger(t)},[]),getValue:s.useCallback(function(){},[]),defaultValue:null,onPropertyEvent:r,buildPropertyOperations:s.useCallback(function(e){return{trigger:function(){e(function(e){e.trigger()})}}},[])}).trigger}}function U(e,t){return{setValue:L(e,t,{getProperty:s.useCallback(function(e,t){return e.image(t)},[]),getValue:s.useCallback(function(){},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])}).setValue}}function W(e,t){var n,r=s.useState(0)[1],i=L(e,t,{getProperty:s.useCallback(function(e,t){return e.list(t)},[]),getValue:s.useCallback(function(e){return e.length},[]),defaultValue:null,onPropertyEvent:function(){r(function(e){return e+1})},buildPropertyOperations:s.useCallback(function(e){return{addInstance:function(t){e(function(e){return e.addInstance(t)})},addInstanceAt:function(t,n){var r=!1;return e(function(e){r=e.addInstanceAt(t,n)}),r},removeInstance:function(t){e(function(e){return e.removeInstance(t)})},removeInstanceAt:function(t){e(function(e){return e.removeInstanceAt(t)})},getInstanceAt:function(t){var n=null;return e(function(e){n=e.instanceAt(t)}),n},swap:function(t,n){e(function(e){return e.swap(t,n)})}}},[])});return{length:(n=i.value)==null?0:n,addInstance:i.addInstance,addInstanceAt:i.addInstanceAt,removeInstance:i.removeInstance,removeInstanceAt:i.removeInstanceAt,getInstanceAt:i.getInstanceAt,swap:i.swap}}function G(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function K(e){return function(){var t=this||i,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){G(a,r,i,o,s,`next`,e)}function s(e){G(a,r,i,o,s,`throw`,e)}o(void 0)})}}function q(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},s=Object.create((typeof Iterator==`function`?Iterator:Object).prototype),c=Object.defineProperty;return c(s,`next`,{value:l(0)}),c(s,`throw`,{value:l(1)}),c(s,`return`,{value:l(2)}),typeof Symbol==`function`&&c(s,Symbol.iterator,{value:function(){return this||i}}),s;function l(i){return function(c){var l=[i,c];if(n)throw TypeError(`Generator is already executing.`);for(;s&&(s=0,l[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return o.label++,{value:l[1],done:!1};case 5:o.label++,r=l[1],l=[0];continue;case 7:l=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(l[0]===6||l[0]===2)){o=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]<a[3])){o.label=l[1];break}if(l[0]===6&&o.label<a[1]){o.label=a[1],a=l;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(l);break}a[2]&&o.ops.pop(),o.trys.pop();continue}l=t.call(e,o)}catch(e){l=[6,e],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}function J(e){var t=s.useState(null),n=t[0],r=t[1],a=s.useState(`idle`),o=a[0],l=a[1];return s.useEffect(function(){var t=null;return K(function(){return q(this||i,function(n){try{l(`loading`),(t=new c.RiveFile(e)).init(),t.on(c.EventType.Load,function(){t==null||t.getInstance(),r(t),l(`success`)}),t.on(c.EventType.LoadError,function(){l(`failed`)}),r(t)}catch(e){console.error(e),l(`failed`)}return[2]})})(),function(){t==null||t.cleanup()}},[e.src,e.buffer]),{riveFile:n,status:o}}function Y(e,t){return{setValue:L(e,t,{getProperty:s.useCallback(function(e,t){return e.artboard(t)},[]),getValue:s.useCallback(function(){},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])}).setValue}}a.default=M,a.useResizeCanvas=x,a.useRive=A,a.useRiveFile=J,a.useStateMachineInput=N,a.useViewModel=P,a.useViewModelInstance=F,a.useViewModelInstanceArtboard=Y,a.useViewModelInstanceBoolean=z,a.useViewModelInstanceColor=B,a.useViewModelInstanceEnum=V,a.useViewModelInstanceImage=U,a.useViewModelInstanceList=W,a.useViewModelInstanceNumber=R,a.useViewModelInstanceString=ee,a.useViewModelInstanceTrigger=H,Object.keys(c).forEach(function(e){e===`default`||a.hasOwnProperty(e)||Object.defineProperty(a,e,{enumerable:!0,get:function(){return c[e]}})});const X=a.__esModule,Z=a.useResizeCanvas,Q=a.useRive,te=a.useRiveFile,ne=a.useStateMachineInput,re=a.useViewModel,ie=a.useViewModelInstance,ae=a.useViewModelInstanceArtboard,oe=a.useViewModelInstanceBoolean,se=a.useViewModelInstanceColor,ce=a.useViewModelInstanceEnum,$=a.useViewModelInstanceImage,le=a.useViewModelInstanceList,ue=a.useViewModelInstanceNumber,de=a.useViewModelInstanceString,fe=a.useViewModelInstanceTrigger;export{X as __esModule,a as default,Z as useResizeCanvas,Q as useRive,te as useRiveFile,ne as useStateMachineInput,re as useViewModel,ie as useViewModelInstance,ae as useViewModelInstanceArtboard,oe as useViewModelInstanceBoolean,se as useViewModelInstanceColor,ce as useViewModelInstanceEnum,$ as useViewModelInstanceImage,le as useViewModelInstanceList,ue as useViewModelInstanceNumber,de as useViewModelInstanceString,fe as useViewModelInstanceTrigger};\n//# sourceMappingURL=index.js.map\n","var e=typeof globalThis<`u`?globalThis:typeof self<`u`?self:global,t={};(function e(n,r){t=r()})(t,()=>(()=>{var t=[,((e,t,n)=>{n.r(t),n.d(t,{Animation:()=>r.Animation});var r=n(2)}),((t,n,r)=>{r.r(n),r.d(n,{Animation:()=>i});var i=function(){function t(t,n,r,i){(this||e).animation=t,(this||e).artboard=n,(this||e).playing=i,(this||e).loopCount=0,(this||e).scrubTo=null,(this||e).instance=new r.LinearAnimationInstance(t,n)}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e).animation.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"time\",{get:function(){return(this||e).instance.time},set:function(t){(this||e).instance.time=t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"loopValue\",{get:function(){return(this||e).animation.loopValue},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"needsScrub\",{get:function(){return(this||e).scrubTo!==null},enumerable:!1,configurable:!0}),t.prototype.advance=function(t){(this||e).scrubTo===null?(this||e).instance.advance(t):((this||e).instance.time=0,(this||e).instance.advance((this||e).scrubTo),(this||e).scrubTo=null)},t.prototype.apply=function(t){(this||e).instance.apply(t)},t.prototype.cleanup=function(){(this||e).instance.delete()},t}()}),((t,n,r)=>{r.r(n),r.d(n,{RuntimeLoader:()=>s});var i=r(4),a=r(5),o=function(){return o=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},o.apply(this||e,arguments)},s=function(){function e(){}return e.notifyError=function(t){var n;for(e.isLoading=!1;e.errorCallbackQueue.length>0;)(n=e.errorCallbackQueue.shift())==null||n(t);e.callBackQueue=[]},e.loadRuntime=function(){var t=e.wasmURL,n=e.wasmBinary;e.enablePerfMarks&&performance.mark(`rive:wasm-init:start`),i.default(o({locateFile:function(){return t}},n?{wasmBinary:n}:{})).then(function(t){var n;for(e.enablePerfMarks&&(performance.mark(`rive:wasm-init:end`),performance.measure(`rive:wasm-init`,`rive:wasm-init:start`,`rive:wasm-init:end`)),e.runtime=t,e.errorCallbackQueue=[];e.callBackQueue.length>0;)(n=e.callBackQueue.shift())==null||n(e.runtime)}).catch(function(n){var r={message:(n==null?void 0:n.message)||`Unknown error`,type:(n==null?void 0:n.name)||`Error`,wasmError:n instanceof WebAssembly.CompileError||n instanceof WebAssembly.RuntimeError,originalError:n};console.debug(`Rive WASM load error details:`,r);var i=e.wasmFallbackURL,a=i!==null&&t.toLowerCase()===i.toLowerCase();if(i!==null&&!a)console.warn(`Failed to load WASM from ${t} (${r.message}), trying fallback URL: ${i}`),e.wasmBinary=null,e.setWasmUrl(i),e.loadRuntime();else{var o=[`Could not load Rive WASM file from ${a?`the configured WASM URL or its fallback (${i})`:t}.`,`Possible reasons:`,`- Network connection is down`,`- WebAssembly is not supported in this environment`,`- The WASM file is corrupted or incompatible`,`\nError details:`,`- Type: ${r.type}`,`- Message: ${r.message}`,`- WebAssembly-specific error: ${r.wasmError}`,`\nTo resolve, you may need to:`,`1. Check your network connection`,`2. Set a new WASM source via RuntimeLoader.setWasmUrl()`,`3. Call RuntimeLoader.awaitInstance() again`].join(`\n`);console.error(o),e.notifyError(Error(o))}})},e.getInstance=function(t,n){e.isLoading||(e.isLoading=!0,e.loadRuntime()),e.runtime?t(e.runtime):(e.callBackQueue.push(t),n&&e.errorCallbackQueue.push(n))},e.awaitInstance=function(){return new Promise(function(t,n){return e.getInstance(t,n)})},e.setWasmUrl=function(t){e.wasmURL=t},e.getWasmUrl=function(){return e.wasmURL},e.setWasmFallbackUrl=function(t){e.wasmFallbackURL=t},e.getWasmFallbackUrl=function(){return e.wasmFallbackURL},e.setWasmBinary=function(t){if(t instanceof ArrayBuffer||t===null){e.wasmBinary=t;return}console.error(`setWasmBinary expects an ArrayBuffer or null`)},e.getWasmBinary=function(){return e.wasmBinary},e.isLoading=!1,e.callBackQueue=[],e.wasmURL=`https://unpkg.com/${a.name}@${a.version}/rive.wasm`,e.wasmFallbackURL=`https://cdn.jsdelivr.net/npm/${a.name}@${a.version}/rive_fallback.wasm`,e.wasmBinary=null,e.errorCallbackQueue=[],e.enablePerfMarks=!1,e}()}),((t,n,r)=>{r.r(n),r.d(n,{default:()=>i});let i=(()=>{var t=typeof document<`u`?document.currentScript?.src:void 0;return function(n={}){var r,i=n,a,o,s=new Promise((e,t)=>{a=e,o=t}),c=typeof window==`object`,l=typeof importScripts==`function`;function u(){function t(e){let t=i;r=n=0,i=/* @__PURE__ */ new Map,t.forEach(t=>{try{t(e)}catch(e){console.error(e)}}),this.fb(),a&&a.Eb()}let n=0,r=0,i=/* @__PURE__ */ new Map,a=null,o=null;(this||e).requestAnimationFrame=function(a){n||=requestAnimationFrame(t.bind(this||e));let o=++r;return i.set(o,a),o},(this||e).cancelAnimationFrame=function(e){i.delete(e),n&&i.size==0&&(cancelAnimationFrame(n),n=0)},(this||e).Cb=function(t){o&&(document.body.remove(o),o=null),t||(o=document.createElement(`div`),o.style.backgroundColor=`black`,o.style.position=`fixed`,o.style.right=0,o.style.top=0,o.style.color=`white`,o.style.padding=`4px`,o.innerHTML=`RIVE FPS`,t=function(e){o.innerHTML=`RIVE FPS `+e.toFixed(1)},document.body.appendChild(o)),a=new function(){let n=0,r=0;(this||e).Eb=function(){var e=performance.now();r?(++n,e-=r,1e3<e&&(t(1e3*n/e),n=r=0)):(r=e,n=0)}}},(this||e).fb=function(){}}function d(){console.assert(!0);let t=/* @__PURE__ */ new Map,n=-1/0;(this||e).push=function(e){return e=e+255>>8,t.has(e)&&clearTimeout(t.get(e)),t.set(e,setTimeout(function(){t.delete(e),t.length==0?n=-1/0:e==n&&(n=Math.max(...t.keys()),console.assert(n<e))},1e3)),n=Math.max(e,n),n<<8}}let f=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){f&&f();let t=i.decodeAudio;i.decodeAudio=function(e,n){e=t(e),n(e)};let n=i.decodeFont;i.decodeFont=function(e,t){e=n(e),t(e)};let r=i.setFallbackFontCb;i.setFallbackFontCallback=typeof r==`function`?function(e){r(e)}:function(){console.warn(`Module.setFallbackFontCallback called, but text support is not enabled in this build.`)};let a=i.FileAssetLoader;i.ptrToAsset=e=>{let t=i.ptrToFileAsset(e);return t.isImage?i.ptrToImageAsset(e):t.isFont?i.ptrToFontAsset(e):t.isAudio?i.ptrToAudioAsset(e):t},i.CustomFileAssetLoader=a.extend(`CustomFileAssetLoader`,{__construct:function({loadContents:t}){(this||e).__parent.__construct.call(this||e),(this||e).sb=t},loadContents:function(e,t){return e=i.ptrToAsset(e),this.sb(e,t)}}),i.CDNFileAssetLoader=a.extend(`CDNFileAssetLoader`,{__construct:function(){(this||e).__parent.__construct.call(this||e)},loadContents:function(e){let t=i.ptrToAsset(e);return e=t.cdnUuid,e===``?!1:((function(e,t){var n=new XMLHttpRequest;n.responseType=`arraybuffer`,n.onreadystatechange=function(){n.readyState==4&&n.status==200&&t(n)},n.open(`GET`,e,!0),n.send(null)})(t.cdnBaseUrl+`/`+e,e=>{t.decode(new Uint8Array(e.response))}),!0)}}),i.FallbackFileAssetLoader=a.extend(`FallbackFileAssetLoader`,{__construct:function(){(this||e).__parent.__construct.call(this||e),(this||e).ab=[]},addLoader:function(t){(this||e).ab.push(t)},loadContents:function(t,n){for(let r of(this||e).ab)if(r.loadContents(t,n))return!0;return!1}});let o=i.computeAlignment;i.computeAlignment=function(t,n,r,i,a=1){return o.call(this||e,t,n,r,i,a)}};let p=i.onRuntimeInitialized;i.onRuntimeInitialized=function(){function t(t){(this||e).D=t,(this||e).rb=t.getContext(`2d`),(this||e).Sa=a,(this||e).O=[],(this||e).ga=0,(this||e).clear=function(){console.assert((this||e).ga==0),(this||e).O=[],o.delete(this||e)},(this||e).save=function(){++(this||e).ga,(this||e).O.push(a.save.bind(a))},(this||e).restore=function(){0<(this||e).ga&&((this||e).O.push(a.restore.bind(a)),--(this||e).ga)},(this||e).transform=function(t){(this||e).O.push(a.transform.bind(a,t))},(this||e).align=function(t,n,r,i,o=1){(this||e).O.push(a.align.bind(a,t,n,r,i,o))},(this||e).flush=function(){console.assert((this||e).ga==0),o.add(this||e),a.Ra||r()},(this||e).bindContext=function(){let t=(this||e).Sa;t&&t.W&&Qn(t.W)},(this||e).delete=function(){}}function n(t,n=!1){var r={alpha:!0,depth:n,stencil:n,antialias:n,premultipliedAlpha:!0,preserveDrawingBuffer:0,powerPreference:`high-performance`,failIfMajorPerformanceCaveat:0,enableExtensionsByDefault:!1,explicitSwapControl:0,renderViaOffscreenBackBuffer:0};if(n=t.getContext(`webgl2`,r),!n)return null;r=Zn(n,r),Qn(r);let i=s(t.width,t.height);i.W=r,i.D=t,i.Ia=t.width,i.Ha=t.height,i.P=n,i.wb=function(){(this||e).W&&Qn((this||e).W)};var a=i.delete;return i.delete=function(){this.wb(),a.call(this||e);var t=(this||e).W;er===X[t]&&(er=null),typeof JSEvents==`object`&&JSEvents.Gc(X[t].C.canvas),X[t]&&X[t].C.canvas&&(X[t].C.canvas.qb=void 0),(this||e).W=(this||e).D=(this||e).Ia=(this||e).Ha=(this||e).P=X[t]=null},i}function r(){if(a){var e=a.ub,t=0,n=0,r=0,s=Array(o.size),c=0;for(var l of o)l.ca=Math.min(l.D.width,e),l.ba=Math.min(l.D.height,e),l.Fa=l.ba*l.ca,t=Math.max(t,l.ca),n=Math.max(n,l.ba),r+=l.Fa,s[c++]=l;if(o.clear(),!(0>=r)){for(t=1<<(0>=t?0:32-Math.clz32(t-1)),n=1<<(0>=n?0:32-Math.clz32(n-1));n*t<r;)t<=n?t*=2:n*=2;for(t=Math.min(t,e),t=Math.min(n,e),s.sort((e,t)=>t.Fa-e.Fa),r=new i.DynamicRectanizer(e),l=0;l<s.length;){for(r.reset(t,n),c=l;c<s.length;++c){var u=s[c],d=r.addRect(u.ca,u.ba);if(0>d){console.assert(c>l);break}u.ma=d&65535,u.na=d>>16}for(u=f.push(r.drawWidth()),d=m.push(r.drawHeight()),console.assert(u>=r.drawWidth()),console.assert(d>=r.drawHeight()),console.assert(u<=e),console.assert(d<=e),a.D.width!=u&&(a.D.width=u),a.D.height!=d&&(a.D.height=d),a.clear(),u=l;u<c;++u){d=s[u],a.saveClipRect(d.ma,d.na,d.ma+d.ca,d.na+d.ba);let e=new i.Mat2D;e.xx=d.ca/d.D.width,e.yy=d.ba/d.D.height,e.xy=e.yx=0,e.tx=d.ma,e.ty=d.na,a.transform(e);for(let e of d.O)e();a.restoreClipRect(),d.O=[]}for(a.flush();l<c;++l)u=s[l],d=u.rb,d.globalCompositeOperation=`copy`,d.drawImage(a.D,u.ma,u.na,u.ca,u.ba,0,0,u.D.width,u.D.height);l=c}}}}p&&p();let a=null,o=/* @__PURE__ */ new Set,s=i.makeRenderer;i.makeRenderer=function(e,r){if(!a){function e(e){var t=document.createElement(`canvas`);return t.width=1,t.height=1,a=n(t,e),a?(a.Ra=!!a.P.getExtension(`WEBGL_shader_pixel_local_storage`),a.ub=Math.min(a.P.getParameter(a.P.MAX_RENDERBUFFER_SIZE),a.P.getParameter(a.P.MAX_TEXTURE_SIZE)),a.Ga=!a.Ra,(e=a.P.getExtension(`WEBGL_debug_renderer_info`))&&(t=a.P.getParameter(e.UNMASKED_RENDERER_WEBGL),a.P.getParameter(e.UNMASKED_VENDOR_WEBGL).includes(`Google`)&&t.includes(`ANGLE Metal Renderer`)&&(a.Ga=!1)),a):null}if(a=e(!0),!a)throw`Unable to create WebGL context, your environment may not support WebGL. Try out @rive-app/canvas as an alternative.`;a.Ga||(a=e(!1))}return r?new t(e):n(e,a.Ga)};let c=i.Artboard.prototype.delete;i.Artboard.prototype.delete=function(){(this||e).vb=!0,c.call(this||e)};let l=i.Artboard.prototype.draw;i.Artboard.prototype.draw=function(t){t.O?t.O.push(()=>{(this||e).vb||l.call(this||e,t.Sa)}):l.call(this||e,t)};let f=new d,m=new d,h=new u;i.requestAnimationFrame=h.requestAnimationFrame.bind(h),i.cancelAnimationFrame=h.cancelAnimationFrame.bind(h),i.enableFPSCounter=h.Cb.bind(h),h.fb=r,i.resolveAnimationFrame=r;let g=i.load;i.load=function(e,t,n=!0){let r=new i.FallbackFileAssetLoader;return t!==void 0&&r.addLoader(t),n&&(t=new i.CDNFileAssetLoader,r.addLoader(t)),Promise.resolve(g(e,r))};let _=i.WebGL2Renderer.prototype.clear;i.WebGL2Renderer.prototype.clear=function(){Qn((this||e).W);let t=(this||e).D;((this||e).Ia!=t.width||(this||e).Ha!=t.height)&&(this.resize(t.width,t.height),(this||e).Ia=t.width,(this||e).Ha=t.height),_.call(this||e)},i.decodeImage=function(e,t){e=i.decodeWebGL2Image(e),t(e)};let v=i.Renderer.prototype.align;i.Renderer.prototype.align=function(t,n,r,i,a=1){v.call(this||e,t,n,r,i,a)}};var m=Object.assign({},i),h=`./this.program`,g=``,_,v;(c||l)&&(l?g=self.location.href:typeof document<`u`&&document.currentScript&&(g=document.currentScript.src),t&&(g=t),g=g.startsWith(`blob:`)?``:g.substr(0,g.replace(/[?#].*/,``).lastIndexOf(`/`)+1),l&&(v=e=>{var t=new XMLHttpRequest;return t.open(`GET`,e,!1),t.responseType=`arraybuffer`,t.send(null),new Uint8Array(t.response)}),_=(e,t,n)=>{if(se(e)){var r=new XMLHttpRequest;r.open(`GET`,e,!0),r.responseType=`arraybuffer`,r.onload=()=>{r.status==200||r.status==0&&r.response?t(r.response):n()},r.onerror=n,r.send(null)}else fetch(e,{credentials:`same-origin`}).then(e=>e.ok?e.arrayBuffer():Promise.reject(Error(e.status+` : `+e.url))).then(t,n)});var y=i.print||console.log.bind(console),b=i.printErr||console.error.bind(console);Object.assign(i,m),m=null,i.thisProgram&&(h=i.thisProgram);var x;i.wasmBinary&&(x=i.wasmBinary);var S,C=!1,w,T,E,D,O,k,A,ee;function te(){var e=S.buffer;i.HEAP8=w=new Int8Array(e),i.HEAP16=E=new Int16Array(e),i.HEAPU8=T=new Uint8Array(e),i.HEAPU16=D=new Uint16Array(e),i.HEAP32=O=new Int32Array(e),i.HEAPU32=k=new Uint32Array(e),i.HEAPF32=A=new Float32Array(e),i.HEAPF64=ee=new Float64Array(e)}var ne=[],re=[],ie=[];function ae(){var e=i.preRun.shift();ne.unshift(e)}var j=0,oe=null,N=null;function P(e){throw i.onAbort?.(e),e=`Aborted(`+e+`)`,b(e),C=!0,e=new WebAssembly.RuntimeError(e+`. Build with -sASSERTIONS for more info.`),o(e),e}var F=e=>e.startsWith(`data:application/octet-stream;base64,`),se=e=>e.startsWith(`file://`),ce;function le(e){if(e==ce&&x)return new Uint8Array(x);if(v)return v(e);throw`both async and sync fetching of the wasm failed`}function ue(e){return x?Promise.resolve().then(()=>le(e)):new Promise((t,n)=>{_(e,e=>t(new Uint8Array(e)),()=>{try{t(le(e))}catch(e){n(e)}})})}function de(e,t,n){return ue(e).then(e=>WebAssembly.instantiate(e,t)).then(n,e=>{b(`failed to asynchronously prepare wasm: ${e}`),P(e)})}function fe(e,t){var n=ce;return x||typeof WebAssembly.instantiateStreaming!=`function`||F(n)||se(n)||typeof fetch!=`function`?de(n,e,t):fetch(n,{credentials:`same-origin`}).then(r=>WebAssembly.instantiateStreaming(r,e).then(t,function(r){return b(`wasm streaming compile failed: ${r}`),b(`falling back to ArrayBuffer instantiation`),de(n,e,t)}))}var pe,me,he={571903:(e,t,n,r,i)=>{if(typeof window>`u`||(window.AudioContext||window.webkitAudioContext)===void 0)return 0;if(window.miniaudio===void 0){window.miniaudio={referenceCount:0},window.miniaudio.device_type={},window.miniaudio.device_type.playback=e,window.miniaudio.device_type.capture=t,window.miniaudio.device_type.duplex=n,window.miniaudio.device_state={},window.miniaudio.device_state.stopped=r,window.miniaudio.device_state.started=i;let a=window.miniaudio;a.devices=[],a.track_device=function(e){for(var t=0;t<a.devices.length;++t)if(a.devices[t]==null)return a.devices[t]=e,t;return a.devices.push(e),a.devices.length-1},a.untrack_device_by_index=function(e){for(a.devices[e]=null;0<a.devices.length&&a.devices[a.devices.length-1]==null;)a.devices.pop()},a.untrack_device=function(e){for(var t=0;t<a.devices.length;++t)if(a.devices[t]==e)return a.untrack_device_by_index(t)},a.get_device_by_index=function(e){return a.devices[e]},a.unlock_event_types=[`touchend`,`click`],a.unlock=function(){for(var e=0;e<a.devices.length;++e){var t=a.devices[e];t!=null&&t.H!=null&&t.state===a.device_state.started&&t.H.resume().then(()=>{br(t.gb)},e=>{console.error(`Failed to resume audiocontext`,e)})}a.unlock_event_types.map(function(e){document.removeEventListener(e,a.unlock,!0)})},a.unlock_event_types.map(function(e){document.addEventListener(e,a.unlock,!0)})}return window.miniaudio.referenceCount+=1,1},574081:()=>{window.miniaudio!==void 0&&(window.miniaudio.unlock_event_types.map(function(e){document.removeEventListener(e,window.miniaudio.unlock,!0)}),--window.miniaudio.referenceCount,window.miniaudio.referenceCount===0&&delete window.miniaudio)},574385:()=>navigator.mediaDevices!==void 0&&navigator.mediaDevices.getUserMedia!==void 0,574489:()=>{try{var e=new(window.AudioContext||window.webkitAudioContext),t=e.sampleRate;return e.close(),t}catch(e){return 0}},574660:(e,t,n,r,i,a)=>{if(window.miniaudio===void 0)return-1;var o={},s={};return e==window.miniaudio.device_type.playback&&n!=0&&(s.sampleRate=n),o.H=new(window.AudioContext||window.webkitAudioContext)(s),o.H.suspend(),o.state=window.miniaudio.device_state.stopped,n=0,e!=window.miniaudio.device_type.playback&&(n=t),o.V=o.H.createScriptProcessor(r,n,t),o.V.onaudioprocess=function(n){if((o.ra==null||o.ra.length==0)&&(o.ra=new Float32Array(A.buffer,i,r*t)),e==window.miniaudio.device_type.capture||e==window.miniaudio.device_type.duplex){for(var s=0;s<t;s+=1)for(var c=n.inputBuffer.getChannelData(s),l=o.ra,u=0;u<r;u+=1)l[u*t+s]=c[u];xr(a,r,i)}if(e==window.miniaudio.device_type.playback||e==window.miniaudio.device_type.duplex)for(Sr(a,r,i),s=0;s<n.outputBuffer.numberOfChannels;++s)for(c=n.outputBuffer.getChannelData(s),l=o.ra,u=0;u<r;u+=1)c[u]=l[u*t+s];else for(s=0;s<n.outputBuffer.numberOfChannels;++s)n.outputBuffer.getChannelData(s).fill(0)},e!=window.miniaudio.device_type.capture&&e!=window.miniaudio.device_type.duplex||navigator.mediaDevices.getUserMedia({audio:!0,video:!1}).then(function(e){o.Ba=o.H.createMediaStreamSource(e),o.Ba.connect(o.V),o.V.connect(o.H.destination)}).catch(function(e){console.log(`Failed to get user media: `+e)}),e==window.miniaudio.device_type.playback&&o.V.connect(o.H.destination),o.gb=a,window.miniaudio.track_device(o)},577537:e=>window.miniaudio.get_device_by_index(e).H.sampleRate,577610:e=>{e=window.miniaudio.get_device_by_index(e),e.V!==void 0&&(e.V.onaudioprocess=function(){},e.V.disconnect(),e.V=void 0),e.Ba!==void 0&&(e.Ba.disconnect(),e.Ba=void 0),e.H.close(),e.H=void 0,e.gb=void 0},578010:e=>{window.miniaudio.untrack_device_by_index(e)},578060:e=>{e=window.miniaudio.get_device_by_index(e),e.H.resume(),e.state=window.miniaudio.device_state.started},578199:e=>{e=window.miniaudio.get_device_by_index(e),e.H.suspend(),e.state=window.miniaudio.device_state.stopped}},ge=e=>{for(;0<e.length;)e.shift()(i)};function I(){var e=O[mt>>2];return mt+=4,e}var _e=(e,t)=>{for(var n=0,r=e.length-1;0<=r;r--){var i=e[r];i===`.`?e.splice(r,1):i===`..`?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n;n--)e.unshift(`..`);return e},ve=e=>{var t=e.charAt(0)===`/`,n=e.substr(-1)===`/`;return(e=_e(e.split(`/`).filter(e=>!!e),!t).join(`/`))||t||(e=`.`),e&&n&&(e+=`/`),(t?`/`:``)+e},ye=e=>{var t=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(e).slice(1);return e=t[0],t=t[1],!e&&!t?`.`:(t&&=t.substr(0,t.length-1),e+t)},be=e=>{if(e===`/`)return`/`;e=ve(e),e=e.replace(/\\/$/,``);var t=e.lastIndexOf(`/`);return t===-1?e:e.substr(t+1)},xe=()=>{if(typeof crypto==`object`&&typeof crypto.getRandomValues==`function`)return e=>crypto.getRandomValues(e);P(`initRandomDevice`)},Se=e=>(Se=xe())(e),Ce=(...e)=>{for(var t=``,n=!1,r=e.length-1;-1<=r&&!n;r--){if(n=0<=r?e[r]:`/`,typeof n!=`string`)throw TypeError(`Arguments to path.resolve must be strings`);if(!n)return``;t=n+`/`+t,n=n.charAt(0)===`/`}return t=_e(t.split(`/`).filter(e=>!!e),!n).join(`/`),(n?`/`:``)+t||`.`},we=typeof TextDecoder<`u`?new TextDecoder(`utf8`):void 0,L=(e,t,n)=>{var r=t+n;for(n=t;e[n]&&!(n>=r);)++n;if(16<n-t&&e.buffer&&we)return we.decode(e.subarray(t,n));for(r=``;t<n;){var i=e[t++];if(i&128){var a=e[t++]&63;if((i&224)==192)r+=String.fromCharCode((i&31)<<6|a);else{var o=e[t++]&63;i=(i&240)==224?(i&15)<<12|a<<6|o:(i&7)<<18|a<<12|o<<6|e[t++]&63,65536>i?r+=String.fromCharCode(i):(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|i&1023))}}else r+=String.fromCharCode(i)}return r},Te=[],Ee=e=>{for(var t=0,n=0;n<e.length;++n){var r=e.charCodeAt(n);127>=r?t++:2047>=r?t+=2:55296<=r&&57343>=r?(t+=4,++n):t+=3}return t},De=(e,t,n,r)=>{if(!(0<r))return 0;var i=n;r=n+r-1;for(var a=0;a<e.length;++a){var o=e.charCodeAt(a);if(55296<=o&&57343>=o){var s=e.charCodeAt(++a);o=65536+((o&1023)<<10)|s&1023}if(127>=o){if(n>=r)break;t[n++]=o}else{if(2047>=o){if(n+1>=r)break;t[n++]=192|o>>6}else{if(65535>=o){if(n+2>=r)break;t[n++]=224|o>>12}else{if(n+3>=r)break;t[n++]=240|o>>18,t[n++]=128|o>>12&63}t[n++]=128|o>>6&63}t[n++]=128|o&63}}return t[n]=0,n-i};function Oe(e,t){var n=Array(Ee(e)+1);return e=De(e,n,0,n.length),t&&(n.length=e),n}var ke=[];function Ae(e,t){ke[e]={input:[],F:[],S:t},tt(e,je)}var je={open(e){var t=ke[e.node.Aa];if(!t)throw new M(43);e.o=t,e.seekable=!1},close(e){e.o.S.pa(e.o)},pa(e){e.o.S.pa(e.o)},read(e,t,n,r){if(!e.o||!e.o.S.$a)throw new M(60);for(var i=0,a=0;a<r;a++){try{var o=e.o.S.$a(e.o)}catch(e){throw new M(29)}if(o===void 0&&i===0)throw new M(6);if(o==null)break;i++,t[n+a]=o}return i&&(e.node.timestamp=Date.now()),i},write(e,t,n,r){if(!e.o||!e.o.S.Ma)throw new M(60);try{for(var i=0;i<r;i++)e.o.S.Ma(e.o,t[n+i])}catch(e){throw new M(29)}return r&&(e.node.timestamp=Date.now()),i}},Me={$a(){a:{if(!Te.length){var e=null;if(typeof window<`u`&&typeof window.prompt==`function`&&(e=window.prompt(`Input: `),e!==null&&(e+=`\n`)),!e){e=null;break a}Te=Oe(e,!0)}e=Te.shift()}return e},Ma(e,t){t===null||t===10?(y(L(e.F,0)),e.F=[]):t!=0&&e.F.push(t)},pa(e){e.F&&0<e.F.length&&(y(L(e.F,0)),e.F=[])},Nb(){return{nc:25856,pc:5,mc:191,oc:35387,lc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},Ob(){return 0},Pb(){return[24,80]}},Ne={Ma(e,t){t===null||t===10?(b(L(e.F,0)),e.F=[]):t!=0&&e.F.push(t)},pa(e){e.F&&0<e.F.length&&(b(L(e.F,0)),e.F=[])}};function Pe(e,t){var n=e.j?e.j.length:0;n>=t||(t=Math.max(t,n*(1048576>n?2:1.125)>>>0),n!=0&&(t=Math.max(t,256)),n=e.j,e.j=new Uint8Array(t),0<e.u&&e.j.set(n.subarray(0,e.u),0))}var R={K:null,R(){return R.createNode(null,`/`,16895,0)},createNode(e,t,n,r){if((n&61440)==24576||(n&61440)==4096)throw new M(63);return R.K||(R.K={dir:{node:{U:R.i.U,M:R.i.M,ha:R.i.ha,xa:R.i.xa,lb:R.i.lb,pb:R.i.pb,mb:R.i.mb,kb:R.i.kb,Ca:R.i.Ca},stream:{Z:R.l.Z}},file:{node:{U:R.i.U,M:R.i.M},stream:{Z:R.l.Z,read:R.l.read,write:R.l.write,Ta:R.l.Ta,bb:R.l.bb,eb:R.l.eb}},link:{node:{U:R.i.U,M:R.i.M,ia:R.i.ia},stream:{}},Ua:{node:{U:R.i.U,M:R.i.M},stream:et}}),n=qe(e,t,n,r),(n.mode&61440)==16384?(n.i=R.K.dir.node,n.l=R.K.dir.stream,n.j={}):(n.mode&61440)==32768?(n.i=R.K.file.node,n.l=R.K.file.stream,n.u=0,n.j=null):(n.mode&61440)==40960?(n.i=R.K.link.node,n.l=R.K.link.stream):(n.mode&61440)==8192&&(n.i=R.K.Ua.node,n.l=R.K.Ua.stream),n.timestamp=Date.now(),e&&(e.j[t]=n,e.timestamp=n.timestamp),n},vc(e){return e.j?e.j.subarray?e.j.subarray(0,e.u):new Uint8Array(e.j):new Uint8Array},i:{U(e){var t={};return t.sc=(e.mode&61440)==8192?e.id:1,t.xc=e.id,t.mode=e.mode,t.Dc=1,t.uid=0,t.wc=0,t.Aa=e.Aa,(e.mode&61440)==16384?t.size=4096:(e.mode&61440)==32768?t.size=e.u:(e.mode&61440)==40960?t.size=e.link.length:t.size=0,t.jc=new Date(e.timestamp),t.Cc=new Date(e.timestamp),t.qc=new Date(e.timestamp),t.xb=4096,t.kc=Math.ceil(t.size/t.xb),t},M(e,t){if(t.mode!==void 0&&(e.mode=t.mode),t.timestamp!==void 0&&(e.timestamp=t.timestamp),t.size!==void 0&&(t=t.size,e.u!=t))if(t==0)e.j=null,e.u=0;else{var n=e.j;e.j=new Uint8Array(t),n&&e.j.set(n.subarray(0,Math.min(t,e.u))),e.u=t}},ha(){throw He[44]},xa(e,t,n,r){return R.createNode(e,t,n,r)},lb(e,t,n){if((e.mode&61440)==16384){try{var r=Ke(t,n)}catch(e){}if(r)for(var i in r.j)throw new M(55)}delete e.parent.j[e.name],e.parent.timestamp=Date.now(),e.name=n,t.j[n]=e,t.timestamp=e.parent.timestamp},pb(e,t){delete e.j[t],e.timestamp=Date.now()},mb(e,t){var n=Ke(e,t),r;for(r in n.j)throw new M(55);delete e.j[t],e.timestamp=Date.now()},kb(e){var t=[`.`,`..`],n;for(n of Object.keys(e.j))t.push(n);return t},Ca(e,t,n){return e=R.createNode(e,t,41471,0),e.link=n,e},ia(e){if((e.mode&61440)!=40960)throw new M(28);return e.link}},l:{read(e,t,n,r,i){var a=e.node.j;if(i>=e.node.u)return 0;if(e=Math.min(e.node.u-i,r),8<e&&a.subarray)t.set(a.subarray(i,i+e),n);else for(r=0;r<e;r++)t[n+r]=a[i+r];return e},write(e,t,n,r,i,a){if(t.buffer===w.buffer&&(a=!1),!r)return 0;if(e=e.node,e.timestamp=Date.now(),t.subarray&&(!e.j||e.j.subarray)){if(a)return e.j=t.subarray(n,n+r),e.u=r;if(e.u===0&&i===0)return e.j=t.slice(n,n+r),e.u=r;if(i+r<=e.u)return e.j.set(t.subarray(n,n+r),i),r}if(Pe(e,i+r),e.j.subarray&&t.subarray)e.j.set(t.subarray(n,n+r),i);else for(a=0;a<r;a++)e.j[i+a]=t[n+a];return e.u=Math.max(e.u,i+r),r},Z(e,t,n){if(n===1?t+=e.position:n===2&&(e.node.mode&61440)==32768&&(t+=e.node.u),0>t)throw new M(28);return t},Ta(e,t,n){Pe(e.node,t+n),e.node.u=Math.max(e.node.u,t+n)},bb(e,t,n,r,i){if((e.node.mode&61440)!=32768)throw new M(43);if(e=e.node.j,i&2||e.buffer!==w.buffer){if((0<n||n+t<e.length)&&(e=e.subarray?e.subarray(n,n+t):Array.prototype.slice.call(e,n,n+t)),n=!0,P(),t=void 0,!t)throw new M(48);w.set(e,t)}else n=!1,t=e.byteOffset;return{m:t,ic:n}},eb(e,t,n,r){return R.l.write(e,t,0,r,n,!1),0}}},Fe=(e,t)=>{var n=0;return e&&(n|=365),t&&(n|=146),n},Ie=null,Le={},Re=[],ze=1,Be=null,Ve=!0,M=class{constructor(e){this.name=`ErrnoError`,this.Y=e}},He={},Ab=class{constructor(){this.qa={},this.node=null}get flags(){return this.qa.flags}set flags(e){this.qa.flags=e}get position(){return this.qa.position}set position(e){this.qa.position=e}},Bb=class{constructor(e,t,n,r){e||=this,this.parent=e,this.R=e.R,this.ya=null,this.id=ze++,this.name=t,this.mode=n,this.i={},this.l={},this.Aa=r}get read(){return(this.mode&365)==365}set read(e){e?this.mode|=365:this.mode&=-366}get write(){return(this.mode&146)==146}set write(e){e?this.mode|=146:this.mode&=-147}};function Ue(e,t={}){if(e=Ce(e),!e)return{path:``,node:null};if(t=Object.assign({Za:!0,Oa:0},t),8<t.Oa)throw new M(32);e=e.split(`/`).filter(e=>!!e);for(var n=Ie,r=`/`,i=0;i<e.length;i++){var a=i===e.length-1;if(a&&t.parent)break;if(n=Ke(n,e[i]),r=ve(r+`/`+e[i]),n.ya&&(!a||a&&t.Za)&&(n=n.ya.root),!a||t.Ya){for(a=0;(n.mode&61440)==40960;)if(n=ot(r),r=Ce(ye(r),n),n=Ue(r,{Oa:t.Oa+1}).node,40<a++)throw new M(32)}}return{path:r,node:n}}function We(e){for(var t;;){if(e===e.parent)return e=e.R.cb,t?e[e.length-1]===`/`?e+t:`${e}/${t}`:e;t=t?`${e.name}/${t}`:e.name,e=e.parent}}function Ge(e,t){for(var n=0,r=0;r<t.length;r++)n=(n<<5)-n+t.charCodeAt(r)|0;return(e+n>>>0)%Be.length}function Ke(e,t){var n=(e.mode&61440)==16384?(n=Ye(e,`x`))?n:e.i.ha?0:2:54;if(n)throw new M(n);for(n=Be[Ge(e.id,t)];n;n=n.Sb){var r=n.name;if(n.parent.id===e.id&&r===t)return n}return e.i.ha(e,t)}function qe(e,t,n,r){return e=new Bb(e,t,n,r),t=Ge(e.parent.id,e.name),e.Sb=Be[t],Be[t]=e}function Je(e){var t=[`r`,`w`,`rw`][e&3];return e&512&&(t+=`w`),t}function Ye(e,t){if(Ve)return 0;if(!t.includes(`r`)||e.mode&292){if(t.includes(`w`)&&!(e.mode&146)||t.includes(`x`)&&!(e.mode&73))return 2}else return 2;return 0}function Xe(e,t){try{return Ke(e,t),20}catch(e){}return Ye(e,`wx`)}function Ze(e){if(e=Re[e],!e)throw new M(8);return e}function Qe(e,t=-1){if(e=Object.assign(new Ab,e),t==-1)a:{for(t=0;4096>=t;t++)if(!Re[t])break a;throw new M(33)}return e.T=t,Re[t]=e}function $e(e,t=-1){return e=Qe(e,t),e.l?.uc?.(e),e}var et={open(e){e.l=Le[e.node.Aa].l,e.l.open?.(e)},Z(){throw new M(70)}};function tt(e,t){Le[e]={l:t}}function nt(e,t){var n=t===`/`;if(n&&Ie)throw new M(10);if(!n&&t){var r=Ue(t,{Za:!1});if(t=r.path,r=r.node,r.ya)throw new M(10);if((r.mode&61440)!=16384)throw new M(54)}t={type:e,Fc:{},cb:t,Qb:[]},e=e.R(t),e.R=t,t.root=e,n?Ie=e:r&&(r.ya=t,r.R&&r.R.Qb.push(t))}function rt(e,t,n){var r=Ue(e,{parent:!0}).node;if(e=be(e),!e||e===`.`||e===`..`)throw new M(28);var i=Xe(r,e);if(i)throw new M(i);if(!r.i.xa)throw new M(63);return r.i.xa(r,e,t,n)}function z(e){return rt(e,16895,0)}function it(e,t,n){n===void 0&&(n=t,t=438),rt(e,t|8192,n)}function at(e,t){if(!Ce(e))throw new M(44);var n=Ue(t,{parent:!0}).node;if(!n)throw new M(44);t=be(t);var r=Xe(n,t);if(r)throw new M(r);if(!n.i.Ca)throw new M(63);n.i.Ca(n,t,e)}function ot(e){if(e=Ue(e).node,!e)throw new M(44);if(!e.i.ia)throw new M(28);return Ce(We(e.parent),e.i.ia(e))}function st(e,t,n){if(e===``)throw new M(44);if(typeof t==`string`){var r={r:0,\"r+\":2,w:577,\"w+\":578,a:1089,\"a+\":1090}[t];if(r===void 0)throw Error(`Unknown file open mode: ${t}`);t=r}if(n=t&64?(n===void 0?438:n)&4095|32768:0,typeof e==`object`)var a=e;else{e=ve(e);try{a=Ue(e,{Ya:!(t&131072)}).node}catch(e){}}if(r=!1,t&64)if(a){if(t&128)throw new M(20)}else a=rt(e,n,0),r=!0;if(!a)throw new M(44);if((a.mode&61440)==8192&&(t&=-513),t&65536&&(a.mode&61440)!=16384)throw new M(54);if(!r&&(n=a?(a.mode&61440)==40960?32:(a.mode&61440)==16384&&(Je(t)!==`r`||t&512)?31:Ye(a,Je(t)):44))throw new M(n);if(t&512&&!r){if(n=a,n=typeof n==`string`?Ue(n,{Ya:!0}).node:n,!n.i.M)throw new M(63);if((n.mode&61440)==16384)throw new M(31);if((n.mode&61440)!=32768)throw new M(28);if(r=Ye(n,`w`))throw new M(r);n.i.M(n,{size:0,timestamp:Date.now()})}return t&=-131713,a=Qe({node:a,path:We(a),flags:t,seekable:!0,position:0,l:a.l,cc:[],error:!1}),a.l.open&&a.l.open(a),!i.logReadFiles||t&1||(pt||={},e in pt||(pt[e]=1)),a}function ct(e,t,n){if(e.T===null)throw new M(8);if(!e.seekable||!e.l.Z)throw new M(70);if(n!=0&&n!=1&&n!=2)throw new M(28);e.position=e.l.Z(e,t,n),e.cc=[]}var lt;function ut(e,t,n){e=ve(`/dev/`+e);var r=Fe(!!t,!!n);dt||=64;var i=dt++<<8|0;tt(i,{open(e){e.seekable=!1},close(){n?.buffer?.length&&n(10)},read(e,n,r,i){for(var a=0,o=0;o<i;o++){try{var s=t()}catch(e){throw new M(29)}if(s===void 0&&a===0)throw new M(6);if(s==null)break;a++,n[r+o]=s}return a&&(e.node.timestamp=Date.now()),a},write(e,t,r,i){for(var a=0;a<i;a++)try{n(t[r+a])}catch(e){throw new M(29)}return i&&(e.node.timestamp=Date.now()),a}}),it(e,r,i)}var dt,ft={},pt,mt=void 0,ht=(e,t)=>Object.defineProperty(t,\"name\",{value:e}),gt=[],B=[],V,H=e=>{if(!e)throw new V(`Cannot use deleted val. handle = `+e);return B[e]},U=e=>{switch(e){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let t=gt.pop()||B.length;return B[t]=e,B[t+1]=1,t}},_t=t=>{var n=Error,r=ht(t,function(n){(this||e).name=t,(this||e).message=n,n=Error(n).stack,n!==void 0&&((this||e).stack=this.toString()+`\n`+n.replace(/^Error(:[^\\n]*)?\\n/,``))});return r.prototype=Object.create(n.prototype),r.prototype.constructor=r,r.prototype.toString=function(){return(this||e).message===void 0?(this||e).name:`${(this||e).name}: ${(this||e).message}`},r},vt,yt,W=e=>{for(var t=``;T[e];)t+=yt[T[e++]];return t},bt=[],xt=()=>{for(;bt.length;){var e=bt.pop();e.g.ea=!1,e.delete()}},St,G={},Ct=(e,t)=>{if(t===void 0)throw new V(`ptr should not be undefined`);for(;e.A;)t=e.ka(t),e=e.A;return t},wt={},Tt=e=>{e=yr(e);var t=W(e);return _r(e),t},Et=(e,t)=>{var n=wt[e];if(n===void 0)throw e=`${t} has unknown type ${Tt(e)}`,new V(e);return n},Dt=()=>{},Ot=!1,kt=(e,t,n)=>t===n?e:n.A===void 0?null:(e=kt(e,t,n.A),e===null?null:n.Ab(e)),At={},jt=(e,t)=>(t=Ct(e,t),G[t]),Mt,Nt=(e,t)=>{if(!t.s||!t.m)throw new Mt(`makeClassHandle requires ptr and ptrType`);if(!!t.G!=!!t.B)throw new Mt(`Both smartPtrType and smartPtr must be specified`);return t.count={value:1},Pt(Object.create(e,{g:{value:t,writable:!0}}))},Pt=e=>typeof FinalizationRegistry>`u`?(Pt=e=>e,e):(Ot=new FinalizationRegistry(e=>{e=e.g,--e.count.value,e.count.value===0&&(e.B?e.G.L(e.B):e.s.h.L(e.m))}),Pt=e=>{var t=e.g;return t.B&&Ot.register(e,{g:t},e),e},Dt=e=>{Ot.unregister(e)},Pt(e)),Ft={},It=e=>{for(;e.length;){var t=e.pop();e.pop()(t)}};function Lt(e){return this.fromWireType(k[e>>2])}var Rt={},zt={},K=(e,t,n)=>{function r(t){if(t=n(t),t.length!==e.length)throw new Mt(`Mismatched type converter count`);for(var r=0;r<e.length;++r)q(e[r],t[r])}e.forEach(function(e){zt[e]=t});var i=Array(t.length),a=[],o=0;t.forEach((e,t)=>{wt.hasOwnProperty(e)?i[t]=wt[e]:(a.push(e),Rt.hasOwnProperty(e)||(Rt[e]=[]),Rt[e].push(()=>{i[t]=wt[e],++o,o===a.length&&r(i)}))}),a.length===0&&r(i)};function Bt(e,t,n={}){var r=t.name;if(!e)throw new V(`type \"${r}\" must have a positive integer typeid pointer`);if(wt.hasOwnProperty(e)){if(n.Kb)return;throw new V(`Cannot register type '${r}' twice`)}wt[e]=t,delete zt[e],Rt.hasOwnProperty(e)&&(t=Rt[e],delete Rt[e],t.forEach(e=>e()))}function q(e,t,n={}){if(!(`argPackAdvance`in t))throw TypeError(`registerType registeredInstance requires argPackAdvance`);return Bt(e,t,n)}var Vt=e=>{throw new V(e.g.s.h.name+` instance already deleted`)};function Ht(){}var Ut=(t,n,r)=>{if(t[n].v===void 0){var i=t[n];t[n]=function(...i){if(!t[n].v.hasOwnProperty(i.length))throw new V(`Function '${r}' called with an invalid number of arguments (${i.length}) - expects one of (${t[n].v})!`);return t[n].v[i.length].apply(this||e,i)},t[n].v=[],t[n].v[i.da]=i}},Wt=(e,t,n)=>{if(i.hasOwnProperty(e)){if(n===void 0||i[e].v!==void 0&&i[e].v[n]!==void 0)throw new V(`Cannot register public name '${e}' twice`);if(Ut(i,e,e),i.hasOwnProperty(n))throw new V(`Cannot register multiple overloads of a function with the same number of arguments (${n})!`);i[e].v[n]=t}else i[e]=t,n!==void 0&&(i[e].Ec=n)},Gt=e=>{if(e===void 0)return`_unknown`;e=e.replace(/[^a-zA-Z0-9_]/g,`$`);var t=e.charCodeAt(0);return 48<=t&&57>=t?`_${e}`:e};function Kt(t,n,r,i,a,o,s,c){(this||e).name=t,(this||e).constructor=n,(this||e).J=r,(this||e).L=i,(this||e).A=a,(this||e).Fb=o,(this||e).ka=s,(this||e).Ab=c,(this||e).hb=[]}var qt=(e,t,n)=>{for(;t!==n;){if(!t.ka)throw new V(`Expected null or instance of ${n.name}, got an instance of ${t.name}`);e=t.ka(e),t=t.A}return e};function Jt(t,n){if(n===null){if((this||e).La)throw new V(`null is not a valid ${(this||e).name}`);return 0}if(!n.g)throw new V(`Cannot pass \"${hn(n)}\" as a ${(this||e).name}`);if(!n.g.m)throw new V(`Cannot pass deleted object as a pointer of type ${(this||e).name}`);return qt(n.g.m,n.g.s.h,(this||e).h)}function Yt(t,n){if(n===null){if((this||e).La)throw new V(`null is not a valid ${(this||e).name}`);if((this||e).ta){var r=this.Na();return t!==null&&t.push((this||e).L,r),r}return 0}if(!n||!n.g)throw new V(`Cannot pass \"${hn(n)}\" as a ${(this||e).name}`);if(!n.g.m)throw new V(`Cannot pass deleted object as a pointer of type ${(this||e).name}`);if(!(this||e).sa&&n.g.s.sa)throw new V(`Cannot convert argument of type ${n.g.G?n.g.G.name:n.g.s.name} to parameter type ${(this||e).name}`);if(r=qt(n.g.m,n.g.s.h,(this||e).h),(this||e).ta){if(n.g.B===void 0)throw new V(`Passing raw pointer to smart pointer is illegal`);switch((this||e).Yb){case 0:if(n.g.G===(this||e))r=n.g.B;else throw new V(`Cannot convert argument of type ${n.g.G?n.g.G.name:n.g.s.name} to parameter type ${(this||e).name}`);break;case 1:r=n.g.B;break;case 2:if(n.g.G===(this||e))r=n.g.B;else{var i=n.clone();r=this.Ub(r,U(()=>i.delete())),t!==null&&t.push((this||e).L,r)}break;default:throw new V(`Unsupporting sharing policy`)}}return r}function Xt(t,n){if(n===null){if((this||e).La)throw new V(`null is not a valid ${(this||e).name}`);return 0}if(!n.g)throw new V(`Cannot pass \"${hn(n)}\" as a ${(this||e).name}`);if(!n.g.m)throw new V(`Cannot pass deleted object as a pointer of type ${(this||e).name}`);if(n.g.s.sa)throw new V(`Cannot convert argument of type ${n.g.s.name} to parameter type ${(this||e).name}`);return qt(n.g.m,n.g.s.h,(this||e).h)}function Zt(t,n,r,i,a,o,s,c,l,u,d){(this||e).name=t,(this||e).h=n,(this||e).La=r,(this||e).sa=i,(this||e).ta=a,(this||e).Tb=o,(this||e).Yb=s,(this||e).jb=c,(this||e).Na=l,(this||e).Ub=u,(this||e).L=d,a||n.A!==void 0?(this||e).toWireType=Yt:((this||e).toWireType=i?Jt:Xt,(this||e).I=null)}var Qt=(e,t,n)=>{if(!i.hasOwnProperty(e))throw new Mt(`Replacing nonexistent public symbol`);i[e].v!==void 0&&n!==void 0?i[e].v[n]=t:(i[e]=t,i[e].da=n)},$t=[],en,tn=e=>{var t=$t[e];return t||(e>=$t.length&&($t.length=e+1),$t[e]=t=en.get(e)),t},nn=(e,t,n=[])=>(e.includes(`j`)?(e=e.replace(/p/g,`i`),t=(0,i[`dynCall_`+e])(t,...n)):t=tn(t)(...n),t),rn=(e,t)=>(...n)=>nn(e,t,n),J=(e,t)=>{e=W(e);var n=e.includes(`j`)?rn(e,t):tn(t);if(typeof n!=`function`)throw new V(`unknown function pointer with signature ${e}: ${t}`);return n},an,on=(e,t)=>{function n(e){i[e]||wt[e]||(zt[e]?zt[e].forEach(n):(r.push(e),i[e]=!0))}var r=[],i={};throw t.forEach(n),new an(`${e}: `+r.map(Tt).join([`, `]))};function sn(e){for(var t=1;t<e.length;++t)if(e[t]!==null&&e[t].I===void 0)return!0;return!1}function cn(t,n,r,i,a){var o=n.length;if(2>o)throw new V(`argTypes array size mismatch! Must at least get return value and 'this' types!`);var s=n[1]!==null&&r!==null,c=sn(n),l=n[0].name!==`void`,u=o-2,d=Array(u),f=[],p=[];return ht(t,function(...r){if(r.length!==u)throw new V(`function ${t} called with ${r.length} arguments, expected ${u}`);if(p.length=0,f.length=s?2:1,f[0]=a,s){var o=n[1].toWireType(p,this||e);f[1]=o}for(var m=0;m<u;++m)d[m]=n[m+2].toWireType(p,r[m]),f.push(d[m]);if(r=i(...f),c)It(p);else for(m=s?1:2;m<n.length;m++){var h=m===1?o:d[m-2];n[m].I!==null&&n[m].I(h)}return o=l?n[0].fromWireType(r):void 0,o})}var ln=(e,t)=>{for(var n=[],r=0;r<e;r++)n.push(k[t+4*r>>2]);return n},un=e=>{e=e.trim();let t=e.indexOf(`(`);return t===-1?e:e.substr(0,t)},dn=(e,t,n)=>{if(!(e instanceof Object))throw new V(`${n} with invalid \"this\": ${e}`);if(!(e instanceof t.h.constructor))throw new V(`${n} incompatible with \"this\" of type ${e.constructor.name}`);if(!e.g.m)throw new V(`cannot call emscripten binding method ${n} on deleted object`);return qt(e.g.m,e.g.s.h,t.h)},fn=e=>{9<e&&--B[e+1]===0&&(B[e]=void 0,gt.push(e))},pn={name:`emscripten::val`,fromWireType:e=>{var t=H(e);return fn(e),t},toWireType:(e,t)=>U(t),argPackAdvance:8,readValueFromPointer:Lt,I:null},mn=(e,t,n)=>{switch(t){case 1:return n?function(e){return this.fromWireType(w[e])}:function(e){return this.fromWireType(T[e])};case 2:return n?function(e){return this.fromWireType(E[e>>1])}:function(e){return this.fromWireType(D[e>>1])};case 4:return n?function(e){return this.fromWireType(O[e>>2])}:function(e){return this.fromWireType(k[e>>2])};default:throw TypeError(`invalid integer width (${t}): ${e}`)}},hn=e=>{if(e===null)return`null`;var t=typeof e;return t===`object`||t===`array`||t===`function`?e.toString():``+e},gn=(e,t)=>{switch(t){case 4:return function(e){return this.fromWireType(A[e>>2])};case 8:return function(e){return this.fromWireType(ee[e>>3])};default:throw TypeError(`invalid float width (${t}): ${e}`)}},_n=(e,t,n)=>{switch(t){case 1:return n?e=>w[e]:e=>T[e];case 2:return n?e=>E[e>>1]:e=>D[e>>1];case 4:return n?e=>O[e>>2]:e=>k[e>>2];default:throw TypeError(`invalid integer width (${t}): ${e}`)}},vn=typeof TextDecoder<`u`?new TextDecoder(`utf-16le`):void 0,yn=(e,t)=>{for(var n=e>>1,r=n+t/2;!(n>=r)&&D[n];)++n;if(n<<=1,32<n-e&&vn)return vn.decode(T.subarray(e,n));for(n=``,r=0;!(r>=t/2);++r){var i=E[e+2*r>>1];if(i==0)break;n+=String.fromCharCode(i)}return n},bn=(e,t,n)=>{if(n??=2147483647,2>n)return 0;n-=2;var r=t;n=n<2*e.length?n/2:e.length;for(var i=0;i<n;++i)E[t>>1]=e.charCodeAt(i),t+=2;return E[t>>1]=0,t-r},xn=e=>2*e.length,Sn=(e,t)=>{for(var n=0,r=``;!(n>=t/4);){var i=O[e+4*n>>2];if(i==0)break;++n,65536<=i?(i-=65536,r+=String.fromCharCode(55296|i>>10,56320|i&1023)):r+=String.fromCharCode(i)}return r},Cn=(e,t,n)=>{if(n??=2147483647,4>n)return 0;var r=t;n=r+n-4;for(var i=0;i<e.length;++i){var a=e.charCodeAt(i);if(55296<=a&&57343>=a){var o=e.charCodeAt(++i);a=65536+((a&1023)<<10)|o&1023}if(O[t>>2]=a,t+=4,t+4>n)break}return O[t>>2]=0,t-r},wn=e=>{for(var t=0,n=0;n<e.length;++n){var r=e.charCodeAt(n);55296<=r&&57343>=r&&++n,t+=4}return t},Tn=(e,t,n)=>{var r=[];return e=e.toWireType(r,n),r.length&&(k[t>>2]=U(r)),e},En=[],Dn={},On=e=>{var t=Dn[e];return t===void 0?W(e):t},kn=e=>{var t=En.length;return En.push(e),t},An=(e,t)=>{for(var n=Array(e),r=0;r<e;++r)n[r]=Et(k[t+4*r>>2],`parameter `+r);return n},jn=Reflect.construct,Mn=e=>e%4==0&&(e%100!=0||e%400==0),Nn=[0,31,60,91,121,152,182,213,244,274,305,335],Pn=[0,31,59,90,120,151,181,212,243,273,304,334],Fn=[],In=e=>{e.tc=e.getExtension(`WEBGL_draw_instanced_base_vertex_base_instance`)},Ln=e=>{e.Bc=e.getExtension(`WEBGL_multi_draw_instanced_base_vertex_base_instance`)},Rn=e=>{var t=`EXT_color_buffer_float EXT_conservative_depth EXT_disjoint_timer_query_webgl2 EXT_texture_norm16 NV_shader_noperspective_interpolation WEBGL_clip_cull_distance EXT_color_buffer_half_float EXT_depth_clamp EXT_float_blend EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic KHR_parallel_shader_compile OES_texture_float_linear WEBGL_blend_func_extended WEBGL_compressed_texture_astc WEBGL_compressed_texture_etc WEBGL_compressed_texture_etc1 WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw`.split(` `);return(e.getSupportedExtensions()||[]).filter(e=>t.includes(e))},zn=1,Bn=[],Y=[],Vn=[],Hn=[],Un=[],Wn=[],Gn=[],X=[],Kn={},qn=4,Jn=0,Yn=e=>{for(var t=zn++,n=e.length;n<t;n++)e[n]=null;return t},Xn=(e,t,n,r)=>{for(var i=0;i<e;i++){var a=Q[n](),o=a&&Yn(r);a?(a.name=o,r[o]=a):Z||=1282,O[t+4*i>>2]=o}},Zn=(e,t)=>{var n=Yn(X),r={handle:n,attributes:t,version:t.Ac,C:e};return e.canvas&&(e.canvas.qb=r),X[n]=r,(t.Bb===void 0||t.Bb)&&$n(r),n},Qn=e=>(er=X[e],i.rc=Q=er?.C,!(e&&!Q)),$n=e=>{if(e||=er,!e.Lb){e.Lb=!0;var t=e.C;In(t),Ln(t),2<=e.version&&(t.Wa=t.getExtension(`EXT_disjoint_timer_query_webgl2`)),(2>e.version||!t.Wa)&&(t.Wa=t.getExtension(`EXT_disjoint_timer_query`)),t.Rb=t.getExtension(`WEBGL_multi_draw`),Rn(t).forEach(e=>{e.includes(`lose_context`)||e.includes(`debug`)||t.getExtension(e)})}},Z,er,tr={},nr=()=>{if(!rr){var e={USER:`web_user`,LOGNAME:`web_user`,PATH:`/`,PWD:`/`,HOME:`/home/web_user`,LANG:(typeof navigator==`object`&&navigator.languages&&navigator.languages[0]||`C`).replace(`-`,`_`)+`.UTF-8`,_:h||`./this.program`},t;for(t in tr)tr[t]===void 0?delete e[t]:e[t]=tr[t];var n=[];for(t in e)n.push(`${t}=${e[t]}`);rr=n}return rr},rr,ir=[];function ar(){var e=Rn(Q);return e=e.concat(e.map(e=>`GL_`+e))}var or=(e,t)=>{if(t){var n=void 0;switch(e){case 36346:n=1;break;case 36344:return;case 34814:case 36345:n=0;break;case 34466:var r=Q.getParameter(34467);n=r?r.length:0;break;case 33309:if(2>er.version){Z||=1282;return}n=ar().length;break;case 33307:case 33308:if(2>er.version){Z||=1280;return}n=e==33307?3:0}if(n===void 0)switch(r=Q.getParameter(e),typeof r){case`number`:n=r;break;case`boolean`:n=+!!r;break;case`string`:Z||=1280;return;case`object`:if(r===null)switch(e){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:n=0;break;default:Z||=1280;return}else{if(r instanceof Float32Array||r instanceof Uint32Array||r instanceof Int32Array||r instanceof Array){for(e=0;e<r.length;++e)O[t+4*e>>2]=r[e];return}try{n=r.name|0}catch(t){Z||=1280,b(`GL_INVALID_ENUM in glGet0v: Unknown object returned from WebGL getParameter(${e})! (error: ${t})`);return}}break;default:Z||=1280,b(`GL_INVALID_ENUM in glGet0v: Native code calling glGet0v(${e}) and it returns ${r} of type ${typeof r}!`);return}O[t>>2]=n}else Z||=1281},sr=e=>{var t=Ee(e)+1,n=vr(t);return n&&De(e,T,n,t),n},cr=e=>e.slice(-1)==`]`&&e.lastIndexOf(`[`),lr=e=>(e-=5120,e==0?w:e==1?T:e==2?E:e==4?O:e==6?A:e==5||e==28922||e==28520||e==30779||e==30782?k:D),ur=[31,29,31,30,31,30,31,31,30,31,30,31],dr=[31,28,31,30,31,30,31,31,30,31,30,31],fr=(e,t,n,r)=>{function i(e,t,n){for(e=typeof e==`number`?e.toString():e||``;e.length<t;)e=n[0]+e;return e}function a(e,t){return i(e,t,`0`)}function o(e,t){function n(e){return 0>e?-1:+(0<e)}var r;return(r=n(e.getFullYear()-t.getFullYear()))===0&&(r=n(e.getMonth()-t.getMonth()))===0&&(r=n(e.getDate()-t.getDate())),r}function s(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function c(e){var t=e.$;for(e=new Date(new Date(e.aa+1900,0,1).getTime());0<t;){var n=e.getMonth(),r=(Mn(e.getFullYear())?ur:dr)[n];if(t>r-e.getDate())t-=r-e.getDate()+1,e.setDate(1),11>n?e.setMonth(n+1):(e.setMonth(0),e.setFullYear(e.getFullYear()+1));else{e.setDate(e.getDate()+t);break}}return n=new Date(e.getFullYear()+1,0,4),t=s(new Date(e.getFullYear(),0,4)),n=s(n),0>=o(t,e)?0>=o(n,e)?e.getFullYear()+1:e.getFullYear():e.getFullYear()-1}var l=k[r+40>>2];for(var u in r={ac:O[r>>2],$b:O[r+4>>2],Da:O[r+8>>2],Pa:O[r+12>>2],Ea:O[r+16>>2],aa:O[r+20>>2],N:O[r+24>>2],$:O[r+28>>2],Ic:O[r+32>>2],Zb:O[r+36>>2],bc:l&&l?L(T,l):``},n=n?L(T,n):``,l={\"%c\":`%a %b %d %H:%M:%S %Y`,\"%D\":`%m/%d/%y`,\"%F\":`%Y-%m-%d`,\"%h\":`%b`,\"%r\":`%I:%M:%S %p`,\"%R\":`%H:%M`,\"%T\":`%H:%M:%S`,\"%x\":`%m/%d/%y`,\"%X\":`%H:%M:%S`,\"%Ec\":`%c`,\"%EC\":`%C`,\"%Ex\":`%m/%d/%y`,\"%EX\":`%H:%M:%S`,\"%Ey\":`%y`,\"%EY\":`%Y`,\"%Od\":`%d`,\"%Oe\":`%e`,\"%OH\":`%H`,\"%OI\":`%I`,\"%Om\":`%m`,\"%OM\":`%M`,\"%OS\":`%S`,\"%Ou\":`%u`,\"%OU\":`%U`,\"%OV\":`%V`,\"%Ow\":`%w`,\"%OW\":`%W`,\"%Oy\":`%y`},l)n=n.replace(new RegExp(u,`g`),l[u]);var d=`Sunday Monday Tuesday Wednesday Thursday Friday Saturday`.split(` `),f=`January February March April May June July August September October November December`.split(` `);for(u in l={\"%a\":e=>d[e.N].substring(0,3),\"%A\":e=>d[e.N],\"%b\":e=>f[e.Ea].substring(0,3),\"%B\":e=>f[e.Ea],\"%C\":e=>a((e.aa+1900)/100|0,2),\"%d\":e=>a(e.Pa,2),\"%e\":e=>i(e.Pa,2,` `),\"%g\":e=>c(e).toString().substring(2),\"%G\":c,\"%H\":e=>a(e.Da,2),\"%I\":e=>(e=e.Da,e==0?e=12:12<e&&(e-=12),a(e,2)),\"%j\":e=>{for(var t=0,n=0;n<=e.Ea-1;t+=(Mn(e.aa+1900)?ur:dr)[n++]);return a(e.Pa+t,3)},\"%m\":e=>a(e.Ea+1,2),\"%M\":e=>a(e.$b,2),\"%n\":()=>`\n`,\"%p\":e=>0<=e.Da&&12>e.Da?`AM`:`PM`,\"%S\":e=>a(e.ac,2),\"%t\":()=>`\t`,\"%u\":e=>e.N||7,\"%U\":e=>a(Math.floor((e.$+7-e.N)/7),2),\"%V\":e=>{var t=Math.floor((e.$+7-(e.N+6)%7)/7);if(2>=(e.N+371-e.$-2)%7&&t++,t)t==53&&(n=(e.N+371-e.$)%7,n==4||n==3&&Mn(e.aa)||(t=1));else{t=52;var n=(e.N+7-e.$-1)%7;(n==4||n==5&&Mn(e.aa%400-1))&&t++}return a(t,2)},\"%w\":e=>e.N,\"%W\":e=>a(Math.floor((e.$+7-(e.N+6)%7)/7),2),\"%y\":e=>(e.aa+1900).toString().substring(2),\"%Y\":e=>e.aa+1900,\"%z\":e=>{e=e.Zb;var t=0<=e;return e=Math.abs(e)/60,(t?`+`:`-`)+String(`0000`+(e/60*100+e%60)).slice(-4)},\"%Z\":e=>e.bc,\"%%\":()=>`%`},n=n.replace(/%%/g,`\\0\\0`),l)n.includes(u)&&(n=n.replace(new RegExp(u,`g`),l[u](r)));return n=n.replace(/\\0\\0/g,`%`),u=Oe(n,!1),u.length>t?0:(w.set(u,e),u.length-1)};[44].forEach(e=>{He[e]=new M(e),He[e].stack=`<generic error, no stack>`}),Be=Array(4096),nt(R,`/`),z(`/tmp`),z(`/home`),z(`/home/web_user`),(function(){z(`/dev`),tt(259,{read:()=>0,write:(e,t,n,r)=>r}),it(`/dev/null`,259),Ae(1280,Me),Ae(1536,Ne),it(`/dev/tty`,1280),it(`/dev/tty1`,1536);var e=new Uint8Array(1024),t=0,n=()=>(t===0&&(t=Se(e).byteLength),e[--t]);ut(`random`,n),ut(`urandom`,n),z(`/dev/shm`),z(`/dev/shm/tmp`)})(),(function(){z(`/proc`);var e=z(`/proc/self`);z(`/proc/self/fd`),nt({R(){var t=qe(e,`fd`,16895,73);return t.i={ha(e,t){var n=Ze(+t);return e={parent:null,R:{cb:`fake`},i:{ia:()=>n.path}},e.parent=e}},t}},`/proc/self/fd`)})(),V=i.BindingError=class extends Error{constructor(e){super(e),this.name=`BindingError`}},B.push(0,1,void 0,1,null,1,!0,1,!1,1),i.count_emval_handles=()=>B.length/2-5-gt.length,vt=i.PureVirtualError=_t(`PureVirtualError`);for(var pr=Array(256),mr=0;256>mr;++mr)pr[mr]=String.fromCharCode(mr);yt=pr,i.getInheritedInstanceCount=()=>Object.keys(G).length,i.getLiveInheritedInstances=()=>{var e=[],t;for(t in G)G.hasOwnProperty(t)&&e.push(G[t]);return e},i.flushPendingDeletes=xt,i.setDelayFunction=e=>{St=e,bt.length&&St&&St(xt)},Mt=i.InternalError=class extends Error{constructor(e){super(e),this.name=`InternalError`}},Object.assign(Ht.prototype,{isAliasOf:function(t){if(!((this||e)instanceof Ht&&t instanceof Ht))return!1;var n=(this||e).g.s.h,r=(this||e).g.m;t.g=t.g;var i=t.g.s.h;for(t=t.g.m;n.A;)r=n.ka(r),n=n.A;for(;i.A;)t=i.ka(t),i=i.A;return n===i&&r===t},clone:function(){if((this||e).g.m||Vt(this||e),(this||e).g.fa)return(this||e).g.count.value+=1,this||e;var t=Pt,n=Object,r=n.create,i=Object.getPrototypeOf(this||e),a=(this||e).g;return t=t(r.call(n,i,{g:{value:{count:a.count,ea:a.ea,fa:a.fa,m:a.m,s:a.s,B:a.B,G:a.G}}})),t.g.count.value+=1,t.g.ea=!1,t},delete(){if((this||e).g.m||Vt(this||e),(this||e).g.ea&&!(this||e).g.fa)throw new V(`Object already scheduled for deletion`);Dt(this||e);var t=(this||e).g;--t.count.value,t.count.value===0&&(t.B?t.G.L(t.B):t.s.h.L(t.m)),(this||e).g.fa||((this||e).g.B=void 0,(this||e).g.m=void 0)},isDeleted:function(){return!(this||e).g.m},deleteLater:function(){if((this||e).g.m||Vt(this||e),(this||e).g.ea&&!(this||e).g.fa)throw new V(`Object already scheduled for deletion`);return bt.push(this||e),bt.length===1&&St&&St(xt),(this||e).g.ea=!0,this||e}}),Object.assign(Zt.prototype,{Gb(t){return(this||e).jb&&(t=this.jb(t)),t},Va(t){(this||e).L?.(t)},argPackAdvance:8,readValueFromPointer:Lt,fromWireType:function(t){function n(){return(this||e).ta?Nt((this||e).h.J,{s:(this||e).Tb,m:r,G:this||e,B:t}):Nt((this||e).h.J,{s:this||e,m:t})}var r=this.Gb(t);if(!r)return this.Va(t),null;var i=jt((this||e).h,r);if(i!==void 0)return i.g.count.value===0?(i.g.m=r,i.g.B=t,i.clone()):(i=i.clone(),this.Va(t),i);if(i=(this||e).h.Fb(r),i=At[i],!i)return n.call(this||e);i=(this||e).sa?i.yb:i.pointerType;var a=kt(r,(this||e).h,i.h);return a===null?n.call(this||e):(this||e).ta?Nt(i.h.J,{s:i,m:a,G:this||e,B:t}):Nt(i.h.J,{s:i,m:a})}}),an=i.UnboundTypeError=_t(`UnboundTypeError`);for(var Q,hr=0;32>hr;++hr)ir.push(Array(hr));var gr={__syscall_fcntl64:function(e,t,n){mt=n;try{var r=Ze(e);switch(t){case 0:var i=I();if(0>i)break;for(;Re[i];)i++;return $e(r,i).T;case 1:case 2:return 0;case 3:return r.flags;case 4:return i=I(),r.flags|=i,0;case 12:return i=I(),E[i+0>>1]=2,0;case 13:case 14:return 0}return-28}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return-e.Y}},__syscall_ioctl:function(e,t,n){mt=n;try{var r=Ze(e);switch(t){case 21509:return r.o?0:-59;case 21505:if(!r.o)return-59;if(r.o.S.Nb){e=[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];var i=I();O[i>>2]=25856,O[i+4>>2]=5,O[i+8>>2]=191,O[i+12>>2]=35387;for(var a=0;32>a;a++)w[i+a+17]=e[a]||0}return 0;case 21510:case 21511:case 21512:return r.o?0:-59;case 21506:case 21507:case 21508:if(!r.o)return-59;if(r.o.S.Ob)for(i=I(),e=[],a=0;32>a;a++)e.push(w[i+a+17]);return 0;case 21519:return r.o?(i=I(),O[i>>2]=0):-59;case 21520:return r.o?-28:-59;case 21531:if(i=I(),!r.l.Mb)throw new M(59);return r.l.Mb(r,t,i);case 21523:return r.o?(r.o.S.Pb&&(a=[24,80],i=I(),E[i>>1]=a[0],E[i+2>>1]=a[1]),0):-59;case 21524:return r.o?0:-59;case 21515:return r.o?0:-59;default:return-28}}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return-e.Y}},__syscall_openat:function(e,t,n,r){mt=r;try{t=t?L(T,t):``;var i=t;if(i.charAt(0)===`/`)t=i;else{var a=e===-100?`/`:Ze(e).path;if(i.length==0)throw new M(44);t=ve(a+`/`+i)}var o=r?I():0;return st(t,n,o).T}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return-e.Y}},_abort_js:()=>{P(``)},_embind_create_inheriting_constructor:(t,n,r)=>{t=W(t),n=Et(n,`wrapper`),r=H(r);var i=n.h,a=i.J,o=i.A.J,s=i.A.constructor;return t=ht(t,function(...t){i.A.hb.forEach(function(t){if((this||e)[t]===o[t])throw new vt(`Pure virtual function ${t} must be implemented in JavaScript`)}.bind(this||e)),Object.defineProperty(this||e,\"__parent\",{value:a}),this.__construct(...t)}),a.__construct=function(...t){if((this||e)===a)throw new V(`Pass correct 'this' to __construct`);t=s.implement(this||e,...t),Dt(t);var n=t.g;if(t.notifyOnDestruction(),n.fa=!0,Object.defineProperties(this||e,{g:{value:n}}),Pt(this||e),t=n.m,t=Ct(i,t),G.hasOwnProperty(t))throw new V(`Tried to register registered instance: ${t}`);G[t]=this||e},a.__destruct=function(){if((this||e)===a)throw new V(`Pass correct 'this' to __destruct`);Dt(this||e);var t=(this||e).g.m;if(t=Ct(i,t),G.hasOwnProperty(t))delete G[t];else throw new V(`Tried to unregister unregistered instance: ${t}`)},t.prototype=Object.create(a),Object.assign(t.prototype,r),U(t)},_embind_finalize_value_object:e=>{var t=Ft[e];delete Ft[e];var n=t.Na,r=t.L,i=t.Xa,a=i.map(e=>e.Jb).concat(i.map(e=>e.Wb));K([e],a,e=>{var a={};return i.forEach((t,n)=>{var r=e[n],o=t.Hb,s=t.Ib,c=e[n+i.length],l=t.Vb,u=t.Xb;a[t.Db]={read:e=>r.fromWireType(o(s,e)),write:(e,t)=>{var n=[];l(u,e,c.toWireType(n,t)),It(n)}}}),[{name:t.name,fromWireType:e=>{var t={},n;for(n in a)t[n]=a[n].read(e);return r(e),t},toWireType:(e,t)=>{for(var i in a)if(!(i in t))throw TypeError(`Missing field: \"${i}\"`);var o=n();for(i in a)a[i].write(o,t[i]);return e!==null&&e.push(r,o),o},argPackAdvance:8,readValueFromPointer:Lt,I:r}]})},_embind_register_bigint:()=>{},_embind_register_bool:(e,t,n,r)=>{t=W(t),q(e,{name:t,fromWireType:function(e){return!!e},toWireType:function(e,t){return t?n:r},argPackAdvance:8,readValueFromPointer:function(e){return this.fromWireType(T[e])},I:null})},_embind_register_class:(t,n,r,i,a,o,s,c,l,u,d,f,p)=>{d=W(d),o=J(a,o),c&&=J(s,c),u&&=J(l,u),p=J(f,p);var m=Gt(d);Wt(m,function(){on(`Cannot construct ${d} due to unbound types`,[i])}),K([t,n,r],i?[i]:[],n=>{if(n=n[0],i)var r=n.h,a=r.J;else a=Ht.prototype;n=ht(d,function(...t){if(Object.getPrototypeOf(this||e)!==s)throw new V(`Use 'new' to construct `+d);if(l.X===void 0)throw new V(d+` has no accessible constructor`);var n=l.X[t.length];if(n===void 0)throw new V(`Tried to invoke ctor of ${d} with invalid number of parameters (${t.length}) - expected (${Object.keys(l.X).toString()}) parameters instead!`);return n.apply(this||e,t)});var s=Object.create(a,{constructor:{value:n}});n.prototype=s;var l=new Kt(d,n,s,p,r,o,c,u);if(l.A){var f;(f=l.A).la??(f.la=[]),l.A.la.push(l)}return r=new Zt(d,l,!0,!1,!1),f=new Zt(d+`*`,l,!1,!1,!1),a=new Zt(d+` const*`,l,!1,!0,!1),At[t]={pointerType:f,yb:a},Qt(m,n),[r,f,a]})},_embind_register_class_class_function:(e,t,n,r,i,a,o)=>{var s=ln(n,r);t=W(t),t=un(t),a=J(i,a),K([],[e],e=>{function r(){on(`Cannot call ${i} due to unbound types`,s)}e=e[0];var i=`${e.name}.${t}`;t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]);var c=e.h.constructor;return c[t]===void 0?(r.da=n-1,c[t]=r):(Ut(c,t,i),c[t].v[n-1]=r),K([],s,r=>{if(r=cn(i,[r[0],null].concat(r.slice(1)),null,a,o),c[t].v===void 0?(r.da=n-1,c[t]=r):c[t].v[n-1]=r,e.h.la)for(let n of e.h.la)n.constructor.hasOwnProperty(t)||(n.constructor[t]=r);return[]}),[]})},_embind_register_class_class_property:(e,t,n,r,i,a,o,s)=>{t=W(t),a=J(i,a),K([],[e],e=>{e=e[0];var i=`${e.name}.${t}`,c={get(){on(`Cannot access ${i} due to unbound types`,[n])},enumerable:!0,configurable:!0};return c.set=s?()=>{on(`Cannot access ${i} due to unbound types`,[n])}:()=>{throw new V(`${i} is a read-only property`)},Object.defineProperty(e.h.constructor,t,c),K([],[n],n=>{n=n[0];var i={get(){return n.fromWireType(a(r))},enumerable:!0};return s&&(s=J(o,s),i.set=e=>{var t=[];s(r,n.toWireType(t,e)),It(t)}),Object.defineProperty(e.h.constructor,t,i),[]}),[]})},_embind_register_class_constructor:(e,t,n,r,i,a)=>{var o=ln(t,n);i=J(r,i),K([],[e],e=>{e=e[0];var n=`constructor ${e.name}`;if(e.h.X===void 0&&(e.h.X=[]),e.h.X[t-1]!==void 0)throw new V(`Cannot register multiple constructors with identical number of parameters (${t-1}) for class '${e.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return e.h.X[t-1]=()=>{on(`Cannot construct ${e.name} due to unbound types`,o)},K([],o,r=>(r.splice(1,0,null),e.h.X[t-1]=cn(n,r,null,i,a),[])),[]})},_embind_register_class_function:(e,t,n,r,i,a,o,s)=>{var c=ln(n,r);t=W(t),t=un(t),a=J(i,a),K([],[e],e=>{function r(){on(`Cannot call ${i} due to unbound types`,c)}e=e[0];var i=`${e.name}.${t}`;t.startsWith(`@@`)&&(t=Symbol[t.substring(2)]),s&&e.h.hb.push(t);var l=e.h.J,u=l[t];return u===void 0||u.v===void 0&&u.className!==e.name&&u.da===n-2?(r.da=n-2,r.className=e.name,l[t]=r):(Ut(l,t,i),l[t].v[n-2]=r),K([],c,r=>(r=cn(i,r,e,a,o),l[t].v===void 0?(r.da=n-2,l[t]=r):l[t].v[n-2]=r,[])),[]})},_embind_register_class_property:(t,n,r,i,a,o,s,c,l,u)=>{n=W(n),a=J(i,a),K([],[t],t=>{t=t[0];var i=`${t.name}.${n}`,d={get(){on(`Cannot access ${i} due to unbound types`,[r,s])},enumerable:!0,configurable:!0};return d.set=l?()=>on(`Cannot access ${i} due to unbound types`,[r,s]):()=>{throw new V(i+` is a read-only property`)},Object.defineProperty(t.h.J,n,d),K([],l?[r,s]:[r],r=>{var s=r[0],d={get(){var n=dn(this||e,t,i+` getter`);return s.fromWireType(a(o,n))},enumerable:!0};if(l){l=J(c,l);var f=r[1];d.set=function(n){var r=dn(this||e,t,i+` setter`),a=[];l(u,r,f.toWireType(a,n)),It(a)}}return Object.defineProperty(t.h.J,n,d),[]}),[]})},_embind_register_emval:e=>q(e,pn),_embind_register_enum:(t,n,r,i)=>{function a(){}n=W(n),a.values={},q(t,{name:n,constructor:a,fromWireType:function(t){return(this||e).constructor.values[t]},toWireType:(e,t)=>t.value,argPackAdvance:8,readValueFromPointer:mn(n,r,i),I:null}),Wt(n,a)},_embind_register_enum_value:(e,t,n)=>{var r=Et(e,`enum`);t=W(t),e=r.constructor,r=Object.create(r.constructor.prototype,{value:{value:n},constructor:{value:ht(`${r.name}_${t}`,function(){})}}),e.values[n]=r,e[t]=r},_embind_register_float:(e,t,n)=>{t=W(t),q(e,{name:t,fromWireType:e=>e,toWireType:(e,t)=>t,argPackAdvance:8,readValueFromPointer:gn(t,n),I:null})},_embind_register_function:(e,t,n,r,i,a)=>{var o=ln(t,n);e=W(e),e=un(e),i=J(r,i),Wt(e,function(){on(`Cannot call ${e} due to unbound types`,o)},t-1),K([],o,n=>(Qt(e,cn(e,[n[0],null].concat(n.slice(1)),null,i,a),t-1),[]))},_embind_register_integer:(e,t,n,r,i)=>{if(t=W(t),i===-1&&(i=4294967295),i=e=>e,r===0){var a=32-8*n;i=e=>e<<a>>>a}var o=t.includes(`unsigned`)?function(e,t){return t>>>0}:function(e,t){return t};q(e,{name:t,fromWireType:i,toWireType:o,argPackAdvance:8,readValueFromPointer:_n(t,n,r!==0),I:null})},_embind_register_memory_view:(e,t,n)=>{function r(e){return new i(w.buffer,k[e+4>>2],k[e>>2])}var i=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];n=W(n),q(e,{name:n,fromWireType:r,argPackAdvance:8,readValueFromPointer:r},{Kb:!0})},_embind_register_std_string:(e,t)=>{t=W(t);var n=t===`std::string`;q(e,{name:t,fromWireType:function(e){var t=k[e>>2],r=e+4;if(n)for(var i=r,a=0;a<=t;++a){var o=r+a;if(a==t||T[o]==0){if(i=i?L(T,i,o-i):``,s===void 0)var s=i;else s+=`\\0`,s+=i;i=o+1}}else{for(s=Array(t),a=0;a<t;++a)s[a]=String.fromCharCode(T[r+a]);s=s.join(``)}return _r(e),s},toWireType:function(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var r=typeof t==`string`;if(!(r||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array))throw new V(`Cannot pass non-string to std::string`);var i=n&&r?Ee(t):t.length,a=vr(4+i+1),o=a+4;if(k[a>>2]=i,n&&r)De(t,T,o,i+1);else if(r)for(r=0;r<i;++r){var s=t.charCodeAt(r);if(255<s)throw _r(o),new V(`String has UTF-16 code units that do not fit in 8 bits`);T[o+r]=s}else for(r=0;r<i;++r)T[o+r]=t[r];return e!==null&&e.push(_r,a),a},argPackAdvance:8,readValueFromPointer:Lt,I(e){_r(e)}})},_embind_register_std_wstring:(e,t,n)=>{if(n=W(n),t===2)var r=yn,i=bn,a=xn,o=e=>D[e>>1];else t===4&&(r=Sn,i=Cn,a=wn,o=e=>k[e>>2]);q(e,{name:n,fromWireType:e=>{for(var n=k[e>>2],i,a=e+4,s=0;s<=n;++s){var c=e+4+s*t;(s==n||o(c)==0)&&(a=r(a,c-a),i===void 0?i=a:(i+=`\\0`,i+=a),a=c+t)}return _r(e),i},toWireType:(e,r)=>{if(typeof r!=`string`)throw new V(`Cannot pass non-string to C++ string type ${n}`);var o=a(r),s=vr(4+o+t);return k[s>>2]=o/t,i(r,s+4,o+t),e!==null&&e.push(_r,s),s},argPackAdvance:8,readValueFromPointer:Lt,I(e){_r(e)}})},_embind_register_value_object:(e,t,n,r,i,a)=>{Ft[e]={name:W(t),Na:J(n,r),L:J(i,a),Xa:[]}},_embind_register_value_object_field:(e,t,n,r,i,a,o,s,c,l)=>{Ft[e].Xa.push({Db:W(t),Jb:n,Hb:J(r,i),Ib:a,Wb:o,Vb:J(s,c),Xb:l})},_embind_register_void:(e,t)=>{t=W(t),q(e,{yc:!0,name:t,argPackAdvance:0,fromWireType:()=>{},toWireType:()=>{}})},_emscripten_get_now_is_monotonic:()=>1,_emscripten_memcpy_js:(e,t,n)=>T.copyWithin(e,t,t+n),_emscripten_throw_longjmp:()=>{throw 1/0},_emval_as:(e,t,n)=>(e=H(e),t=Et(t,`emval::as`),Tn(t,n,e)),_emval_call:(e,t,n,r)=>(e=En[e],t=H(t),e(null,t,n,r)),_emval_call_method:(e,t,n,r,i)=>(e=En[e],t=H(t),n=On(n),e(t,t[n],r,i)),_emval_decref:fn,_emval_get_method_caller:(e,t,n)=>{var r=An(e,t),i=r.shift();e--;var a=Array(e);return t=`methodCaller<(${r.map(e=>e.name).join(`, `)}) => ${i.name}>`,kn(ht(t,(t,o,s,c)=>{for(var l=0,u=0;u<e;++u)a[u]=r[u].readValueFromPointer(c+l),l+=r[u].argPackAdvance;return t=n===1?jn(o,a):o.apply(t,a),Tn(i,s,t)}))},_emval_get_property:(e,t)=>(e=H(e),t=H(t),U(e[t])),_emval_incref:e=>{9<e&&(B[e+1]+=1)},_emval_new_array:()=>U([]),_emval_new_cstring:e=>U(On(e)),_emval_new_object:()=>U({}),_emval_run_destructors:e=>{It(H(e)),fn(e)},_emval_set_property:(e,t,n)=>{e=H(e),t=H(t),n=H(n),e[t]=n},_emval_take_value:(e,t)=>(e=Et(e,`_emval_take_value`),e=e.readValueFromPointer(t),U(e)),_gmtime_js:function(e,t,n){e=/* @__PURE__ */ new Date(1e3*(t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN)),O[n>>2]=e.getUTCSeconds(),O[n+4>>2]=e.getUTCMinutes(),O[n+8>>2]=e.getUTCHours(),O[n+12>>2]=e.getUTCDate(),O[n+16>>2]=e.getUTCMonth(),O[n+20>>2]=e.getUTCFullYear()-1900,O[n+24>>2]=e.getUTCDay(),O[n+28>>2]=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},_localtime_js:function(e,t,n){e=/* @__PURE__ */ new Date(1e3*(t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN)),O[n>>2]=e.getSeconds(),O[n+4>>2]=e.getMinutes(),O[n+8>>2]=e.getHours(),O[n+12>>2]=e.getDate(),O[n+16>>2]=e.getMonth(),O[n+20>>2]=e.getFullYear()-1900,O[n+24>>2]=e.getDay(),O[n+28>>2]=(Mn(e.getFullYear())?Nn:Pn)[e.getMonth()]+e.getDate()-1|0,O[n+36>>2]=-(60*e.getTimezoneOffset()),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var r=new Date(e.getFullYear(),0,1).getTimezoneOffset();O[n+32>>2]=(t!=r&&e.getTimezoneOffset()==Math.min(r,t))|0},_tzset_js:(e,t,n,r)=>{var i=(/* @__PURE__ */ new Date()).getFullYear(),a=new Date(i,0,1),o=new Date(i,6,1);i=a.getTimezoneOffset();var s=o.getTimezoneOffset();k[e>>2]=60*Math.max(i,s),O[t>>2]=Number(i!=s),e=e=>e.toLocaleTimeString(void 0,{hour12:!1,timeZoneName:`short`}).split(` `)[1],a=e(a),o=e(o),s<i?(De(a,T,n,17),De(o,T,r,17)):(De(a,T,r,17),De(o,T,n,17))},beginPixelLocalStorageWEBGL:function(e,t,n){(e=X[e].C.za)&&e.beginPixelLocalStorageWEBGL(i.HEAPU32.subarray(n,n+t))},decode_image:function(e,t,n){var r=i.images;r||(r=/* @__PURE__ */ new Map,i.images=r);var a=new Image;r.set(e,a),t=i.HEAP8.subarray(t,t+n),n=new Uint8Array(n),n.set(t),a.src=URL.createObjectURL(new Blob([n],{type:`image/png`})),a.onload=function(){i._setWebImage(e,a.width,a.height)}},delete_image:function(e){var t=i.images;t&&t.get(e)&&t.delete(e)},emscripten_asm_const_int:(e,t,n)=>{Fn.length=0;for(var r;r=T[t++];){var i=r!=105;i&=r!=112,n+=i&&n%8?4:0,Fn.push(r==112?k[n>>2]:r==105?O[n>>2]:ee[n>>3]),n+=i?8:4}return he[e](...Fn)},emscripten_date_now:()=>Date.now(),emscripten_get_now:()=>performance.now(),emscripten_resize_heap:e=>{var t=T.length;if(e>>>=0,2147483648<e)return!1;for(var n=1;4>=n;n*=2){var r=t*(1+.2/n);r=Math.min(r,e+100663296);var i=Math;r=Math.max(e,r);a:{i=(i.min.call(i,2147483648,r+(65536-r%65536)%65536)-S.buffer.byteLength+65535)/65536;try{S.grow(i),te();var a=1;break a}catch(e){}a=void 0}if(a)return!0}return!1},emscripten_webgl_enable_extension:(e,t)=>(e=X[e],t=t?L(T,t):``,t.startsWith(`GL_`)&&(t=t.substr(3)),t==`WEBGL_draw_instanced_base_vertex_base_instance`&&In(Q),t==`WEBGL_multi_draw_instanced_base_vertex_base_instance`&&Ln(Q),t==`WEBGL_multi_draw`&&(Q.Rb=Q.getExtension(`WEBGL_multi_draw`)),!!e.C.getExtension(t)),emscripten_webgl_get_current_context:()=>er?er.handle:0,emscripten_webgl_make_context_current:e=>Qn(e)?0:-5,enable_WEBGL_provoking_vertex:function(e){return e=X[e].C,e.ib=e.getExtension(`WEBGL_provoking_vertex`),!!e.ib},enable_WEBGL_shader_pixel_local_storage_coherent:function(e){e=X[e].C;let t=e.getExtension(`WEBGL_shader_pixel_local_storage`);if(t&&t.isCoherent()){if(t.framebufferTexturePixelLocalStorageWEBGL.length==5)return e.za=t,!0;console.warn(`WEBGL_shader_pixel_local_storage is advertised, but a deprecated version has been detected. Disabling.`)}return!1},endPixelLocalStorageWEBGL:function(e,t,n){(e=X[e].C.za)&&e.endPixelLocalStorageWEBGL(i.HEAPU32.subarray(n,n+t))},environ_get:(e,t)=>{var n=0;return nr().forEach((r,i)=>{var a=t+n;for(i=k[e+4*i>>2]=a,a=0;a<r.length;++a)w[i++]=r.charCodeAt(a);w[i]=0,n+=r.length+1}),0},environ_sizes_get:(e,t)=>{var n=nr();k[e>>2]=n.length;var r=0;return n.forEach(e=>r+=e.length+1),k[t>>2]=r,0},fd_close:function(e){try{var t=Ze(e);if(t.T===null)throw new M(8);t.Ka&&(t.Ka=null);try{t.l.close&&t.l.close(t)}catch(e){throw e}finally{Re[t.T]=null}return t.T=null,0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},fd_read:function(e,t,n,r){try{a:{var i=Ze(e);e=t;for(var a,o=t=0;o<n;o++){var s=k[e>>2],c=k[e+4>>2];e+=8;var l=i,u=a,d=w;if(0>c||0>u)throw new M(28);if(l.T===null||(l.flags&2097155)==1)throw new M(8);if((l.node.mode&61440)==16384)throw new M(31);if(!l.l.read)throw new M(28);var f=u!==void 0;if(!f)u=l.position;else if(!l.seekable)throw new M(70);var p=l.l.read(l,d,s,c,u);f||(l.position+=p);var m=p;if(0>m){var h=-1;break a}if(t+=m,m<c)break;a!==void 0&&(a+=m)}h=t}return k[r>>2]=h,0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},fd_seek:function(e,t,n,r,i){t=n+2097152>>>0<4194305-!!t?(t>>>0)+4294967296*n:NaN;try{if(isNaN(t))return 61;var a=Ze(e);return ct(a,t,r),me=[a.position>>>0,(pe=a.position,1<=+Math.abs(pe)?0<pe?Math.floor(pe/4294967296)>>>0:~~+Math.ceil((pe-+(~~pe>>>0))/4294967296)>>>0:0)],O[i>>2]=me[0],O[i+4>>2]=me[1],a.Ka&&t===0&&r===0&&(a.Ka=null),0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},fd_write:function(e,t,n,r){try{a:{var i=Ze(e);e=t;for(var a,o=t=0;o<n;o++){var s=k[e>>2],c=k[e+4>>2];e+=8;var l=i,u=s,d=c,f=a,p=w;if(0>d||0>f)throw new M(28);if(l.T===null||!(l.flags&2097155))throw new M(8);if((l.node.mode&61440)==16384)throw new M(31);if(!l.l.write)throw new M(28);l.seekable&&l.flags&1024&&ct(l,0,2);var m=f!==void 0;if(!m)f=l.position;else if(!l.seekable)throw new M(70);var h=l.l.write(l,p,u,d,f,void 0);m||(l.position+=h);var g=h;if(0>g){var _=-1;break a}t+=g,a!==void 0&&(a+=g)}_=t}return k[r>>2]=_,0}catch(e){if(ft===void 0||e.name!==`ErrnoError`)throw e;return e.Y}},framebufferPixelLocalClearValuefvWEBGL:function(e,t,n,r,i,a){(e=X[e].C.za)&&e.framebufferPixelLocalClearValuefvWEBGL(t,[n,r,i,a])},framebufferTexturePixelLocalStorageWEBGL:function(e,t,n,r,i,a){(e=X[e].C.za)&&e.framebufferTexturePixelLocalStorageWEBGL(t,Un[n],r,i,a)},glActiveTexture:e=>Q.activeTexture(e),glAttachShader:(e,t)=>{Q.attachShader(Y[e],Wn[t])},glBindBuffer:(e,t)=>{e==35051?Q.Ja=t:e==35052&&(Q.oa=t),Q.bindBuffer(e,Bn[t])},glBindBufferRange:(e,t,n,r,i)=>{Q.bindBufferRange(e,t,Bn[n],r,i)},glBindFramebuffer:(e,t)=>{Q.bindFramebuffer(e,Vn[t])},glBindRenderbuffer:(e,t)=>{Q.bindRenderbuffer(e,Hn[t])},glBindTexture:(e,t)=>{Q.bindTexture(e,Un[t])},glBindVertexArray:e=>{Q.bindVertexArray(Gn[e])},glBlendEquation:e=>Q.blendEquation(e),glBlendFunc:(e,t)=>Q.blendFunc(e,t),glBlitFramebuffer:(e,t,n,r,i,a,o,s,c,l)=>Q.blitFramebuffer(e,t,n,r,i,a,o,s,c,l),glBufferData:(e,t,n,r)=>{n&&t?Q.bufferData(e,T,r,n,t):Q.bufferData(e,t,r)},glBufferSubData:(e,t,n,r)=>{n&&Q.bufferSubData(e,t,T,r,n)},glClear:e=>Q.clear(e),glClearBufferfv:(e,t,n)=>{Q.clearBufferfv(e,t,A,n>>2)},glClearBufferuiv:(e,t,n)=>{Q.clearBufferuiv(e,t,k,n>>2)},glClearColor:(e,t,n,r)=>Q.clearColor(e,t,n,r),glClearDepthf:e=>Q.clearDepth(e),glClearStencil:e=>Q.clearStencil(e),glColorMask:(e,t,n,r)=>{Q.colorMask(!!e,!!t,!!n,!!r)},glCompileShader:e=>{Q.compileShader(Wn[e])},glCompressedTexSubImage2D:(e,t,n,r,i,a,o,s,c)=>{Q.oa||!s?Q.compressedTexSubImage2D(e,t,n,r,i,a,o,s,c):Q.compressedTexSubImage2D(e,t,n,r,i,a,o,T,c,s)},glCreateProgram:()=>{var e=Yn(Y),t=Q.createProgram();return t.name=e,t.wa=t.ua=t.va=0,t.Qa=1,Y[e]=t,e},glCreateShader:e=>{var t=Yn(Wn);return Wn[t]=Q.createShader(e),t},glCullFace:e=>Q.cullFace(e),glDeleteBuffers:(e,t)=>{for(var n=0;n<e;n++){var r=O[t+4*n>>2],i=Bn[r];i&&(Q.deleteBuffer(i),i.name=0,Bn[r]=null,r==Q.Ja&&(Q.Ja=0),r==Q.oa&&(Q.oa=0))}},glDeleteFramebuffers:(e,t)=>{for(var n=0;n<e;++n){var r=O[t+4*n>>2],i=Vn[r];i&&(Q.deleteFramebuffer(i),i.name=0,Vn[r]=null)}},glDeleteProgram:e=>{if(e){var t=Y[e];t?(Q.deleteProgram(t),t.name=0,Y[e]=null):Z||=1281}},glDeleteRenderbuffers:(e,t)=>{for(var n=0;n<e;n++){var r=O[t+4*n>>2],i=Hn[r];i&&(Q.deleteRenderbuffer(i),i.name=0,Hn[r]=null)}},glDeleteShader:e=>{if(e){var t=Wn[e];t?(Q.deleteShader(t),Wn[e]=null):Z||=1281}},glDeleteTextures:(e,t)=>{for(var n=0;n<e;n++){var r=O[t+4*n>>2],i=Un[r];i&&(Q.deleteTexture(i),i.name=0,Un[r]=null)}},glDeleteVertexArrays:(e,t)=>{for(var n=0;n<e;n++){var r=O[t+4*n>>2];Q.deleteVertexArray(Gn[r]),Gn[r]=null}},glDepthFunc:e=>Q.depthFunc(e),glDepthMask:e=>{Q.depthMask(!!e)},glDepthRangef:(e,t)=>Q.depthRange(e,t),glDisable:e=>Q.disable(e),glDrawArrays:(e,t,n)=>{Q.drawArrays(e,t,n)},glDrawArraysInstanced:(e,t,n,r)=>{Q.drawArraysInstanced(e,t,n,r)},glDrawBuffers:(e,t)=>{for(var n=ir[e],r=0;r<e;r++)n[r]=O[t+4*r>>2];Q.drawBuffers(n)},glDrawElements:(e,t,n,r)=>{Q.drawElements(e,t,n,r)},glDrawElementsInstanced:(e,t,n,r,i)=>{Q.drawElementsInstanced(e,t,n,r,i)},glEnable:e=>Q.enable(e),glEnableVertexAttribArray:e=>{Q.enableVertexAttribArray(e)},glFlush:()=>Q.flush(),glFramebufferRenderbuffer:(e,t,n,r)=>{Q.framebufferRenderbuffer(e,t,n,Hn[r])},glFramebufferTexture2D:(e,t,n,r,i)=>{Q.framebufferTexture2D(e,t,n,Un[r],i)},glFrontFace:e=>Q.frontFace(e),glGenBuffers:(e,t)=>{Xn(e,t,`createBuffer`,Bn)},glGenFramebuffers:(e,t)=>{Xn(e,t,`createFramebuffer`,Vn)},glGenRenderbuffers:(e,t)=>{Xn(e,t,`createRenderbuffer`,Hn)},glGenTextures:(e,t)=>{Xn(e,t,`createTexture`,Un)},glGenVertexArrays:(e,t)=>{Xn(e,t,`createVertexArray`,Gn)},glGenerateMipmap:e=>Q.generateMipmap(e),glGetIntegerv:(e,t)=>or(e,t),glGetProgramiv:(e,t,n)=>{if(n)if(e>=zn)Z||=1281;else if(e=Y[e],t==35716)e=Q.getProgramInfoLog(e),e===null&&(e=`(unknown error)`),O[n>>2]=e.length+1;else if(t==35719){if(!e.wa)for(t=0;t<Q.getProgramParameter(e,35718);++t)e.wa=Math.max(e.wa,Q.getActiveUniform(e,t).name.length+1);O[n>>2]=e.wa}else if(t==35722){if(!e.ua)for(t=0;t<Q.getProgramParameter(e,35721);++t)e.ua=Math.max(e.ua,Q.getActiveAttrib(e,t).name.length+1);O[n>>2]=e.ua}else if(t==35381){if(!e.va)for(t=0;t<Q.getProgramParameter(e,35382);++t)e.va=Math.max(e.va,Q.getActiveUniformBlockName(e,t).length+1);O[n>>2]=e.va}else O[n>>2]=Q.getProgramParameter(e,t);else Z||=1281},glGetString:e=>{var t=Kn[e];if(!t){switch(e){case 7939:t=sr(ar().join(` `));break;case 7936:case 7937:case 37445:case 37446:(t=Q.getParameter(e))||(Z||=1280),t=t?sr(t):0;break;case 7938:t=sr(`OpenGL ES 3.0 (${Q.getParameter(7938)})`);break;case 35724:t=Q.getParameter(35724);var n=t.match(/^WebGL GLSL ES ([0-9]\\.[0-9][0-9]?)(?:$| .*)/);n!==null&&(n[1].length==3&&(n[1]+=`0`),t=`OpenGL ES GLSL ES ${n[1]} (${t})`),t=sr(t);break;default:Z||=1280}Kn[e]=t}return t},glGetUniformBlockIndex:(e,t)=>Q.getUniformBlockIndex(Y[e],t?L(T,t):``),glGetUniformLocation:(e,t)=>{if(t=t?L(T,t):``,e=Y[e]){var n=e,r=n.ja,i=n.ob,a;if(!r)for(n.ja=r={},n.nb={},a=0;a<Q.getProgramParameter(n,35718);++a){var o=Q.getActiveUniform(n,a),s=o.name;o=o.size;var c=cr(s);c=0<c?s.slice(0,c):s;var l=n.Qa;for(n.Qa+=o,i[c]=[o,l],s=0;s<o;++s)r[l]=s,n.nb[l++]=c}if(n=e.ja,r=0,i=t,a=cr(t),0<a&&(r=parseInt(t.slice(a+1))>>>0,i=t.slice(0,a)),(i=e.ob[i])&&r<i[0]&&(r+=i[1],n[r]=n[r]||Q.getUniformLocation(e,t)))return r}else Z||=1281;return-1},glInvalidateFramebuffer:(e,t,n)=>{for(var r=ir[t],i=0;i<t;i++)r[i]=O[n+4*i>>2];Q.invalidateFramebuffer(e,r)},glLinkProgram:e=>{e=Y[e],Q.linkProgram(e),e.ja=0,e.ob={}},glPixelStorei:(e,t)=>{e==3317?qn=t:e==3314&&(Jn=t),Q.pixelStorei(e,t)},glReadPixels:(e,t,n,r,i,a,o)=>{if(Q.Ja)Q.readPixels(e,t,n,r,i,a,o);else{var s=lr(a);o>>>=31-Math.clz32(s.BYTES_PER_ELEMENT),Q.readPixels(e,t,n,r,i,a,s,o)}},glRenderbufferStorageMultisample:(e,t,n,r,i)=>Q.renderbufferStorageMultisample(e,t,n,r,i),glScissor:(e,t,n,r)=>Q.scissor(e,t,n,r),glShaderSource:(e,t,n,r)=>{for(var i=``,a=0;a<t;++a){var o=(o=k[n+4*a>>2])?L(T,o,r?k[r+4*a>>2]:void 0):``;i+=o}Q.shaderSource(Wn[e],i)},glStencilFunc:(e,t,n)=>Q.stencilFunc(e,t,n),glStencilFuncSeparate:(e,t,n,r)=>Q.stencilFuncSeparate(e,t,n,r),glStencilMask:e=>Q.stencilMask(e),glStencilOp:(e,t,n)=>Q.stencilOp(e,t,n),glStencilOpSeparate:(e,t,n,r)=>Q.stencilOpSeparate(e,t,n,r),glTexParameteri:(e,t,n)=>Q.texParameteri(e,t,n),glTexStorage2D:(e,t,n,r,i)=>Q.texStorage2D(e,t,n,r,i),glTexStorage3D:(e,t,n,r,i,a)=>Q.texStorage3D(e,t,n,r,i,a),glTexSubImage2D:(e,t,n,r,i,a,o,s,c)=>{if(Q.oa)Q.texSubImage2D(e,t,n,r,i,a,o,s,c);else if(c){var l=lr(s);Q.texSubImage2D(e,t,n,r,i,a,o,s,l,c>>>31-Math.clz32(l.BYTES_PER_ELEMENT))}else{if(c){l=lr(s);var u=a*((Jn||i)*({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[o-6402]||1)*l.BYTES_PER_ELEMENT+qn-1&-qn);c=l.subarray(c>>>31-Math.clz32(l.BYTES_PER_ELEMENT),c+u>>>31-Math.clz32(l.BYTES_PER_ELEMENT))}else c=null;Q.texSubImage2D(e,t,n,r,i,a,o,s,c)}},glUniform1i:(e,t)=>{var n=Q,r=n.uniform1i,i=Q.zb;if(i){var a=i.ja[e];typeof a==`number`&&(i.ja[e]=a=Q.getUniformLocation(i,i.nb[e]+(0<a?`[${a}]`:``))),e=a}else Z||=1282,e=void 0;r.call(n,e,t)},glUniformBlockBinding:(e,t,n)=>{e=Y[e],Q.uniformBlockBinding(e,t,n)},glUseProgram:e=>{e=Y[e],Q.useProgram(e),Q.zb=e},glVertexAttribDivisor:(e,t)=>{Q.vertexAttribDivisor(e,t)},glVertexAttribIPointer:(e,t,n,r,i)=>{Q.vertexAttribIPointer(e,t,n,r,i)},glVertexAttribPointer:(e,t,n,r,i,a)=>{Q.vertexAttribPointer(e,t,n,!!r,i,a)},glViewport:(e,t,n,r)=>Q.viewport(e,t,n,r),invoke_vii:Er,isWindowsBrowser:function(){return-1<navigator.platform.indexOf(`Win`)},provokingVertexWEBGL:function(e,t){(e=X[e].C.ib)&&e.provokingVertexWEBGL(t)},strftime:fr,strftime_l:(e,t,n,r)=>fr(e,t,n,r),upload_image:function(e,t){var n=i.images;n&&(t=n.get(t))&&(e=X[e].C,e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1))},wasm_start_image_decode:function(e,t,n){t=i.HEAP8.subarray(t,t+n),n=new Uint8Array(n),n.set(t),createImageBitmap(new Blob([n])).then(function(t){var n=new OffscreenCanvas(t.width,t.height).getContext(`2d`);n.drawImage(t,0,0),n=n.getImageData(0,0,t.width,t.height);var r=n.data.length,a=i.tb(r);i.dc.set(n.data,a),i.fc(e,t.width,t.height,a,r)}).catch(function(t){t=t.message||`decode failed`;var n=i.zc(t)+1,r=i.tb(n);i.Hc(t,r,n),i.hc(e,r),i.ec(r)})}},$=function(){function e(e){return $=e.exports,S=$.memory,te(),en=$.__indirect_function_table,re.unshift($.__wasm_call_ctors),j--,i.monitorRunDependencies?.(j),j==0&&(oe!==null&&(clearInterval(oe),oe=null),N&&(e=N,N=null,e())),$}var t={env:gr,wasi_snapshot_preview1:gr};if(j++,i.monitorRunDependencies?.(j),i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(e){b(`Module.instantiateWasm callback failed with error: ${e}`),o(e)}return ce||=F(`webgl2_advanced.wasm`)?`webgl2_advanced.wasm`:i.locateFile?i.locateFile(`webgl2_advanced.wasm`,g):g+`webgl2_advanced.wasm`,fe(t,function(t){e(t.instance)}).catch(o),{}}(),_r=e=>(_r=$.free)(e),vr=e=>(vr=$.malloc)(e);i._setWebImage=(e,t,n)=>(i._setWebImage=$.setWebImage)(e,t,n);var yr=e=>(yr=$.__getTypeName)(e);i._wasm_image_decode_complete=(e,t,n,r,a)=>(i._wasm_image_decode_complete=$.wasm_image_decode_complete)(e,t,n,r,a),i._wasm_image_decode_error=(e,t)=>(i._wasm_image_decode_error=$.wasm_image_decode_error)(e,t);var br=i._ma_device__on_notification_unlocked=e=>(br=i._ma_device__on_notification_unlocked=$.ma_device__on_notification_unlocked)(e);i._ma_malloc_emscripten=(e,t)=>(i._ma_malloc_emscripten=$.ma_malloc_emscripten)(e,t),i._ma_free_emscripten=(e,t)=>(i._ma_free_emscripten=$.ma_free_emscripten)(e,t);var xr=i._ma_device_process_pcm_frames_capture__webaudio=(e,t,n)=>(xr=i._ma_device_process_pcm_frames_capture__webaudio=$.ma_device_process_pcm_frames_capture__webaudio)(e,t,n),Sr=i._ma_device_process_pcm_frames_playback__webaudio=(e,t,n)=>(Sr=i._ma_device_process_pcm_frames_playback__webaudio=$.ma_device_process_pcm_frames_playback__webaudio)(e,t,n),Cr=(e,t)=>(Cr=$.setThrew)(e,t),wr=e=>(wr=$._emscripten_stack_restore)(e),Tr=()=>(Tr=$.emscripten_stack_get_current)();i.dynCall_iiiji=(e,t,n,r,a,o)=>(i.dynCall_iiiji=$.dynCall_iiiji)(e,t,n,r,a,o),i.dynCall_iij=(e,t,n,r)=>(i.dynCall_iij=$.dynCall_iij)(e,t,n,r),i.dynCall_iiji=(e,t,n,r,a)=>(i.dynCall_iiji=$.dynCall_iiji)(e,t,n,r,a),i.dynCall_jii=(e,t,n)=>(i.dynCall_jii=$.dynCall_jii)(e,t,n),i.dynCall_vijj=(e,t,n,r,a,o)=>(i.dynCall_vijj=$.dynCall_vijj)(e,t,n,r,a,o),i.dynCall_jiji=(e,t,n,r,a)=>(i.dynCall_jiji=$.dynCall_jiji)(e,t,n,r,a),i.dynCall_viijii=(e,t,n,r,a,o,s)=>(i.dynCall_viijii=$.dynCall_viijii)(e,t,n,r,a,o,s),i.dynCall_iiiiij=(e,t,n,r,a,o,s)=>(i.dynCall_iiiiij=$.dynCall_iiiiij)(e,t,n,r,a,o,s),i.dynCall_iiiiijj=(e,t,n,r,a,o,s,c,l)=>(i.dynCall_iiiiijj=$.dynCall_iiiiijj)(e,t,n,r,a,o,s,c,l),i.dynCall_iiiiiijj=(e,t,n,r,a,o,s,c,l,u)=>(i.dynCall_iiiiiijj=$.dynCall_iiiiiijj)(e,t,n,r,a,o,s,c,l,u);function Er(e,t,n){var r=Tr();try{tn(e)(t,n)}catch(e){if(wr(r),e!==e+0)throw e;Cr(1,0)}}var Dr;N=function e(){Dr||Or(),Dr||(N=e)};function Or(){function e(){if(!Dr&&(Dr=!0,i.calledRun=!0,!C)){if(i.noFSInit||lt||(lt=!0,i.stdin=i.stdin,i.stdout=i.stdout,i.stderr=i.stderr,i.stdin?ut(`stdin`,i.stdin):at(`/dev/tty`,`/dev/stdin`),i.stdout?ut(`stdout`,null,i.stdout):at(`/dev/tty`,`/dev/stdout`),i.stderr?ut(`stderr`,null,i.stderr):at(`/dev/tty1`,`/dev/stderr`),st(`/dev/stdin`,0),st(`/dev/stdout`,1),st(`/dev/stderr`,1)),Ve=!1,ge(re),a(i),i.onRuntimeInitialized&&i.onRuntimeInitialized(),i.postRun)for(typeof i.postRun==`function`&&(i.postRun=[i.postRun]);i.postRun.length;){var e=i.postRun.shift();ie.unshift(e)}ge(ie)}}if(!(0<j)){if(i.preRun)for(typeof i.preRun==`function`&&(i.preRun=[i.preRun]);i.preRun.length;)ae();ge(ne),0<j||(i.setStatus?(i.setStatus(`Running...`),setTimeout(function(){setTimeout(function(){i.setStatus(``)},1),e()},1)):e())}}if(i.preInit)for(typeof i.preInit==`function`&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.pop()();return Or(),r=s,r}})()}),(e=>{e.exports=/* @__PURE__ */ JSON.parse(`{\"name\":\"@rive-app/webgl2\",\"version\":\"2.38.5\",\"description\":\"Rive's webgl2 based web api.\",\"main\":\"rive.js\",\"homepage\":\"https://rive.app\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/rive-app/rive-wasm/tree/master/js\"},\"keywords\":[\"rive\",\"animation\"],\"author\":\"Rive\",\"contributors\":[\"Luigi Rosso <luigi@rive.app> (https://rive.app)\",\"Maxwell Talbot <max@rive.app> (https://rive.app)\",\"Arthur Vivian <arthur@rive.app> (https://rive.app)\",\"Umberto Sonnino <umberto@rive.app> (https://rive.app)\",\"Matthew Sullivan <matt.j.sullivan@gmail.com> (mailto:matt.j.sullivan@gmail.com)\",\"Chris Dalton <chris@rive.app> (https://rive.app)\"],\"license\":\"MIT\",\"files\":[\"rive.js\",\"rive.wasm\",\"rive_fallback.wasm\",\"rive.js.map\",\"rive.d.ts\",\"rive_advanced.mjs.d.ts\",\"runtimeLoader.d.ts\",\"utils\"],\"typings\":\"rive.d.ts\",\"dependencies\":{},\"browser\":{\"fs\":false,\"path\":false}}`)}),((e,t,n)=>{n.r(t),n.d(t,{AudioAssetWrapper:()=>o.AudioAssetWrapper,AudioWrapper:()=>o.AudioWrapper,BLANK_URL:()=>a.BLANK_URL,CustomFileAssetLoaderWrapper:()=>o.CustomFileAssetLoaderWrapper,FileAssetWrapper:()=>o.FileAssetWrapper,FileFinalizer:()=>o.FileFinalizer,FocusSessionState:()=>i.FocusSessionState,FontAssetWrapper:()=>o.FontAssetWrapper,FontWrapper:()=>o.FontWrapper,ImageAssetWrapper:()=>o.ImageAssetWrapper,ImageWrapper:()=>o.ImageWrapper,KeyboardInteractions:()=>i.KeyboardInteractions,RiveFont:()=>s.RiveFont,createFinalization:()=>o.createFinalization,finalizationRegistry:()=>o.finalizationRegistry,registerTouchInteractions:()=>r.registerTouchInteractions,sanitizeUrl:()=>a.sanitizeUrl});var r=n(7),i=n(8),a=n(9),o=n(10),s=n(11)}),((e,t,n)=>{n.r(t),n.d(t,{registerTouchInteractions:()=>o});var r=void 0,i=function(e,t,n){var r,i=[];if(t)for(var a=0;a<e.length;a++){var o=e[a];i.push({clientX:o.clientX,clientY:o.clientY,identifier:o.identifier})}else{var s=n===null?e[0]:(r=Array.from(e).find(function(e){return e.identifier===n}))==null?null:r;s&&i.push({clientX:s.clientX,clientY:s.clientY,identifier:s.identifier})}return i},a=function(e,t,n,r){var a,o=e;return(a=o.changedTouches)!=null&&a.length?(!t&&[`touchstart`,`touchmove`].includes(e.type)&&e.preventDefault(),i(o.changedTouches,n,r)):[{clientX:e.clientX,clientY:e.clientY,identifier:0}]},o=function(e){var t=e.canvas,n=e.artboard,i=e.stateMachines,o=i===void 0?[]:i,s=e.renderer,c=e.rive,l=e.fit,u=e.alignment,d=e.isTouchScrollEnabled,f=d===void 0?!1:d,p=e.dispatchPointerExit,m=p===void 0?!0:p,h=e.enableMultiTouch,g=h===void 0?!1:h,_=e.layoutScaleFactor,v=_===void 0?1:_,y=e.advanceAndDrain;if(!t||!o.length||!s||!c||!n||typeof window>`u`)return null;var b=null,x=!1,S=null,C=function(e){var t;if(x&&e instanceof MouseEvent){e.type==`mouseup`&&(x=!1);return}x=f&&e.type===`touchend`&&b===`touchstart`,b=e.type;var r=e.currentTarget.getBoundingClientRect();if(!g&&e.type===`touchstart`&&S===null){var i=(t=e.changedTouches)==null?void 0:t[0];i&&(S=i.identifier)}var s=a(e,f,g,g?null:S),d=c.computeAlignment(l,u,{minX:0,minY:0,maxX:r.width,maxY:r.height},n.bounds,v),p=new c.Mat2D;switch(d.invert(p),s.forEach(function(e){var t=e.clientX,n=e.clientY;if(!(!t&&!n)){var i=t-r.left,a=n-r.top,o=new c.Vec2D(i,a),s=c.mapXY(p,o),l=s.x(),u=s.y();e.transformedX=l,e.transformedY=u,s.delete(),o.delete()}}),p.delete(),d.delete(),e.type){case`mouseout`:for(var h=function(e){m?s.forEach(function(t){e.pointerExit(t.transformedX,t.transformedY,t.identifier)}):s.forEach(function(t){e.pointerMove(t.transformedX,t.transformedY,t.identifier)})},_=0,C=o;_<C.length;_++){var w=C[_];h(w)}break;case`touchmove`:case`mouseover`:case`mousemove`:for(var T=function(e){s.forEach(function(t){e.pointerMove(t.transformedX,t.transformedY,t.identifier)})},E=0,D=o;E<D.length;E++){var w=D[E];T(w)}break;case`touchstart`:case`mousedown`:for(var O=function(e){s.forEach(function(t){e.pointerDown(t.transformedX,t.transformedY,t.identifier)})},k=0,A=o;k<A.length;k++){var w=A[k];O(w)}y(0);break;case`touchend`:for(var ee=function(e){s.forEach(function(t){e.pointerUp(t.transformedX,t.transformedY,t.identifier),e.pointerExit(t.transformedX,t.transformedY,t.identifier)})},te=0,ne=o;te<ne.length;te++){var w=ne[te];ee(w)}y(0),!g&&s.some(function(e){return e.identifier===S})&&(S=null);break;case`mouseup`:for(var re=function(e){s.forEach(function(t){e.pointerUp(t.transformedX,t.transformedY,t.identifier)})},ie=0,ae=o;ie<ae.length;ie++){var w=ae[ie];re(w)}y(0);break;default:}},w=function(){S=null},T=C.bind(r);return t.addEventListener(`mouseover`,T),t.addEventListener(`mouseout`,T),t.addEventListener(`mousemove`,T),t.addEventListener(`mousedown`,T),t.addEventListener(`mouseup`,T),t.addEventListener(`touchmove`,T,{passive:f}),t.addEventListener(`touchstart`,T,{passive:f}),t.addEventListener(`touchend`,T),t.addEventListener(`touchcancel`,w),function(){t.removeEventListener(`mouseover`,T),t.removeEventListener(`mouseout`,T),t.removeEventListener(`mousemove`,T),t.removeEventListener(`mousedown`,T),t.removeEventListener(`mouseup`,T),t.removeEventListener(`touchmove`,T),t.removeEventListener(`touchstart`,T),t.removeEventListener(`touchend`,T),t.removeEventListener(`touchcancel`,w)}}}),((t,n,r)=>{r.r(n),r.d(n,{FocusSessionState:()=>i,KeyboardInteractions:()=>a});var i;(function(e){e.NotFocused=`notFocused`,e.EntryPending=`entryPending`,e.RiveFocused=`riveFocused`})(i||(i={}));var a=function(){function t(t){var n=t.canvas,r=t.stateMachine,a=t.hasFocusNodes,o=this||e;(this||e).focusSessionState=i.NotFocused,(this||e).onCanvasFocus=function(e){o.hasFocusNodes&&(o.mainSm.focusState().hasFocus||(o.focusSessionState=i.EntryPending,o.isKeyboardDrivenFocus()&&(o.cameFromBeforeCanvas(e.relatedTarget)?o.mainSm.focusNext():o.mainSm.focusPrevious())&&(o.focusSessionState=i.RiveFocused)))},(this||e).onCanvasBlur=function(e){o.focusSessionState=i.NotFocused},(this||e).onKeyDown=function(e){o.focusSessionState!==i.NotFocused&&e.code===`Tab`&&o.hasFocusNodes&&((e.shiftKey?o.mainSm.focusPrevious():o.mainSm.focusNext())?(o.focusSessionState=i.RiveFocused,e.preventDefault()):o.focusSessionState=i.NotFocused)},(this||e).canvas=n,(this||e).mainSm=r,(this||e).hasFocusNodes=a,n.addEventListener(`focus`,(this||e).onCanvasFocus),n.addEventListener(`blur`,(this||e).onCanvasBlur),n.addEventListener(`keydown`,(this||e).onKeyDown)}return t.prototype.setFocusSessionState=function(t){(this||e).focusSessionState=t},t.prototype.notifyRiveFocused=function(){(this||e).focusSessionState=i.RiveFocused},t.prototype.isKeyboardDrivenFocus=function(){try{return(this||e).canvas.matches(`:focus-visible`)}catch(e){return!1}},t.prototype.cameFromBeforeCanvas=function(t){if(!t)return!0;var n=(this||e).canvas.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_PRECEDING?!0:!(n&Node.DOCUMENT_POSITION_FOLLOWING)},t.prototype.cleanup=function(){(this||e).canvas.removeEventListener(`focus`,(this||e).onCanvasFocus),(this||e).canvas.removeEventListener(`blur`,(this||e).onCanvasBlur),(this||e).canvas.removeEventListener(`keydown`,(this||e).onKeyDown)},t}()}),((e,t,n)=>{n.r(t),n.d(t,{BLANK_URL:()=>l,sanitizeUrl:()=>f});var r=/^([^\\w]*)(javascript|data|vbscript)/im,i=/&#(\\w+)(^\\w|;)?/g,a=/&(newline|tab);/gi,o=/[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim,s=/^.+(:|&colon;)/gim,c=[`.`,`/`],l=`about:blank`;function u(e){return c.indexOf(e[0])>-1}function d(e){return e.replace(o,``).replace(i,function(e,t){return String.fromCharCode(t)})}function f(e){if(!e)return l;var t=d(e).replace(a,``).replace(o,``).trim();if(!t)return l;if(u(t))return t;var n=t.match(s);if(!n)return t;var i=n[0];return r.test(i)?l:t}}),((t,n,r)=>{r.r(n),r.d(n,{AudioAssetWrapper:()=>m,AudioWrapper:()=>l,CustomFileAssetLoaderWrapper:()=>d,FileAssetWrapper:()=>f,FileFinalizer:()=>a,FontAssetWrapper:()=>h,FontWrapper:()=>u,ImageAssetWrapper:()=>p,ImageWrapper:()=>c,createFinalization:()=>v,finalizationRegistry:()=>_});var i=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)};return function(n,r){if(typeof r!=`function`&&r!==null)throw TypeError(`Class extends value `+String(r)+` is not a constructor or null`);t(n,r);function i(){(this||e).constructor=n}n.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),a=function(){function t(t){(this||e).selfUnref=!1,(this||e)._file=t}return t.prototype.unref=function(){(this||e)._file&&(this||e)._file.unref()},t}(),o=function(){function t(t){(this||e)._finalizableObject=t}return t.prototype.unref=function(){(this||e)._finalizableObject.unref()},t}(),s=function(){function t(){(this||e).selfUnref=!1}return t.prototype.unref=function(){},t}(),c=function(t){i(n,t);function n(n){var r=t.call(this||e)||this||e;return r._nativeImage=n,r}return Object.defineProperty(n.prototype,\"nativeImage\",{get:function(){return(this||e)._nativeImage},enumerable:!1,configurable:!0}),n.prototype.unref=function(){(this||e).selfUnref&&(this||e)._nativeImage.unref()},n}(s),l=function(t){i(n,t);function n(n){var r=t.call(this||e)||this||e;return r._nativeAudio=n,r}return Object.defineProperty(n.prototype,\"nativeAudio\",{get:function(){return(this||e)._nativeAudio},enumerable:!1,configurable:!0}),n.prototype.unref=function(){(this||e).selfUnref&&(this||e)._nativeAudio.unref()},n}(s),u=function(t){i(n,t);function n(n){var r=t.call(this||e)||this||e;return r._nativeFont=n,r}return Object.defineProperty(n.prototype,\"nativeFont\",{get:function(){return(this||e)._nativeFont},enumerable:!1,configurable:!0}),n.prototype.unref=function(){(this||e).selfUnref&&(this||e)._nativeFont.unref()},n}(s),d=function(){function t(t,n){(this||e)._assetLoaderCallback=n,(this||e).assetLoader=new t.CustomFileAssetLoader({loadContents:(this||e).loadContents.bind(this||e)})}return t.prototype.loadContents=function(e,t){var n;if(e.isImage)n=new p(e);else if(e.isAudio)n=new m(e);else if(e.isFont)n=new h(e);else return!1;return this._assetLoaderCallback(n,t)},t}(),f=function(){function t(t){(this||e)._nativeFileAsset=t}return t.prototype.decode=function(t){(this||e)._nativeFileAsset.decode(t)},Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._nativeFileAsset.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"fileExtension\",{get:function(){return(this||e)._nativeFileAsset.fileExtension},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"uniqueFilename\",{get:function(){return(this||e)._nativeFileAsset.uniqueFilename},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isAudio\",{get:function(){return(this||e)._nativeFileAsset.isAudio},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isImage\",{get:function(){return(this||e)._nativeFileAsset.isImage},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isFont\",{get:function(){return(this||e)._nativeFileAsset.isFont},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"cdnUuid\",{get:function(){return(this||e)._nativeFileAsset.cdnUuid},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"nativeFileAsset\",{get:function(){return(this||e)._nativeFileAsset},enumerable:!1,configurable:!0}),t}(),p=function(t){i(n,t);function n(){return t!==null&&t.apply(this||e,arguments)||this||e}return n.prototype.setRenderImage=function(t){(this||e)._nativeFileAsset.setRenderImage(t.nativeImage)},n}(f),m=function(t){i(n,t);function n(){return t!==null&&t.apply(this||e,arguments)||this||e}return n.prototype.setAudioSource=function(t){(this||e)._nativeFileAsset.setAudioSource(t.nativeAudio)},n}(f),h=function(t){i(n,t);function n(){return t!==null&&t.apply(this||e,arguments)||this||e}return n.prototype.setFont=function(t){(this||e)._nativeFileAsset.setFont(t.nativeFont)},n}(f),g=function(){function e(e){}return e.prototype.register=function(e){e.selfUnref=!0},e.prototype.unregister=function(e){},e}(),_=new(typeof FinalizationRegistry<`u`?FinalizationRegistry:g)(function(e){e==null||e.unref()}),v=function(e,t){var n=new o(t);_.register(e,n)}}),((e,t,n)=>{n.r(t),n.d(t,{RiveFont:()=>i});var r=n(3),i=function(){function e(){}return e.setFallbackFontCallback=function(t){e._fallbackFontCallback=t==null?null:t,e._wireFallbackProc()},e._fontToPtr=function(e){var t;if(e==null)return null;var n=e.nativeFont,r=(t=n==null?void 0:n.ptr)==null?void 0:t.call(n);return r==null?null:r},e._getFallbackPtr=function(t,n){return n<0||n>=t.length?null:e._fontToPtr(t[n])},e._wireFallbackProc=function(){r.RuntimeLoader.getInstance(function(t){var n=e._fallbackFontCallback;n?t.setFallbackFontCallback(function(t,r,i){var a=n(t,i);return a?Array.isArray(a)?e._getFallbackPtr(a,r):r===0?e._fontToPtr(a):null:null}):t.setFallbackFontCallback(null)})},e._fallbackFontCallback=null,e}()})],n={};function r(e){var i=n[e];if(i!==void 0)return i.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{typeof Symbol<`u`&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),Object.defineProperty(e,\"__esModule\",{value:!0})};var i={};return(()=>{r.r(i),r.d(i,{Alignment:()=>m,DataEnum:()=>oe,DataType:()=>ae,DrawOptimizationOptions:()=>h,EventType:()=>T,Fit:()=>p,Layout:()=>g,LoopType:()=>E,Rive:()=>ie,RiveEventType:()=>y,RiveFile:()=>re,RiveFont:()=>a.RiveFont,RuntimeLoader:()=>n.RuntimeLoader,StateMachineInput:()=>v,StateMachineInputType:()=>_,Testing:()=>_e,ViewModel:()=>j,ViewModelInstance:()=>P,ViewModelInstanceArtboard:()=>he,ViewModelInstanceAssetImage:()=>me,ViewModelInstanceBoolean:()=>le,ViewModelInstanceColor:()=>pe,ViewModelInstanceEnum:()=>de,ViewModelInstanceList:()=>fe,ViewModelInstanceNumber:()=>ce,ViewModelInstanceString:()=>se,ViewModelInstanceTrigger:()=>ue,ViewModelInstanceValue:()=>F,decodeAudio:()=>ve,decodeFont:()=>be,decodeImage:()=>ye});var t=r(1),n=r(3),a=r(6),o=function(){var t=function(e,n){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},t(e,n)};return function(n,r){if(typeof r!=`function`&&r!==null)throw TypeError(`Class extends value `+String(r)+` is not a constructor or null`);t(n,r);function i(){(this||e).constructor=n}n.prototype=r===null?Object.create(r):(i.prototype=r.prototype,new i)}}(),s=function(){return s=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},s.apply(this||e,arguments)},c=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||(n=Promise))(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},l=function(t,n){var r={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},i,a,o,s=Object.create((typeof Iterator==`function`?Iterator:Object).prototype);return s.next=c(0),s.throw=c(1),s.return=c(2),typeof Symbol==`function`&&(s[Symbol.iterator]=function(){return this||e}),s;function c(e){return function(t){return l([e,t])}}function l(e){if(i)throw TypeError(`Generator is already executing.`);for(;s&&(s=0,e[0]&&(r=0)),r;)try{if(i=1,a&&(o=e[0]&2?a.return:e[0]?a.throw||((o=a.return)&&o.call(a),0):a.next)&&!(o=o.call(a,e[1])).done)return o;switch(a=0,o&&(e=[e[0]&2,o.value]),e[0]){case 0:case 1:o=e;break;case 4:return r.label++,{value:e[1],done:!1};case 5:r.label++,a=e[1],e=[0];continue;case 7:e=r.ops.pop(),r.trys.pop();continue;default:if((o=r.trys,!(o=o.length>0&&o[o.length-1]))&&(e[0]===6||e[0]===2)){r=0;continue}if(e[0]===3&&(!o||e[1]>o[0]&&e[1]<o[3])){r.label=e[1];break}if(e[0]===6&&r.label<o[1]){r.label=o[1],o=e;break}if(o&&r.label<o[2]){r.label=o[2],r.ops.push(e);break}o[2]&&r.ops.pop(),r.trys.pop();continue}e=n.call(t,r)}catch(t){e=[6,t],a=0}finally{i=o=0}if(e[0]&5)throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}},u=function(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||(a=Array.prototype.slice.call(t,0,r)),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))},d=function(t){o(n,t);function n(){var n=t!==null&&t.apply(this||e,arguments)||this||e;return n.isHandledError=!0,n}return n}(Error),f=function(e){return e&&e.isHandledError?e.message:`Problem loading file; may be corrupt!`},p;(function(e){e.Cover=`cover`,e.Contain=`contain`,e.Fill=`fill`,e.FitWidth=`fitWidth`,e.FitHeight=`fitHeight`,e.None=`none`,e.ScaleDown=`scaleDown`,e.Layout=`layout`})(p||(p={}));var m;(function(e){e.Center=`center`,e.TopLeft=`topLeft`,e.TopCenter=`topCenter`,e.TopRight=`topRight`,e.CenterLeft=`centerLeft`,e.CenterRight=`centerRight`,e.BottomLeft=`bottomLeft`,e.BottomCenter=`bottomCenter`,e.BottomRight=`bottomRight`})(m||(m={}));var h;(function(e){e.AlwaysDraw=`alwaysDraw`,e.DrawOnChanged=`drawOnChanged`})(h||(h={}));var g=function(){function t(t){var n,r,i,a,o,s,c;(this||e).fit=(n=t==null?void 0:t.fit)==null?p.Contain:n,(this||e).alignment=(r=t==null?void 0:t.alignment)==null?m.Center:r,(this||e).layoutScaleFactor=(i=t==null?void 0:t.layoutScaleFactor)==null?1:i,(this||e).minX=(a=t==null?void 0:t.minX)==null?0:a,(this||e).minY=(o=t==null?void 0:t.minY)==null?0:o,(this||e).maxX=(s=t==null?void 0:t.maxX)==null?0:s,(this||e).maxY=(c=t==null?void 0:t.maxY)==null?0:c}return t.new=function(e){var n=e.fit,r=e.alignment,i=e.minX,a=e.minY,o=e.maxX,s=e.maxY;return console.warn(\"This function is deprecated: please use `new Layout({})` instead\"),new t({fit:n,alignment:r,minX:i,minY:a,maxX:o,maxY:s})},t.prototype.copyWith=function(n){var r=n.fit,i=n.alignment,a=n.layoutScaleFactor,o=n.minX,s=n.minY,c=n.maxX,l=n.maxY;return new t({fit:r==null?(this||e).fit:r,alignment:i==null?(this||e).alignment:i,layoutScaleFactor:a==null?(this||e).layoutScaleFactor:a,minX:o==null?(this||e).minX:o,minY:s==null?(this||e).minY:s,maxX:c==null?(this||e).maxX:c,maxY:l==null?(this||e).maxY:l})},t.prototype.runtimeFit=function(t){if((this||e).cachedRuntimeFit)return(this||e).cachedRuntimeFit;var n=(this||e).fit===p.Cover?t.Fit.cover:(this||e).fit===p.Contain?t.Fit.contain:(this||e).fit===p.Fill?t.Fit.fill:(this||e).fit===p.FitWidth?t.Fit.fitWidth:(this||e).fit===p.FitHeight?t.Fit.fitHeight:(this||e).fit===p.ScaleDown?t.Fit.scaleDown:(this||e).fit===p.Layout?t.Fit.layout:t.Fit.none;return(this||e).cachedRuntimeFit=n,n},t.prototype.runtimeAlignment=function(t){if((this||e).cachedRuntimeAlignment)return(this||e).cachedRuntimeAlignment;var n=(this||e).alignment===m.TopLeft?t.Alignment.topLeft:(this||e).alignment===m.TopCenter?t.Alignment.topCenter:(this||e).alignment===m.TopRight?t.Alignment.topRight:(this||e).alignment===m.CenterLeft?t.Alignment.centerLeft:(this||e).alignment===m.CenterRight?t.Alignment.centerRight:(this||e).alignment===m.BottomLeft?t.Alignment.bottomLeft:(this||e).alignment===m.BottomCenter?t.Alignment.bottomCenter:(this||e).alignment===m.BottomRight?t.Alignment.bottomRight:t.Alignment.center;return(this||e).cachedRuntimeAlignment=n,n},t}(),_;(function(e){e[e.Number=56]=`Number`,e[e.Trigger=58]=`Trigger`,e[e.Boolean=59]=`Boolean`})(_||(_={}));var v=function(){function t(t,n){(this||e).type=t,(this||e).runtimeInput=n}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e).runtimeInput.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"value\",{get:function(){return(this||e).runtimeInput.value},set:function(t){(this||e).runtimeInput.value=t},enumerable:!1,configurable:!0}),t.prototype.fire=function(){(this||e).type===_.Trigger&&(this||e).runtimeInput.fire()},t.prototype.delete=function(){(this||e).runtimeInput=null},t}(),y;(function(e){e[e.General=128]=`General`,e[e.OpenUrl=131]=`OpenUrl`})(y||(y={}));var b=function(){function t(t){(this||e).isBindableArtboard=!1,(this||e).isBindableArtboard=t}return t}(),x=function(t){o(n,t);function n(n,r){var i=t.call(this||e,!1)||this||e;return i.nativeArtboard=n,i.file=r,i}return n}(b),S=function(t){o(n,t);function n(n){var r=t.call(this||e,!0)||this||e;return r.selfUnref=!1,r.nativeArtboard=n,r}return Object.defineProperty(n.prototype,\"viewModel\",{set:function(t){(this||e).nativeViewModel=t.nativeInstance},enumerable:!1,configurable:!0}),n.prototype.destroy=function(){var t;(this||e).selfUnref&&((this||e).nativeArtboard.unref(),(t=(this||e).nativeViewModel)==null||t.unref())},n}(b),C=function(){function t(t,n,r,i){(this||e).stateMachine=t,(this||e).playing=r,(this||e).artboard=i,(this||e).inputs=[],(this||e).instance=new n.StateMachineInstance(t,i),this.initInputs(n),(this||e).hasFocusNodes=(this||e).instance.hasFocusNodes()}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e).stateMachine.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"statesChanged\",{get:function(){for(var t=[],n=0;n<(this||e).instance.stateChangedCount();n++)t.push((this||e).instance.stateChangedNameByIndex(n));return t},enumerable:!1,configurable:!0}),t.prototype.advance=function(t){(this||e).instance.advance(t)},t.prototype.advanceAndApply=function(t){(this||e).instance.advanceAndApply(t)},t.prototype.reportedEventCount=function(){return(this||e).instance.reportedEventCount()},t.prototype.reportedEventAt=function(t){return(this||e).instance.reportedEventAt(t)},t.prototype.initInputs=function(t){for(var n=0;n<(this||e).instance.inputCount();n++){var r=(this||e).instance.input(n);(this||e).inputs.push(this.mapRuntimeInput(r,t))}},t.prototype.mapRuntimeInput=function(e,t){if(e.type===t.SMIInput.bool)return new v(_.Boolean,e.asBool());if(e.type===t.SMIInput.number)return new v(_.Number,e.asNumber());if(e.type===t.SMIInput.trigger)return new v(_.Trigger,e.asTrigger())},t.prototype.cleanup=function(){(this||e).inputs.forEach(function(e){e.delete()}),(this||e).inputs.length=0,(this||e).instance.delete()},t.prototype.bindViewModelInstance=function(t){t.runtimeInstance!=null&&(this||e).instance.bindViewModelInstance(t.runtimeInstance)},t.prototype.focusState=function(){return(this||e).instance.focusState()},t.prototype.clearFocus=function(){(this||e).instance.clearFocus()},t}(),w=function(){function n(t,n,r,i,a){i===void 0&&(i=[]),a===void 0&&(a=[]),(this||e).runtime=t,(this||e).artboard=n,(this||e).eventManager=r,(this||e).animations=i,(this||e).stateMachines=a}return n.prototype.add=function(n,r,i){if(i===void 0&&(i=!0),n=I(n),n.length===0)(this||e).animations.forEach(function(e){return e.playing=r}),(this||e).stateMachines.forEach(function(e){return e.playing=r});else for(var a=(this||e).animations.map(function(e){return e.name}),o=(this||e).stateMachines.map(function(e){return e.name}),s=0;s<n.length;s++){var c=a.indexOf(n[s]),l=o.indexOf(n[s]);if(c>=0||l>=0)c>=0?(this||e).animations[c].playing=r:(this||e).stateMachines[l].playing=r;else{var u=(this||e).artboard.animationByName(n[s]);if(u){var d=new t.Animation(u,(this||e).artboard,(this||e).runtime,r);d.advance(0),d.apply(1),(this||e).animations.push(d)}else{var f=(this||e).artboard.stateMachineByName(n[s]);if(f){var p=new C(f,(this||e).runtime,r,(this||e).artboard);(this||e).stateMachines.push(p)}}}}return i&&(r?(this||e).eventManager.fire({type:T.Play,data:(this||e).playing}):(this||e).eventManager.fire({type:T.Pause,data:(this||e).paused})),r?(this||e).playing:(this||e).paused},n.prototype.initLinearAnimations=function(n,r,i){i===void 0&&(i=!1);for(var a=(this||e).animations.map(function(e){return e.name}),o=0;o<n.length;o++){var s=a.indexOf(n[o]);if(s>=0)(this||e).animations[s].playing=r;else{var c=(this||e).artboard.animationByName(n[o]);if(c){var l=new t.Animation(c,(this||e).artboard,(this||e).runtime,r);l.advance(0),l.apply(1),(this||e).animations.push(l)}else if(i)throw new d(`State Machine with name ${n[o]} not found`);else console.error(`Animation with name ${n[o]} not found.`)}}},n.prototype.initStateMachines=function(t,n){for(var r=(this||e).stateMachines.map(function(e){return e.name}),i=0;i<t.length;i++){var a=r.indexOf(t[i]);if(a>=0)(this||e).stateMachines[a].playing=n;else{var o=(this||e).artboard.stateMachineByName(t[i]);if(o){var s=new C(o,(this||e).runtime,n,(this||e).artboard);(this||e).stateMachines.push(s)}else console.warn(`State Machine with name ${t[i]} not found. Falling back to find an animation with the same name.`),this.initLinearAnimations([t[i]],n,!0)}}},n.prototype.play=function(e){return this.add(e,!0)},n.prototype.advanceIfPaused=function(){(this||e).stateMachines.forEach(function(e){e.playing||e.advanceAndApply(0)})},n.prototype.pause=function(e){return this.add(e,!1)},n.prototype.scrub=function(t,n){var r=(this||e).animations.filter(function(e){return t.includes(e.name)});return r.forEach(function(e){return e.scrubTo=n}),r.map(function(e){return e.name})},Object.defineProperty(n.prototype,\"playing\",{get:function(){return(this||e).animations.filter(function(e){return e.playing}).map(function(e){return e.name}).concat((this||e).stateMachines.filter(function(e){return e.playing}).map(function(e){return e.name}))},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"paused\",{get:function(){return(this||e).animations.filter(function(e){return!e.playing}).map(function(e){return e.name}).concat((this||e).stateMachines.filter(function(e){return!e.playing}).map(function(e){return e.name}))},enumerable:!1,configurable:!0}),n.prototype.stop=function(t){var n=this||e;t=I(t);var r=[];if(t.length===0)r=(this||e).animations.map(function(e){return e.name}).concat((this||e).stateMachines.map(function(e){return e.name})),(this||e).animations.forEach(function(e){return e.cleanup()}),(this||e).stateMachines.forEach(function(e){return e.cleanup()}),(this||e).animations.splice(0,(this||e).animations.length),(this||e).stateMachines.splice(0,(this||e).stateMachines.length);else{var i=(this||e).animations.filter(function(e){return t.includes(e.name)});i.forEach(function(e){e.cleanup(),n.animations.splice(n.animations.indexOf(e),1)});var a=(this||e).stateMachines.filter(function(e){return t.includes(e.name)});a.forEach(function(e){e.cleanup(),n.stateMachines.splice(n.stateMachines.indexOf(e),1)}),r=i.map(function(e){return e.name}).concat(a.map(function(e){return e.name}))}return(this||e).eventManager.fire({type:T.Stop,data:r}),r},Object.defineProperty(n.prototype,\"isPlaying\",{get:function(){return(this||e).animations.reduce(function(e,t){return e||t.playing},!1)||(this||e).stateMachines.reduce(function(e,t){return e||t.playing},!1)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"isPaused\",{get:function(){return!(this||e).isPlaying&&((this||e).animations.length>0||(this||e).stateMachines.length>0)},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"isStopped\",{get:function(){return(this||e).animations.length===0&&(this||e).stateMachines.length===0},enumerable:!1,configurable:!0}),n.prototype.atLeastOne=function(t,n){n===void 0&&(n=!0);var r;return(this||e).animations.length===0&&(this||e).stateMachines.length===0&&((this||e).artboard.animationCount()>0?this.add([r=(this||e).artboard.animationByIndex(0).name],t,n):(this||e).artboard.stateMachineCount()>0&&this.add([r=(this||e).artboard.stateMachineByIndex(0).name],t,n)),r},n.prototype.handleLooping=function(){for(var t=0,n=(this||e).animations.filter(function(e){return e.playing});t<n.length;t++){var r=n[t];r.loopValue===0&&r.loopCount?(r.loopCount=0,this.stop(r.name)):r.loopValue===1&&r.loopCount?((this||e).eventManager.fire({type:T.Loop,data:{animation:r.name,type:E.Loop}}),r.loopCount=0):r.loopValue===2&&r.loopCount>1&&((this||e).eventManager.fire({type:T.Loop,data:{animation:r.name,type:E.PingPong}}),r.loopCount=0)}},n.prototype.handleStateChanges=function(){for(var t=[],n=0,r=(this||e).stateMachines.filter(function(e){return e.playing});n<r.length;n++){var i=r[n];t.push.apply(t,i.statesChanged)}t.length>0&&(this||e).eventManager.fire({type:T.StateChange,data:t})},n.prototype.handleAdvancing=function(t){(this||e).eventManager.fire({type:T.Advance,data:t})},n}(),T;(function(e){e.Load=`load`,e.LoadError=`loaderror`,e.Play=`play`,e.Pause=`pause`,e.Stop=`stop`,e.Loop=`loop`,e.Draw=`draw`,e.Advance=`advance`,e.StateChange=`statechange`,e.RiveEvent=`riveevent`,e.AudioStatusChange=`audiostatuschange`})(T||(T={}));var E;(function(e){e.OneShot=`oneshot`,e.Loop=`loop`,e.PingPong=`pingpong`})(E||(E={}));var D=function(){function t(t){t===void 0&&(t=[]),(this||e).listeners=t}return t.prototype.getListeners=function(t){return(this||e).listeners.filter(function(e){return e.type===t})},t.prototype.add=function(t){(this||e).listeners.includes(t)||(this||e).listeners.push(t)},t.prototype.remove=function(t){for(var n=0;n<(this||e).listeners.length;n++){var r=(this||e).listeners[n];if(r.type===t.type&&r.callback===t.callback){(this||e).listeners.splice(n,1);break}}},t.prototype.removeAll=function(t){var n=this||e;t?(this||e).listeners.filter(function(e){return e.type===t}).forEach(function(e){return n.remove(e)}):(this||e).listeners.splice(0,(this||e).listeners.length)},t.prototype.fire=function(e){this.getListeners(e.type).forEach(function(t){return t.callback(e)})},t}(),O=function(){function t(t){(this||e).eventManager=t,(this||e).queue=[]}return t.prototype.add=function(t){(this||e).queue.push(t)},t.prototype.process=function(){for(;(this||e).queue.length>0;){var t=(this||e).queue.shift();t!=null&&t.action&&t.action(),t!=null&&t.event&&(this||e).eventManager.fire(t.event)}},t}(),k;(function(e){e[e.AVAILABLE=0]=`AVAILABLE`,e[e.UNAVAILABLE=1]=`UNAVAILABLE`})(k||(k={}));var A=new(function(t){o(n,t);function n(){var n=t!==null&&t.apply(this||e,arguments)||this||e;return n._started=!1,n._enabled=!1,n._status=k.UNAVAILABLE,n}return n.prototype.delay=function(t){return c(this||e,void 0,void 0,function(){return l(this||e,function(e){return[2,new Promise(function(e){return setTimeout(e,t)})]})})},n.prototype.timeout=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(e){return[2,new Promise(function(e,t){return setTimeout(t,50)})]})})},n.prototype.reportToListeners=function(){this.fire({type:T.AudioStatusChange}),this.removeAll()},n.prototype.enableAudio=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(t){return(this||e)._enabled||((this||e)._enabled=!0,(this||e)._status=k.AVAILABLE,this.reportToListeners()),[2]})})},n.prototype.testAudio=function(){return c(this||e,void 0,void 0,function(){var t;return l(this||e,function(n){switch(n.label){case 0:if(!((this||e)._status===k.UNAVAILABLE&&(this||e)._audioContext!==null))return[3,4];n.label=1;case 1:return n.trys.push([1,3,,4]),[4,Promise.race([(this||e)._audioContext.resume(),this.timeout()])];case 2:return n.sent(),this.enableAudio(),[3,4];case 3:return t=n.sent(),[3,4];case 4:return[2]}})})},n.prototype._establishAudio=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(t){switch(t.label){case 0:return(this||e)._started?[3,5]:((this||e)._started=!0,typeof window>`u`?(this.enableAudio(),[3,5]):[3,1]);case 1:(this||e)._audioContext=new AudioContext,this.listenForUserAction(),t.label=2;case 2:return(this||e)._status===k.UNAVAILABLE?[4,this.testAudio()]:[3,5];case 3:return t.sent(),[4,this.delay(1e3)];case 4:return t.sent(),[3,2];case 5:return[2]}})})},n.prototype.listenForUserAction=function(){var t=this||e,n=function(){return c(t,void 0,void 0,function(){return l(this||e,function(e){return this.enableAudio(),[2]})})};document.addEventListener(`pointerdown`,n,{once:!0})},n.prototype.establishAudio=function(){return c(this||e,void 0,void 0,function(){return l(this||e,function(e){return this._establishAudio(),[2]})})},Object.defineProperty(n.prototype,\"systemVolume\",{get:function(){return(this||e)._status===k.UNAVAILABLE?(this.testAudio(),0):1},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"status\",{get:function(){return(this||e)._status},enumerable:!1,configurable:!0}),n}(D)),ee=function(){function e(){}return e.prototype.observe=function(){},e.prototype.unobserve=function(){},e.prototype.disconnect=function(){},e}(),te=globalThis.ResizeObserver||ee,ne=new(function(){function t(){var t=this||e;(this||e)._elementsMap=/* @__PURE__ */ new Map,(this||e)._onObservedEntry=function(e){var n=t._elementsMap.get(e.target);n===null?t._resizeObserver.unobserve(e.target):n.onResize(e.target.clientWidth==0||e.target.clientHeight==0)},(this||e)._onObserved=function(e){e.forEach(t._onObservedEntry)},(this||e)._resizeObserver=new te((this||e)._onObserved)}return t.prototype.add=function(t,n){var r={onResize:n,element:t};return(this||e)._elementsMap.set(t,r),(this||e)._resizeObserver.observe(t),r},t.prototype.remove=function(t){(this||e)._resizeObserver.unobserve(t.element),(this||e)._elementsMap.delete(t.element)},t}()),re=function(){function t(t){(this||e).enableRiveAssetCDN=!0,(this||e).enablePerfMarks=!1,(this||e).referenceCount=0,(this||e).destroyed=!1,(this||e).selfUnref=!1,(this||e).bindableArtboards=[],(this||e).src=t.src,(this||e).buffer=t.buffer,t.assetLoader&&((this||e).assetLoader=t.assetLoader),(this||e).enableRiveAssetCDN=typeof t.enableRiveAssetCDN==`boolean`?t.enableRiveAssetCDN:!0,(this||e).enablePerfMarks=!!t.enablePerfMarks,(this||e).enablePerfMarks&&(n.RuntimeLoader.enablePerfMarks=!0),(this||e).eventManager=new D,t.onLoad&&this.on(T.Load,t.onLoad),t.onLoadError&&this.on(T.LoadError,t.onLoadError)}return t.prototype.releaseFile=function(){var t;(this||e).selfUnref&&((t=(this||e).file)==null||t.unref()),(this||e).file=null},t.prototype.releaseBindableArtboards=function(){(this||e).bindableArtboards.forEach(function(e){return e.destroy()})},t.prototype.initData=function(){return c(this||e,void 0,void 0,function(){var n,r,i,o,s,c;return l(this||e,function(l){switch(l.label){case 0:if(!((this||e).src&&!(this||e).buffer))return[3,4];l.label=1;case 1:return l.trys.push([1,3,,4]),n=this||e,[4,ge((this||e).src)];case 2:return n.buffer=l.sent(),[3,4];case 3:throw r=l.sent(),r instanceof Error?r:new d(t.fileLoadErrorMessage);case 4:return(this||e).destroyed?[2]:((this||e).assetLoader&&(o=new a.CustomFileAssetLoaderWrapper((this||e).runtime,(this||e).assetLoader),i=o.assetLoader),(this||e).enablePerfMarks&&performance.mark(`rive:file-load:start`),s=this||e,[4,(this||e).runtime.load(new Uint8Array((this||e).buffer),i,(this||e).enableRiveAssetCDN)]);case 5:return s.file=l.sent(),(this||e).enablePerfMarks&&(performance.mark(`rive:file-load:end`),performance.measure(`rive:file-load`,`rive:file-load:start`,`rive:file-load:end`)),c=new a.FileFinalizer((this||e).file),a.finalizationRegistry.register(this||e,c),(this||e).destroyed?(this.releaseFile(),[2]):((this||e).file===null?this.fireLoadError(t.fileLoadErrorMessage):(this||e).eventManager.fire({type:T.Load,data:this||e}),[2])}})})},t.prototype.loadRiveFileBytes=function(){return c(this||e,void 0,void 0,function(){var t;return l(this||e,function(n){return(this||e).enablePerfMarks&&performance.mark(`rive:fetch-riv:start`),t=(this||e).src?ge((this||e).src):Promise.resolve((this||e).buffer),(this||e).enablePerfMarks&&(this||e).src&&t.then(function(){performance.mark(`rive:fetch-riv:end`),performance.measure(`rive:fetch-riv`,`rive:fetch-riv:start`,`rive:fetch-riv:end`)}),[2,t]})})},t.prototype.loadRuntime=function(){return c(this||e,void 0,void 0,function(){var t;return l(this||e,function(r){return(this||e).enablePerfMarks&&performance.mark(`rive:await-wasm:start`),t=n.RuntimeLoader.awaitInstance(),(this||e).enablePerfMarks&&t.then(function(){performance.mark(`rive:await-wasm:end`),performance.measure(`rive:await-wasm`,`rive:await-wasm:start`,`rive:await-wasm:end`)}),[2,t]})})},t.prototype.init=function(){return c(this||e,void 0,void 0,function(){var n,r,i,a;return l(this||e,function(o){switch(o.label){case 0:if(!(this||e).src&&!(this||e).buffer)return this.fireLoadError(t.missingErrorMessage),[2];o.label=1;case 1:return o.trys.push([1,4,,5]),[4,Promise.all([this.loadRiveFileBytes(),this.loadRuntime()])];case 2:return n=o.sent(),r=n[0],i=n[1],(this||e).destroyed?[2]:((this||e).buffer=r,(this||e).runtime=i,(this||e).enablePerfMarks&&performance.mark(`rive:init-data:start`),[4,this.initData()]);case 3:return o.sent(),(this||e).enablePerfMarks&&(performance.mark(`rive:init-data:end`),performance.measure(`rive:init-data`,`rive:init-data:start`,`rive:init-data:end`)),[3,5];case 4:return a=o.sent(),this.fireLoadError(a instanceof Error?a.message:t.fileLoadErrorMessage),[3,5];case 5:return[2]}})})},t.prototype.fireLoadError=function(t){throw(this||e).eventManager.fire({type:T.LoadError,data:t}),new d(t)},t.prototype.on=function(t,n){(this||e).eventManager.add({type:t,callback:n})},t.prototype.off=function(t,n){(this||e).eventManager.remove({type:t,callback:n})},t.prototype.cleanup=function(){--(this||e).referenceCount,(this||e).referenceCount<=0&&(this.removeAllRiveEventListeners(),this.releaseFile(),this.releaseBindableArtboards(),(this||e).destroyed=!0)},t.prototype.removeAllRiveEventListeners=function(t){(this||e).eventManager.removeAll(t)},t.prototype.getInstance=function(){if((this||e).file!==null)return(this||e).referenceCount+=1,(this||e).file},t.prototype.destroyIfUnused=function(){(this||e).referenceCount<=0&&this.cleanup()},t.prototype.createBindableArtboard=function(t){if(t!=null){var n=new S(t);return(0,a.createFinalization)(n,n.nativeArtboard),(this||e).bindableArtboards.push(n),n}return null},t.prototype.getArtboard=function(t){var n=(this||e).file.artboardByName(t);if(n!=null)return new x(n,this||e)},t.prototype.getBindableArtboard=function(t){var n=(this||e).file.bindableArtboardByName(t);return this.createBindableArtboard(n)},t.prototype.getDefaultBindableArtboard=function(){var t=(this||e).file.bindableArtboardDefault();return this.createBindableArtboard(t)},t.prototype.internalBindableArtboardFromArtboard=function(t){var n=(this||e).file.internalBindableArtboardFromArtboard(t);return this.createBindableArtboard(n)},t.prototype.viewModelByName=function(t){var n=(this||e).file.viewModelByName(t);return n===null?null:new j(n)},t.missingErrorMessage=`Rive source file or data buffer required`,t.fileLoadErrorMessage=`The file failed to load`,t}(),ie=function(){function t(t){var r=this||e,i,a,o;(this||e).loaded=!1,(this||e).destroyed=!1,(this||e)._observed=null,(this||e).readyForPlaying=!1,(this||e).artboard=null,(this||e).eventCleanup=null,(this||e)._keyboardInteractions=null,(this||e).shouldDisableRiveListeners=!1,(this||e).automaticallyHandleEvents=!1,(this||e).dispatchPointerExit=!0,(this||e).enableMultiTouch=!1,(this||e).enableRiveAssetCDN=!0,(this||e)._volume=1,(this||e)._artboardWidth=void 0,(this||e)._artboardHeight=void 0,(this||e)._devicePixelRatioUsed=1,(this||e)._hasZeroSize=!1,(this||e)._needsRedraw=!1,(this||e)._currentCanvasWidth=0,(this||e)._currentCanvasHeight=0,(this||e)._audioEventListener=null,(this||e)._boundDraw=null,(this||e)._pageVisibilityHandler=null,(this||e)._explicitlyStoppedRendering=!1,(this||e)._viewModelInstance=null,(this||e)._dataEnums=null,(this||e)._tabIndex=null,(this||e)._prevHasFocus=!1,(this||e)._focusOptions={allowFocusInterrupt:!1},(this||e).drawOptimization=h.DrawOnChanged,(this||e).enablePerfMarks=!1,(this||e).durations=[],(this||e).frameTimes=[],(this||e).frameCount=0,(this||e).isTouchScrollEnabled=!1,(this||e).onCanvasResize=function(e){var t=r._hasZeroSize!==e;r._hasZeroSize=e,e?(!r._layout.maxX||!r._layout.maxY)&&r.resizeToCanvas():t&&r.resizeDrawingSurfaceToCanvas()},(this||e).frameRequestId=null,(this||e).renderSecondTimer=0,(this||e)._boundDraw=(this||e).draw.bind(this||e),typeof document<`u`&&((this||e)._pageVisibilityHandler=(this||e)._onPageVisibilityChange.bind(this||e),document.addEventListener(`visibilitychange`,(this||e)._pageVisibilityHandler)),(this||e).canvas=t.canvas,t.canvas.constructor===HTMLCanvasElement&&((this||e)._observed=ne.add((this||e).canvas,(this||e).onCanvasResize)),(this||e)._currentCanvasWidth=(this||e).canvas.width,(this||e)._currentCanvasHeight=(this||e).canvas.height,(this||e).src=t.src,(this||e).buffer=t.buffer,(this||e).riveFile=t.riveFile,(this||e).layout=(i=t.layout)==null?new g:i,(this||e).shouldDisableRiveListeners=!!t.shouldDisableRiveListeners,(this||e).isTouchScrollEnabled=!!t.isTouchScrollEnabled,(this||e).automaticallyHandleEvents=!!t.automaticallyHandleEvents,(this||e).dispatchPointerExit=t.dispatchPointerExit===!1?t.dispatchPointerExit:(this||e).dispatchPointerExit,(this||e).enableMultiTouch=!!t.enableMultiTouch,(this||e).drawOptimization=(a=t.drawingOptions)==null?(this||e).drawOptimization:a,(this||e).enableRiveAssetCDN=t.enableRiveAssetCDN===void 0?!0:t.enableRiveAssetCDN,(this||e).enablePerfMarks=!!t.enablePerfMarks,(this||e).enablePerfMarks&&(n.RuntimeLoader.enablePerfMarks=!0),(this||e)._focusOptions=(o=t.focusOptions)==null?(this||e)._focusOptions:o,(this||e).eventManager=new D,t.onLoad&&this.on(T.Load,t.onLoad),t.onLoadError&&this.on(T.LoadError,t.onLoadError),t.onPlay&&this.on(T.Play,t.onPlay),t.onPause&&this.on(T.Pause,t.onPause),t.onStop&&this.on(T.Stop,t.onStop),t.onLoop&&this.on(T.Loop,t.onLoop),t.onStateChange&&this.on(T.StateChange,t.onStateChange),t.onAdvance&&this.on(T.Advance,t.onAdvance),t.onload&&!t.onLoad&&this.on(T.Load,t.onload),t.onloaderror&&!t.onLoadError&&this.on(T.LoadError,t.onloaderror),t.onplay&&!t.onPlay&&this.on(T.Play,t.onplay),t.onpause&&!t.onPause&&this.on(T.Pause,t.onpause),t.onstop&&!t.onStop&&this.on(T.Stop,t.onstop),t.onloop&&!t.onLoop&&this.on(T.Loop,t.onloop),t.onstatechange&&!t.onStateChange&&this.on(T.StateChange,t.onstatechange),t.assetLoader&&((this||e).assetLoader=t.assetLoader),(this||e).taskQueue=new O((this||e).eventManager),this.init({src:(this||e).src,buffer:(this||e).buffer,riveFile:(this||e).riveFile,autoplay:t.autoplay,autoBind:t.autoBind,animations:t.animations,stateMachines:t.stateMachines,artboard:t.artboard,useOffscreenRenderer:t.useOffscreenRenderer,tabIndex:t.tabIndex})}return Object.defineProperty(t.prototype,\"viewModelCount\",{get:function(){return(this||e).file.viewModelCount()},enumerable:!1,configurable:!0}),t.new=function(e){return console.warn(\"This function is deprecated: please use `new Rive({})` instead\"),new t(e)},t.prototype.onSystemAudioChanged=function(){(this||e).volume=(this||e)._volume},t.prototype.init=function(r){var i=this||e,a=r.src,o=r.buffer,s=r.riveFile,c=r.animations,l=r.stateMachines,u=r.artboard,f=r.autoplay,p=f===void 0?!1:f,m=r.useOffscreenRenderer,h=m===void 0?!1:m,g=r.autoBind,_=g===void 0?!1:g,v=r.tabIndex;if(!(this||e).destroyed){if((this||e).src=a,(this||e).buffer=o,(this||e).riveFile=s,(this||e)._tabIndex=v==null?null:v,!(this||e).src&&!(this||e).buffer&&!(this||e).riveFile)throw new d(t.missingErrorMessage);var y=I(c),b=I(l);(this||e).loaded=!1,(this||e).readyForPlaying=!1,n.RuntimeLoader.awaitInstance().then(function(e){if(!i.destroyed){i.runtime=e,i.removeRiveListeners(),i.deleteRiveRenderer(),i.enablePerfMarks&&performance.mark(`rive:make-renderer:start`);try{if(i.renderer=i.runtime.makeRenderer(i.canvas,h),!i.renderer)throw Error(`Renderer is null, cannot render Rive on the canvas.`)}catch(e){throw console.error(e),new d(`Unable to create the renderer, your environment may not support WebGL. Try the @rive-app/canvas runtime as an alternative.`)}i.enablePerfMarks&&(performance.mark(`rive:make-renderer:end`),performance.measure(`rive:make-renderer`,`rive:make-renderer:start`,`rive:make-renderer:end`)),i.canvas.width||i.canvas.height||i.resizeDrawingSurfaceToCanvas(),i.initData(u,y,b,p,_).then(function(e){if(e)return i.setupRiveListeners()}).catch(function(e){console.error(e)})}}).catch(function(e){i.eventManager.fire({type:T.LoadError,data:e.message})})}},t.prototype.setupRiveListeners=function(t){var n=this||e;if((this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions(),!(this||e).shouldDisableRiveListeners){var r=(this||e).animator.stateMachines.filter(function(e){return e.playing}),i=r.filter(function(e){return n.runtime.hasListeners(e.instance)}).map(function(e){return e.instance}),o=(this||e).isTouchScrollEnabled,s=(this||e).dispatchPointerExit,c=(this||e).enableMultiTouch;t&&`isTouchScrollEnabled`in t&&(o=t.isTouchScrollEnabled),(this||e).eventCleanup=(0,a.registerTouchInteractions)({canvas:(this||e).canvas,artboard:(this||e).artboard,stateMachines:i,renderer:(this||e).renderer,rive:(this||e).runtime,fit:(this||e)._layout.runtimeFit((this||e).runtime),alignment:(this||e)._layout.runtimeAlignment((this||e).runtime),isTouchScrollEnabled:o,dispatchPointerExit:s,enableMultiTouch:c,layoutScaleFactor:(this||e)._layout.layoutScaleFactor,advanceAndDrain:(this||e).advanceAndReportChanges.bind(this||e)});var l=r.filter(function(e){return e.hasFocusNodes});if(l.length){var u=(this||e).canvas.tabIndex;(u===-1||isNaN(u))&&((this||e).canvas.tabIndex=(this||e)._tabIndex===null?0:(this||e)._tabIndex),typeof window<`u`&&((this||e)._keyboardInteractions=new a.KeyboardInteractions({canvas:(this||e).canvas,stateMachine:l[0].instance,hasFocusNodes:!0}))}}},t.prototype.cleanupKeyboardInteractions=function(){(this||e)._keyboardInteractions&&((this||e)._keyboardInteractions.cleanup(),(this||e)._keyboardInteractions=null)},t.prototype.removeRiveListeners=function(){(this||e).eventCleanup&&(this.eventCleanup(),(this||e).eventCleanup=null),this.cleanupKeyboardInteractions()},t.prototype.initializeAudio=function(){var t=this||e,n;A.status==k.UNAVAILABLE&&((this||e).file.hasAudio||(n=(this||e).artboard)!=null&&n.hasAudio&&(this||e)._audioEventListener===null)&&((this||e)._audioEventListener={type:T.AudioStatusChange,callback:function(){return t.onSystemAudioChanged()}},A.add((this||e)._audioEventListener),A.establishAudio())},t.prototype.initArtboardSize=function(){(this||e).artboard&&((this||e)._artboardWidth=(this||e).artboard.width=(this||e)._artboardWidth||(this||e).artboard.width,(this||e)._artboardHeight=(this||e).artboard.height=(this||e)._artboardHeight||(this||e).artboard.height)},t.prototype.initData=function(t,n,r,i,a){return c(this||e,void 0,void 0,function(){var o,s,c,u;return l(this||e,function(l){switch(l.label){case 0:return l.trys.push([0,3,,4]),(this||e).riveFile==null?(o=new re({src:(this||e).src,buffer:(this||e).buffer,enableRiveAssetCDN:(this||e).enableRiveAssetCDN,assetLoader:(this||e).assetLoader,enablePerfMarks:(this||e).enablePerfMarks}),(this||e).riveFile=o,[4,o.init()]):[3,2];case 1:if(l.sent(),(this||e).destroyed)return o.destroyIfUnused(),[2,!1];l.label=2;case 2:(this||e).file=(this||e).riveFile.getInstance(),this.initArtboard(t,n,r,i,a),this.initArtboardSize(),this.initializeAudio();try{(this||e).loaded=!0,(this||e).eventManager.fire({type:T.Load,data:(u=(this||e).src)==null?`buffer`:u})}catch(e){console.error(e)}return(this||e).animator.advanceIfPaused(),(this||e).readyForPlaying=!0,(this||e).taskQueue.process(),this.drawFrame(),[2,!0];case 3:return s=l.sent(),c=f(s),(this||e).eventManager.fire({type:T.LoadError,data:c}),[2,Promise.reject(c)];case 4:return[2]}})})},t.prototype.initArtboard=function(t,n,r,i,o){if((this||e).file){var s=t?(this||e).file.artboardByName(t):(this||e).file.defaultArtboard();if(!s)throw new d(`Invalid artboard name or no default artboard`);(this||e).artboard=s,s.volume=(this||e)._volume*A.systemVolume,(this||e).animator=new w((this||e).runtime,(this||e).artboard,(this||e).eventManager);var c;if(n.length>0||r.length>0?(c=n.concat(r),(this||e).animator.initLinearAnimations(n,i),(this||e).animator.initStateMachines(r,i)):c=[(this||e).animator.atLeastOne(i,!1)],(this||e).taskQueue.add({event:{type:i?T.Play:T.Pause,data:c}}),o){var l=(this||e).file.defaultArtboardViewModel(s);if(l!==null){var u=l.defaultInstance();if(u!==null){var f=new P(u,null);(0,a.createFinalization)(f,f.runtimeInstance),this.bindViewModelInstance(f)}}}}},t.prototype.drawFrame=function(){var t,n;(t=document==null?void 0:document.timeline)!=null&&t.currentTime?(this||e).loaded&&(this||e).artboard&&!(this||e).frameRequestId&&(this._boundDraw(document.timeline.currentTime),(n=(this||e).runtime)==null||n.resolveAnimationFrame()):this.scheduleRendering()},t.prototype._canvasSizeChanged=function(){var t=!1;return(this||e).canvas&&((this||e).canvas.width!==(this||e)._currentCanvasWidth&&((this||e)._currentCanvasWidth=(this||e).canvas.width,t=!0),(this||e).canvas.height!==(this||e)._currentCanvasHeight&&((this||e)._currentCanvasHeight=(this||e).canvas.height,t=!0)),t},t.prototype.pollFocusState=function(){if(!(this||e)._keyboardInteractions){(this||e)._prevHasFocus=!1;return}var t=(this||e).animator.stateMachines.find(function(e){return e.playing&&e.hasFocusNodes});if(!t){(this||e)._prevHasFocus=!1;return}if((this||e).canvas instanceof HTMLCanvasElement){if(t.focusState().hasFocus){(this||e)._keyboardInteractions.notifyRiveFocused(),(this||e)._prevHasFocus||((this||e).canvas!==document.activeElement&&(this||e)._focusOptions.allowFocusInterrupt&&(this||e).canvas.focus(),(this||e)._prevHasFocus=!0);return}(this||e)._prevHasFocus=!1,(this||e)._keyboardInteractions.focusSessionState===a.FocusSessionState.RiveFocused&&(this||e)._keyboardInteractions.setFocusSessionState(a.FocusSessionState.NotFocused)}},t.prototype.advanceAndReportChanges=function(t){for(var n,r=(this||e).animator.animations.filter(function(e){return e.playing||e.needsScrub}).sort(function(e){return e.needsScrub?-1:1}),i=0,o=r;i<o.length;i++){var s=o[i];s.advance(t),s.instance.didLoop&&(s.loopCount+=1),s.apply(1)}for(var c=(this||e).animator.stateMachines.filter(function(e){return e.playing}),l=(this||e).enablePerfMarks&&(this||e).frameCount<3?(this||e).frameCount:-1,u=0,d=c;u<d.length;u++){var f=d[u],p=f.reportedEventCount();if(p)for(var m=0;m<p;m++){var h=f.reportedEventAt(m);if(h)if(h.type===y.OpenUrl){if((this||e).eventManager.fire({type:T.RiveEvent,data:h}),(this||e).automaticallyHandleEvents){var g=document.createElement(`a`),_=h,v=_.url,b=_.target,x=(0,a.sanitizeUrl)(v);v&&g.setAttribute(`href`,x),b&&g.setAttribute(`target`,b),x&&x!==a.BLANK_URL&&g.click()}}else (this||e).eventManager.fire({type:T.RiveEvent,data:h})}l>=0&&performance.mark(`rive:sm-advance:start:f${l}`),f.advanceAndApply(t),l>=0&&(performance.mark(`rive:sm-advance:end:f${l}`),performance.measure(`rive:sm-advance:f${l}`,`rive:sm-advance:start:f${l}`,`rive:sm-advance:end:f${l}`))}(this||e).animator.stateMachines.length==0&&(this||e).artboard.advance(t),(this||e).animator.handleLooping(),(this||e).animator.handleStateChanges(),(this||e).animator.handleAdvancing(t),this.pollFocusState(),(n=(this||e)._viewModelInstance)==null||n.handleCallbacks()},t.prototype.draw=function(t,n){(this||e).frameRequestId=null;var r=performance.now(),i=(this||e).enablePerfMarks&&(this||e).frameCount<3?(this||e).frameCount:-1;(this||e).lastRenderTime||((this||e).lastRenderTime=t),(this||e).renderSecondTimer+=t-(this||e).lastRenderTime,(this||e).renderSecondTimer>5e3&&((this||e).renderSecondTimer=0,n==null||n());var a=(t-(this||e).lastRenderTime)/1e3;(this||e).lastRenderTime=t,this.advanceAndReportChanges(a);var o=(this||e).renderer;(this||e)._hasZeroSize||((this||e).drawOptimization==h.AlwaysDraw||(this||e).artboard.didChange()||(this||e)._needsRedraw||this._canvasSizeChanged())&&(o.clear(),o.save(),i>=0&&performance.mark(`rive:align-renderer:start:f${i}`),this.alignRenderer(),i>=0&&(performance.mark(`rive:align-renderer:end:f${i}`),performance.measure(`rive:align-renderer:f${i}`,`rive:align-renderer:start:f${i}`,`rive:align-renderer:end:f${i}`)),i>=0&&performance.mark(`rive:artboard-draw:start:f${i}`),(this||e).artboard.draw(o),i>=0&&(performance.mark(`rive:artboard-draw:end:f${i}`),performance.measure(`rive:artboard-draw:f${i}`,`rive:artboard-draw:start:f${i}`,`rive:artboard-draw:end:f${i}`)),o.restore(),i>=0&&performance.mark(`rive:renderer-flush:start:f${i}`),o.flush(),i>=0&&(performance.mark(`rive:renderer-flush:end:f${i}`),performance.measure(`rive:renderer-flush:f${i}`,`rive:renderer-flush:start:f${i}`,`rive:renderer-flush:end:f${i}`)),(this||e)._needsRedraw=!1),(this||e).frameCount++;var s=performance.now();for((this||e).frameTimes.push(s),(this||e).durations.push(s-r);(this||e).frameTimes[0]<=s-1e3;)(this||e).frameTimes.shift(),(this||e).durations.shift();(this||e).animator.isPlaying?this.scheduleRendering():((this||e).animator.isPaused||(this||e).animator.isStopped)&&((this||e).lastRenderTime=0)},t.prototype.alignRenderer=function(){var t=this||e,n=t.renderer,r=t.runtime,i=t._layout,a=t.artboard;n.align(i.runtimeFit(r),i.runtimeAlignment(r),{minX:i.minX,minY:i.minY,maxX:i.maxX,maxY:i.maxY},a.bounds,(this||e)._devicePixelRatioUsed*i.layoutScaleFactor)},Object.defineProperty(t.prototype,\"fps\",{get:function(){return(this||e).durations.length},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"frameTime\",{get:function(){return(this||e).durations.length===0?0:((this||e).durations.reduce(function(e,t){return e+t},0)/(this||e).durations.length).toFixed(4)},enumerable:!1,configurable:!0}),t.prototype.cleanup=function(){var t,n,r,i;(this||e).destroyed=!0,this.stopRendering(),(n=(t=(this||e).renderer)==null?void 0:t.bindContext)==null||n.call(t),this.cleanupInstances(),(this||e)._observed!==null&&ne.remove((this||e)._observed),this.removeRiveListeners(),(this||e).file&&((r=(this||e).riveFile)==null||r.cleanup(),(this||e).file=null),(this||e).riveFile=null,this.deleteRiveRenderer(),(this||e)._audioEventListener!==null&&(A.remove((this||e)._audioEventListener),(this||e)._audioEventListener=null),(this||e)._pageVisibilityHandler&&(document.removeEventListener(`visibilitychange`,(this||e)._pageVisibilityHandler),(this||e)._pageVisibilityHandler=null),(i=(this||e)._viewModelInstance)==null||i.cleanup(),(this||e)._viewModelInstance=null,(this||e)._dataEnums=null},t.prototype.deleteRiveRenderer=function(){var t;(t=(this||e).renderer)==null||t.delete(),(this||e).renderer=null},t.prototype.cleanupInstances=function(){(this||e).eventCleanup!==null&&this.eventCleanup(),this.cleanupKeyboardInteractions(),this.stop(),(this||e).artboard&&((this||e).artboard.delete(),(this||e).artboard=null)},t.prototype.retrieveTextRun=function(t){var n;if(!t){console.warn(`No text run name provided`);return}if(!(this||e).artboard){console.warn(`Tried to access text run, but the Artboard is null`);return}var r=(this||e).artboard.textRun(t);if(!r){console.warn(`Could not access a text run with name '${t}' in the '${(n=(this||e).artboard)==null?void 0:n.name}' Artboard. Note that you must rename a text run node in the Rive editor to make it queryable at runtime.`);return}return r},t.prototype.getTextRunValue=function(e){var t=this.retrieveTextRun(e);return t?t.text:void 0},t.prototype.setTextRunValue=function(e,t){var n=this.retrieveTextRun(e);n&&(n.text=t)},t.prototype.play=function(t,n){var r=this||e;if(t=I(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return r.play(t,n)}});return}(this||e).animator.play(t),(this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions(),this.setupRiveListeners(),this.startRendering()},t.prototype.pause=function(t){var n=this||e;if(t=I(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return n.pause(t)}});return}(this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions(),(this||e).animator.pause(t)},t.prototype.scrub=function(t,n){var r=this||e;if(t=I(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return r.scrub(t,n)}});return}(this||e).animator.scrub(t,n||0),this.drawFrame()},t.prototype.stop=function(t){var n=this||e;if(t=I(t),!(this||e).readyForPlaying){(this||e).taskQueue.add({action:function(){return n.stop(t)}});return}(this||e).animator&&(this||e).animator.stop(t),(this||e).eventCleanup&&this.eventCleanup(),this.cleanupKeyboardInteractions()},t.prototype.reset=function(t){var n,r,i=t==null?void 0:t.artboard,a=I(t==null?void 0:t.animations),o=I(t==null?void 0:t.stateMachines),s=(n=t==null?void 0:t.autoplay)==null?!1:n,c=(r=t==null?void 0:t.autoBind)==null?!1:r;this.cleanupInstances(),this.initArtboard(i,a,o,s,c),(this||e).taskQueue.process()},t.prototype.load=function(t){(this||e).file=null,this.stop(),this.init(t)},Object.defineProperty(t.prototype,\"layout\",{get:function(){return(this||e)._layout},set:function(t){(this||e)._layout=t,(!t.maxX||!t.maxY)&&this.resizeToCanvas(),(this||e).loaded&&!(this||e).animator.isPlaying&&this.drawFrame()},enumerable:!1,configurable:!0}),t.prototype.resizeToCanvas=function(){(this||e)._layout=(this||e).layout.copyWith({minX:0,minY:0,maxX:(this||e).canvas.width,maxY:(this||e).canvas.height})},t.prototype.resizeDrawingSurfaceToCanvas=function(t){if((this||e).canvas instanceof HTMLCanvasElement&&window){var n=(this||e).canvas.getBoundingClientRect(),r=n.width,i=n.height,a=t||window.devicePixelRatio||1;if((this||e).devicePixelRatioUsed=a,(this||e).canvas.width=a*r,(this||e).canvas.height=a*i,(this||e)._needsRedraw=!0,this.resizeToCanvas(),this.drawFrame(),(this||e).layout.fit===p.Layout){var o=(this||e)._layout.layoutScaleFactor;(this||e).artboard.width=r/o,(this||e).artboard.height=i/o}}},Object.defineProperty(t.prototype,\"source\",{get:function(){return(this||e).src},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"activeArtboard\",{get:function(){return(this||e).artboard?(this||e).artboard.name:``},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"animationNames\",{get:function(){if(!(this||e).loaded||!(this||e).artboard)return[];for(var t=[],n=0;n<(this||e).artboard.animationCount();n++)t.push((this||e).artboard.animationByIndex(n).name);return t},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"stateMachineNames\",{get:function(){if(!(this||e).loaded||!(this||e).artboard)return[];for(var t=[],n=0;n<(this||e).artboard.stateMachineCount();n++)t.push((this||e).artboard.stateMachineByIndex(n).name);return t},enumerable:!1,configurable:!0}),t.prototype.stateMachineInputs=function(t){if((this||e).loaded){var n=(this||e).animator.stateMachines.find(function(e){return e.name===t});return n==null?void 0:n.inputs}},t.prototype.retrieveInputAtPath=function(t,n){if(!t){console.warn(`No input name provided for path '${n}'`);return}if(!(this||e).artboard){console.warn(`Tried to access input: '${t}', at path: '${n}', but the Artboard is null`);return}var r=(this||e).artboard.inputByPath(t,n);if(!r){console.warn(`Could not access an input with name: '${t}', at path:'${n}'`);return}return r},t.prototype.setBooleanStateAtPath=function(e,t,n){var r=this.retrieveInputAtPath(e,n);r&&(r.type===_.Boolean?r.asBool().value=t:console.warn(`Input with name: '${e}', at path:'${n}' is not a boolean`))},t.prototype.setNumberStateAtPath=function(e,t,n){var r=this.retrieveInputAtPath(e,n);r&&(r.type===_.Number?r.asNumber().value=t:console.warn(`Input with name: '${e}', at path:'${n}' is not a number`))},t.prototype.fireStateAtPath=function(e,t){var n=this.retrieveInputAtPath(e,t);n&&(n.type===_.Trigger?n.asTrigger().fire():console.warn(`Input with name: '${e}', at path:'${t}' is not a trigger`))},t.prototype.retrieveTextAtPath=function(t,n){if(!t){console.warn(`No text name provided for path '${n}'`);return}if(!n){console.warn(`No path provided for text '${t}'`);return}if(!(this||e).artboard){console.warn(`Tried to access text: '${t}', at path: '${n}', but the Artboard is null`);return}var r=(this||e).artboard.textByPath(t,n);if(!r){console.warn(`Could not access text with name: '${t}', at path:'${n}'`);return}return r},t.prototype.getTextRunValueAtPath=function(e,t){var n=this.retrieveTextAtPath(e,t);if(!n){console.warn(`Could not get text with name: '${e}', at path:'${t}'`);return}return n.text},t.prototype.setTextRunValueAtPath=function(e,t,n){var r=this.retrieveTextAtPath(e,n);if(!r){console.warn(`Could not set text with name: '${e}', at path:'${n}'`);return}r.text=t},Object.defineProperty(t.prototype,\"playingStateMachineNames\",{get:function(){return(this||e).loaded?(this||e).animator.stateMachines.filter(function(e){return e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"playingAnimationNames\",{get:function(){return(this||e).loaded?(this||e).animator.animations.filter(function(e){return e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"pausedAnimationNames\",{get:function(){return(this||e).loaded?(this||e).animator.animations.filter(function(e){return!e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"pausedStateMachineNames\",{get:function(){return(this||e).loaded?(this||e).animator.stateMachines.filter(function(e){return!e.playing}).map(function(e){return e.name}):[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isPlaying\",{get:function(){return(this||e).animator.isPlaying},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isPaused\",{get:function(){return(this||e).animator.isPaused},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"isStopped\",{get:function(){var t,n;return(n=(t=(this||e).animator)==null?void 0:t.isStopped)==null?!0:n},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"bounds\",{get:function(){return(this||e).artboard?(this||e).artboard.bounds:void 0},enumerable:!1,configurable:!0}),t.prototype.on=function(t,n){(this||e).eventManager.add({type:t,callback:n})},t.prototype.off=function(t,n){(this||e).eventManager.remove({type:t,callback:n})},t.prototype.unsubscribe=function(e,t){console.warn(\"This function is deprecated: please use `off()` instead.\"),this.off(e,t)},t.prototype.removeAllRiveEventListeners=function(t){(this||e).eventManager.removeAll(t)},t.prototype.unsubscribeAll=function(e){console.warn(\"This function is deprecated: please use `removeAllRiveEventListeners()` instead.\"),this.removeAllRiveEventListeners(e)},t.prototype.stopRendering=function(){(this||e)._explicitlyStoppedRendering=!0,(this||e).loaded&&(this||e).frameRequestId&&((this||e).runtime.cancelAnimationFrame?(this||e).runtime.cancelAnimationFrame((this||e).frameRequestId):cancelAnimationFrame((this||e).frameRequestId),(this||e).frameRequestId=null)},t.prototype.startRendering=function(){(this||e)._explicitlyStoppedRendering=!1,this.drawFrame()},t.prototype.scheduleRendering=function(){(this||e).loaded&&(this||e).artboard&&!(this||e).frameRequestId&&((this||e).runtime.requestAnimationFrame?(this||e).frameRequestId=(this||e).runtime.requestAnimationFrame((this||e)._boundDraw):(this||e).frameRequestId=requestAnimationFrame((this||e)._boundDraw))},t.prototype._onPageVisibilityChange=function(){var t,n;document.hidden?((this||e).frameRequestId!==null&&((t=(this||e).runtime)!=null&&t.cancelAnimationFrame?(this||e).runtime.cancelAnimationFrame((this||e).frameRequestId):cancelAnimationFrame((this||e).frameRequestId),(this||e).frameRequestId=null),(this||e).lastRenderTime=0):(n=(this||e).animator)!=null&&n.isPlaying&&!(this||e)._explicitlyStoppedRendering&&this.scheduleRendering()},t.prototype.enableFPSCounter=function(t){(this||e).runtime.enableFPSCounter(t)},t.prototype.disableFPSCounter=function(){(this||e).runtime.disableFPSCounter()},Object.defineProperty(t.prototype,\"contents\",{get:function(){if((this||e).loaded){for(var t={artboards:[]},n=0;n<(this||e).file.artboardCount();n++){for(var r=(this||e).file.artboardByIndex(n),i={name:r.name,animations:[],stateMachines:[]},a=0;a<r.animationCount();a++){var o=r.animationByIndex(a);i.animations.push(o.name)}for(var s=0;s<r.stateMachineCount();s++){for(var c=r.stateMachineByIndex(s),l=c.name,u=new(this||e).runtime.StateMachineInstance(c,r),d=[],f=0;f<u.inputCount();f++){var p=u.input(f);d.push({name:p.name,type:p.type})}i.stateMachines.push({name:l,inputs:d})}t.artboards.push(i)}return t}},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"volume\",{get:function(){return(this||e).artboard&&(this||e).artboard.volume!==(this||e)._volume&&((this||e)._volume=(this||e).artboard.volume),(this||e)._volume},set:function(t){(this||e)._volume=t,(this||e).artboard&&((this||e).artboard.volume=t*A.systemVolume)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"artboardWidth\",{get:function(){var t;return(this||e).artboard?(this||e).artboard.width:(t=(this||e)._artboardWidth)==null?0:t},set:function(t){(this||e)._artboardWidth=t,(this||e).artboard&&((this||e).artboard.width=t)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"artboardHeight\",{get:function(){var t;return(this||e).artboard?(this||e).artboard.height:(t=(this||e)._artboardHeight)==null?0:t},set:function(t){(this||e)._artboardHeight=t,(this||e).artboard&&((this||e).artboard.height=t)},enumerable:!1,configurable:!0}),t.prototype.resetArtboardSize=function(){(this||e).artboard?((this||e).artboard.resetArtboardSize(),(this||e)._artboardWidth=(this||e).artboard.width,(this||e)._artboardHeight=(this||e).artboard.height):((this||e)._artboardWidth=void 0,(this||e)._artboardHeight=void 0)},Object.defineProperty(t.prototype,\"devicePixelRatioUsed\",{get:function(){return(this||e)._devicePixelRatioUsed},set:function(t){(this||e)._devicePixelRatioUsed=t},enumerable:!1,configurable:!0}),t.prototype.bindViewModelInstance=function(t){var n;(this||e).artboard&&!(this||e).destroyed&&t&&t.runtimeInstance&&(t.internalIncrementReferenceCount(),(n=(this||e)._viewModelInstance)==null||n.cleanup(),(this||e)._viewModelInstance=t,(this||e).animator.stateMachines.length>0?(this||e).animator.stateMachines.forEach(function(e){return e.bindViewModelInstance(t)}):(this||e).artboard.bindViewModelInstance(t.runtimeInstance))},Object.defineProperty(t.prototype,\"viewModelInstance\",{get:function(){return(this||e)._viewModelInstance},enumerable:!1,configurable:!0}),t.prototype.viewModelByIndex=function(t){var n=(this||e).file.viewModelByIndex(t);return n===null?null:new j(n)},t.prototype.viewModelByName=function(t){var n;return(n=(this||e).riveFile)==null?void 0:n.viewModelByName(t)},t.prototype.enums=function(){if((this||e)._dataEnums===null){var t=(this||e).file.enums();(this||e)._dataEnums=t.map(function(e){return new oe(e)})}return(this||e)._dataEnums},t.prototype.defaultViewModel=function(){if((this||e).artboard){var t=(this||e).file.defaultArtboardViewModel((this||e).artboard);if(t)return new j(t)}return null},t.prototype.getArtboard=function(t){var n,r;return(r=(n=(this||e).riveFile)==null?void 0:n.getArtboard(t))==null?null:r},t.prototype.getBindableArtboard=function(t){var n,r;return(r=(n=(this||e).riveFile)==null?void 0:n.getBindableArtboard(t))==null?null:r},t.prototype.getDefaultBindableArtboard=function(){var t,n;return(n=(t=(this||e).riveFile)==null?void 0:t.getDefaultBindableArtboard())==null?null:n},t.prototype.clearFocus=function(){(this||e).animator.stateMachines.filter(function(e){return e.playing&&e.hasFocusNodes}).forEach(function(e){return e.clearFocus()})},t.missingErrorMessage=`Rive source file or data buffer required`,t.cleanupErrorMessage=`Attempt to use file after calling cleanup.`,t}(),ae;(function(e){e.none=`none`,e.string=`string`,e.number=`number`,e.boolean=`boolean`,e.color=`color`,e.list=`list`,e.enumType=`enumType`,e.trigger=`trigger`,e.viewModel=`viewModel`,e.integer=`integer`,e.listIndex=`listIndex`,e.image=`image`,e.artboard=`artboard`})(ae||(ae={}));var j=function(){function t(t){(this||e)._viewModel=t}return Object.defineProperty(t.prototype,\"instanceCount\",{get:function(){return(this||e)._viewModel.instanceCount},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._viewModel.name},enumerable:!1,configurable:!0}),t.prototype.instanceByIndex=function(t){var n=(this||e)._viewModel.instanceByIndex(t);if(n!==null){var r=new P(n,null);return(0,a.createFinalization)(r,n),r}return null},t.prototype.instanceByName=function(t){var n=(this||e)._viewModel.instanceByName(t);if(n!==null){var r=new P(n,null);return(0,a.createFinalization)(r,n),r}return null},t.prototype.defaultInstance=function(){var t=(this||e)._viewModel.defaultInstance();if(t!==null){var n=new P(t,null);return(0,a.createFinalization)(n,t),n}return null},t.prototype.instance=function(){var t=(this||e)._viewModel.instance();if(t!==null){var n=new P(t,null);return(0,a.createFinalization)(n,t),n}return null},Object.defineProperty(t.prototype,\"properties\",{get:function(){return(this||e)._viewModel.getProperties()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"instanceNames\",{get:function(){return(this||e)._viewModel.getInstanceNames()},enumerable:!1,configurable:!0}),t}(),oe=function(){function t(t){(this||e)._dataEnum=t}return Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._dataEnum.name},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"values\",{get:function(){return(this||e)._dataEnum.values},enumerable:!1,configurable:!0}),t}(),N;(function(e){e.Number=`number`,e.String=`string`,e.Boolean=`boolean`,e.Color=`color`,e.Trigger=`trigger`,e.Enum=`enum`,e.List=`list`,e.Image=`image`,e.Artboard=`artboard`})(N||(N={}));var P=function(){function t(t,n){(this||e)._parents=[],(this||e)._children=[],(this||e)._viewModelInstances=/* @__PURE__ */ new Map,(this||e)._propertiesWithCallbacks=[],(this||e)._referenceCount=0,(this||e).selfUnref=!1,(this||e)._runtimeInstance=t,n!==null&&(this||e)._parents.push(n)}return Object.defineProperty(t.prototype,\"runtimeInstance\",{get:function(){return(this||e)._runtimeInstance},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"nativeInstance\",{get:function(){return(this||e)._runtimeInstance},enumerable:!1,configurable:!0}),t.prototype.handleCallbacks=function(){(this||e)._propertiesWithCallbacks.length!==0&&((this||e)._propertiesWithCallbacks.forEach(function(e){e.handleCallbacks()}),(this||e)._propertiesWithCallbacks.forEach(function(e){e.clearChanges()})),(this||e)._children.forEach(function(e){return e.handleCallbacks()})},t.prototype.addParent=function(t){(this||e)._parents.includes(t)||((this||e)._parents.push(t),((this||e)._propertiesWithCallbacks.length>0||(this||e)._children.length>0)&&t.addToViewModelCallbacks(this||e))},t.prototype.removeParent=function(t){var n=(this||e)._parents.indexOf(t);n!==-1&&((this||e)._parents[n].removeFromViewModelCallbacks(this||e),(this||e)._parents.splice(n,1))},t.prototype.addToPropertyCallbacks=function(t){var n=this||e;(this||e)._propertiesWithCallbacks.includes(t)||((this||e)._propertiesWithCallbacks.push(t),(this||e)._propertiesWithCallbacks.length>0&&(this||e)._parents.forEach(function(e){e.addToViewModelCallbacks(n)}))},t.prototype.removeFromPropertyCallbacks=function(t){var n=this||e;(this||e)._propertiesWithCallbacks.includes(t)&&((this||e)._propertiesWithCallbacks=(this||e)._propertiesWithCallbacks.filter(function(e){return e!==t}),(this||e)._children.length===0&&(this||e)._propertiesWithCallbacks.length===0&&(this||e)._parents.forEach(function(e){e.removeFromViewModelCallbacks(n)}))},t.prototype.addToViewModelCallbacks=function(t){var n=this||e;(this||e)._children.includes(t)||((this||e)._children.push(t),(this||e)._parents.forEach(function(e){e.addToViewModelCallbacks(n)}))},t.prototype.removeFromViewModelCallbacks=function(t){var n=this||e;(this||e)._children.includes(t)&&((this||e)._children=(this||e)._children.filter(function(e){return e!==t}),(this||e)._children.length===0&&(this||e)._propertiesWithCallbacks.length===0&&(this||e)._parents.forEach(function(e){e.removeFromViewModelCallbacks(n)}))},t.prototype.clearCallbacks=function(){(this||e)._propertiesWithCallbacks.forEach(function(e){e.clearCallbacks()})},t.prototype.propertyFromPath=function(e,t){var n=e.split(`/`);return this.propertyFromPathSegments(n,0,t)},t.prototype.viewModelFromPathSegments=function(e,t){var n=this.internalViewModelInstance(e[t]);return n===null?null:t==e.length-1?n:n.viewModelFromPathSegments(e,t++)},t.prototype.propertyFromPathSegments=function(t,n,r){var i,a,o,s,c,l,u,d,f,p,m,h,g,_,v,y,b,x;if(n<t.length-1){var S=this.internalViewModelInstance(t[n]);return S===null?null:S.propertyFromPathSegments(t,n+1,r)}var C=null;switch(r){case N.Number:if(C=(a=(i=(this||e)._runtimeInstance)==null?void 0:i.number(t[n]))==null?null:a,C!==null)return new ce(C,this||e);break;case N.String:if(C=(s=(o=(this||e)._runtimeInstance)==null?void 0:o.string(t[n]))==null?null:s,C!==null)return new se(C,this||e);break;case N.Boolean:if(C=(l=(c=(this||e)._runtimeInstance)==null?void 0:c.boolean(t[n]))==null?null:l,C!==null)return new le(C,this||e);break;case N.Color:if(C=(d=(u=(this||e)._runtimeInstance)==null?void 0:u.color(t[n]))==null?null:d,C!==null)return new pe(C,this||e);break;case N.Trigger:if(C=(p=(f=(this||e)._runtimeInstance)==null?void 0:f.trigger(t[n]))==null?null:p,C!==null)return new ue(C,this||e);break;case N.Enum:if(C=(h=(m=(this||e)._runtimeInstance)==null?void 0:m.enum(t[n]))==null?null:h,C!==null)return new de(C,this||e);break;case N.List:if(C=(_=(g=(this||e)._runtimeInstance)==null?void 0:g.list(t[n]))==null?null:_,C!==null)return new fe(C,this||e);break;case N.Image:if(C=(y=(v=(this||e)._runtimeInstance)==null?void 0:v.image(t[n]))==null?null:y,C!==null)return new me(C,this||e);break;case N.Artboard:if(C=(x=(b=(this||e)._runtimeInstance)==null?void 0:b.artboard(t[n]))==null?null:x,C!==null)return new he(C,this||e);break}return null},t.prototype.internalViewModelInstance=function(n){var r;if((this||e)._viewModelInstances.has(n))return(this||e)._viewModelInstances.get(n);var i=(r=(this||e)._runtimeInstance)==null?void 0:r.viewModel(n);if(i!==null){var o=new t(i,this||e);return(0,a.createFinalization)(o,i),o.internalIncrementReferenceCount(),(this||e)._viewModelInstances.set(n,o),o}return null},t.prototype.number=function(e){return this.propertyFromPath(e,N.Number)},t.prototype.string=function(e){return this.propertyFromPath(e,N.String)},t.prototype.boolean=function(e){return this.propertyFromPath(e,N.Boolean)},t.prototype.color=function(e){return this.propertyFromPath(e,N.Color)},t.prototype.trigger=function(e){return this.propertyFromPath(e,N.Trigger)},t.prototype.enum=function(e){return this.propertyFromPath(e,N.Enum)},t.prototype.list=function(e){return this.propertyFromPath(e,N.List)},t.prototype.image=function(e){return this.propertyFromPath(e,N.Image)},t.prototype.artboard=function(e){return this.propertyFromPath(e,N.Artboard)},t.prototype.viewModel=function(t){var n=t.split(`/`),r=n.length>1?this.viewModelFromPathSegments(n.slice(0,n.length-1),0):this||e;return r==null?null:r.internalViewModelInstance(n[n.length-1])},t.prototype.internalReplaceViewModel=function(t,n){var r;if(n.runtimeInstance!==null){var i=((r=(this||e)._runtimeInstance)==null?void 0:r.replaceViewModel(t,n.runtimeInstance))||!1;if(i){n.internalIncrementReferenceCount();var a=this.internalViewModelInstance(t);a!==null&&(a.removeParent(this||e),(this||e)._children.includes(a)&&((this||e)._children=(this||e)._children.filter(function(e){return e!==a})),a.cleanup()),(this||e)._viewModelInstances.set(t,n),n.addParent(this||e)}return i}return!1},t.prototype.replaceViewModel=function(t,n){var r,i=t.split(`/`),a=i.length>1?this.viewModelFromPathSegments(i.slice(0,i.length-1),0):this||e;return(r=a==null?void 0:a.internalReplaceViewModel(i[i.length-1],n))==null?!1:r},t.prototype.incrementReferenceCount=function(){var t;(this||e)._referenceCount++,(t=(this||e)._runtimeInstance)==null||t.incrementReferenceCount()},t.prototype.decrementReferenceCount=function(){var t;(this||e)._referenceCount--,(t=(this||e)._runtimeInstance)==null||t.decrementReferenceCount()},Object.defineProperty(t.prototype,\"properties\",{get:function(){var t;return((t=(this||e)._runtimeInstance)==null?void 0:t.getProperties().map(function(e){return s({},e)}))||[]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,\"viewModelName\",{get:function(){var t,n;return(n=(t=(this||e)._runtimeInstance)==null?void 0:t.getViewModelName())==null?``:n},enumerable:!1,configurable:!0}),t.prototype.internalIncrementReferenceCount=function(){(this||e)._referenceCount++},t.prototype.cleanup=function(){var t=this||e,n;if((this||e)._referenceCount--,(this||e)._referenceCount<=0){(this||e).selfUnref&&((n=(this||e)._runtimeInstance)==null||n.unref()),(this||e)._runtimeInstance=null,this.clearCallbacks(),(this||e)._propertiesWithCallbacks=[],(this||e)._viewModelInstances.forEach(function(e){e.cleanup()}),(this||e)._viewModelInstances.clear();var r=u([],(this||e)._children,!0);(this||e)._children.length=0;var i=u([],(this||e)._parents,!0);(this||e)._parents.length=0,r.forEach(function(e){e.removeParent(t)}),i.forEach(function(e){e.removeFromViewModelCallbacks(t)})}},t}(),F=function(){function t(t,n){(this||e).callbacks=[],(this||e)._viewModelInstanceValue=t,(this||e)._parentViewModel=n}return t.prototype.on=function(t){(this||e).callbacks.length===0&&(this||e)._viewModelInstanceValue.clearChanges(),(this||e).callbacks.includes(t)||((this||e).callbacks.push(t),(this||e)._parentViewModel.addToPropertyCallbacks(this||e))},t.prototype.off=function(t){t?(this||e).callbacks=(this||e).callbacks.filter(function(e){return e!==t}):(this||e).callbacks.length=0,(this||e).callbacks.length===0&&(this||e)._parentViewModel.removeFromPropertyCallbacks(this||e)},t.prototype.internalHandleCallback=function(e){},t.prototype.handleCallbacks=function(){var t=this||e;(this||e)._viewModelInstanceValue.hasChanged&&(this||e).callbacks.forEach(function(e){t.internalHandleCallback(e)})},t.prototype.clearChanges=function(){(this||e)._viewModelInstanceValue.clearChanges()},t.prototype.clearCallbacks=function(){(this||e).callbacks.length=0},Object.defineProperty(t.prototype,\"name\",{get:function(){return(this||e)._viewModelInstanceValue.name},enumerable:!1,configurable:!0}),t}(),se=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(F),ce=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(F),le=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(F),ue=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return n.prototype.trigger=function(){return(this||e)._viewModelInstanceValue.trigger()},n.prototype.internalHandleCallback=function(e){e()},n}(F),de=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"valueIndex\",{get:function(){return(this||e)._viewModelInstanceValue.valueIndex},set:function(t){(this||e)._viewModelInstanceValue.valueIndex=t},enumerable:!1,configurable:!0}),Object.defineProperty(n.prototype,\"values\",{get:function(){return(this||e)._viewModelInstanceValue.values},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(F),fe=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"length\",{get:function(){return(this||e)._viewModelInstanceValue.size},enumerable:!1,configurable:!0}),n.prototype.addInstance=function(t){t.runtimeInstance!=null&&((this||e)._viewModelInstanceValue.addInstance(t.runtimeInstance),t.addParent((this||e)._parentViewModel))},n.prototype.addInstanceAt=function(t,n){return t.runtimeInstance!=null&&(this||e)._viewModelInstanceValue.addInstanceAt(t.runtimeInstance,n)?(t.addParent((this||e)._parentViewModel),!0):!1},n.prototype.removeInstance=function(t){t.runtimeInstance!=null&&((this||e)._viewModelInstanceValue.removeInstance(t.runtimeInstance),t.removeParent((this||e)._parentViewModel))},n.prototype.removeInstanceAt=function(t){(this||e)._viewModelInstanceValue.removeInstanceAt(t)},n.prototype.instanceAt=function(t){var n=(this||e)._viewModelInstanceValue.instanceAt(t);if(n!=null){var r=new P(n,(this||e)._parentViewModel);return(0,a.createFinalization)(r,n),r}return null},n.prototype.swap=function(t,n){(this||e)._viewModelInstanceValue.swap(t,n)},n.prototype.internalHandleCallback=function(e){e()},n}(F),pe=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{get:function(){return(this||e)._viewModelInstanceValue.value},set:function(t){(this||e)._viewModelInstanceValue.value=t},enumerable:!1,configurable:!0}),n.prototype.rgb=function(t,n,r){(this||e)._viewModelInstanceValue.rgb(t,n,r)},n.prototype.rgba=function(t,n,r,i){(this||e)._viewModelInstanceValue.argb(i,t,n,r)},n.prototype.argb=function(t,n,r,i){(this||e)._viewModelInstanceValue.argb(t,n,r,i)},n.prototype.alpha=function(t){(this||e)._viewModelInstanceValue.alpha(t)},n.prototype.opacity=function(t){(this||e)._viewModelInstanceValue.alpha(Math.round(Math.max(0,Math.min(1,t))*255))},n.prototype.internalHandleCallback=function(t){t((this||e).value)},n}(F),me=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{set:function(t){var n;(this||e)._viewModelInstanceValue.value((n=t==null?void 0:t.nativeImage)==null?null:n)},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(e){e()},n}(F),he=function(t){o(n,t);function n(n,r){return t.call(this||e,n,r)||this||e}return Object.defineProperty(n.prototype,\"value\",{set:function(t){var n,r,i=t.isBindableArtboard?t:t.file.internalBindableArtboardFromArtboard(t.nativeArtboard);(this||e)._viewModelInstanceValue.value((n=i==null?void 0:i.nativeArtboard)==null?null:n),i!=null&&i.nativeViewModel&&(this||e)._viewModelInstanceValue.viewModelInstance((r=i==null?void 0:i.nativeViewModel)==null?null:r)},enumerable:!1,configurable:!0}),n.prototype.internalHandleCallback=function(e){e()},n}(F),ge=function(t){return c(void 0,void 0,void 0,function(){var n,r,i;return l(this||e,function(e){switch(e.label){case 0:return n=new Request(t),[4,fetch(n)];case 1:if(r=e.sent(),!r.ok)throw Error(`Failed to fetch the Rive file: HTTP ${r.status}`);return[4,r.arrayBuffer()];case 2:return i=e.sent(),[2,i]}})})},I=function(e){return typeof e==`string`?[e]:e instanceof Array?e:[]},_e={EventManager:D,TaskQueueManager:O},ve=function(t){return c(void 0,void 0,void 0,function(){var r,i,o;return l(this||e,function(e){switch(e.label){case 0:return r=new Promise(function(e){return n.RuntimeLoader.getInstance(function(n){n.decodeAudio(t,e)})}),[4,r];case 1:return i=e.sent(),o=new a.AudioWrapper(i),a.finalizationRegistry.register(o,i),[2,o]}})})},ye=function(t){return c(void 0,void 0,void 0,function(){var r,i,o;return l(this||e,function(e){switch(e.label){case 0:return r=new Promise(function(e){return n.RuntimeLoader.getInstance(function(n){n.decodeImage(t,e)})}),[4,r];case 1:return i=e.sent(),o=new a.ImageWrapper(i),a.finalizationRegistry.register(o,i),[2,o]}})})},be=function(t){return c(void 0,void 0,void 0,function(){var r,i,o;return l(this||e,function(e){switch(e.label){case 0:return r=new Promise(function(e){return n.RuntimeLoader.getInstance(function(n){n.decodeFont(t,e)})}),[4,r];case 1:return i=e.sent(),o=new a.FontWrapper(i),a.finalizationRegistry.register(o,i),[2,o]}})})}})(),i})());var n=t;const r=t.rive,i=t.__esModule;export{i as __esModule,n as default,r as rive};\n//# sourceMappingURL=rive.js.map\n","import*as e from\"react\";import*as t from\"@rive-app/webgl2\";var n=e;try{`default`in e&&(n=e.default)}catch(e){}var r=t;try{`default`in t&&(r=t.default)}catch(e){}var i=typeof globalThis<`u`?globalThis:typeof self<`u`?self:global,a={};Object.defineProperty(a,\"__esModule\",{value:!0});var o,s=n,c=r;function l(e){return e&&typeof e==`object`&&`default`in e?e:{default:e}}var u=/* @__PURE__ */ l(s);function d(e){var t=e||f(),n=s.useState(t),r=n[0],i=n[1];return s.useEffect(function(){if(`u`>typeof window&&`matchMedia`in window){var t=function(){i(e||f())},n=window.matchMedia(`screen and (resolution: `+r+`dppx)`);return n.hasOwnProperty(`addEventListener`)?n.addEventListener(`change`,t):n.addListener(t),function(){n.hasOwnProperty(`removeEventListener`)?n.removeEventListener(`change`,t):n.removeListener(t)}}},[r,e]),r}function f(){return Math.min(Math.max(1,`u`>typeof window&&typeof window.devicePixelRatio==`number`?window.devicePixelRatio:1),3)}var p=/* @__PURE__ */ function(){function e(){}var t=e.prototype;return t.observe=function(){},t.unobserve=function(){},t.disconnect=function(){},e}();function m(e,t){var n=0;return function(){for(var r=this||i,a=arguments.length,o=Array(a),s=0;s<a;s++)o[s]=arguments[s];clearTimeout(n),n=window.setTimeout(function(){return e.apply(r,o)},t)}}var h=globalThis.ResizeObserver||p,g=globalThis.ResizeObserver!==void 0,_=!g;function v(e,t){t===void 0&&(t=!0);var n=s.useState({width:0,height:0}),r=n[0],i=n[1];s.useEffect(function(){if(`u`>typeof window&&t){var e=function(){i({width:window.innerWidth,height:window.innerHeight})};return _&&(e(),window.addEventListener(`resize`,e)),function(){return window.removeEventListener(`resize`,e)}}},[]);var a=s.useRef(new h(m(function(e){g&&i({width:e[e.length-1].contentRect.width,height:e[e.length-1].contentRect.height})},0)));return s.useEffect(function(){var n=a.current;if(!t)return void n.disconnect();var r=e.current;return e.current&&g&&n.observe(e.current),function(){n.disconnect(),r&&g&&n.unobserve(r)}},[e,a]),r}var y={useDevicePixelRatio:!0,fitCanvasToArtboardHeight:!1,useOffscreenRenderer:!0,shouldResizeCanvasToContainer:!0};function b(e){return Object.assign({},y,e)}function x(e){var t=e.riveLoaded,n=t!==void 0&&t,r=e.canvasElem,i=e.containerRef,a=e.options,o=e.onCanvasHasResized,c=e.artboardBounds,l=b(a===void 0?{}:a),u=s.useState({height:0,width:0}),f=u[0],p=f.height,m=f.width,h=u[1],g=s.useState({height:0,width:0}),_=g[0],y=_.height,x=_.width,S=g[1],C=s.useState(!0),w=C[0],T=C[1],E=l.fitCanvasToArtboardHeight,D=l.shouldResizeCanvasToContainer,O=l.useDevicePixelRatio,k=l.customDevicePixelRatio,A=v(i,D),j=d(k),M=c==null?{}:c,N=M.maxX,P=M.maxY,F=s.useCallback(function(){var e,t,n,r,a=(e=(n=i.current)==null?void 0:n.clientWidth)==null?0:e,o=(t=(r=i.current)==null?void 0:r.clientHeight)==null?0:t;return E&&c?{width:a,height:c.maxY/c.maxX*a}:{width:a,height:o}},[i,E,N,P]);s.useEffect(function(){if(D&&i.current&&n){var e=F(),t=e.width,a=e.height,s=!1;if(r){var c=t!==m||a!==p;if(l.fitCanvasToArtboardHeight&&c&&(i.current.style.height=a+`px`,s=!0),l.useDevicePixelRatio){var u=t*j!==x||a*j!==y;if(c||u){var d=j*t,f=j*a;r.width=d,r.height=f,r.style.width=t+`px`,r.style.height=a+`px`,S({width:d,height:f}),s=!0}}else c&&(r.width=t,r.height=a,S({width:t,height:a}),s=!0);h({width:t,height:a})}o&&(w||s)&&o&&o(),w&&T(!1)}},[r,i,A,j,F,w,T,y,x,p,m,o,D,E,O,n]),s.useEffect(function(){S({width:0,height:0})},[r])}var S=/* @__PURE__ */ function(){function e(){}var t=e.prototype;return t.observe=function(){},t.unobserve=function(){},t.disconnect=function(){},e}(),C=globalThis.IntersectionObserver||S,w=/* @__PURE__ */ function(){function e(){var e=this||i;(this||i).elementsMap=/* @__PURE__ */ new Map,(this||i).onObserved=function(t){t.forEach(function(t){var n=e.elementsMap.get(t.target);n&&n(t)})},(this||i).observer=new C((this||i).onObserved)}var t=e.prototype;return t.registerCallback=function(e,t){(this||i).observer.observe(e),(this||i).elementsMap.set(e,t)},t.removeCallback=function(e){(this||i).observer.unobserve(e),(this||i).elementsMap.delete(e)},e}(),T=function(){return o||(o=new w),o};function E(){return{observe:s.useCallback(function(e,t){T().registerCallback(e,t)},[]),unobserve:s.useCallback(function(e){T().removeCallback(e)},[])}}function D(){return(D=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this||i,arguments)}function O(e,t){if(e==null)return{};var n,r,i={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n]);return i}function k(e){var t=e.setContainerRef,n=e.setCanvasRef,r=e.className,i=r===void 0?``:r,a=e.style,o=e.children,s=O(e,[`setContainerRef`,`setCanvasRef`,`className`,`style`,`children`]),c=D({width:`100%`,height:`100%`},a);return/* @__PURE__ */ u.default.createElement(`div`,D({ref:t,className:i},!i&&{style:c}),/* @__PURE__ */ u.default.createElement(`canvas`,D({ref:n,style:{verticalAlign:`top`,width:0,height:0}},s),o))}function A(e,t){t===void 0&&(t={});var n=s.useState(null),r=n[0],i=n[1],a=s.useRef(null),o=s.useRef(null),l=s.useState(null),f=l[0],p=l[1],m=!!e,h=b(t),g=d(),_=s.useCallback(function(){if(f){if(f.layout&&f.layout.fit===c.Fit.Layout&&r){var e=g*f.layout.layoutScaleFactor;f.devicePixelRatioUsed=g,f.artboardWidth=(r==null?void 0:r.width)/e,f.artboardHeight=(r==null?void 0:r.height)/e}f.startRendering(),f.resizeToCanvas()}},[f,g]);x({riveLoaded:!!f,canvasElem:r,containerRef:a,options:h,onCanvasHasResized:_,artboardBounds:f==null?void 0:f.bounds});var v=s.useCallback(function(e){e===null&&r&&(r.height=0,r.width=0),i(e)},[]);s.useEffect(function(){if(r&&e){var t,n=f!=null;if(f==null){var i=h.useOffscreenRenderer,a=e.onRiveReady,s=O(e,[`onRiveReady`]);t=new c.Rive(D({useOffscreenRenderer:i},s,{canvas:r})),o.current!=null&&o.current.cleanup(),o.current=t,t.on(c.EventType.Load,function(){n=!0,a&&a(t),r?p(t):t.cleanup()})}return function(){n||t==null||t.cleanup()}}},[r,m,f]);var y=s.useCallback(function(e){a.current=e},[]),S=E(),C=S.observe,w=S.unobserve;s.useEffect(function(){var e,t=!1,n=function(){if(r&&t){var e=r.getBoundingClientRect();e.width>0&&e.height>0&&e.top<(window.innerHeight||document.documentElement.clientHeight)&&e.bottom>0&&e.left<(window.innerWidth||document.documentElement.clientWidth)&&e.right>0&&(f==null||f.startRendering(),t=!1)}};return r&&!1!==h.shouldUseIntersectionObserver&&C(r,function(r){r.isIntersecting?f&&f.startRendering():f&&f.stopRendering(),t=!r.isIntersecting,clearTimeout(e),r.isIntersecting||r.boundingClientRect.width!==0||(e=setTimeout(n,10))}),function(){r&&w(r)}},[C,w,f,r,h.shouldUseIntersectionObserver]),s.useEffect(function(){return function(){f&&(f.cleanup(),p(null))}},[f,r]),s.useEffect(function(){return function(){o.current!=null&&o.current.cleanup()}},[]);var T=e==null?void 0:e.animations;s.useEffect(function(){f&&T&&(f.isPlaying?(f.stop(f.animationNames),f.play(T)):f.isPaused&&(f.stop(f.animationNames),f.pause(T)))},[T,f]);var A=s.useCallback(function(e){return/* @__PURE__ */ u.default.createElement(k,D({setContainerRef:y,setCanvasRef:v},e))},[v,y]);return{canvas:r,container:a.current,setCanvasRef:v,setContainerRef:y,rive:f,RiveComponent:A}}function j(e,t){if(e==null)return{};var n,r,i={},a=Object.getOwnPropertyNames(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n]);return i}var M=function(e){var t=e.src,n=e.artboard,r=e.animations,i=e.stateMachines,a=e.layout,o=e.useOffscreenRenderer,s=e.shouldDisableRiveListeners,c=e.shouldResizeCanvasToContainer,l=e.automaticallyHandleEvents,d=e.children,f=j(e,[`src`,`artboard`,`animations`,`stateMachines`,`layout`,`useOffscreenRenderer`,`shouldDisableRiveListeners`,`shouldResizeCanvasToContainer`,`automaticallyHandleEvents`,`children`]),p=A({src:t,artboard:n,animations:r,layout:a,stateMachines:i,autoplay:!0,shouldDisableRiveListeners:s!==void 0&&s,automaticallyHandleEvents:l!==void 0&&l},{useOffscreenRenderer:o===void 0||o,shouldResizeCanvasToContainer:c===void 0||c}).RiveComponent;return/* @__PURE__ */ u.default.createElement(p,f,d)};function N(e,t,n,r){var i=s.useState(null),a=i[0],o=i[1];return s.useEffect(function(){var i=function(){if(e&&t&&n||o(null),e&&t&&n){var i=e.stateMachineInputs(t);if(i){var a=i.find(function(e){return e.name===n});r!==void 0&&a&&(a.value=r),o(a||null)}}else o(null)};i(),e&&e.on(c.EventType.Load,function(){i()})},[e]),a}function P(e,t){var n=t==null?{}:t,r=n.name,i=n.useDefault,a=s.useState(null),o=a[0],l=a[1];return s.useEffect(function(){var t=function(){if(!e)return void l(null);var t=null;l(t=r==null?e.defaultViewModel()||null:(e.viewModelByName==null?void 0:e.viewModelByName.call(e,r))||null)};return t(),e&&e.on(c.EventType.Load,t),function(){e&&e.off(c.EventType.Load,t)}},[e,r,i!==void 0&&i]),o}function F(e,t){var n=t==null?{}:t,r=n.name,i=n.useDefault,a=i!==void 0&&i,o=n.useNew,c=o!==void 0&&o,l=n.rive,u=s.useState(null),d=u[0],f=u[1];return s.useEffect(function(){if(!e)return void f(null);var t=null;f(t=r==null?a?(e.defaultInstance==null?void 0:e.defaultInstance.call(e))||null:c?(e.instance==null?void 0:e.instance.call(e))||null:(e.defaultInstance==null?void 0:e.defaultInstance.call(e))||null:e.instanceByName(r)||null),l&&t&&l.viewModelInstance!==t&&l.bindViewModelInstance(t)},[e,r,a,c,l]),d}function I(){return(I=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this||i,arguments)}function L(e,t,n){var r=s.useState(null),i=r[0],a=r[1],o=s.useState(n.defaultValue),c=o[0],l=o[1],u=s.useState(null),d=u[0],f=u[1],p=s.useRef(null),m=s.useRef(e),h=s.useRef(n);s.useEffect(function(){h.current=n},[n]);var g=s.useCallback(function(){var e=p.current,t=m.current,n=h.current;if(!e||!t)return a(null),l(n.defaultValue),f(null),function(){};var r=n.getProperty(e,t);if(r){a(r),l(n.getValue(r)),n.getExtendedData&&f(n.getExtendedData(r));var i=function(){l(n.getValue(r)),n.getExtendedData&&f(n.getExtendedData(r)),n.onPropertyEvent&&n.onPropertyEvent()};return r.on(i),function(){r.off(i)}}return function(){}},[]);s.useEffect(function(){return p.current=t,m.current=e,g()},[t,e,g]);var _=s.useCallback(function(e){if(i&&p.current===t)try{e(i),h.current.getExtendedData&&f(h.current.getExtendedData(i));return}catch(e){}if(p.current)try{var n=h.current.getProperty(p.current,m.current);n&&(a(n),e(n),h.current.getExtendedData&&f(h.current.getExtendedData(n)))}catch(e){}},[i,t]),v=s.useMemo(function(){return h.current.buildPropertyOperations(_)},[_]),y=I({value:c},v);return n.getExtendedData&&(y.extendedData=d),y}function R(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.number(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,setValue:n.setValue}}function ee(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.string(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,setValue:n.setValue}}function z(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.boolean(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,setValue:n.setValue}}function B(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.color(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})},setRgb:function(t,n,r){e(function(e){e.rgb(t,n,r)})},setRgba:function(t,n,r,i){e(function(e){e.rgba(t,n,r,i)})},setAlpha:function(t){e(function(e){e.alpha(t)})},setOpacity:function(t){e(function(e){e.opacity(t)})}}},[])});return{value:n.value,setValue:n.setValue,setRgb:n.setRgb,setRgba:n.setRgba,setAlpha:n.setAlpha,setOpacity:n.setOpacity}}function V(e,t){var n=L(e,t,{getProperty:s.useCallback(function(e,t){return e.enum(t)},[]),getValue:s.useCallback(function(e){return e.value},[]),defaultValue:null,getExtendedData:s.useCallback(function(e){return e.values},[]),buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])});return{value:n.value,values:n.extendedData||[],setValue:n.setValue}}function H(e,t,n){var r=(n==null?{}:n).onTrigger;return{trigger:L(e,t,{getProperty:s.useCallback(function(e,t){return e.trigger(t)},[]),getValue:s.useCallback(function(){},[]),defaultValue:null,onPropertyEvent:r,buildPropertyOperations:s.useCallback(function(e){return{trigger:function(){e(function(e){e.trigger()})}}},[])}).trigger}}function U(e,t){return{setValue:L(e,t,{getProperty:s.useCallback(function(e,t){return e.image(t)},[]),getValue:s.useCallback(function(){},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])}).setValue}}function W(e,t){var n,r=s.useState(0)[1],i=L(e,t,{getProperty:s.useCallback(function(e,t){return e.list(t)},[]),getValue:s.useCallback(function(e){return e.length},[]),defaultValue:null,onPropertyEvent:function(){r(function(e){return e+1})},buildPropertyOperations:s.useCallback(function(e){return{addInstance:function(t){e(function(e){return e.addInstance(t)})},addInstanceAt:function(t,n){var r=!1;return e(function(e){r=e.addInstanceAt(t,n)}),r},removeInstance:function(t){e(function(e){return e.removeInstance(t)})},removeInstanceAt:function(t){e(function(e){return e.removeInstanceAt(t)})},getInstanceAt:function(t){var n=null;return e(function(e){n=e.instanceAt(t)}),n},swap:function(t,n){e(function(e){return e.swap(t,n)})}}},[])});return{length:(n=i.value)==null?0:n,addInstance:i.addInstance,addInstanceAt:i.addInstanceAt,removeInstance:i.removeInstance,removeInstanceAt:i.removeInstanceAt,getInstanceAt:i.getInstanceAt,swap:i.swap}}function G(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){n(e);return}s.done?t(c):Promise.resolve(c).then(r,i)}function K(e){return function(){var t=this||i,n=arguments;return new Promise(function(r,i){var a=e.apply(t,n);function o(e){G(a,r,i,o,s,`next`,e)}function s(e){G(a,r,i,o,s,`throw`,e)}o(void 0)})}}function q(e,t){var n,r,a,o={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]},s=Object.create((typeof Iterator==`function`?Iterator:Object).prototype),c=Object.defineProperty;return c(s,`next`,{value:l(0)}),c(s,`throw`,{value:l(1)}),c(s,`return`,{value:l(2)}),typeof Symbol==`function`&&c(s,Symbol.iterator,{value:function(){return this||i}}),s;function l(i){return function(c){var l=[i,c];if(n)throw TypeError(`Generator is already executing.`);for(;s&&(s=0,l[0]&&(o=0)),o;)try{if(n=1,r&&(a=2&l[0]?r.return:l[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,l[1])).done)return a;switch(r=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return o.label++,{value:l[1],done:!1};case 5:o.label++,r=l[1],l=[0];continue;case 7:l=o.ops.pop(),o.trys.pop();continue;default:if(!(a=(a=o.trys).length>0&&a[a.length-1])&&(l[0]===6||l[0]===2)){o=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]<a[3])){o.label=l[1];break}if(l[0]===6&&o.label<a[1]){o.label=a[1],a=l;break}if(a&&o.label<a[2]){o.label=a[2],o.ops.push(l);break}a[2]&&o.ops.pop(),o.trys.pop();continue}l=t.call(e,o)}catch(e){l=[6,e],r=0}finally{n=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}function J(e){var t=s.useState(null),n=t[0],r=t[1],a=s.useState(`idle`),o=a[0],l=a[1];return s.useEffect(function(){var t=null;return K(function(){return q(this||i,function(n){try{l(`loading`),(t=new c.RiveFile(e)).init(),t.on(c.EventType.Load,function(){t==null||t.getInstance(),r(t),l(`success`)}),t.on(c.EventType.LoadError,function(){l(`failed`)}),r(t)}catch(e){console.error(e),l(`failed`)}return[2]})})(),function(){t==null||t.cleanup()}},[e.src,e.buffer]),{riveFile:n,status:o}}function Y(e,t){return{setValue:L(e,t,{getProperty:s.useCallback(function(e,t){return e.artboard(t)},[]),getValue:s.useCallback(function(){},[]),defaultValue:null,buildPropertyOperations:s.useCallback(function(e){return{setValue:function(t){e(function(e){e.value=t})}}},[])}).setValue}}a.default=M,a.useResizeCanvas=x,a.useRive=A,a.useRiveFile=J,a.useStateMachineInput=N,a.useViewModel=P,a.useViewModelInstance=F,a.useViewModelInstanceArtboard=Y,a.useViewModelInstanceBoolean=z,a.useViewModelInstanceColor=B,a.useViewModelInstanceEnum=V,a.useViewModelInstanceImage=U,a.useViewModelInstanceList=W,a.useViewModelInstanceNumber=R,a.useViewModelInstanceString=ee,a.useViewModelInstanceTrigger=H,Object.keys(c).forEach(function(e){e===`default`||a.hasOwnProperty(e)||Object.defineProperty(a,e,{enumerable:!0,get:function(){return c[e]}})});const X=a.__esModule,Z=a.useResizeCanvas,Q=a.useRive,te=a.useRiveFile,ne=a.useStateMachineInput,re=a.useViewModel,ie=a.useViewModelInstance,ae=a.useViewModelInstanceArtboard,oe=a.useViewModelInstanceBoolean,se=a.useViewModelInstanceColor,ce=a.useViewModelInstanceEnum,$=a.useViewModelInstanceImage,le=a.useViewModelInstanceList,ue=a.useViewModelInstanceNumber,de=a.useViewModelInstanceString,fe=a.useViewModelInstanceTrigger;export{X as __esModule,a as default,Z as useResizeCanvas,Q as useRive,te as useRiveFile,ne as useStateMachineInput,re as useViewModel,ie as useViewModelInstance,ae as useViewModelInstanceArtboard,oe as useViewModelInstanceBoolean,se as useViewModelInstanceColor,ce as useViewModelInstanceEnum,$ as useViewModelInstanceImage,le as useViewModelInstanceList,ue as useViewModelInstanceNumber,de as useViewModelInstanceString,fe as useViewModelInstanceTrigger};\n//# sourceMappingURL=index.js.map\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{useState,useEffect,useMemo,useRef}from\"react\";import*as riveCanvas from\"@rive-app/react-canvas\";import*as riveWebGL from\"@rive-app/react-webgl2\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";var isRiveRenderer=false;var rivePackage=()=>{if(isRiveRenderer){return riveWebGL;}else{return riveCanvas;}};// Mapping for fit options to Fit enum\nconst getFitValue=fit=>{const Fit=rivePackage().default.Fit;switch(fit){case\"layout\":return Fit.Layout;case\"contain\":return Fit.Contain;case\"cover\":return Fit.Cover;case\"fill\":return Fit.Fill;case\"fitWidth\":return Fit.FitWidth;case\"fitHeight\":return Fit.FitHeight;case\"none\":return Fit.None;case\"scaleDown\":return Fit.ScaleDown;default:return Fit.Contain;}};// Mapping for alignment options to Alignment enum\nconst getAlignmentValue=alignment=>{const Alignment=rivePackage().default.Alignment;switch(alignment){case\"center\":return Alignment.Center;case\"topLeft\":return Alignment.TopLeft;case\"topCenter\":return Alignment.TopCenter;case\"topRight\":return Alignment.TopRight;case\"centerLeft\":return Alignment.CenterLeft;case\"centerRight\":return Alignment.CenterRight;case\"bottomLeft\":return Alignment.BottomLeft;case\"bottomCenter\":return Alignment.BottomCenter;case\"bottomRight\":return Alignment.BottomRight;default:return Alignment.Center;}};function useRiveInputs(rive,stateMachines,inputsJSON){const inputConfigs=useMemo(()=>{try{return JSON.parse(inputsJSON||\"[]\");}catch(error){console.error(\"Error parsing inputsJSON:\",error);return[];}},[inputsJSON]);return inputConfigs.map(config=>{const{useStateMachineInput}=rivePackage();const handler=useStateMachineInput(rive,stateMachines,config.name,config.type===\"Trigger\"?true:config.value);return{...config,handler};});}/**\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerDisableUnlink\n */export default function RivePlayer_vX(props){const{riveRenderer}=props;isRiveRenderer=riveRenderer;const[renderer,setRenderer]=useState(riveRenderer);useEffect(()=>{setRenderer(riveRenderer);},[riveRenderer]);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\"},children:/*#__PURE__*/_jsx(RivePlayerInternal,{...props,riveRenderer:renderer})},renderer?\"webgl\":\"canvas\");}function RivePlayerInternal(props){const{src,artboard,stateMachines,riveRenderer,autoplay,autoBind,handleEvents,fit,alignment,play,playOnCanvas,onEventTriggered,inputsJSON,isTouchScrollEnabled,layoutScaleFactor}=props;const rivePackage=useMemo(()=>riveRenderer?riveWebGL:riveCanvas,[riveRenderer]);const{useRive}=rivePackage;const Layout=rivePackage.default.Layout;const layout=useMemo(()=>new Layout({fit:getFitValue(fit),alignment:getAlignmentValue(alignment),...fit===\"layout\"&&{layoutScaleFactor}}),[fit,alignment,layoutScaleFactor]);const{rive,RiveComponent}=useRive({src,artboard,stateMachines,autoplay,autoBind,automaticallyHandleEvents:handleEvents,layout,isTouchScrollEnabled:isTouchScrollEnabled});const inputs=useRiveInputs(rive,stateMachines,inputsJSON);const prevInputsRef=useRef(inputs);useEffect(()=>{if(rive&&inputs.length){inputs.forEach((input,index)=>{if(input.handler){const prevInput=prevInputsRef.current[index];if(input.type===\"Trigger\"&&input.value&&(!prevInput||!prevInput.value)){input.handler.fire();}else if(input.type!==\"Trigger\"&&\"value\"in input){input.handler.value=input.value;}}});}prevInputsRef.current=inputs;},[rive,inputs]);useEffect(()=>{if(rive){const handleEvent=event=>{// console.log(\"Rive event triggered:\", event)\nif(onEventTriggered){onEventTriggered(event.data);// console.log(\"Event data:\", event.data)\n}};rive.on(\"riveevent\",handleEvent);return()=>{rive.off(\"riveevent\",handleEvent);};}},[rive,onEventTriggered]);useEffect(()=>{if(rive){const shouldPlay=RenderTarget.current()===RenderTarget.canvas?playOnCanvas:play;shouldPlay?rive.play():rive.pause();}},[rive,play,playOnCanvas]);useEffect(()=>{if(rive){rive.layout=layout;}},[rive,layout]);return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\"},children:/*#__PURE__*/_jsx(RiveComponent,{style:{width:\"100%\",height:\"100%\"}})});}// Property controls\naddPropertyControls(RivePlayer_vX,{src:{title:\"Source\",type:ControlType.String},artboard:{title:\"Artboard\",type:ControlType.String},stateMachines:{title:\"State Machines\",type:ControlType.String},riveRenderer:{title:\"Rive Renderer\",type:ControlType.Boolean,hidden:()=>true},autoplay:{title:\"Autoplay\",type:ControlType.Boolean,hidden:()=>true},autoBind:{title:\"Auto Bind\",type:ControlType.Boolean},handleEvents:{title:\"Handle Events\",type:ControlType.Boolean},isTouchScrollEnabled:{title:\"Touch Screen Enabled\",type:ControlType.Boolean},fit:{title:\"Fit\",type:ControlType.Enum,options:[\"layout\",\"contain\",\"cover\",\"fill\",\"fitWidth\",\"fitHeight\",\"none\",\"scaleDown\"],optionTitles:[\"Layout\",\"Contain\",\"Cover\",\"Fill\",\"Fit Width\",\"Fit Height\",\"None\",\"Scale Down\"],defaultValue:\"contain\"},layoutScaleFactor:{title:\"Layout Scale Factor\",type:ControlType.Number,defaultValue:1,min:.25,max:10,displayStepper:true,step:.25,hidden:props=>props.fit!==\"layout\"},alignment:{title:\"Alignment\",type:ControlType.Enum,options:[\"center\",\"topLeft\",\"topCenter\",\"topRight\",\"centerLeft\",\"centerRight\",\"bottomLeft\",\"bottomCenter\",\"bottomRight\"],optionTitles:[\"Center\",\"Top Left\",\"Top Center\",\"Top Right\",\"Center Left\",\"Center Right\",\"Bottom Left\",\"Bottom Center\",\"Bottom Right\"],defaultValue:\"center\"},play:{title:\"Auto-Play\",type:ControlType.Boolean},playOnCanvas:{title:\"Play on Canvas\",type:ControlType.Boolean},onEventTriggered:{type:ControlType.EventHandler},inputsJSON:{title:\"Inputs JSON\",type:ControlType.String,hidden:()=>true}});// Default props\nRivePlayer_vX.defaultProps={src:\"https://public.rive.app/hosted/63978/135405/cRjq3a7l40ScM-l2peKfBQ.riv\",artboard:\"AB_BG\",stateMachines:\"SM_BG\",riveRenderer:false,autoplay:true,autoBind:true,handleEvents:true,fit:\"contain\",alignment:\"center\",play:true,playOnCanvas:true,onEventTriggered:eventData=>null,inputsJSON:\"[]\",isTouchScrollEnabled:false,layoutScaleFactor:1};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RivePlayer_vX\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RivePlayer_vX.map","// Generated by Framer (0b8b5e5)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";const serializationHash=\"framer-q8Ttd\";const variantClassNames={XvqTw0Be9:\"framer-v-jjcw9a\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants===null||variants===void 0?void 0:variants.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value!==null&&value!==void 0?value:config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion(React.Fragment);const getProps=({height,id,subtitle,title,width,...props})=>{var _ref,_ref1;return{...props,WuF2iG84P:(_ref=subtitle!==null&&subtitle!==void 0?subtitle:props.WuF2iG84P)!==null&&_ref!==void 0?_ref:\"Set up the component by adding background and bouncer elements to the component properties.\",yeAnKbEUZ:(_ref1=title!==null&&title!==void 0?title:props.yeAnKbEUZ)!==null&&_ref1!==void 0?_ref1:\"Screen Saver\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,yeAnKbEUZ,WuF2iG84P,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"XvqTw0Be9\",variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const ref1=React.useRef(null);const defaultLayoutId=React.useId();const sharedStyleClassNames=[];const componentViewport=useComponentViewport();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId!==null&&layoutId!==void 0?layoutId:defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(serializationHash,...sharedStyleClassNames,\"framer-jjcw9a\",className,classNames),\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"XvqTw0Be9\",ref:ref!==null&&ref!==void 0?ref:ref1,style:{backgroundColor:\"rgba(136, 85, 255, 0.1)\",...style},children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-uh2i08\",layoutDependency:layoutDependency,layoutId:\"aM7oiNoFL\",children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-flw0dh\",\"data-framer-name\":\"Logo\",layout:\"position\",layoutDependency:layoutDependency,layoutId:\"GthLmGmBt\",opacity:1,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 28 28\"><g id=\"ss11036020200_1\"><path d=\"M 0 0 L 28 0 L 28 28 L 0 28 Z\" fill=\"transparent\"></path><path d=\"M 21 7.113 C 21 7.041 21.029 6.971 21.079 6.921 L 27.534 0.465 C 27.613 0.388 27.73 0.365 27.831 0.407 C 27.933 0.449 28 0.548 28 0.658 L 28 13.888 C 28 13.96 27.971 14.028 27.921 14.079 L 21 21 Z M 7 21 L 7 7.658 C 7 7.548 6.933 7.449 6.831 7.407 C 6.73 7.365 6.613 7.388 6.534 7.465 L 0.079 13.921 C 0.028 13.972 0 14.041 0 14.113 L 0 27.728 C 0 27.877 0.122 28 0.273 28 L 13.888 28 C 13.96 28 14.028 27.971 14.079 27.921 L 21 21 Z\" fill=\"rgb(153, 102, 255)\"></path></g></svg>',svgContentId:11036020200,withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-k3ullq\",layoutDependency:layoutDependency,layoutId:\"E3DQBYSAf\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"SW50ZXItQm9sZA==\",\"--framer-font-family\":'\"Inter\", \"Inter Placeholder\", sans-serif',\"--framer-font-size\":\"11px\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(153, 102, 255))\"},children:\"Screen Saver\"})}),className:\"framer-q0gs4u\",\"data-framer-name\":\"Title\",fonts:[\"Inter-Bold\"],layoutDependency:layoutDependency,layoutId:\"UqJwZqJjg\",style:{\"--extracted-r6o4lv\":\"rgb(153, 102, 255)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:yeAnKbEUZ,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--framer-font-size\":\"11px\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgba(153, 102, 255, 0.7))\"},children:\"Set up the component by adding background and bouncer elements to the component properties.\"})}),className:\"framer-g5dqhc\",\"data-framer-name\":\"Subtitle\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"RJ7UF99m8\",style:{\"--extracted-r6o4lv\":\"rgba(153, 102, 255, 0.7)\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:WuF2iG84P,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-q8Ttd.framer-qanqo2, .framer-q8Ttd .framer-qanqo2 { display: block; }\",\".framer-q8Ttd.framer-jjcw9a { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 200px; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 400px; }\",\".framer-q8Ttd .framer-uh2i08 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; overflow: hidden; padding: 0px 20px 0px 20px; position: relative; width: 1px; }\",\".framer-q8Ttd .framer-flw0dh { flex: none; height: 28px; position: relative; width: 28px; }\",\".framer-q8Ttd .framer-k3ullq { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; max-width: 200px; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-q8Ttd .framer-q0gs4u, .framer-q8Ttd .framer-g5dqhc { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\"@supports (background: -webkit-named-image(i)) and (not (font-palette:dark)) { .framer-q8Ttd.framer-jjcw9a, .framer-q8Ttd .framer-uh2i08, .framer-q8Ttd .framer-k3ullq { gap: 0px; } .framer-q8Ttd.framer-jjcw9a > * { margin: 0px; margin-left: calc(10px / 2); margin-right: calc(10px / 2); } .framer-q8Ttd.framer-jjcw9a > :first-child { margin-left: 0px; } .framer-q8Ttd.framer-jjcw9a > :last-child { margin-right: 0px; } .framer-q8Ttd .framer-uh2i08 > * { margin: 0px; margin-bottom: calc(16px / 2); margin-top: calc(16px / 2); } .framer-q8Ttd .framer-uh2i08 > :first-child, .framer-q8Ttd .framer-k3ullq > :first-child { margin-top: 0px; } .framer-q8Ttd .framer-uh2i08 > :last-child, .framer-q8Ttd .framer-k3ullq > :last-child { margin-bottom: 0px; } .framer-q8Ttd .framer-k3ullq > * { margin: 0px; margin-bottom: calc(12px / 2); margin-top: calc(12px / 2); } }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 200\n * @framerIntrinsicWidth 400\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"yeAnKbEUZ\":\"title\",\"WuF2iG84P\":\"subtitle\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerComponentViewportWidth true\n */const FramerW7oLCU4_B=withCSS(Component,css,\"framer-q8Ttd\");export default FramerW7oLCU4_B;FramerW7oLCU4_B.displayName=\"Utils/Component Message\";FramerW7oLCU4_B.defaultProps={height:200,width:400};addPropertyControls(FramerW7oLCU4_B,{yeAnKbEUZ:{defaultValue:\"Screen Saver\",displayTextArea:false,title:\"Title\",type:ControlType.String},WuF2iG84P:{defaultValue:\"Set up the component by adding background and bouncer elements to the component properties.\",displayTextArea:false,title:\"Subtitle\",type:ControlType.String}});addFonts(FramerW7oLCU4_B,[{explicitInter:true,fonts:[{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/DpPBYI0sL4fYLgAkX8KXOPVt7c.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/4RAEQdEOrcnDkhHiiCbJOw92Lk.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/1K3W8DizY3v4emK8Mb08YHxTbs.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/tUSCtfYVM1I1IchuyCwz9gDdQ.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/VgYFWiwsAC5OYxAycRXXvhze58.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/DXD0Q7LSl7HEvDzucnyLnGBHM.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/GIryZETIX4IFypco5pYZONKhJIo.woff2\",weight:\"700\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/vQyevYAyHtARFwPqUzQGpnDs.woff2\",weight:\"400\"},{family:\"Inter\",source:\"framer\",style:\"normal\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerW7oLCU4_B\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerVariables\":\"{\\\"yeAnKbEUZ\\\":\\\"title\\\",\\\"WuF2iG84P\\\":\\\"subtitle\\\"}\",\"framerIntrinsicWidth\":\"400\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"200\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./W7oLCU4_B.map","/*\n * Utils/Component Message\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/fMDE7Cqb2uOvQFAHEP2m/cRfVFRl0izzBulKFjOAe/W7oLCU4_B.js\"\nexport { default } from \"https://framerusercontent.com/modules/fMDE7Cqb2uOvQFAHEP2m/cRfVFRl0izzBulKFjOAe/W7oLCU4_B.js\"\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{cloneElement}from\"react\";import UtilsComponentMessage from\"https://framer.com/m/Utils-Component-Message-ZVoG.js@cRfVFRl0izzBulKFjOAe\";export const ComponentMessage=({title,subtitle,style})=>{return /*#__PURE__*/_jsx(UtilsComponentMessage,{yeAnKbEUZ:title,WuF2iG84P:subtitle,style:{width:\"100%\",height:\"100%\",...style}});};/* \n    This function is also used many times to make sure components work even if we set a color style like \"Accent\" on their color properties. We can make this into a utility function.\n*/export const extractRGBColorFromString=str=>{const rgbRegex=/(rgba|rgb)\\(.*?\\)/g;const match=str.match(rgbRegex);return match?match[0]:str;};/*\n    This function makes a connected layer use the sizing of the component it is inside,\n    preventing it from being larger or smaller than the component's size.\n    Use this on layers connected with ControlType.ComponentInstance.\n*/export function styleLayer(layer,style={}){layer=Array.isArray(layer)?layer[0]:layer;let newLayer=layer;const{width,height,...otherStyle}=style;if(layer&&layer.props&&style&&(width||height)){if(typeof layer.type===\"function\"&&typeof layer.props.children===\"object\"){newLayer=/*#__PURE__*/cloneElement(layer,{children:{...layer.props.children,props:{...layer.props.children.props,style:{...layer.props.children.props.style,...width&&{width},...height&&{height},...otherStyle}}}});}else{newLayer=/*#__PURE__*/cloneElement(layer,{style:{...layer.props.style,...width&&{width},...height&&{height},...otherStyle}});}}return newLayer;}\nexport const __FramerMetadata__ = {\"exports\":{\"ComponentMessage\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"extractRGBColorFromString\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"styleLayer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Utils.map","/*\n * Utils\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/aej5zpwxBpkMdzOteBwy/DWeAZ5wauvGM5oFwVdgS/Utils.js\"\n","/**\n * @license\n * Copyright 2010-2025 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = '174';\n\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst NeutralToneMapping = 7;\nconst AttachedBindMode = 'attached';\nconst DetachedBindMode = 'detached';\n\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1000;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst UnsignedInt5999Type = 35902;\nconst AlphaFormat = 1021;\nconst RGBFormat = 1022;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBIntegerFormat = 1032;\nconst RGBAIntegerFormat = 1033;\n\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst RGBDepthPacking = 3202;\nconst RGDepthPacking = 3203;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\n\n// Color space string identifiers, matching CSS Color Module Level 4 and WebGPU names where available.\nconst NoColorSpace = '';\nconst SRGBColorSpace = 'srgb';\nconst LinearSRGBColorSpace = 'srgb-linear';\n\nconst LinearTransfer = 'linear';\nconst SRGBTransfer = 'srgb';\n\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\n\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\n\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\n\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\n\nconst GLSL1 = '100';\nconst GLSL3 = '300 es';\n\nconst WebGLCoordinateSystem = 2000;\nconst WebGPUCoordinateSystem = 2001;\n\nconst TimestampQuery = {\n\tCOMPUTE: 'compute',\n\tRENDER: 'render'\n};\n\n/**\n * This modules allows to dispatch event objects on custom JavaScript objects.\n *\n * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}\n *\n * Code Example:\n * ```js\n * class Car extends EventDispatcher {\n * \tstart() {\n *\t\tthis.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );\n *\t}\n *};\n *\n * // Using events with the custom object\n * const car = new Car();\n * car.addEventListener( 'start', function ( event ) {\n * \talert( event.message );\n * } );\n *\n * car.start();\n * ```\n */\nclass EventDispatcher {\n\n\t/**\n\t * Adds the given event listener to the given event type.\n\t *\n\t * @param {string} type - The type of event to listen to.\n\t * @param {Function} listener - The function that gets called when the event is fired.\n\t */\n\taddEventListener( type, listener ) {\n\n\t\tif ( this._listeners === undefined ) this._listeners = {};\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners[ type ] === undefined ) {\n\n\t\t\tlisteners[ type ] = [];\n\n\t\t}\n\n\t\tif ( listeners[ type ].indexOf( listener ) === -1 ) {\n\n\t\t\tlisteners[ type ].push( listener );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns `true` if the given event listener has been added to the given event type.\n\t *\n\t * @param {string} type - The type of event.\n\t * @param {Function} listener - The listener to check.\n\t * @return {boolean} Whether the given event listener has been added to the given event type.\n\t */\n\thasEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return false;\n\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== -1;\n\n\t}\n\n\t/**\n\t * Removes the given event listener from the given event type.\n\t *\n\t * @param {string} type - The type of event.\n\t * @param {Function} listener - The listener to remove.\n\t */\n\tremoveEventListener( type, listener ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tconst index = listenerArray.indexOf( listener );\n\n\t\t\tif ( index !== -1 ) {\n\n\t\t\t\tlistenerArray.splice( index, 1 );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Dispatches an event object.\n\t *\n\t * @param {Object} event - The event that gets fired.\n\t */\n\tdispatchEvent( event ) {\n\n\t\tconst listeners = this._listeners;\n\n\t\tif ( listeners === undefined ) return;\n\n\t\tconst listenerArray = listeners[ event.type ];\n\n\t\tif ( listenerArray !== undefined ) {\n\n\t\t\tevent.target = this;\n\n\t\t\t// Make a copy, in case listeners are removed while iterating.\n\t\t\tconst array = listenerArray.slice( 0 );\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\n\n\t\t\t\tarray[ i ].call( this, event );\n\n\t\t\t}\n\n\t\t\tevent.target = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _lut = [ '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' ];\n\nlet _seed = 1234567;\n\n\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\n\n/**\n * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}\n * (universally unique identifier).\n *\n * @return {string} The UUID.\n */\nfunction generateUUID() {\n\n\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\n\n\tconst d0 = Math.random() * 0xffffffff | 0;\n\tconst d1 = Math.random() * 0xffffffff | 0;\n\tconst d2 = Math.random() * 0xffffffff | 0;\n\tconst d3 = Math.random() * 0xffffffff | 0;\n\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\n\n\t// .toLowerCase() here flattens concatenated strings to save heap memory space.\n\treturn uuid.toLowerCase();\n\n}\n\n/**\n * Clamps the given value between min and max.\n *\n * @param {number} value - The value to clamp.\n * @param {number} min - The min value.\n * @param {number} max - The max value.\n * @return {number} The clamped value.\n */\nfunction clamp( value, min, max ) {\n\n\treturn Math.max( min, Math.min( max, value ) );\n\n}\n\n/**\n * Computes the Euclidean modulo of the given parameters that\n * is `( ( n % m ) + m ) % m`.\n *\n * @param {number} n - The first parameter.\n * @param {number} m - The second parameter.\n * @return {number} The Euclidean modulo.\n */\nfunction euclideanModulo( n, m ) {\n\n\t// https://en.wikipedia.org/wiki/Modulo_operation\n\n\treturn ( ( n % m ) + m ) % m;\n\n}\n\n/**\n * Performs a linear mapping from range `<a1, a2>` to range `<b1, b2>`\n * for the given value.\n *\n * @param {number} x - The value to be mapped.\n * @param {number} a1 - Minimum value for range A.\n * @param {number} a2 - Maximum value for range A.\n * @param {number} b1 - Minimum value for range B.\n * @param {number} b2 - Maximum value for range B.\n * @return {number} The mapped value.\n */\nfunction mapLinear( x, a1, a2, b1, b2 ) {\n\n\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\n\n}\n\n/**\n * Returns the percentage in the closed interval `[0, 1]` of the given value\n * between the start and end point.\n *\n * @param {number} x - The start point\n * @param {number} y - The end point.\n * @param {number} value - A value between start and end.\n * @return {number} The interpolation factor.\n */\nfunction inverseLerp( x, y, value ) {\n\n\t// https://www.gamedev.net/tutorials/programming/general-and-gameplay-programming/inverse-lerp-a-super-useful-yet-often-overlooked-function-r5230/\n\n\tif ( x !== y ) {\n\n\t\treturn ( value - x ) / ( y - x );\n\n\t} else {\n\n\t\treturn 0;\n\n\t}\n\n}\n\n/**\n * Returns a value linearly interpolated from two known points based on the given interval -\n * `t = 0` will return `x` and `t = 1` will return `y`.\n *\n * @param {number} x - The start point\n * @param {number} y - The end point.\n * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n * @return {number} The interpolated value.\n */\nfunction lerp( x, y, t ) {\n\n\treturn ( 1 - t ) * x + t * y;\n\n}\n\n/**\n * Smoothly interpolate a number from `x` to `y` in  a spring-like manner using a delta\n * time to maintain frame rate independent movement. For details, see\n * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.\n *\n * @param {number} x - The current point.\n * @param {number} y - The target point.\n * @param {number} lambda - A higher lambda value will make the movement more sudden,\n * and a lower value will make the movement more gradual.\n * @param {number} dt - Delta time in seconds.\n * @return {number} The interpolated value.\n */\nfunction damp( x, y, lambda, dt ) {\n\n\treturn lerp( x, y, 1 - Math.exp( - lambda * dt ) );\n\n}\n\n/**\n * Returns a value that alternates between `0` and the given `length` parameter.\n *\n * @param {number} x - The value to pingpong.\n * @param {number} [length=1] - The positive value the function will pingpong to.\n * @return {number} The alternated value.\n */\nfunction pingpong( x, length = 1 ) {\n\n\t// https://www.desmos.com/calculator/vcsjnyz7x4\n\n\treturn length - Math.abs( euclideanModulo( x, length * 2 ) - length );\n\n}\n\n/**\n * Returns a value in the range `[0,1]` that represents the percentage that `x` has\n * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to\n * the `min` and `max`.\n *\n * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.\n *\n * @param {number} x - The value to evaluate based on its position between min and max.\n * @param {number} min - The min value. Any x value below min will be `0`.\n * @param {number} max - The max value. Any x value above max will be `1`.\n * @return {number} The alternated value.\n */\nfunction smoothstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * ( 3 - 2 * x );\n\n}\n\n/**\n * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}\n * that has zero 1st and 2nd order derivatives at x=0 and x=1.\n *\n * @param {number} x - The value to evaluate based on its position between min and max.\n * @param {number} min - The min value. Any x value below min will be `0`.\n * @param {number} max - The max value. Any x value above max will be `1`.\n * @return {number} The alternated value.\n */\nfunction smootherstep( x, min, max ) {\n\n\tif ( x <= min ) return 0;\n\tif ( x >= max ) return 1;\n\n\tx = ( x - min ) / ( max - min );\n\n\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\n\n}\n\n/**\n * Returns a random integer from `<low, high>` interval.\n *\n * @param {number} low - The lower value boundary.\n * @param {number} high - The upper value boundary\n * @return {number} A random integer.\n */\nfunction randInt( low, high ) {\n\n\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\n\n}\n\n/**\n * Returns a random float from `<low, high>` interval.\n *\n * @param {number} low - The lower value boundary.\n * @param {number} high - The upper value boundary\n * @return {number} A random float.\n */\nfunction randFloat( low, high ) {\n\n\treturn low + Math.random() * ( high - low );\n\n}\n\n/**\n * Returns a random integer from `<-range/2, range/2>` interval.\n *\n * @param {number} range - Defines the value range.\n * @return {number} A random float.\n */\nfunction randFloatSpread( range ) {\n\n\treturn range * ( 0.5 - Math.random() );\n\n}\n\n/**\n * Returns a deterministic pseudo-random float in the interval `[0, 1]`.\n *\n * @param {number} [s] - The integer seed.\n * @return {number} A random float.\n */\nfunction seededRandom( s ) {\n\n\tif ( s !== undefined ) _seed = s;\n\n\t// Mulberry32 generator\n\n\tlet t = _seed += 0x6D2B79F5;\n\n\tt = Math.imul( t ^ t >>> 15, t | 1 );\n\n\tt ^= t + Math.imul( t ^ t >>> 7, t | 61 );\n\n\treturn ( ( t ^ t >>> 14 ) >>> 0 ) / 4294967296;\n\n}\n\n/**\n * Converts degrees to radians.\n *\n * @param {number} degrees - A value in degrees.\n * @return {number} The converted value in radians.\n */\nfunction degToRad( degrees ) {\n\n\treturn degrees * DEG2RAD;\n\n}\n\n/**\n * Converts radians to degrees.\n *\n * @param {number} radians - A value in radians.\n * @return {number} The converted value in degrees.\n */\nfunction radToDeg( radians ) {\n\n\treturn radians * RAD2DEG;\n\n}\n\n/**\n * Returns `true` if the given number is a power of two.\n *\n * @param {number} value - The value to check.\n * @return {boolean} Whether the given number is a power of two or not.\n */\nfunction isPowerOfTwo( value ) {\n\n\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\n\n}\n\n/**\n * Returns the smallest power of two that is greater than or equal to the given number.\n *\n * @param {number} value - The value to find a POT for.\n * @return {number} The smallest power of two that is greater than or equal to the given number.\n */\nfunction ceilPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\n\n}\n\n/**\n * Returns the largest power of two that is less than or equal to the given number.\n *\n * @param {number} value - The value to find a POT for.\n * @return {number} The largest power of two that is less than or equal to the given number.\n */\nfunction floorPowerOfTwo( value ) {\n\n\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\n\n}\n\n/**\n * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}\n * defined by the given angles and order.\n *\n * Rotations are applied to the axes in the order specified by order:\n * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`.\n *\n * @param {Quaternion} q - The quaternion to set.\n * @param {number} a - The rotation applied to the first axis, in radians.\n * @param {number} b - The rotation applied to the second axis, in radians.\n * @param {number} c - The rotation applied to the third axis, in radians.\n * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order.\n */\nfunction setQuaternionFromProperEuler( q, a, b, c, order ) {\n\n\tconst cos = Math.cos;\n\tconst sin = Math.sin;\n\n\tconst c2 = cos( b / 2 );\n\tconst s2 = sin( b / 2 );\n\n\tconst c13 = cos( ( a + c ) / 2 );\n\tconst s13 = sin( ( a + c ) / 2 );\n\n\tconst c1_3 = cos( ( a - c ) / 2 );\n\tconst s1_3 = sin( ( a - c ) / 2 );\n\n\tconst c3_1 = cos( ( c - a ) / 2 );\n\tconst s3_1 = sin( ( c - a ) / 2 );\n\n\tswitch ( order ) {\n\n\t\tcase 'XYX':\n\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YZY':\n\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZXZ':\n\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'XZX':\n\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'YXY':\n\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\n\t\t\tbreak;\n\n\t\tcase 'ZYZ':\n\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\n\n\t}\n\n}\n\n/**\n * Denormalizes the given value according to the given typed array.\n *\n * @param {number} value - The value to denormalize.\n * @param {TypedArray} array - The typed array that defines the data type of the value.\n * @return {number} The denormalize (float) value in the range `[0,1]`.\n */\nfunction denormalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn value / 4294967295.0;\n\n\t\tcase Uint16Array:\n\n\t\t\treturn value / 65535.0;\n\n\t\tcase Uint8Array:\n\n\t\t\treturn value / 255.0;\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.max( value / 2147483647.0, -1 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.max( value / 32767.0, -1 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.max( value / 127.0, -1 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\n/**\n * Normalizes the given value according to the given typed array.\n *\n * @param {number} value - The float value in the range `[0,1]` to normalize.\n * @param {TypedArray} array - The typed array that defines the data type of the value.\n * @return {number} The normalize value.\n */\nfunction normalize( value, array ) {\n\n\tswitch ( array.constructor ) {\n\n\t\tcase Float32Array:\n\n\t\t\treturn value;\n\n\t\tcase Uint32Array:\n\n\t\t\treturn Math.round( value * 4294967295.0 );\n\n\t\tcase Uint16Array:\n\n\t\t\treturn Math.round( value * 65535.0 );\n\n\t\tcase Uint8Array:\n\n\t\t\treturn Math.round( value * 255.0 );\n\n\t\tcase Int32Array:\n\n\t\t\treturn Math.round( value * 2147483647.0 );\n\n\t\tcase Int16Array:\n\n\t\t\treturn Math.round( value * 32767.0 );\n\n\t\tcase Int8Array:\n\n\t\t\treturn Math.round( value * 127.0 );\n\n\t\tdefault:\n\n\t\t\tthrow new Error( 'Invalid component type.' );\n\n\t}\n\n}\n\nconst MathUtils = {\n\tDEG2RAD: DEG2RAD,\n\tRAD2DEG: RAD2DEG,\n\tgenerateUUID: generateUUID,\n\tclamp: clamp,\n\teuclideanModulo: euclideanModulo,\n\tmapLinear: mapLinear,\n\tinverseLerp: inverseLerp,\n\tlerp: lerp,\n\tdamp: damp,\n\tpingpong: pingpong,\n\tsmoothstep: smoothstep,\n\tsmootherstep: smootherstep,\n\trandInt: randInt,\n\trandFloat: randFloat,\n\trandFloatSpread: randFloatSpread,\n\tseededRandom: seededRandom,\n\tdegToRad: degToRad,\n\tradToDeg: radToDeg,\n\tisPowerOfTwo: isPowerOfTwo,\n\tceilPowerOfTwo: ceilPowerOfTwo,\n\tfloorPowerOfTwo: floorPowerOfTwo,\n\tsetQuaternionFromProperEuler: setQuaternionFromProperEuler,\n\tnormalize: normalize,\n\tdenormalize: denormalize\n};\n\n/**\n * Class representing a 2D vector. A 2D vector is an ordered pair of numbers\n * (labeled x and y), which can be used to represent a number of things, such as:\n *\n * - A point in 2D space (i.e. a position on a plane).\n * - A direction and length across a plane. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0)` to `(x, y)`\n * and the direction is also measured from `(0, 0)` towards `(x, y)`.\n * - Any arbitrary ordered pair of numbers.\n *\n * There are other things a 2D vector can be used to represent, such as\n * momentum vectors, complex numbers and so on, however these are the most\n * common uses in three.js.\n *\n * Iterating through a vector instance will yield its components `(x, y)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector2( 0, 1 );\n *\n * //no arguments; will be initialised to (0, 0)\n * const b = new THREE.Vector2( );\n *\n * const d = a.distanceTo( b );\n * ```\n */\nclass Vector2 {\n\n\t/**\n\t * Constructs a new 2D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t */\n\tconstructor( x = 0, y = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector2.prototype.isVector2 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector2#x}.\n\t *\n\t * @type {number}\n\t */\n\tget width() {\n\n\t\treturn this.x;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.x = value;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector2#y}.\n\t *\n\t * @type {number}\n\t */\n\tget height() {\n\n\t\treturn this.y;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.y = value;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tset( x, y ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y.\n\t * @param {number} value - The value to set.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to copy.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to add.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector2} a - The first vector.\n\t * @param {Vector2} b - The second vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector2} v - The vector to subtract.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector2} a - The first vector.\n\t * @param {Vector2} b - The second vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to multiply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector2} v - The vector to divide.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * Multiplies this vector (with an implicit 1 as the 3rd component) by\n\t * the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to apply.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is greater than the given vector's x or y\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is less than the given vector's x or y\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector2} v - The vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y value is greater than the max vector's x or y\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x or y value is less than the min vector's x or y value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector2} min - The minimum x and y values.\n\t * @param {Vector2} max - The maximum x and y values in the desired range.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x or y values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x or y values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x and y = -y.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y;\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vector with this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the cross product with.\n\t * @return {number} The result of the cross product.\n\t */\n\tcross( v ) {\n\n\t\treturn this.x * v.y - this.y * v.x;\n\n\t}\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0) to (x, y). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y;\n\n\t}\n\n\t/**\n\t * Computes the  Euclidean length (straight-line length) from (0, 0) to (x, y).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Computes the angle in radians of this vector with respect to the positive x-axis.\n\t *\n\t * @return {number} The angle in radians.\n\t */\n\tangle() {\n\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\n\n\t\treturn angle;\n\n\t}\n\n\t/**\n\t * Returns the angle between the given vector and this instance in radians.\n\t *\n\t * @param {Vector2} v - The vector to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, -1, 1 ) );\n\n\t}\n\n\t/**\n\t * Computes the distance from the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\t/**\n\t * Computes the squared distance from the given vector to this instance.\n\t * If you are just comparing the distance with another distance, you should compare\n\t * the distance squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @param {Vector2} v - The vector to compute the squared distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\n\t\treturn dx * dx + dy * dy;\n\n\t}\n\n\t/**\n\t * Computes the Manhattan distance from the given vector to this instance.\n\t *\n\t * @param {Vector2} v - The vector to compute the Manhattan distance to.\n\t * @return {number} The Manhattan distance.\n\t */\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector2} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector2} v1 - The first vector.\n\t * @param {Vector2} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector2} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]` and y\n\t * value to be `array[ offset + 1 ]`.\n\t *\n\t * @param {Array<number>} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number>} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates this vector around the given center by the given angle.\n\t *\n\t * @param {Vector2} center - The point around which to rotate.\n\t * @param {number} angle - The angle to rotate, in radians.\n\t * @return {Vector2} A reference to this vector.\n\t */\n\trotateAround( center, angle ) {\n\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\n\n\t\tconst x = this.x - center.x;\n\t\tconst y = this.y - center.y;\n\n\t\tthis.x = x * c - y * s + center.x;\n\t\tthis.y = x * s + y * c + center.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector2} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\n\t}\n\n}\n\n/**\n * Represents a 3x3 matrix.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix3#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix();\n * m.set( 11, 12, 13,\n *        21, 22, 23,\n *        31, 32, 33 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21, 31,\n *                12, 22, 32,\n *                13, 23, 33 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix3 {\n\n\t/**\n\t * Constructs a new 3x3 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t */\n\tconstructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix3.prototype.isMatrix3 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array<number>}\n\t\t */\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n21, n22, n23, n31, n32, n33 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 3x3 identity matrix.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0,\n\t\t\t0, 1, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given matrix to this instance.\n\t *\n\t * @param {Matrix3} m - The matrix to copy.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the basis of this matrix into the three axis vectors provided.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrix3Column( this, 0 );\n\t\tyAxis.setFromMatrix3Column( this, 1 );\n\t\tzAxis.setFromMatrix3Column( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Set this matrix to the upper 3x3 matrix of the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tsetFromMatrix4( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Post-multiplies this matrix by the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to multiply with.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this matrix by the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix to multiply with.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\t/**\n\t * Multiples the given 3x3 matrices and stores the result\n\t * in this matrix.\n\t *\n\t * @param {Matrix3} a - The first matrix.\n\t * @param {Matrix3} b - The second matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies every component of the matrix by the given scalar.\n\t *\n\t * @param {number} s - The scalar.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes and returns the determinant of this matrix.\n\t *\n\t * @return {number} The determinant.\n\t */\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\n\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\n\n\t}\n\n\t/**\n\t * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n\t * You can not invert with a determinant of zero. If you attempt this, the method produces\n\t * a zero matrix instead.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tinvert() {\n\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\n\n\t\t\tt11 = n33 * n22 - n32 * n23,\n\t\t\tt12 = n32 * n13 - n33 * n12,\n\t\t\tt13 = n23 * n12 - n22 * n13,\n\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\n\n\t\tte[ 3 ] = t12 * detInv;\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\n\n\t\tte[ 6 ] = t13 * detInv;\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transposes this matrix in place.\n\t *\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttranspose() {\n\n\t\tlet tmp;\n\t\tconst m = this.elements;\n\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the normal matrix which is the inverse transpose of the upper\n\t * left 3x3 portion of the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} matrix4 - The 4x4 matrix.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tgetNormalMatrix( matrix4 ) {\n\n\t\treturn this.setFromMatrix4( matrix4 ).invert().transpose();\n\n\t}\n\n\t/**\n\t * Transposes this matrix into the supplied array, and returns itself unchanged.\n\t *\n\t * @param {Array<number>} r - An array to store the transposed matrix elements.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttransposeIntoArray( r ) {\n\n\t\tconst m = this.elements;\n\n\t\tr[ 0 ] = m[ 0 ];\n\t\tr[ 1 ] = m[ 3 ];\n\t\tr[ 2 ] = m[ 6 ];\n\t\tr[ 3 ] = m[ 1 ];\n\t\tr[ 4 ] = m[ 4 ];\n\t\tr[ 5 ] = m[ 7 ];\n\t\tr[ 6 ] = m[ 2 ];\n\t\tr[ 7 ] = m[ 5 ];\n\t\tr[ 8 ] = m[ 8 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the UV transform matrix from offset, repeat, rotation, and center.\n\t *\n\t * @param {number} tx - Offset x.\n\t * @param {number} ty - Offset y.\n\t * @param {number} sx - Repeat x.\n\t * @param {number} sy - Repeat y.\n\t * @param {number} rotation - Rotation, in radians. Positive values rotate counterclockwise.\n\t * @param {number} cx - Center x of rotation.\n\t * @param {number} cy - Center y of rotation\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\n\n\t\tconst c = Math.cos( rotation );\n\t\tconst s = Math.sin( rotation );\n\n\t\tthis.set(\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\n\t\t\t0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales this matrix with the given scalar values.\n\t *\n\t * @param {number} sx - The amount to scale in the X axis.\n\t * @param {number} sy - The amount to scale in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tscale( sx, sy ) {\n\n\t\tthis.premultiply( _m3.makeScale( sx, sy ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates this matrix by the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\trotate( theta ) {\n\n\t\tthis.premultiply( _m3.makeRotation( - theta ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates this matrix by the given scalar values.\n\t *\n\t * @param {number} tx - The amount to translate in the X axis.\n\t * @param {number} ty - The amount to translate in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\ttranslate( tx, ty ) {\n\n\t\tthis.premultiply( _m3.makeTranslation( tx, ty ) );\n\n\t\treturn this;\n\n\t}\n\n\t// for 2D Transforms\n\n\t/**\n\t * Sets this matrix as a 2D translation transform.\n\t *\n\t * @param {number|Vector2} x - The amount to translate in the X axis or alternatively a translation vector.\n\t * @param {number} y - The amount to translate in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeTranslation( x, y ) {\n\n\t\tif ( x.isVector2 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x.x,\n\t\t\t\t0, 1, x.y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, x,\n\t\t\t\t0, 1, y,\n\t\t\t\t0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a 2D rotational transformation.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeRotation( theta ) {\n\n\t\t// counterclockwise\n\n\t\tconst c = Math.cos( theta );\n\t\tconst s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0,\n\t\t\ts, c, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a 2D scale transform.\n\t *\n\t * @param {number} x - The amount to scale in the X axis.\n\t * @param {number} y - The amount to scale in the Y axis.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tmakeScale( x, y ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0,\n\t\t\t0, y, 0,\n\t\t\t0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this matrix is equal with the given one.\n\t *\n\t * @param {Matrix3} matrix - The matrix to test for equality.\n\t * @return {boolean} Whether this matrix is equal with the given one.\n\t */\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array<number>} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix3} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the elements of this matrix to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array holding the matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number>} The matrix elements in column-major order.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Returns a matrix with copied values from this instance.\n\t *\n\t * @return {Matrix3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().fromArray( this.elements );\n\n\t}\n\n}\n\nconst _m3 = /*@__PURE__*/ new Matrix3();\n\nfunction arrayNeedsUint32( array ) {\n\n\t// assumes larger values usually on last\n\n\tfor ( let i = array.length - 1; i >= 0; -- i ) {\n\n\t\tif ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565\n\n\t}\n\n\treturn false;\n\n}\n\nconst TYPED_ARRAYS = {\n\tInt8Array: Int8Array,\n\tUint8Array: Uint8Array,\n\tUint8ClampedArray: Uint8ClampedArray,\n\tInt16Array: Int16Array,\n\tUint16Array: Uint16Array,\n\tInt32Array: Int32Array,\n\tUint32Array: Uint32Array,\n\tFloat32Array: Float32Array,\n\tFloat64Array: Float64Array\n};\n\nfunction getTypedArray( type, buffer ) {\n\n\treturn new TYPED_ARRAYS[ type ]( buffer );\n\n}\n\nfunction createElementNS( name ) {\n\n\treturn document.createElementNS( 'http://www.w3.org/1999/xhtml', name );\n\n}\n\nfunction createCanvasElement() {\n\n\tconst canvas = createElementNS( 'canvas' );\n\tcanvas.style.display = 'block';\n\treturn canvas;\n\n}\n\nconst _cache = {};\n\nfunction warnOnce( message ) {\n\n\tif ( message in _cache ) return;\n\n\t_cache[ message ] = true;\n\n\tconsole.warn( message );\n\n}\n\nfunction probeAsync( gl, sync, interval ) {\n\n\treturn new Promise( function ( resolve, reject ) {\n\n\t\tfunction probe() {\n\n\t\t\tswitch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {\n\n\t\t\t\tcase gl.WAIT_FAILED:\n\t\t\t\t\treject();\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase gl.TIMEOUT_EXPIRED:\n\t\t\t\t\tsetTimeout( probe, interval );\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tresolve();\n\n\t\t\t}\n\n\t\t}\n\n\t\tsetTimeout( probe, interval );\n\n\t} );\n\n}\n\nfunction toNormalizedProjectionMatrix( projectionMatrix ) {\n\n\tconst m = projectionMatrix.elements;\n\n\t// Convert [-1, 1] to [0, 1] projection matrix\n\tm[ 2 ] = 0.5 * m[ 2 ] + 0.5 * m[ 3 ];\n\tm[ 6 ] = 0.5 * m[ 6 ] + 0.5 * m[ 7 ];\n\tm[ 10 ] = 0.5 * m[ 10 ] + 0.5 * m[ 11 ];\n\tm[ 14 ] = 0.5 * m[ 14 ] + 0.5 * m[ 15 ];\n\n}\n\nfunction toReversedProjectionMatrix( projectionMatrix ) {\n\n\tconst m = projectionMatrix.elements;\n\tconst isPerspectiveMatrix = m[ 11 ] === -1;\n\n\t// Reverse [0, 1] projection matrix\n\tif ( isPerspectiveMatrix ) {\n\n\t\tm[ 10 ] = - m[ 10 ] - 1;\n\t\tm[ 14 ] = - m[ 14 ];\n\n\t} else {\n\n\t\tm[ 10 ] = - m[ 10 ];\n\t\tm[ 14 ] = - m[ 14 ] + 1;\n\n\t}\n\n}\n\nconst LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set(\n\t0.4123908, 0.3575843, 0.1804808,\n\t0.2126390, 0.7151687, 0.0721923,\n\t0.0193308, 0.1191948, 0.9505322\n);\n\nconst XYZ_TO_LINEAR_REC709 = /*@__PURE__*/ new Matrix3().set(\n\t3.2409699, -1.5373832, -0.4986108,\n\t-0.9692436, 1.8759675, 0.0415551,\n\t0.0556301, -0.203977, 1.0569715\n);\n\nfunction createColorManagement() {\n\n\tconst ColorManagement = {\n\n\t\tenabled: true,\n\n\t\tworkingColorSpace: LinearSRGBColorSpace,\n\n\t\t/**\n\t\t * Implementations of supported color spaces.\n\t\t *\n\t\t * Required:\n\t\t *\t- primaries: chromaticity coordinates [ rx ry gx gy bx by ]\n\t\t *\t- whitePoint: reference white [ x y ]\n\t\t *\t- transfer: transfer function (pre-defined)\n\t\t *\t- toXYZ: Matrix3 RGB to XYZ transform\n\t\t *\t- fromXYZ: Matrix3 XYZ to RGB transform\n\t\t *\t- luminanceCoefficients: RGB luminance coefficients\n\t\t *\n\t\t * Optional:\n\t\t *  - outputColorSpaceConfig: { drawingBufferColorSpace: ColorSpace }\n\t\t *  - workingColorSpaceConfig: { unpackColorSpace: ColorSpace }\n\t\t *\n\t\t * Reference:\n\t\t * - https://www.russellcottrell.com/photo/matrixCalculator.htm\n\t\t */\n\t\tspaces: {},\n\n\t\tconvert: function ( color, sourceColorSpace, targetColorSpace ) {\n\n\t\t\tif ( this.enabled === false || sourceColorSpace === targetColorSpace || ! sourceColorSpace || ! targetColorSpace ) {\n\n\t\t\t\treturn color;\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = SRGBToLinear( color.r );\n\t\t\t\tcolor.g = SRGBToLinear( color.g );\n\t\t\t\tcolor.b = SRGBToLinear( color.b );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ sourceColorSpace ].primaries !== this.spaces[ targetColorSpace ].primaries ) {\n\n\t\t\t\tcolor.applyMatrix3( this.spaces[ sourceColorSpace ].toXYZ );\n\t\t\t\tcolor.applyMatrix3( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t\t}\n\n\t\t\tif ( this.spaces[ targetColorSpace ].transfer === SRGBTransfer ) {\n\n\t\t\t\tcolor.r = LinearToSRGB( color.r );\n\t\t\t\tcolor.g = LinearToSRGB( color.g );\n\t\t\t\tcolor.b = LinearToSRGB( color.b );\n\n\t\t\t}\n\n\t\t\treturn color;\n\n\t\t},\n\n\t\tfromWorkingColorSpace: function ( color, targetColorSpace ) {\n\n\t\t\treturn this.convert( color, this.workingColorSpace, targetColorSpace );\n\n\t\t},\n\n\t\ttoWorkingColorSpace: function ( color, sourceColorSpace ) {\n\n\t\t\treturn this.convert( color, sourceColorSpace, this.workingColorSpace );\n\n\t\t},\n\n\t\tgetPrimaries: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].primaries;\n\n\t\t},\n\n\t\tgetTransfer: function ( colorSpace ) {\n\n\t\t\tif ( colorSpace === NoColorSpace ) return LinearTransfer;\n\n\t\t\treturn this.spaces[ colorSpace ].transfer;\n\n\t\t},\n\n\t\tgetLuminanceCoefficients: function ( target, colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn target.fromArray( this.spaces[ colorSpace ].luminanceCoefficients );\n\n\t\t},\n\n\t\tdefine: function ( colorSpaces ) {\n\n\t\t\tObject.assign( this.spaces, colorSpaces );\n\n\t\t},\n\n\t\t// Internal APIs\n\n\t\t_getMatrix: function ( targetMatrix, sourceColorSpace, targetColorSpace ) {\n\n\t\t\treturn targetMatrix\n\t\t\t\t.copy( this.spaces[ sourceColorSpace ].toXYZ )\n\t\t\t\t.multiply( this.spaces[ targetColorSpace ].fromXYZ );\n\n\t\t},\n\n\t\t_getDrawingBufferColorSpace: function ( colorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].outputColorSpaceConfig.drawingBufferColorSpace;\n\n\t\t},\n\n\t\t_getUnpackColorSpace: function ( colorSpace = this.workingColorSpace ) {\n\n\t\t\treturn this.spaces[ colorSpace ].workingColorSpaceConfig.unpackColorSpace;\n\n\t\t}\n\n\t};\n\n\t/******************************************************************************\n\t * sRGB definitions\n\t */\n\n\tconst REC709_PRIMARIES = [ 0.640, 0.330, 0.300, 0.600, 0.150, 0.060 ];\n\tconst REC709_LUMINANCE_COEFFICIENTS = [ 0.2126, 0.7152, 0.0722 ];\n\tconst D65 = [ 0.3127, 0.3290 ];\n\n\tColorManagement.define( {\n\n\t\t[ LinearSRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: LinearTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\tworkingColorSpaceConfig: { unpackColorSpace: SRGBColorSpace },\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t\t[ SRGBColorSpace ]: {\n\t\t\tprimaries: REC709_PRIMARIES,\n\t\t\twhitePoint: D65,\n\t\t\ttransfer: SRGBTransfer,\n\t\t\ttoXYZ: LINEAR_REC709_TO_XYZ,\n\t\t\tfromXYZ: XYZ_TO_LINEAR_REC709,\n\t\t\tluminanceCoefficients: REC709_LUMINANCE_COEFFICIENTS,\n\t\t\toutputColorSpaceConfig: { drawingBufferColorSpace: SRGBColorSpace }\n\t\t},\n\n\t} );\n\n\treturn ColorManagement;\n\n}\n\nconst ColorManagement = /*@__PURE__*/ createColorManagement();\n\nfunction SRGBToLinear( c ) {\n\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\n\n}\n\nfunction LinearToSRGB( c ) {\n\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\n\n}\n\nlet _canvas;\n\n/**\n * A class containing utility functions for images.\n *\n * @hideconstructor\n */\nclass ImageUtils {\n\n\t/**\n\t * Returns a data URI containing a representation of the given image.\n\t *\n\t * @param {(HTMLImageElement|HTMLCanvasElement)} image - The image object.\n\t * @return {string} The data URI.\n\t */\n\tstatic getDataURL( image ) {\n\n\t\tif ( /^data:/i.test( image.src ) ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tif ( typeof HTMLCanvasElement === 'undefined' ) {\n\n\t\t\treturn image.src;\n\n\t\t}\n\n\t\tlet canvas;\n\n\t\tif ( image instanceof HTMLCanvasElement ) {\n\n\t\t\tcanvas = image;\n\n\t\t} else {\n\n\t\t\tif ( _canvas === undefined ) _canvas = createElementNS( 'canvas' );\n\n\t\t\t_canvas.width = image.width;\n\t\t\t_canvas.height = image.height;\n\n\t\t\tconst context = _canvas.getContext( '2d' );\n\n\t\t\tif ( image instanceof ImageData ) {\n\n\t\t\t\tcontext.putImageData( image, 0, 0 );\n\n\t\t\t} else {\n\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\t}\n\n\t\t\tcanvas = _canvas;\n\n\t\t}\n\n\t\treturn canvas.toDataURL( 'image/png' );\n\n\t}\n\n\t/**\n\t * Converts the given sRGB image data to linear color space.\n\t *\n\t * @param {(HTMLImageElement|HTMLCanvasElement|ImageBitmap|Object)} image - The image object.\n\t * @return {HTMLCanvasElement|Object} The converted image.\n\t */\n\tstatic sRGBToLinear( image ) {\n\n\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t\tconst canvas = createElementNS( 'canvas' );\n\n\t\t\tcanvas.width = image.width;\n\t\t\tcanvas.height = image.height;\n\n\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\n\n\t\t\tconst imageData = context.getImageData( 0, 0, image.width, image.height );\n\t\t\tconst data = imageData.data;\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] / 255 ) * 255;\n\n\t\t\t}\n\n\t\t\tcontext.putImageData( imageData, 0, 0 );\n\n\t\t\treturn canvas;\n\n\t\t} else if ( image.data ) {\n\n\t\t\tconst data = image.data.slice( 0 );\n\n\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\t\tif ( data instanceof Uint8Array || data instanceof Uint8ClampedArray ) {\n\n\t\t\t\t\tdata[ i ] = Math.floor( SRGBToLinear( data[ i ] / 255 ) * 255 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// assuming float\n\n\t\t\t\t\tdata[ i ] = SRGBToLinear( data[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tdata: data,\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );\n\t\t\treturn image;\n\n\t\t}\n\n\t}\n\n}\n\nlet _sourceId = 0;\n\nclass Source {\n\n\tconstructor( data = null ) {\n\n\t\tthis.isSource = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _sourceId ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.data = data;\n\t\tthis.dataReady = true;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.images[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.images[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\t\t\tuuid: this.uuid,\n\t\t\turl: ''\n\t\t};\n\n\t\tconst data = this.data;\n\n\t\tif ( data !== null ) {\n\n\t\t\tlet url;\n\n\t\t\tif ( Array.isArray( data ) ) {\n\n\t\t\t\t// cube texture\n\n\t\t\t\turl = [];\n\n\t\t\t\tfor ( let i = 0, l = data.length; i < l; i ++ ) {\n\n\t\t\t\t\tif ( data[ i ].isDataTexture ) {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ].image ) );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\turl.push( serializeImage( data[ i ] ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// texture\n\n\t\t\t\turl = serializeImage( data );\n\n\t\t\t}\n\n\t\t\toutput.url = url;\n\n\t\t}\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.images[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n}\n\nfunction serializeImage( image ) {\n\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\n\n\t\t// default images\n\n\t\treturn ImageUtils.getDataURL( image );\n\n\t} else {\n\n\t\tif ( image.data ) {\n\n\t\t\t// images of DataTexture\n\n\t\t\treturn {\n\t\t\t\tdata: Array.from( image.data ),\n\t\t\t\twidth: image.width,\n\t\t\t\theight: image.height,\n\t\t\t\ttype: image.data.constructor.name\n\t\t\t};\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\n\t\t\treturn {};\n\n\t\t}\n\n\t}\n\n}\n\nlet _textureId = 0;\n\n/**\n * Base class for all textures.\n *\n * Note: After the initial use of a texture, its dimensions, format, and type\n * cannot be changed. Instead, call {@link Texture#dispose} on the texture and instantiate a new one.\n *\n * @augments EventDispatcher\n */\nclass Texture extends EventDispatcher {\n\n\t/**\n\t * Constructs a new texture.\n\t *\n\t * @param {?Object} [image=Texture.DEFAULT_IMAGE] - The image holding the texture data.\n\t * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.\n\t * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.\n\t * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.\n\t * @param {number} [magFilter=LinearFilter] - The mag filter value.\n\t * @param {number} [minFilter=LinearFilter] - The min filter value.\n\t * @param {number} [format=RGBAFormat] - The min filter value.\n\t * @param {number} [type=UnsignedByteType] - The min filter value.\n\t * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The min filter value.\n\t * @param {string} [colorSpace=NoColorSpace] - The min filter value.\n\t */\n\tconstructor( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isTexture = true;\n\n\t\t/**\n\t\t * The ID of the texture.\n\t\t *\n\t\t * @name Texture#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _textureId ++ } );\n\n\t\t/**\n\t\t * The UUID of the material.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the material.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The data definition of a texture. A reference to the data source can be\n\t\t * shared across textures. This is often useful in context of spritesheets\n\t\t * where multiple textures render the same data but with different texture\n\t\t * transformations.\n\t\t *\n\t\t * @type {Source}\n\t\t */\n\t\tthis.source = new Source( image );\n\n\t\t/**\n\t\t * An array holding user-defined mipmaps.\n\t\t *\n\t\t * @type {Array<Object>}\n\t\t */\n\t\tthis.mipmaps = [];\n\n\t\t/**\n\t\t * How the texture is applied to the object. The value `UVMapping`\n\t\t * is the default, where texture or uv coordinates are used to apply the map.\n\t\t *\n\t\t * @type {(UVMapping|CubeReflectionMapping|CubeRefractionMapping|EquirectangularReflectionMapping|EquirectangularRefractionMapping|CubeUVReflectionMapping)}\n\t\t * @default UVMapping\n\t\t*/\n\t\tthis.mapping = mapping;\n\n\t\t/**\n\t\t * Lets you select the uv attribute to map the texture to. `0` for `uv`,\n\t\t * `1` for `uv1`, `2` for `uv2` and `3` for `uv3`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.channel = 0;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped horizontally and corresponds to\n\t\t * *U* in UV mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapS = wrapS;\n\n\t\t/**\n\t\t * This defines how the texture is wrapped horizontally and corresponds to\n\t\t * *V* in UV mapping.\n\t\t *\n\t\t * @type {(RepeatWrapping|ClampToEdgeWrapping|MirroredRepeatWrapping)}\n\t\t * @default ClampToEdgeWrapping\n\t\t */\n\t\tthis.wrapT = wrapT;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers more than one pixel.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default LinearFilter\n\t\t */\n\t\tthis.magFilter = magFilter;\n\n\t\t/**\n\t\t * How the texture is sampled when a texel covers less than one pixel.\n\t\t *\n\t\t * @type {(NearestFilter|NearestMipmapNearestFilter|NearestMipmapLinearFilter|LinearFilter|LinearMipmapNearestFilter|LinearMipmapLinearFilter)}\n\t\t * @default LinearMipmapLinearFilter\n\t\t */\n\t\tthis.minFilter = minFilter;\n\n\t\t/**\n\t\t * The number of samples taken along the axis through the pixel that has the\n\t\t * highest density of texels. By default, this value is `1`. A higher value\n\t\t * gives a less blurry result than a basic mipmap, at the cost of more\n\t\t * texture samples being used.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.anisotropy = anisotropy;\n\n\t\t/**\n\t\t * The format of the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default RGBAFormat\n\t\t */\n\t\tthis.format = format;\n\n\t\t/**\n\t\t * The default internal format is derived from {@link Texture#format} and {@link Texture#type} and\n\t\t * defines how the texture data is going to be stored on the GPU.\n\t\t *\n\t\t * This property allows to overwrite the default format.\n\t\t *\n\t\t * @type {?string}\n\t\t * @default null\n\t\t */\n\t\tthis.internalFormat = null;\n\n\t\t/**\n\t\t * The data type of the texture.\n\t\t *\n\t\t * @type {number}\n\t\t * @default UnsignedByteType\n\t\t */\n\t\tthis.type = type;\n\n\t\t/**\n\t\t * How much a single repetition of the texture is offset from the beginning,\n\t\t * in each direction U and V. Typical range is `0.0` to `1.0`.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0,0)\n\t\t */\n\t\tthis.offset = new Vector2( 0, 0 );\n\n\t\t/**\n\t\t * How many times the texture is repeated across the surface, in each\n\t\t * direction U and V. If repeat is set greater than `1` in either direction,\n\t\t * the corresponding wrap parameter should also be set to `RepeatWrapping`\n\t\t * or `MirroredRepeatWrapping` to achieve the desired tiling effect.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (1,1)\n\t\t */\n\t\tthis.repeat = new Vector2( 1, 1 );\n\n\t\t/**\n\t\t * The point around which rotation occurs. A value of `(0.5, 0.5)` corresponds\n\t\t * to the center of the texture. Default is `(0, 0)`, the lower left.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0,0)\n\t\t */\n\t\tthis.center = new Vector2( 0, 0 );\n\n\t\t/**\n\t\t * How much the texture is rotated around the center point, in radians.\n\t\t * Positive values are counter-clockwise.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.rotation = 0;\n\n\t\t/**\n\t\t * Whether to update the texture's uv-transformation {@link Texture#matrix}\n\t\t * from the properties {@link Texture#offset}, {@link Texture#repeat},\n\t\t * {@link Texture#rotation}, and {@link Texture#center}.\n\t\t *\n\t\t * Set this to `false` if you are specifying the uv-transform matrix directly.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixAutoUpdate = true;\n\n\t\t/**\n\t\t * The uv-transformation matrix of the texture.\n\t\t *\n\t\t * @type {Matrix3}\n\t\t */\n\t\tthis.matrix = new Matrix3();\n\n\t\t/**\n\t\t * Whether to generate mipmaps (if possible) for a texture.\n\t\t *\n\t\t * Set this to `false` if you are creating mipmaps manually.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.generateMipmaps = true;\n\n\t\t/**\n\t\t * If set to `true`, the alpha channel, if present, is multiplied into the\n\t\t * color channels when the texture is uploaded to the GPU.\n\t\t *\n\t\t * Note that this property has no effect when using `ImageBitmap`. You need to\n\t\t * configure premultiply alpha on bitmap creation instead.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.premultiplyAlpha = false;\n\n\t\t/**\n\t\t * If set to `true`, the texture is flipped along the vertical axis when\n\t\t * uploaded to the GPU.\n\t\t *\n\t\t * Note that this property has no effect when using `ImageBitmap`. You need to\n\t\t * configure the flip on bitmap creation instead.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.flipY = true;\n\n\t\t/**\n\t\t * Specifies the alignment requirements for the start of each pixel row in memory.\n\t\t * The allowable values are `1` (byte-alignment), `2` (rows aligned to even-numbered bytes),\n\t\t * `4` (word-alignment), and `8` (rows start on double-word boundaries).\n\t\t *\n\t\t * @type {number}\n\t\t * @default 4\n\t\t */\n\t\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\n\n\t\t/**\n\t\t * Textures containing color data should be annotated with `SRGBColorSpace` or `LinearSRGBColorSpace`.\n\t\t *\n\t\t * @type {string}\n\t\t * @default NoColorSpace\n\t\t */\n\t\tthis.colorSpace = colorSpace;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the texture. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Texture#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t\t/**\n\t\t * A callback function, called when the texture is updated (e.g., when\n\t\t * {@link Texture#needsUpdate} has been set to true and then the texture is used).\n\t\t *\n\t\t * @type {?Function}\n\t\t * @default null\n\t\t */\n\t\tthis.onUpdate = null;\n\n\t\t/**\n\t\t * An optional back reference to the textures render target.\n\t\t *\n\t\t * @type {?(RenderTarget|WebGLRenderTarget)}\n\t\t * @default null\n\t\t */\n\t\tthis.renderTarget = null;\n\n\t\t/**\n\t\t * Indicates whether a texture belongs to a render target or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isRenderTargetTexture = false;\n\n\t\t/**\n\t\t * Indicates whether this texture should be processed by `PMREMGenerator` or not\n\t\t * (only relevant for render target textures).\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.pmremVersion = 0;\n\n\t}\n\n\t/**\n\t * The image object holding the texture data.\n\t *\n\t * @type {?Object}\n\t */\n\tget image() {\n\n\t\treturn this.source.data;\n\n\t}\n\n\tset image( value = null ) {\n\n\t\tthis.source.data = value;\n\n\t}\n\n\t/**\n\t * Updates the texture transformation matrix from the from the properties {@link Texture#offset},\n\t * {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}.\n\t */\n\tupdateMatrix() {\n\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\n\n\t}\n\n\t/**\n\t * Returns a new texture with copied values from this instance.\n\t *\n\t * @return {Texture} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given texture to this instance.\n\t *\n\t * @param {Texture} source - The texture to copy.\n\t * @return {Texture} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.source = source.source;\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\n\n\t\tthis.mapping = source.mapping;\n\t\tthis.channel = source.channel;\n\n\t\tthis.wrapS = source.wrapS;\n\t\tthis.wrapT = source.wrapT;\n\n\t\tthis.magFilter = source.magFilter;\n\t\tthis.minFilter = source.minFilter;\n\n\t\tthis.anisotropy = source.anisotropy;\n\n\t\tthis.format = source.format;\n\t\tthis.internalFormat = source.internalFormat;\n\t\tthis.type = source.type;\n\n\t\tthis.offset.copy( source.offset );\n\t\tthis.repeat.copy( source.repeat );\n\t\tthis.center.copy( source.center );\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\t\tthis.matrix.copy( source.matrix );\n\n\t\tthis.generateMipmaps = source.generateMipmaps;\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\n\t\tthis.flipY = source.flipY;\n\t\tthis.unpackAlignment = source.unpackAlignment;\n\t\tthis.colorSpace = source.colorSpace;\n\n\t\tthis.renderTarget = source.renderTarget;\n\t\tthis.isRenderTargetTexture = source.isRenderTargetTexture;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tthis.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the texture into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized texture.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\n\n\t\t\treturn meta.textures[ this.uuid ];\n\n\t\t}\n\n\t\tconst output = {\n\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Texture',\n\t\t\t\tgenerator: 'Texture.toJSON'\n\t\t\t},\n\n\t\t\tuuid: this.uuid,\n\t\t\tname: this.name,\n\n\t\t\timage: this.source.toJSON( meta ).uuid,\n\n\t\t\tmapping: this.mapping,\n\t\t\tchannel: this.channel,\n\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\n\t\t\toffset: [ this.offset.x, this.offset.y ],\n\t\t\tcenter: [ this.center.x, this.center.y ],\n\t\t\trotation: this.rotation,\n\n\t\t\twrap: [ this.wrapS, this.wrapT ],\n\n\t\t\tformat: this.format,\n\t\t\tinternalFormat: this.internalFormat,\n\t\t\ttype: this.type,\n\t\t\tcolorSpace: this.colorSpace,\n\n\t\t\tminFilter: this.minFilter,\n\t\t\tmagFilter: this.magFilter,\n\t\t\tanisotropy: this.anisotropy,\n\n\t\t\tflipY: this.flipY,\n\n\t\t\tgenerateMipmaps: this.generateMipmaps,\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\n\t\t\tunpackAlignment: this.unpackAlignment\n\n\t\t};\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) output.userData = this.userData;\n\n\t\tif ( ! isRootObject ) {\n\n\t\t\tmeta.textures[ this.uuid ] = output;\n\n\t\t}\n\n\t\treturn output;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Texture#dispose\n\t */\n\tdispose() {\n\n\t\t/**\n\t\t * Fires when the texture has been disposed of.\n\t\t *\n\t\t * @event Texture#dispose\n\t\t * @type {Object}\n\t\t */\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Transforms the given uv vector with the textures uv transformation matrix.\n\t *\n\t * @param {Vector2} uv - The uv vector.\n\t * @return {Vector2} The transformed uv vector.\n\t */\n\ttransformUv( uv ) {\n\n\t\tif ( this.mapping !== UVMapping ) return uv;\n\n\t\tuv.applyMatrix3( this.matrix );\n\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\n\n\t\t\tswitch ( this.wrapS ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\n\n\t\t\tswitch ( this.wrapT ) {\n\n\t\t\t\tcase RepeatWrapping:\n\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ClampToEdgeWrapping:\n\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase MirroredRepeatWrapping:\n\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\n\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.flipY ) {\n\n\t\t\tuv.y = 1 - uv.y;\n\n\t\t}\n\n\t\treturn uv;\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the texture\n\t * must be updated in the next render. This triggers a texture upload\n\t * to the GPU and ensures correct texture parameter configuration.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.version ++;\n\t\t\tthis.source.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the PMREM\n\t * must be regenerated.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsPMREMUpdate( value ) {\n\n\t\tif ( value === true ) {\n\n\t\t\tthis.pmremVersion ++;\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * The default image for all textures.\n *\n * @static\n * @type {?Image}\n * @default null\n */\nTexture.DEFAULT_IMAGE = null;\n\n/**\n * The default mapping for all textures.\n *\n * @static\n * @type {number}\n * @default UVMapping\n */\nTexture.DEFAULT_MAPPING = UVMapping;\n\n/**\n * The default anisotropy value for all textures.\n *\n * @static\n * @type {number}\n * @default 1\n */\nTexture.DEFAULT_ANISOTROPY = 1;\n\n/**\n * Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers\n * (labeled x, y, z and w), which can be used to represent a number of things, such as:\n *\n * - A point in 4D space.\n * - A direction and length in 4D space. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)`\n * and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`.\n * - Any arbitrary ordered quadruplet of numbers.\n *\n * There are other things a 4D vector can be used to represent, however these\n * are the most common uses in *three.js*.\n *\n * Iterating through a vector instance will yield its components `(x, y, z, w)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector4( 0, 1, 0, 0 );\n *\n * //no arguments; will be initialised to (0, 0, 0, 1)\n * const b = new THREE.Vector4( );\n *\n * const d = a.dot( b );\n * ```\n */\nclass Vector4 {\n\n\t/**\n\t * Constructs a new 4D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t * @param {number} [z=0] - The z value of this vector.\n\t * @param {number} [w=1] - The w value of this vector.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector4.prototype.isVector4 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t\t/**\n\t\t * The z value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.z = z;\n\n\t\t/**\n\t\t * The w value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.w = w;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector4#z}.\n\t *\n\t * @type {number}\n\t */\n\tget width() {\n\n\t\treturn this.z;\n\n\t}\n\n\tset width( value ) {\n\n\t\tthis.z = value;\n\n\t}\n\n\t/**\n\t * Alias for {@link Vector4#w}.\n\t *\n\t * @type {number}\n\t */\n\tget height() {\n\n\t\treturn this.w;\n\n\t}\n\n\tset height( value ) {\n\n\t\tthis.w = value;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @param {number} z - The value of the z component.\n\t * @param {number} w - The value of the w component.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tset( x, y, z, w ) {\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\t\tthis.w = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's z component to the given value\n\t *\n\t * @param {number} z - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's w component to the given value\n\t *\n\t * @param {number} w - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetW( w ) {\n\n\t\tthis.w = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y,\n\t * `2` equals to z, `3` equals to w.\n\t * @param {number} value - The value to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tcase 3: this.w = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y,\n\t * `2` equals to z, `3` equals to w.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tcase 3: return this.w;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector4} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector3|Vector4} v - The vector to copy.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector4} v - The vector to add.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\t\tthis.w += v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\t\tthis.w += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector4} a - The first vector.\n\t * @param {Vector4} b - The second vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\t\tthis.w = a.w + b.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\t\tthis.w += v.w * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector4} v - The vector to subtract.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\t\tthis.w -= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\t\tthis.w -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector4} a - The first vector.\n\t * @param {Vector4} b - The second vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\t\tthis.w = a.w - b.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector4} v - The vector to multiply.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\t\tthis.w *= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\t\tthis.w *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this vector with the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector4} v - The vector to divide.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\t\tthis.w /= v.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * Sets the x, y and z components of this\n\t * vector to the quaternion's axis and w to the angle.\n\t *\n\t * @param {Quaternion} q - The Quaternion to set.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetAxisAngleFromQuaternion( q ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\n\n\t\t// q is assumed to be normalized\n\n\t\tthis.w = 2 * Math.acos( q.w );\n\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\n\n\t\tif ( s < 0.0001 ) {\n\n\t\t\tthis.x = 1;\n\t\t\tthis.y = 0;\n\t\t\tthis.z = 0;\n\n\t\t} else {\n\n\t\t\tthis.x = q.x / s;\n\t\t\tthis.y = q.y / s;\n\t\t\tthis.z = q.z / s;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the x, y and z components of this\n\t * vector to the axis of rotation and w to the angle.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper left 3x3 matrix is a pure rotation matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetAxisAngleFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tlet angle, x, y, z; // variables for result\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\n\n\t\t\tte = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\n\t\t     ( Math.abs( m13 - m31 ) < epsilon ) &&\n\t\t     ( Math.abs( m23 - m32 ) < epsilon ) ) {\n\n\t\t\t// singularity found\n\t\t\t// first check for identity matrix which must have +1 for all terms\n\t\t\t// in leading diagonal and zero in other terms\n\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m13 + m31 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m23 + m32 ) < epsilon2 ) &&\n\t\t\t     ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\n\n\t\t\t\t// this singularity is identity matrix so angle = 0\n\n\t\t\t\tthis.set( 1, 0, 0, 0 );\n\n\t\t\t\treturn this; // zero angle, arbitrary axis\n\n\t\t\t}\n\n\t\t\t// otherwise this singularity is angle = 180\n\n\t\t\tangle = Math.PI;\n\n\t\t\tconst xx = ( m11 + 1 ) / 2;\n\t\t\tconst yy = ( m22 + 1 ) / 2;\n\t\t\tconst zz = ( m33 + 1 ) / 2;\n\t\t\tconst xy = ( m12 + m21 ) / 4;\n\t\t\tconst xz = ( m13 + m31 ) / 4;\n\t\t\tconst yz = ( m23 + m32 ) / 4;\n\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\n\n\t\t\t\t// m11 is the largest diagonal term\n\n\t\t\t\tif ( xx < epsilon ) {\n\n\t\t\t\t\tx = 0;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tx = Math.sqrt( xx );\n\t\t\t\t\ty = xy / x;\n\t\t\t\t\tz = xz / x;\n\n\t\t\t\t}\n\n\t\t\t} else if ( yy > zz ) {\n\n\t\t\t\t// m22 is the largest diagonal term\n\n\t\t\t\tif ( yy < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0;\n\t\t\t\t\tz = 0.707106781;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ty = Math.sqrt( yy );\n\t\t\t\t\tx = xy / y;\n\t\t\t\t\tz = yz / y;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// m33 is the largest diagonal term so base result on this\n\n\t\t\t\tif ( zz < epsilon ) {\n\n\t\t\t\t\tx = 0.707106781;\n\t\t\t\t\ty = 0.707106781;\n\t\t\t\t\tz = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tz = Math.sqrt( zz );\n\t\t\t\t\tx = xz / z;\n\t\t\t\t\ty = yz / z;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.set( x, y, z, angle );\n\n\t\t\treturn this; // return 180 deg rotation\n\n\t\t}\n\n\t\t// as we have reached here there are no singularities so we can handle normally\n\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\n\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\n\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\n\t\t// caught by singularity test above, but I've left it in just in case\n\n\t\tthis.x = ( m32 - m23 ) / s;\n\t\tthis.y = ( m13 - m31 ) / s;\n\t\tthis.z = ( m21 - m12 ) / s;\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the position elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\t\tthis.w = e[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is greater than the given vector's x, y, z or w\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\t\tthis.w = Math.min( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is less than the given vector's x, y, z or w\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector4} v - The vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\t\tthis.w = Math.max( this.w, v.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w value is greater than the max vector's x, y, z or w\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x, y, z or w value is less than the min vector's x, y, z or w value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector4} min - The minimum x, y and z values.\n\t * @param {Vector4} max - The maximum x, y and z values in the desired range.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\t\tthis.w = clamp( this.w, min.w, max.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y, z or w values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x, y, z or w values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\t\tthis.w = clamp( this.w, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\t\tthis.w = Math.floor( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\t\tthis.w = Math.ceil( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\t\tthis.w = Math.round( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\t\tthis.w = Math.trunc( this.w );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x, y = -y, z = -z, w = -w.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\t\tthis.w = - this.w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector4} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\n\n\t}\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0, 0, 0) to (x, y, z, w). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\n\t}\n\n\t/**\n\t * Computes the  Euclidean length (straight-line length) from (0, 0, 0, 0) to (x, y, z, w).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector4} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\t\tthis.w += ( v.w - this.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector4} v1 - The first vector.\n\t * @param {Vector4} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector4} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`,\n\t * z value to be `array[ offset + 2 ]`, w value to be `array[ offset + 3 ]`.\n\t *\n\t * @param {Array<number>} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\t\tthis.w = array[ offset + 3 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number>} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\t\tarray[ offset + 3 ] = this.w;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector4} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\t\tthis.w = attribute.getW( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector4} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\t\tthis.w = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\t\tyield this.w;\n\n\t}\n\n}\n\n/*\n In options, we can specify:\n * Texture parameters for an auto-generated target texture\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\n*/\nclass RenderTarget extends EventDispatcher {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.isRenderTarget = true;\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\t\tthis.depth = 1;\n\n\t\tthis.scissor = new Vector4( 0, 0, width, height );\n\t\tthis.scissorTest = false;\n\n\t\tthis.viewport = new Vector4( 0, 0, width, height );\n\n\t\tconst image = { width: width, height: height, depth: 1 };\n\n\t\toptions = Object.assign( {\n\t\t\tgenerateMipmaps: false,\n\t\t\tinternalFormat: null,\n\t\t\tminFilter: LinearFilter,\n\t\t\tdepthBuffer: true,\n\t\t\tstencilBuffer: false,\n\t\t\tresolveDepthBuffer: true,\n\t\t\tresolveStencilBuffer: true,\n\t\t\tdepthTexture: null,\n\t\t\tsamples: 0,\n\t\t\tcount: 1\n\t\t}, options );\n\n\t\tconst texture = new Texture( image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\ttexture.flipY = false;\n\t\ttexture.generateMipmaps = options.generateMipmaps;\n\t\ttexture.internalFormat = options.internalFormat;\n\n\t\tthis.textures = [];\n\n\t\tconst count = options.count;\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.textures[ i ] = texture.clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\t\t\tthis.textures[ i ].renderTarget = this;\n\n\t\t}\n\n\t\tthis.depthBuffer = options.depthBuffer;\n\t\tthis.stencilBuffer = options.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = options.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = options.resolveStencilBuffer;\n\n\t\tthis._depthTexture = null;\n\t\tthis.depthTexture = options.depthTexture;\n\n\t\tthis.samples = options.samples;\n\n\t}\n\n\tget texture() {\n\n\t\treturn this.textures[ 0 ];\n\n\t}\n\n\tset texture( value ) {\n\n\t\tthis.textures[ 0 ] = value;\n\n\t}\n\n\tset depthTexture( current ) {\n\n\t\tif ( this._depthTexture !== null ) this._depthTexture.renderTarget = null;\n\t\tif ( current !== null ) current.renderTarget = this;\n\n\t\tthis._depthTexture = current;\n\n\t}\n\n\tget depthTexture() {\n\n\t\treturn this._depthTexture;\n\n\t}\n\n\tsetSize( width, height, depth = 1 ) {\n\n\t\tif ( this.width !== width || this.height !== height || this.depth !== depth ) {\n\n\t\t\tthis.width = width;\n\t\t\tthis.height = height;\n\t\t\tthis.depth = depth;\n\n\t\t\tfor ( let i = 0, il = this.textures.length; i < il; i ++ ) {\n\n\t\t\t\tthis.textures[ i ].image.width = width;\n\t\t\t\tthis.textures[ i ].image.height = height;\n\t\t\t\tthis.textures[ i ].image.depth = depth;\n\n\t\t\t}\n\n\t\t\tthis.dispose();\n\n\t\t}\n\n\t\tthis.viewport.set( 0, 0, width, height );\n\t\tthis.scissor.set( 0, 0, width, height );\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\t\tthis.depth = source.depth;\n\n\t\tthis.scissor.copy( source.scissor );\n\t\tthis.scissorTest = source.scissorTest;\n\n\t\tthis.viewport.copy( source.viewport );\n\n\t\tthis.textures.length = 0;\n\n\t\tfor ( let i = 0, il = source.textures.length; i < il; i ++ ) {\n\n\t\t\tthis.textures[ i ] = source.textures[ i ].clone();\n\t\t\tthis.textures[ i ].isRenderTargetTexture = true;\n\t\t\tthis.textures[ i ].renderTarget = this;\n\n\t\t\t// ensure image object is not shared, see #20328\n\n\t\t\tconst image = Object.assign( {}, source.textures[ i ].image );\n\t\t\tthis.textures[ i ].source = new Source( image );\n\n\t\t}\n\n\t\tthis.depthBuffer = source.depthBuffer;\n\t\tthis.stencilBuffer = source.stencilBuffer;\n\n\t\tthis.resolveDepthBuffer = source.resolveDepthBuffer;\n\t\tthis.resolveStencilBuffer = source.resolveStencilBuffer;\n\n\t\tif ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();\n\n\t\tthis.samples = source.samples;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nclass WebGLRenderTarget extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLRenderTarget = true;\n\n\t}\n\n}\n\nclass DataArrayTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\tsuper( null );\n\n\t\tthis.isDataArrayTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGLArrayRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Data3DTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, depth = 1 ) {\n\n\t\t// We're going to add .setXXX() methods for setting properties later.\n\t\t// Users can still set in Data3DTexture directly.\n\t\t//\n\t\t//\tconst texture = new THREE.Data3DTexture( data, width, height, depth );\n\t\t// \ttexture.anisotropy = 16;\n\t\t//\n\t\t// See #14839\n\n\t\tsuper( null );\n\n\t\tthis.isData3DTexture = true;\n\n\t\tthis.image = { data, width, height, depth };\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isWebGL3DRenderTarget = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\n/**\n * Class for representing a Quaternion. Quaternions are used in three.js to represent rotations.\n *\n * Iterating through a vector instance will yield its components `(x, y, z, w)` in\n * the corresponding order.\n *\n * Note that three.js expects Quaternions to be normalized.\n * ```js\n * const quaternion = new THREE.Quaternion();\n * quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 );\n *\n * const vector = new THREE.Vector3( 1, 0, 0 );\n * vector.applyQuaternion( quaternion );\n * ```\n */\nclass Quaternion {\n\n\t/**\n\t * Constructs a new quaternion.\n\t *\n\t * @param {number} [x=0] - The x value of this quaternion.\n\t * @param {number} [y=0] - The y value of this quaternion.\n\t * @param {number} [z=0] - The z value of this quaternion.\n\t * @param {number} [w=1] - The w value of this quaternion.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuaternion = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t}\n\n\t/**\n\t * Interpolates between two quaternions via SLERP. This implementation assumes the\n\t * quaternion data are managed  in flat arrays.\n\t *\n\t * @param {Array<number>} dst - The destination array.\n\t * @param {number} dstOffset - An offset into the destination array.\n\t * @param {Array<number>} src0 - The source array of the first quaternion.\n\t * @param {number} srcOffset0 - An offset into the first source array.\n\t * @param {Array<number>} src1 -  The source array of the second quaternion.\n\t * @param {number} srcOffset1 - An offset into the second source array.\n\t * @param {number} t - The interpolation factor in the range `[0,1]`.\n\t * @see {@link Quaternion#slerp}\n\t */\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\n\n\t\t// fuzz-free, array-based Quaternion SLERP operation\n\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\n\n\t\tif ( t === 0 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x0;\n\t\t\tdst[ dstOffset + 1 ] = y0;\n\t\t\tdst[ dstOffset + 2 ] = z0;\n\t\t\tdst[ dstOffset + 3 ] = w0;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( t === 1 ) {\n\n\t\t\tdst[ dstOffset + 0 ] = x1;\n\t\t\tdst[ dstOffset + 1 ] = y1;\n\t\t\tdst[ dstOffset + 2 ] = z1;\n\t\t\tdst[ dstOffset + 3 ] = w1;\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\n\n\t\t\tlet s = 1 - t;\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\n\t\t\t\tdir = ( cos >= 0 ? 1 : -1 ),\n\t\t\t\tsqrSin = 1 - cos * cos;\n\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\n\t\t\tif ( sqrSin > Number.EPSILON ) {\n\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\n\n\t\t\t\ts = Math.sin( s * len ) / sin;\n\t\t\t\tt = Math.sin( t * len ) / sin;\n\n\t\t\t}\n\n\t\t\tconst tDir = t * dir;\n\n\t\t\tx0 = x0 * s + x1 * tDir;\n\t\t\ty0 = y0 * s + y1 * tDir;\n\t\t\tz0 = z0 * s + z1 * tDir;\n\t\t\tw0 = w0 * s + w1 * tDir;\n\n\t\t\t// Normalize in case we just did a lerp:\n\t\t\tif ( s === 1 - t ) {\n\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\n\n\t\t\t\tx0 *= f;\n\t\t\t\ty0 *= f;\n\t\t\t\tz0 *= f;\n\t\t\t\tw0 *= f;\n\n\t\t\t}\n\n\t\t}\n\n\t\tdst[ dstOffset ] = x0;\n\t\tdst[ dstOffset + 1 ] = y0;\n\t\tdst[ dstOffset + 2 ] = z0;\n\t\tdst[ dstOffset + 3 ] = w0;\n\n\t}\n\n\t/**\n\t * Multiplies two quaternions. This implementation assumes the quaternion data are managed\n\t * in flat arrays.\n\t *\n\t * @param {Array<number>} dst - The destination array.\n\t * @param {number} dstOffset - An offset into the destination array.\n\t * @param {Array<number>} src0 - The source array of the first quaternion.\n\t * @param {number} srcOffset0 - An offset into the first source array.\n\t * @param {Array<number>} src1 -  The source array of the second quaternion.\n\t * @param {number} srcOffset1 - An offset into the second source array.\n\t * @return {Array<number>} The destination array.\n\t * @see {@link Quaternion#multiplyQuaternions}.\n\t */\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\n\n\t\tconst x0 = src0[ srcOffset0 ];\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\n\n\t\tconst x1 = src1[ srcOffset1 ];\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\n\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n\n\t\treturn dst;\n\n\t}\n\n\t/**\n\t * The x value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The y value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The z value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The w value of this quaternion.\n\t *\n\t * @type {number}\n\t * @default 1\n\t */\n\tget w() {\n\n\t\treturn this._w;\n\n\t}\n\n\tset w( value ) {\n\n\t\tthis._w = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * Sets the quaternion components.\n\t *\n\t * @param {number} x - The x value of this quaternion.\n\t * @param {number} y - The y value of this quaternion.\n\t * @param {number} z - The z value of this quaternion.\n\t * @param {number} w - The w value of this quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tset( x, y, z, w ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._w = w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new quaternion with copied values from this instance.\n\t *\n\t * @return {Quaternion} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\n\n\t}\n\n\t/**\n\t * Copies the values of the given quaternion to this instance.\n\t *\n\t * @param {Quaternion} quaternion - The quaternion to copy.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tcopy( quaternion ) {\n\n\t\tthis._x = quaternion.x;\n\t\tthis._y = quaternion.y;\n\t\tthis._z = quaternion.z;\n\t\tthis._w = quaternion.w;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the rotation specified by the given\n\t * Euler angles.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromEuler( euler, update = true ) {\n\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\n\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n\t\t//\tcontent/SpinCalc.m\n\n\t\tconst cos = Math.cos;\n\t\tconst sin = Math.sin;\n\n\t\tconst c1 = cos( x / 2 );\n\t\tconst c2 = cos( y / 2 );\n\t\tconst c3 = cos( z / 2 );\n\n\t\tconst s1 = sin( x / 2 );\n\t\tconst s2 = sin( y / 2 );\n\t\tconst s3 = sin( z / 2 );\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the given axis and angle.\n\t *\n\t * @param {Vector3} axis - The normalized axis.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromAxisAngle( axis, angle ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\n\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\n\n\t\tthis._x = axis.x * s;\n\t\tthis._y = axis.y * s;\n\t\tthis._z = axis.z * s;\n\t\tthis._w = Math.cos( halfAngle );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion from the given rotation matrix.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromRotationMatrix( m ) {\n\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tconst te = m.elements,\n\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\n\n\t\t\ttrace = m11 + m22 + m33;\n\n\t\tif ( trace > 0 ) {\n\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\n\n\t\t\tthis._w = 0.25 / s;\n\t\t\tthis._x = ( m32 - m23 ) * s;\n\t\t\tthis._y = ( m13 - m31 ) * s;\n\t\t\tthis._z = ( m21 - m12 ) * s;\n\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\n\n\t\t\tthis._w = ( m32 - m23 ) / s;\n\t\t\tthis._x = 0.25 * s;\n\t\t\tthis._y = ( m12 + m21 ) / s;\n\t\t\tthis._z = ( m13 + m31 ) / s;\n\n\t\t} else if ( m22 > m33 ) {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\n\n\t\t\tthis._w = ( m13 - m31 ) / s;\n\t\t\tthis._x = ( m12 + m21 ) / s;\n\t\t\tthis._y = 0.25 * s;\n\t\t\tthis._z = ( m23 + m32 ) / s;\n\n\t\t} else {\n\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\n\n\t\t\tthis._w = ( m21 - m12 ) / s;\n\t\t\tthis._x = ( m13 + m31 ) / s;\n\t\t\tthis._y = ( m23 + m32 ) / s;\n\t\t\tthis._z = 0.25 * s;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion to the rotation required to rotate the direction vector\n\t * `vFrom` to the direction vector `vTo`.\n\t *\n\t * @param {Vector3} vFrom - The first (normalized) direction vector.\n\t * @param {Vector3} vTo - The second (normalized) direction vector.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tsetFromUnitVectors( vFrom, vTo ) {\n\n\t\t// assumes direction vectors vFrom and vTo are normalized\n\n\t\tlet r = vFrom.dot( vTo ) + 1;\n\n\t\tif ( r < Number.EPSILON ) {\n\n\t\t\t// vFrom and vTo point in opposite directions\n\n\t\t\tr = 0;\n\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\n\n\t\t\t\tthis._x = - vFrom.y;\n\t\t\t\tthis._y = vFrom.x;\n\t\t\t\tthis._z = 0;\n\t\t\t\tthis._w = r;\n\n\t\t\t} else {\n\n\t\t\t\tthis._x = 0;\n\t\t\t\tthis._y = - vFrom.z;\n\t\t\t\tthis._z = vFrom.y;\n\t\t\t\tthis._w = r;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\n\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n\t\t\tthis._w = r;\n\n\t\t}\n\n\t\treturn this.normalize();\n\n\t}\n\n\t/**\n\t * Returns the angle between this quaternion and the given one in radians.\n\t *\n\t * @param {Quaternion} q - The quaternion to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( q ) {\n\n\t\treturn 2 * Math.acos( Math.abs( clamp( this.dot( q ), -1, 1 ) ) );\n\n\t}\n\n\t/**\n\t * Rotates this quaternion by a given angular step to the given quaternion.\n\t * The method ensures that the final quaternion will not overshoot `q`.\n\t *\n\t * @param {Quaternion} q - The target quaternion.\n\t * @param {number} step - The angular step in radians.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\trotateTowards( q, step ) {\n\n\t\tconst angle = this.angleTo( q );\n\n\t\tif ( angle === 0 ) return this;\n\n\t\tconst t = Math.min( 1, step / angle );\n\n\t\tthis.slerp( q, t );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this quaternion to the identity quaternion; that is, to the\n\t * quaternion that represents \"no rotation\".\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tidentity() {\n\n\t\treturn this.set( 0, 0, 0, 1 );\n\n\t}\n\n\t/**\n\t * Inverts this quaternion via {@link Quaternion#conjugate}. The\n\t * quaternion is assumed to have unit length.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tinvert() {\n\n\t\treturn this.conjugate();\n\n\t}\n\n\t/**\n\t * Returns the rotational conjugate of this quaternion. The conjugate of a\n\t * quaternion represents the same rotation in the opposite direction about\n\t * the rotational axis.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tconjugate() {\n\n\t\tthis._x *= -1;\n\t\tthis._y *= -1;\n\t\tthis._z *= -1;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of this quaternion and the given one.\n\t *\n\t * @param {Quaternion} v - The quaternion to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\n\n\t}\n\n\t/**\n\t * Computes the squared Euclidean length (straight-line length) of this quaternion,\n\t * considered as a 4 dimensional vector. This can be useful if you are comparing the\n\t * lengths of two quaternions, as this is a slightly more efficient calculation than\n\t * {@link Quaternion#length}.\n\t *\n\t * @return {number} The squared Euclidean length.\n\t */\n\tlengthSq() {\n\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n\n\t}\n\n\t/**\n\t * Computes the Euclidean length (straight-line length) of this quaternion,\n\t * considered as a 4 dimensional vector.\n\t *\n\t * @return {number} The Euclidean length.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\n\n\t}\n\n\t/**\n\t * Normalizes this quaternion - that is, calculated the quaternion that performs\n\t * the same rotation as this one, but has a length equal to `1`.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tnormalize() {\n\n\t\tlet l = this.length();\n\n\t\tif ( l === 0 ) {\n\n\t\t\tthis._x = 0;\n\t\t\tthis._y = 0;\n\t\t\tthis._z = 0;\n\t\t\tthis._w = 1;\n\n\t\t} else {\n\n\t\t\tl = 1 / l;\n\n\t\t\tthis._x = this._x * l;\n\t\t\tthis._y = this._y * l;\n\t\t\tthis._z = this._z * l;\n\t\t\tthis._w = this._w * l;\n\n\t\t}\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this quaternion by the given one.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tmultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( this, q );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this quaternion by the given one.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tpremultiply( q ) {\n\n\t\treturn this.multiplyQuaternions( q, this );\n\n\t}\n\n\t/**\n\t * Multiplies the given quaternions and stores the result in this instance.\n\t *\n\t * @param {Quaternion} a - The first quaternion.\n\t * @param {Quaternion} b - The second quaternion.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tmultiplyQuaternions( a, b ) {\n\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\n\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\n\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs a spherical linear interpolation between quaternions.\n\t *\n\t * @param {Quaternion} qb - The target quaternion.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tslerp( qb, t ) {\n\n\t\tif ( t === 0 ) return this;\n\t\tif ( t === 1 ) return this.copy( qb );\n\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\n\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\n\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\n\n\t\tif ( cosHalfTheta < 0 ) {\n\n\t\t\tthis._w = - qb._w;\n\t\t\tthis._x = - qb._x;\n\t\t\tthis._y = - qb._y;\n\t\t\tthis._z = - qb._z;\n\n\t\t\tcosHalfTheta = - cosHalfTheta;\n\n\t\t} else {\n\n\t\t\tthis.copy( qb );\n\n\t\t}\n\n\t\tif ( cosHalfTheta >= 1.0 ) {\n\n\t\t\tthis._w = w;\n\t\t\tthis._x = x;\n\t\t\tthis._y = y;\n\t\t\tthis._z = z;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\n\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\n\n\t\t\tconst s = 1 - t;\n\t\t\tthis._w = s * w + t * this._w;\n\t\t\tthis._x = s * x + t * this._x;\n\t\t\tthis._y = s * y + t * this._y;\n\t\t\tthis._z = s * z + t * this._z;\n\n\t\t\tthis.normalize(); // normalize calls _onChangeCallback()\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\n\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Performs a spherical linear interpolation between the given quaternions\n\t * and stores the result in this quaternion.\n\t *\n\t * @param {Quaternion} qa - The source quaternion.\n\t * @param {Quaternion} qb - The target quaternion.\n\t * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tslerpQuaternions( qa, qb, t ) {\n\n\t\treturn this.copy( qa ).slerp( qb, t );\n\n\t}\n\n\t/**\n\t * Sets this quaternion to a uniformly random, normalized quaternion.\n\t *\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\trandom() {\n\n\t\t// Ken Shoemake\n\t\t// Uniform random rotations\n\t\t// D. Kirk, editor, Graphics Gems III, pages 124-132. Academic Press, New York, 1992.\n\n\t\tconst theta1 = 2 * Math.PI * Math.random();\n\t\tconst theta2 = 2 * Math.PI * Math.random();\n\n\t\tconst x0 = Math.random();\n\t\tconst r1 = Math.sqrt( 1 - x0 );\n\t\tconst r2 = Math.sqrt( x0 );\n\n\t\treturn this.set(\n\t\t\tr1 * Math.sin( theta1 ),\n\t\t\tr1 * Math.cos( theta1 ),\n\t\t\tr2 * Math.sin( theta2 ),\n\t\t\tr2 * Math.cos( theta2 ),\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if this quaternion is equal with the given one.\n\t *\n\t * @param {Quaternion} quaternion - The quaternion to test for equality.\n\t * @return {boolean} Whether this quaternion is equal with the given one.\n\t */\n\tequals( quaternion ) {\n\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\n\n\t}\n\n\t/**\n\t * Sets this quaternion's components from the given array.\n\t *\n\t * @param {Array<number>} array - An array holding the quaternion component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis._x = array[ offset ];\n\t\tthis._y = array[ offset + 1 ];\n\t\tthis._z = array[ offset + 2 ];\n\t\tthis._w = array[ offset + 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this quaternion to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array holding the quaternion components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number>} The quaternion components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._w;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this quaternion from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding quaternion data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Quaternion} A reference to this quaternion.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis._x = attribute.getX( index );\n\t\tthis._y = attribute.getY( index );\n\t\tthis._z = attribute.getZ( index );\n\t\tthis._w = attribute.getW( index );\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This methods defines the serialization result of this class. Returns the\n\t * numerical elements of this quaternion in an array of format `[x, y, z, w]`.\n\t *\n\t * @return {Array<number>} The serialized quaternion.\n\t */\n\ttoJSON() {\n\n\t\treturn this.toArray();\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._w;\n\n\t}\n\n}\n\n/**\n * Class representing a 3D vector. A 3D vector is an ordered triplet of numbers\n * (labeled x, y and z), which can be used to represent a number of things, such as:\n *\n * - A point in 3D space.\n * - A direction and length in 3D space. In three.js the length will\n * always be the Euclidean distance(straight-line distance) from `(0, 0, 0)` to `(x, y, z)`\n * and the direction is also measured from `(0, 0, 0)` towards `(x, y, z)`.\n * - Any arbitrary ordered triplet of numbers.\n *\n * There are other things a 3D vector can be used to represent, such as\n * momentum vectors and so on, however these are the most\n * common uses in three.js.\n *\n * Iterating through a vector instance will yield its components `(x, y, z)` in\n * the corresponding order.\n * ```js\n * const a = new THREE.Vector3( 0, 1, 0 );\n *\n * //no arguments; will be initialised to (0, 0, 0)\n * const b = new THREE.Vector3( );\n *\n * const d = a.distanceTo( b );\n * ```\n */\nclass Vector3 {\n\n\t/**\n\t * Constructs a new 3D vector.\n\t *\n\t * @param {number} [x=0] - The x value of this vector.\n\t * @param {number} [y=0] - The y value of this vector.\n\t * @param {number} [z=0] - The z value of this vector.\n\t */\n\tconstructor( x = 0, y = 0, z = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tVector3.prototype.isVector3 = true;\n\n\t\t/**\n\t\t * The x value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.x = x;\n\n\t\t/**\n\t\t * The y value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.y = y;\n\n\t\t/**\n\t\t * The z value of this vector.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.z = z;\n\n\t}\n\n\t/**\n\t * Sets the vector components.\n\t *\n\t * @param {number} x - The value of the x component.\n\t * @param {number} y - The value of the y component.\n\t * @param {number} z - The value of the z component.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tset( x, y, z ) {\n\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\n\n\t\tthis.x = x;\n\t\tthis.y = y;\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the same value.\n\t *\n\t * @param {number} scalar - The value to set for all vector components.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.x = scalar;\n\t\tthis.y = scalar;\n\t\tthis.z = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's x component to the given value\n\t *\n\t * @param {number} x - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetX( x ) {\n\n\t\tthis.x = x;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's y component to the given value\n\t *\n\t * @param {number} y - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetY( y ) {\n\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector's z component to the given value\n\t *\n\t * @param {number} z - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetZ( z ) {\n\n\t\tthis.z = z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Allows to set a vector component with an index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n\t * @param {number} value - The value to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetComponent( index, value ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: this.x = value; break;\n\t\t\tcase 1: this.y = value; break;\n\t\t\tcase 2: this.z = value; break;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the value of the vector component which matches the given index.\n\t *\n\t * @param {number} index - The component index. `0` equals to x, `1` equals to y, `2` equals to z.\n\t * @return {number} A vector component value.\n\t */\n\tgetComponent( index ) {\n\n\t\tswitch ( index ) {\n\n\t\t\tcase 0: return this.x;\n\t\t\tcase 1: return this.y;\n\t\t\tcase 2: return this.z;\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new vector with copied values from this instance.\n\t *\n\t * @return {Vector3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.x, this.y, this.z );\n\n\t}\n\n\t/**\n\t * Copies the values of the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to copy.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tcopy( v ) {\n\n\t\tthis.x = v.x;\n\t\tthis.y = v.y;\n\t\tthis.z = v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to add.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tadd( v ) {\n\n\t\tthis.x += v.x;\n\t\tthis.y += v.y;\n\t\tthis.z += v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to all components of this instance.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.x += s;\n\t\tthis.y += s;\n\t\tthis.z += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddVectors( a, b ) {\n\n\t\tthis.x = a.x + b.x;\n\t\tthis.y = a.y + b.y;\n\t\tthis.z = a.z + b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given vector scaled by the given factor to this instance.\n\t *\n\t * @param {Vector3|Vector4} v - The vector.\n\t * @param {number} s - The factor that scales `v`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\taddScaledVector( v, s ) {\n\n\t\tthis.x += v.x * s;\n\t\tthis.y += v.y * s;\n\t\tthis.z += v.z * s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vector from this instance.\n\t *\n\t * @param {Vector3} v - The vector to subtract.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsub( v ) {\n\n\t\tthis.x -= v.x;\n\t\tthis.y -= v.y;\n\t\tthis.z -= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given scalar value from all components of this instance.\n\t *\n\t * @param {number} s - The scalar to subtract.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsubScalar( s ) {\n\n\t\tthis.x -= s;\n\t\tthis.y -= s;\n\t\tthis.z -= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsubVectors( a, b ) {\n\n\t\tthis.x = a.x - b.x;\n\t\tthis.y = a.y - b.y;\n\t\tthis.z = a.z - b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to multiply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiply( v ) {\n\n\t\tthis.x *= v.x;\n\t\tthis.y *= v.y;\n\t\tthis.z *= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with all components of this instance.\n\t *\n\t * @param {number} scalar - The scalar to multiply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiplyScalar( scalar ) {\n\n\t\tthis.x *= scalar;\n\t\tthis.y *= scalar;\n\t\tthis.z *= scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given vectors and stores the result in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmultiplyVectors( a, b ) {\n\n\t\tthis.x = a.x * b.x;\n\t\tthis.y = a.y * b.y;\n\t\tthis.z = a.z * b.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given Euler rotation to this vector.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyEuler( euler ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromEuler( euler ) );\n\n\t}\n\n\t/**\n\t * Applies a rotation specified by an axis and an angle to this vector.\n\t *\n\t * @param {Vector3} axis - A normalized vector representing the rotation axis.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyAxisAngle( axis, angle ) {\n\n\t\treturn this.applyQuaternion( _quaternion$4.setFromAxisAngle( axis, angle ) );\n\n\t}\n\n\t/**\n\t * Multiplies this vector with the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies this vector by the given normal matrix and normalizes\n\t * the result.\n\t *\n\t * @param {Matrix3} m - The normal matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyNormalMatrix( m ) {\n\n\t\treturn this.applyMatrix3( m ).normalize();\n\n\t}\n\n\t/**\n\t * Multiplies this vector (with an implicit 1 in the 4th dimension) by m, and\n\t * divides by perspective.\n\t *\n\t * @param {Matrix4} m - The matrix to apply.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyMatrix4( m ) {\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\n\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Applies the given Quaternion to this vector.\n\t *\n\t * @param {Quaternion} q - The Quaternion.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\t// quaternion q is assumed to have unit length\n\n\t\tconst vx = this.x, vy = this.y, vz = this.z;\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\n\n\t\t// t = 2 * cross( q.xyz, v );\n\t\tconst tx = 2 * ( qy * vz - qz * vy );\n\t\tconst ty = 2 * ( qz * vx - qx * vz );\n\t\tconst tz = 2 * ( qx * vy - qy * vx );\n\n\t\t// v + q.w * t + cross( q.xyz, t );\n\t\tthis.x = vx + qw * tx + qy * tz - qz * ty;\n\t\tthis.y = vy + qw * ty + qz * tx - qx * tz;\n\t\tthis.z = vz + qw * tz + qx * ty - qy * tx;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Projects this vector from world space into the camera's normalized\n\t * device coordinate (NDC) space.\n\t *\n\t * @param {Camera} camera - The camera.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\n\n\t}\n\n\t/**\n\t * Unprojects this vector from the camera's normalized device coordinate (NDC)\n\t * space into world space.\n\t *\n\t * @param {Camera} camera - The camera.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tunproject( camera ) {\n\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\n\n\t}\n\n\t/**\n\t * Transforms the direction of this vector by a matrix (the upper left 3 x 3\n\t * subset of the given 4x4 matrix and then normalizes the result.\n\t *\n\t * @param {Matrix4} m - The matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\ttransformDirection( m ) {\n\n\t\t// input: THREE.Matrix4 affine matrix\n\t\t// vector interpreted as a direction\n\n\t\tconst x = this.x, y = this.y, z = this.z;\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\n\n\t\treturn this.normalize();\n\n\t}\n\n\t/**\n\t * Divides this instance by the given vector.\n\t *\n\t * @param {Vector3} v - The vector to divide.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tdivide( v ) {\n\n\t\tthis.x /= v.x;\n\t\tthis.y /= v.y;\n\t\tthis.z /= v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Divides this vector by the given scalar.\n\t *\n\t * @param {number} scalar - The scalar to divide.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tdivideScalar( scalar ) {\n\n\t\treturn this.multiplyScalar( 1 / scalar );\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is greater than the given vector's x, y or z\n\t * value, replace that value with the corresponding min value.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmin( v ) {\n\n\t\tthis.x = Math.min( this.x, v.x );\n\t\tthis.y = Math.min( this.y, v.y );\n\t\tthis.z = Math.min( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is less than the given vector's x, y or z\n\t * value, replace that value with the corresponding max value.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tmax( v ) {\n\n\t\tthis.x = Math.max( this.x, v.x );\n\t\tthis.y = Math.max( this.y, v.y );\n\t\tthis.z = Math.max( this.z, v.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z value is greater than the max vector's x, y or z\n\t * value, it is replaced by the corresponding value.\n\t * If this vector's x, y or z value is less than the min vector's x, y or z value,\n\t * it is replaced by the corresponding value.\n\t *\n\t * @param {Vector3} min - The minimum x, y and z values.\n\t * @param {Vector3} max - The maximum x, y and z values in the desired range.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclamp( min, max ) {\n\n\t\t// assumes min < max, componentwise\n\n\t\tthis.x = clamp( this.x, min.x, max.x );\n\t\tthis.y = clamp( this.y, min.y, max.y );\n\t\tthis.z = clamp( this.z, min.z, max.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's x, y or z values are greater than the max value, they are\n\t * replaced by the max value.\n\t * If this vector's x, y or z values are less than the min value, they are\n\t * replaced by the min value.\n\t *\n\t * @param {number} minVal - The minimum value the components will be clamped to.\n\t * @param {number} maxVal - The maximum value the components will be clamped to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclampScalar( minVal, maxVal ) {\n\n\t\tthis.x = clamp( this.x, minVal, maxVal );\n\t\tthis.y = clamp( this.y, minVal, maxVal );\n\t\tthis.z = clamp( this.z, minVal, maxVal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * If this vector's length is greater than the max value, it is replaced by\n\t * the max value.\n\t * If this vector's length is less than the min value, it is replaced by the\n\t * min value.\n\t *\n\t * @param {number} min - The minimum value the vector length will be clamped to.\n\t * @param {number} max - The maximum value the vector length will be clamped to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tclampLength( min, max ) {\n\n\t\tconst length = this.length();\n\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded down to the nearest integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfloor() {\n\n\t\tthis.x = Math.floor( this.x );\n\t\tthis.y = Math.floor( this.y );\n\t\tthis.z = Math.floor( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded up to the nearest integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tceil() {\n\n\t\tthis.x = Math.ceil( this.x );\n\t\tthis.y = Math.ceil( this.y );\n\t\tthis.z = Math.ceil( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded to the nearest integer value\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tround() {\n\n\t\tthis.x = Math.round( this.x );\n\t\tthis.y = Math.round( this.y );\n\t\tthis.z = Math.round( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * The components of this vector are rounded towards zero (up if negative,\n\t * down if positive) to an integer value.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\troundToZero() {\n\n\t\tthis.x = Math.trunc( this.x );\n\t\tthis.y = Math.trunc( this.y );\n\t\tthis.z = Math.trunc( this.z );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this vector - i.e. sets x = -x, y = -y and z = -z.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tnegate() {\n\n\t\tthis.x = - this.x;\n\t\tthis.y = - this.y;\n\t\tthis.z = - this.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the dot product of the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the dot product with.\n\t * @return {number} The result of the dot product.\n\t */\n\tdot( v ) {\n\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\n\n\t}\n\n\t// TODO lengthSquared?\n\n\t/**\n\t * Computes the square of the Euclidean length (straight-line length) from\n\t * (0, 0, 0) to (x, y, z). If you are comparing the lengths of vectors, you should\n\t * compare the length squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @return {number} The square length of this vector.\n\t */\n\tlengthSq() {\n\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\n\t}\n\n\t/**\n\t * Computes the  Euclidean length (straight-line length) from (0, 0, 0) to (x, y, z).\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tlength() {\n\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\n\n\t}\n\n\t/**\n\t * Computes the Manhattan length of this vector.\n\t *\n\t * @return {number} The length of this vector.\n\t */\n\tmanhattanLength() {\n\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\n\n\t}\n\n\t/**\n\t * Converts this vector to a unit vector - that is, sets it equal to a vector\n\t * with the same direction as this one, but with a vector length of `1`.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tnormalize() {\n\n\t\treturn this.divideScalar( this.length() || 1 );\n\n\t}\n\n\t/**\n\t * Sets this vector to a vector with the same direction as this one, but\n\t * with the specified length.\n\t *\n\t * @param {number} length - The new length of this vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetLength( length ) {\n\n\t\treturn this.normalize().multiplyScalar( length );\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vector and this instance, where\n\t * alpha is the percent distance along the line - alpha = 0 will be this\n\t * vector, and alpha = 1 will be the given one.\n\t *\n\t * @param {Vector3} v - The vector to interpolate towards.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tlerp( v, alpha ) {\n\n\t\tthis.x += ( v.x - this.x ) * alpha;\n\t\tthis.y += ( v.y - this.y ) * alpha;\n\t\tthis.z += ( v.z - this.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given vectors, where alpha is the percent\n\t * distance along the line - alpha = 0 will be first vector, and alpha = 1 will\n\t * be the second one. The result is stored in this instance.\n\t *\n\t * @param {Vector3} v1 - The first vector.\n\t * @param {Vector3} v2 - The second vector.\n\t * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tlerpVectors( v1, v2, alpha ) {\n\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vector with this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the cross product with.\n\t * @return {Vector3} The result of the cross product.\n\t */\n\tcross( v ) {\n\n\t\treturn this.crossVectors( this, v );\n\n\t}\n\n\t/**\n\t * Calculates the cross product of the given vectors and stores the result\n\t * in this instance.\n\t *\n\t * @param {Vector3} a - The first vector.\n\t * @param {Vector3} b - The second vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tcrossVectors( a, b ) {\n\n\t\tconst ax = a.x, ay = a.y, az = a.z;\n\t\tconst bx = b.x, by = b.y, bz = b.z;\n\n\t\tthis.x = ay * bz - az * by;\n\t\tthis.y = az * bx - ax * bz;\n\t\tthis.z = ax * by - ay * bx;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Projects this vector onto the given one.\n\t *\n\t * @param {Vector3} v - The vector to project to.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tprojectOnVector( v ) {\n\n\t\tconst denominator = v.lengthSq();\n\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\n\n\t\tconst scalar = v.dot( this ) / denominator;\n\n\t\treturn this.copy( v ).multiplyScalar( scalar );\n\n\t}\n\n\t/**\n\t * Projects this vector onto a plane by subtracting this\n\t * vector projected onto the plane's normal from this vector.\n\t *\n\t * @param {Vector3} planeNormal - The plane normal.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tprojectOnPlane( planeNormal ) {\n\n\t\t_vector$c.copy( this ).projectOnVector( planeNormal );\n\n\t\treturn this.sub( _vector$c );\n\n\t}\n\n\t/**\n\t * Reflects this vector off a plane orthogonal to the given normal vector.\n\t *\n\t * @param {Vector3} normal - The (normalized) normal vector.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\treflect( normal ) {\n\n\t\treturn this.sub( _vector$c.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\n\n\t}\n\t/**\n\t * Returns the angle between the given vector and this instance in radians.\n\t *\n\t * @param {Vector3} v - The vector to compute the angle with.\n\t * @return {number} The angle in radians.\n\t */\n\tangleTo( v ) {\n\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\n\n\t\tif ( denominator === 0 ) return Math.PI / 2;\n\n\t\tconst theta = this.dot( v ) / denominator;\n\n\t\t// clamp, to handle numerical problems\n\n\t\treturn Math.acos( clamp( theta, -1, 1 ) );\n\n\t}\n\n\t/**\n\t * Computes the distance from the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceTo( v ) {\n\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\n\n\t}\n\n\t/**\n\t * Computes the squared distance from the given vector to this instance.\n\t * If you are just comparing the distance with another distance, you should compare\n\t * the distance squared instead as it is slightly more efficient to calculate.\n\t *\n\t * @param {Vector3} v - The vector to compute the squared distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceToSquared( v ) {\n\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\n\n\t\treturn dx * dx + dy * dy + dz * dz;\n\n\t}\n\n\t/**\n\t * Computes the Manhattan distance from the given vector to this instance.\n\t *\n\t * @param {Vector3} v - The vector to compute the Manhattan distance to.\n\t * @return {number} The Manhattan distance.\n\t */\n\tmanhattanDistanceTo( v ) {\n\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given spherical coordinates.\n\t *\n\t * @param {Spherical} s - The spherical coordinates.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromSpherical( s ) {\n\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given spherical coordinates.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} phi - The phi angle in radians.\n\t * @param {number} theta - The theta angle in radians.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromSphericalCoords( radius, phi, theta ) {\n\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\n\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\n\t\tthis.y = Math.cos( phi ) * radius;\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given cylindrical coordinates.\n\t *\n\t * @param {Cylindrical} c - The cylindrical coordinates.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromCylindrical( c ) {\n\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given cylindrical coordinates.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} theta - The theta angle in radians.\n\t * @param {number} y - The y value.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromCylindricalCoords( radius, theta, y ) {\n\n\t\tthis.x = radius * Math.sin( theta );\n\t\tthis.y = y;\n\t\tthis.z = radius * Math.cos( theta );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the position elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixPosition( m ) {\n\n\t\tconst e = m.elements;\n\n\t\tthis.x = e[ 12 ];\n\t\tthis.y = e[ 13 ];\n\t\tthis.z = e[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components to the scale elements of the\n\t * given transformation matrix.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixScale( m ) {\n\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\n\n\t\tthis.x = sx;\n\t\tthis.y = sy;\n\t\tthis.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the specified matrix column.\n\t *\n\t * @param {Matrix4} m - The 4x4 matrix.\n\t * @param {number} index - The column index.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrixColumn( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 4 );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the specified matrix column.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @param {number} index - The column index.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromMatrix3Column( m, index ) {\n\n\t\treturn this.fromArray( m.elements, index * 3 );\n\n\t}\n\n\t/**\n\t * Sets the vector components from the given Euler angles.\n\t *\n\t * @param {Euler} e - The Euler angles to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromEuler( e ) {\n\n\t\tthis.x = e._x;\n\t\tthis.y = e._y;\n\t\tthis.z = e._z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the vector components from the RGB components of the\n\t * given color.\n\t *\n\t * @param {Color} c - The color to set.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tsetFromColor( c ) {\n\n\t\tthis.x = c.r;\n\t\tthis.y = c.g;\n\t\tthis.z = c.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this vector is equal with the given one.\n\t *\n\t * @param {Vector3} v - The vector to test for equality.\n\t * @return {boolean} Whether this vector is equal with the given one.\n\t */\n\tequals( v ) {\n\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\n\n\t}\n\n\t/**\n\t * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`\n\t * and z value to be `array[ offset + 2 ]`.\n\t *\n\t * @param {Array<number>} array - An array holding the vector component values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.x = array[ offset ];\n\t\tthis.y = array[ offset + 1 ];\n\t\tthis.z = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this vector to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array holding the vector components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number>} The vector components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.x;\n\t\tarray[ offset + 1 ] = this.y;\n\t\tarray[ offset + 2 ] = this.z;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this vector from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding vector data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Vector3} A reference to this vector.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.x = attribute.getX( index );\n\t\tthis.y = attribute.getY( index );\n\t\tthis.z = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets each component of this vector to a pseudo-random value between `0` and\n\t * `1`, excluding `1`.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\trandom() {\n\n\t\tthis.x = Math.random();\n\t\tthis.y = Math.random();\n\t\tthis.z = Math.random();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this vector to a uniformly random point on a unit sphere.\n\t *\n\t * @return {Vector3} A reference to this vector.\n\t */\n\trandomDirection() {\n\n\t\t// https://mathworld.wolfram.com/SpherePointPicking.html\n\n\t\tconst theta = Math.random() * Math.PI * 2;\n\t\tconst u = Math.random() * 2 - 1;\n\t\tconst c = Math.sqrt( 1 - u * u );\n\n\t\tthis.x = c * Math.cos( theta );\n\t\tthis.y = u;\n\t\tthis.z = c * Math.sin( theta );\n\n\t\treturn this;\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.x;\n\t\tyield this.y;\n\t\tyield this.z;\n\n\t}\n\n}\n\nconst _vector$c = /*@__PURE__*/ new Vector3();\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\n\n/**\n * Represents an axis-aligned bounding box (AABB) in 3D space.\n */\nclass Box3 {\n\n\t/**\n\t * Constructs a new bounding box.\n\t *\n\t * @param {Vector3} [min=(Infinity,Infinity,Infinity)] - A vector representing the lower boundary of the box.\n\t * @param {Vector3} [max=(-Infinity,-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n\t */\n\tconstructor( min = new Vector3( + Infinity, + Infinity, + Infinity ), max = new Vector3( - Infinity, - Infinity, - Infinity ) ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBox3 = true;\n\n\t\t/**\n\t\t * The lower boundary of the box.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.min = min;\n\n\t\t/**\n\t\t * The upper boundary of the box.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.max = max;\n\n\t}\n\n\t/**\n\t * Sets the lower and upper boundaries of this box.\n\t * Please note that this method only copies the values from the given objects.\n\t *\n\t * @param {Vector3} min - The lower boundary of the box.\n\t * @param {Vector3} max - The upper boundary of the box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array<number>} array - An array holding 3D position data.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromArray( array ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = array.length; i < il; i += 3 ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromArray( array, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - A buffer attribute holding 3D position data.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromBufferAttribute( attribute ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = attribute.count; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( _vector$b.fromBufferAttribute( attribute, i ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array<Vector3>} points - An array holding 3D position data as instances of {@link Vector3}.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Centers this box on the given center vector and sets this box's width, height and\n\t * depth to the given size values.\n\t *\n\t * @param {Vector3} center - The center of the box.\n\t * @param {Vector3} size - The x, y and z dimensions of the box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$b.copy( size ).multiplyScalar( 0.5 );\n\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the world-axis-aligned bounding box for the given 3D object\n\t * (including its children), accounting for the object's, and children's,\n\t * world transforms. The function may result in a larger box than strictly necessary.\n\t *\n\t * @param {Object3D} object - The 3D object to compute the bounding box for.\n\t * @param {boolean} [precise=false] - If set to `true`, the method computes the smallest\n\t * world-axis-aligned bounding box at the expense of more computation.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tsetFromObject( object, precise = false ) {\n\n\t\tthis.makeEmpty();\n\n\t\treturn this.expandByObject( object, precise );\n\n\t}\n\n\t/**\n\t * Returns a new box with copied values from this instance.\n\t *\n\t * @return {Box3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given box to this instance.\n\t *\n\t * @param {Box3} box - The box to copy.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Makes this box empty which means in encloses a zero space in 3D.\n\t *\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns true if this box includes zero points within its bounds.\n\t * Note that a box with equal lower and upper bounds still includes one\n\t * point, the one both bounds share.\n\t *\n\t * @return {boolean} Whether this box is empty or not.\n\t */\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\n\n\t}\n\n\t/**\n\t * Returns the center point of this box.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the dimensions of this box.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The size.\n\t */\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given point.\n\t *\n\t * @param {Vector3} point - The point that should be included by the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this box equilaterally by the given vector. The width of this\n\t * box will be expanded by the x component of the vector in both\n\t * directions. The height of this box will be expanded by the y component of\n\t * the vector in both directions. The depth of this box will be\n\t * expanded by the z component of the vector in both directions.\n\t *\n\t * @param {Vector3} vector - The vector that should expand the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands each dimension of the box by the given scalar. If negative, the\n\t * dimensions of the box will be contracted.\n\t *\n\t * @param {number} scalar - The scalar value that should expand the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given 3D object and\n\t * its children, accounting for the object's, and children's, world\n\t * transforms. The function may result in a larger box than strictly\n\t * necessary (unless the precise parameter is set to true).\n\t *\n\t * @param {Object3D} object - The 3D object that should expand the bounding box.\n\t * @param {boolean} precise - If set to `true`, the method expands the bounding box\n\t * as little as necessary at the expense of more computation.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\texpandByObject( object, precise = false ) {\n\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\n\t\t// accounting for both the object's, and children's, world transforms\n\n\t\tobject.updateWorldMatrix( false, false );\n\n\t\tconst geometry = object.geometry;\n\n\t\tif ( geometry !== undefined ) {\n\n\t\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\t\t// precise AABB computation based on vertex data requires at least a position attribute.\n\t\t\t// instancing isn't supported so far and uses the normal (conservative) code path.\n\n\t\t\tif ( precise === true && positionAttribute !== undefined && object.isInstancedMesh !== true ) {\n\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t\tif ( object.isMesh === true ) {\n\n\t\t\t\t\t\tobject.getVertexPosition( i, _vector$b );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_vector$b.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_vector$b.applyMatrix4( object.matrixWorld );\n\t\t\t\t\tthis.expandByPoint( _vector$b );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( object.boundingBox !== undefined ) {\n\n\t\t\t\t\t// object-level bounding box\n\n\t\t\t\t\tif ( object.boundingBox === null ) {\n\n\t\t\t\t\t\tobject.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( object.boundingBox );\n\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// geometry-level bounding box\n\n\t\t\t\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\t\t\t\tgeometry.computeBoundingBox();\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_box$4.copy( geometry.boundingBox );\n\n\t\t\t\t}\n\n\t\t\t\t_box$4.applyMatrix4( object.matrixWorld );\n\n\t\t\t\tthis.union( _box$4 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tthis.expandByObject( children[ i ], precise );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within or on the boundaries of this box.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @return {boolean} Whether the bounding box contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y &&\n\t\t\tpoint.z >= this.min.z && point.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box includes the entirety of the given bounding box.\n\t * If this box and the given one are identical, this function also returns `true`.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box contains the given bounding box or not.\n\t */\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns a point as a proportion of this box's width, height and depth.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} A point as a proportion of this box's width, height and depth.\n\t */\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with this bounding box.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with this bounding box.\n\t */\n\tintersectsBox( box ) {\n\n\t\t// using 6 splitting planes to rule out intersections.\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y &&\n\t\t\tbox.max.z >= this.min.z && box.min.z <= this.max.z;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere intersects with this bounding box.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the given bounding sphere intersects with this bounding box.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\t// Find the point on the AABB closest to the sphere center.\n\t\tthis.clampPoint( sphere.center, _vector$b );\n\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\n\t\treturn _vector$b.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given plane intersects with this bounding box.\n\t *\n\t * @param {Plane} plane - The plane to test.\n\t * @return {boolean} Whether the given plane intersects with this bounding box.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\t// We compute the minimum and maximum dot product values. If those values\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\n\n\t\tlet min, max;\n\n\t\tif ( plane.normal.x > 0 ) {\n\n\t\t\tmin = plane.normal.x * this.min.x;\n\t\t\tmax = plane.normal.x * this.max.x;\n\n\t\t} else {\n\n\t\t\tmin = plane.normal.x * this.max.x;\n\t\t\tmax = plane.normal.x * this.min.x;\n\n\t\t}\n\n\t\tif ( plane.normal.y > 0 ) {\n\n\t\t\tmin += plane.normal.y * this.min.y;\n\t\t\tmax += plane.normal.y * this.max.y;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.y * this.max.y;\n\t\t\tmax += plane.normal.y * this.min.y;\n\n\t\t}\n\n\t\tif ( plane.normal.z > 0 ) {\n\n\t\t\tmin += plane.normal.z * this.min.z;\n\t\t\tmax += plane.normal.z * this.max.z;\n\n\t\t} else {\n\n\t\t\tmin += plane.normal.z * this.max.z;\n\t\t\tmax += plane.normal.z * this.min.z;\n\n\t\t}\n\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given triangle intersects with this bounding box.\n\t *\n\t * @param {Triangle} triangle - The triangle to test.\n\t * @return {boolean} Whether the given triangle intersects with this bounding box.\n\t */\n\tintersectsTriangle( triangle ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// compute box center and extents\n\t\tthis.getCenter( _center );\n\t\t_extents.subVectors( this.max, _center );\n\n\t\t// translate triangle to aabb origin\n\t\t_v0$2.subVectors( triangle.a, _center );\n\t\t_v1$7.subVectors( triangle.b, _center );\n\t\t_v2$4.subVectors( triangle.c, _center );\n\n\t\t// compute edge vectors for triangle\n\t\t_f0.subVectors( _v1$7, _v0$2 );\n\t\t_f1.subVectors( _v2$4, _v1$7 );\n\t\t_f2.subVectors( _v0$2, _v2$4 );\n\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\n\t\tlet axes = [\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\n\t\t];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// test 3 face normals from the aabb\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n\t\tif ( ! satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\t// finally testing the face normal of the triangle\n\t\t// use already existing triangle edge vectors here\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\n\n\t\treturn satForAxes( axes, _v0$2, _v1$7, _v2$4, _extents );\n\n\t}\n\n\t/**\n\t * Clamps the given point within the bounds of this box.\n\t *\n\t * @param {Vector3} point - The point to clamp.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\t/**\n\t * Returns the euclidean distance from any edge of this box to the specified point. If\n\t * the given point lies inside of this box, the distance will be `0`.\n\t *\n\t * @param {Vector3} point - The point to compute the distance to.\n\t * @return {number} The euclidean distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$b ).distanceTo( point );\n\n\t}\n\n\t/**\n\t * Returns a bounding sphere that encloses this bounding box.\n\t *\n\t * @param {Sphere} target - The target sphere that is used to store the method's result.\n\t * @return {Sphere} The bounding sphere that encloses this bounding box.\n\t */\n\tgetBoundingSphere( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\ttarget.makeEmpty();\n\n\t\t} else {\n\n\t\t\tthis.getCenter( target.center );\n\n\t\t\ttarget.radius = this.getSize( _vector$b ).length() * 0.5;\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes the intersection of this bounding box and the given one, setting the upper\n\t * bound of this box to the lesser of the two boxes' upper bounds and the\n\t * lower bound of this box to the greater of the two boxes' lower bounds. If\n\t * there's no overlap, makes this box empty.\n\t *\n\t * @param {Box3} box - The bounding box to intersect with.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the union of this box and another and the given one, setting the upper\n\t * bound of this box to the greater of the two boxes' upper bounds and the\n\t * lower bound of this box to the lesser of the two boxes' lower bounds.\n\t *\n\t * @param {Box3} box - The bounding box that will be unioned with this instance.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transforms this bounding box by the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\t// transform of empty box is an empty box.\n\t\tif ( this.isEmpty() ) return this;\n\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\n\n\t\tthis.setFromPoints( _points );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given offset to both the upper and lower bounds of this bounding box,\n\t * effectively moving it in 3D space.\n\t *\n\t * @param {Vector3} offset - The offset that should be used to translate the bounding box.\n\t * @return {Box3} A reference to this bounding box.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box is equal with the given one.\n\t *\n\t * @param {Box3} box - The box to test for equality.\n\t * @return {boolean} Whether this bounding box is equal with the given one.\n\t */\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _points = [\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3(),\n\t/*@__PURE__*/ new Vector3()\n];\n\nconst _vector$b = /*@__PURE__*/ new Vector3();\n\nconst _box$4 = /*@__PURE__*/ new Box3();\n\n// triangle centered vertices\n\nconst _v0$2 = /*@__PURE__*/ new Vector3();\nconst _v1$7 = /*@__PURE__*/ new Vector3();\nconst _v2$4 = /*@__PURE__*/ new Vector3();\n\n// triangle edge vectors\n\nconst _f0 = /*@__PURE__*/ new Vector3();\nconst _f1 = /*@__PURE__*/ new Vector3();\nconst _f2 = /*@__PURE__*/ new Vector3();\n\nconst _center = /*@__PURE__*/ new Vector3();\nconst _extents = /*@__PURE__*/ new Vector3();\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\nconst _testAxis = /*@__PURE__*/ new Vector3();\n\nfunction satForAxes( axes, v0, v1, v2, extents ) {\n\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\n\n\t\t_testAxis.fromArray( axes, i );\n\t\t// project the aabb onto the separating axis\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\n\t\t// project all 3 vertices of the triangle onto the separating axis\n\t\tconst p0 = v0.dot( _testAxis );\n\t\tconst p1 = v1.dot( _testAxis );\n\t\tconst p2 = v2.dot( _testAxis );\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\n\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\n\t\t\t// the axis is separating and we can exit\n\t\t\treturn false;\n\n\t\t}\n\n\t}\n\n\treturn true;\n\n}\n\nconst _box$3 = /*@__PURE__*/ new Box3();\nconst _v1$6 = /*@__PURE__*/ new Vector3();\nconst _v2$3 = /*@__PURE__*/ new Vector3();\n\n/**\n * An analytical 3D sphere defined by a center and radius. This class is mainly\n * used as a Bounding Sphere for 3D objects.\n */\nclass Sphere {\n\n\t/**\n\t * Constructs a new sphere.\n\t *\n\t * @param {Vector3} [center=(0,0,0)] - The center of the sphere\n\t * @param {number} [radius=-1] - The radius of the sphere.\n\t */\n\tconstructor( center = new Vector3(), radius = -1 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSphere = true;\n\n\t\t/**\n\t\t * The center of the sphere\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.center = center;\n\n\t\t/**\n\t\t * The radius of the sphere.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.radius = radius;\n\n\t}\n\n\t/**\n\t * Sets the sphere's components by copying the given values.\n\t *\n\t * @param {Vector3} center - The center.\n\t * @param {number} radius - The radius.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tset( center, radius ) {\n\n\t\tthis.center.copy( center );\n\t\tthis.radius = radius;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the minimum bounding sphere for list of points.\n\t * If the optional center point is given, it is used as the sphere's\n\t * center. Otherwise, the center of the axis-aligned bounding box\n\t * encompassing the points is calculated.\n\t *\n\t * @param {Array<Vector3>} points - A list of points in 3D space.\n\t * @param {Vector3} [optionalCenter] - The center of the sphere.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tsetFromPoints( points, optionalCenter ) {\n\n\t\tconst center = this.center;\n\n\t\tif ( optionalCenter !== undefined ) {\n\n\t\t\tcenter.copy( optionalCenter );\n\n\t\t} else {\n\n\t\t\t_box$3.setFromPoints( points ).getCenter( center );\n\n\t\t}\n\n\t\tlet maxRadiusSq = 0;\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\n\n\t\t}\n\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given sphere to this instance.\n\t *\n\t * @param {Sphere} sphere - The sphere to copy.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tcopy( sphere ) {\n\n\t\tthis.center.copy( sphere.center );\n\t\tthis.radius = sphere.radius;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the sphere is empty (the radius set to a negative number).\n\t *\n\t * Spheres with a radius of `0` contain only their center point and are not\n\t * considered to be empty.\n\t *\n\t * @return {boolean} Whether this sphere is empty or not.\n\t */\n\tisEmpty() {\n\n\t\treturn ( this.radius < 0 );\n\n\t}\n\n\t/**\n\t * Makes this sphere empty which means in encloses a zero space in 3D.\n\t *\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.center.set( 0, 0, 0 );\n\t\tthis.radius = -1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere contains the given point inclusive of\n\t * the surface of the sphere.\n\t *\n\t * @param {Vector3} point - The point to check.\n\t * @return {boolean} Whether this sphere contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\n\n\t}\n\n\t/**\n\t * Returns the closest distance from the boundary of the sphere to the\n\t * given point. If the sphere contains the point, the distance will\n\t * be negative.\n\t *\n\t * @param {Vector3} point - The point to compute the distance to.\n\t * @return {number} The distance to the point.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given one.\n\t *\n\t * @param {Sphere} sphere - The sphere to test.\n\t * @return {boolean} Whether this sphere intersects with the given one or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tconst radiusSum = this.radius + sphere.radius;\n\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to test.\n\t * @return {boolean} Whether this sphere intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsSphere( this );\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere intersects with the given plane.\n\t *\n\t * @param {Plane} plane - The plane to test.\n\t * @return {boolean} Whether this sphere intersects with the given plane or not.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\n\n\t}\n\n\t/**\n\t * Clamps a point within the sphere. If the point is outside the sphere, it\n\t * will clamp it to the closest point on the edge of the sphere. Points\n\t * already inside the sphere will not be affected.\n\t *\n\t * @param {Vector3} point - The plane to clamp.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\n\n\t\ttarget.copy( point );\n\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\ttarget.sub( this.center ).normalize();\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a bounding box that encloses this sphere.\n\t *\n\t * @param {Box3} target - The target box that is used to store the method's result.\n\t * @return {Box3} The bounding box that encloses this sphere.\n\t */\n\tgetBoundingBox( target ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\t// Empty sphere produces empty bounding box\n\t\t\ttarget.makeEmpty();\n\t\t\treturn target;\n\n\t\t}\n\n\t\ttarget.set( this.center, this.center );\n\t\ttarget.expandByScalar( this.radius );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Transforms this sphere with the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.center.applyMatrix4( matrix );\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the sphere's center by the given offset.\n\t *\n\t * @param {Vector3} offset - The offset.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.center.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this sphere to include the given point.\n\t *\n\t * @param {Vector3} point - The point to include.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\texpandByPoint( point ) {\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.center.copy( point );\n\n\t\t\tthis.radius = 0;\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t_v1$6.subVectors( point, this.center );\n\n\t\tconst lengthSq = _v1$6.lengthSq();\n\n\t\tif ( lengthSq > ( this.radius * this.radius ) ) {\n\n\t\t\t// calculate the minimal sphere\n\n\t\t\tconst length = Math.sqrt( lengthSq );\n\n\t\t\tconst delta = ( length - this.radius ) * 0.5;\n\n\t\t\tthis.center.addScaledVector( _v1$6, delta / length );\n\n\t\t\tthis.radius += delta;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this sphere to enclose both the original sphere and the given sphere.\n\t *\n\t * @param {Sphere} sphere - The sphere to include.\n\t * @return {Sphere} A reference to this sphere.\n\t */\n\tunion( sphere ) {\n\n\t\tif ( sphere.isEmpty() ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.isEmpty() ) {\n\n\t\t\tthis.copy( sphere );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( this.center.equals( sphere.center ) === true ) {\n\n\t\t\t this.radius = Math.max( this.radius, sphere.radius );\n\n\t\t} else {\n\n\t\t\t_v2$3.subVectors( sphere.center, this.center ).setLength( sphere.radius );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).add( _v2$3 ) );\n\n\t\t\tthis.expandByPoint( _v1$6.copy( sphere.center ).sub( _v2$3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this sphere is equal with the given one.\n\t *\n\t * @param {Sphere} sphere - The sphere to test for equality.\n\t * @return {boolean} Whether this bounding sphere is equal with the given one.\n\t */\n\tequals( sphere ) {\n\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\n\n\t}\n\n\t/**\n\t * Returns a new sphere with copied values from this instance.\n\t *\n\t * @return {Sphere} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$a = /*@__PURE__*/ new Vector3();\nconst _segCenter = /*@__PURE__*/ new Vector3();\nconst _segDir = /*@__PURE__*/ new Vector3();\nconst _diff = /*@__PURE__*/ new Vector3();\n\nconst _edge1 = /*@__PURE__*/ new Vector3();\nconst _edge2 = /*@__PURE__*/ new Vector3();\nconst _normal$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * A ray that emits from an origin in a certain direction. The class is used by\n * {@link Raycaster} to assist with raycasting. Raycasting is used for\n * mouse picking (working out what objects in the 3D space the mouse is over)\n * amongst other things.\n */\nclass Ray {\n\n\t/**\n\t * Constructs a new ray.\n\t *\n\t * @param {Vector3} [origin=(0,0,0)] - The origin of the ray.\n\t * @param {Vector3} [direction=(0,0,-1)] - The (normalized) direction of the ray.\n\t */\n\tconstructor( origin = new Vector3(), direction = new Vector3( 0, 0, -1 ) ) {\n\n\t\t/**\n\t\t * The origin of the ray.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.origin = origin;\n\n\t\t/**\n\t\t * The (normalized) direction of the ray.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.direction = direction;\n\n\t}\n\n\t/**\n\t * Sets the ray's components by copying the given values.\n\t *\n\t * @param {Vector3} origin - The origin.\n\t * @param {Vector3} direction - The direction.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tset( origin, direction ) {\n\n\t\tthis.origin.copy( origin );\n\t\tthis.direction.copy( direction );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given ray to this instance.\n\t *\n\t * @param {Ray} ray - The ray to copy.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tcopy( ray ) {\n\n\t\tthis.origin.copy( ray.origin );\n\t\tthis.direction.copy( ray.direction );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a vector that is located at a given distance along this ray.\n\t *\n\t * @param {number} t - The distance along the ray to retrieve a position for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} A position on the ray.\n\t */\n\tat( t, target ) {\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, t );\n\n\t}\n\n\t/**\n\t * Adjusts the direction of the ray to point at the given vector in world space.\n\t *\n\t * @param {Vector3} v - The target position.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tlookAt( v ) {\n\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Shift the origin of this ray along its direction by the given distance.\n\t *\n\t * @param {number} t - The distance along the ray to interpolate.\n\t * @return {Ray} A reference to this ray.\n\t */\n\trecast( t ) {\n\n\t\tthis.origin.copy( this.at( t, _vector$a ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the point along this ray that is closest to the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to get the closet location on the ray for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on this ray.\n\t */\n\tclosestPointToPoint( point, target ) {\n\n\t\ttarget.subVectors( point, this.origin );\n\n\t\tconst directionDistance = target.dot( this.direction );\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn target.copy( this.origin );\n\n\t\t}\n\n\t\treturn target.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t}\n\n\t/**\n\t * Returns the distance of the closest approach between this ray and the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to compute the distance to.\n\t * @return {number} The distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\n\n\t}\n\n\t/**\n\t * Returns the squared distance of the closest approach between this ray and the given point.\n\t *\n\t * @param {Vector3} point - A point in 3D space to compute the distance to.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceSqToPoint( point ) {\n\n\t\tconst directionDistance = _vector$a.subVectors( point, this.origin ).dot( this.direction );\n\n\t\t// point behind the ray\n\n\t\tif ( directionDistance < 0 ) {\n\n\t\t\treturn this.origin.distanceToSquared( point );\n\n\t\t}\n\n\t\t_vector$a.copy( this.origin ).addScaledVector( this.direction, directionDistance );\n\n\t\treturn _vector$a.distanceToSquared( point );\n\n\t}\n\n\t/**\n\t * Returns the squared distance between this ray and the given line segment.\n\t *\n\t * @param {Vector3} v0 - The start point of the line segment.\n\t * @param {Vector3} v1 - The end point of the line segment.\n\t * @param {Vector3} [optionalPointOnRay] - When provided, it receives the point on this ray that is closest to the segment.\n\t * @param {Vector3} [optionalPointOnSegment] - When provided, it receives the point on the line segment that is closest to this ray.\n\t * @return {number} The squared distance.\n\t */\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h\n\t\t// It returns the min distance between the ray and the segment\n\t\t// defined by v0 and v1\n\t\t// It can also set two optional targets :\n\t\t// - The closest point on the ray\n\t\t// - The closest point on the segment\n\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\n\t\t_diff.copy( this.origin ).sub( _segCenter );\n\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\n\t\tconst a01 = - this.direction.dot( _segDir );\n\t\tconst b0 = _diff.dot( this.direction );\n\t\tconst b1 = - _diff.dot( _segDir );\n\t\tconst c = _diff.lengthSq();\n\t\tconst det = Math.abs( 1 - a01 * a01 );\n\t\tlet s0, s1, sqrDist, extDet;\n\n\t\tif ( det > 0 ) {\n\n\t\t\t// The ray and segment are not parallel.\n\n\t\t\ts0 = a01 * b1 - b0;\n\t\t\ts1 = a01 * b0 - b1;\n\t\t\textDet = segExtent * det;\n\n\t\t\tif ( s0 >= 0 ) {\n\n\t\t\t\tif ( s1 >= - extDet ) {\n\n\t\t\t\t\tif ( s1 <= extDet ) {\n\n\t\t\t\t\t\t// region 0\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\n\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\ts0 *= invDet;\n\t\t\t\t\t\ts1 *= invDet;\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// region 1\n\n\t\t\t\t\t\ts1 = segExtent;\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 5\n\n\t\t\t\t\ts1 = - segExtent;\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( s1 <= - extDet ) {\n\n\t\t\t\t\t// region 4\n\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else if ( s1 <= extDet ) {\n\n\t\t\t\t\t// region 3\n\n\t\t\t\t\ts0 = 0;\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// region 2\n\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// Ray and segment are parallel.\n\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\n\n\t\t}\n\n\t\tif ( optionalPointOnRay ) {\n\n\t\t\toptionalPointOnRay.copy( this.origin ).addScaledVector( this.direction, s0 );\n\n\t\t}\n\n\t\tif ( optionalPointOnSegment ) {\n\n\t\t\toptionalPointOnSegment.copy( _segCenter ).addScaledVector( _segDir, s1 );\n\n\t\t}\n\n\t\treturn sqrDist;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given sphere, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Sphere} sphere - The sphere to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectSphere( sphere, target ) {\n\n\t\t_vector$a.subVectors( sphere.center, this.origin );\n\t\tconst tca = _vector$a.dot( this.direction );\n\t\tconst d2 = _vector$a.dot( _vector$a ) - tca * tca;\n\t\tconst radius2 = sphere.radius * sphere.radius;\n\n\t\tif ( d2 > radius2 ) return null;\n\n\t\tconst thc = Math.sqrt( radius2 - d2 );\n\n\t\t// t0 = first intersect point - entrance on front of sphere\n\t\tconst t0 = tca - thc;\n\n\t\t// t1 = second intersect point - exit point on back of sphere\n\t\tconst t1 = tca + thc;\n\n\t\t// test to see if t1 is behind the ray - if so, return null\n\t\tif ( t1 < 0 ) return null;\n\n\t\t// test to see if t0 is behind the ray:\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\n\t\t// in order to always return an intersect point that is in front of the ray.\n\t\tif ( t0 < 0 ) return this.at( t1, target );\n\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\n\t\treturn this.at( t0, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given sphere.\n\t *\n\t * @param {Sphere} sphere - The sphere to intersect.\n\t * @return {boolean} Whether this ray intersects with the given sphere or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\n\n\t}\n\n\t/**\n\t * Computes the distance from the ray's origin to the given plane. Returns `null` if the ray\n\t * does not intersect with the plane.\n\t *\n\t * @param {Plane} plane - The plane to compute the distance to.\n\t * @return {?number} Whether this ray intersects with the given sphere or not.\n\t */\n\tdistanceToPlane( plane ) {\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\n\n\t\t\t\treturn 0;\n\n\t\t\t}\n\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\n\n\t\t// Return if the ray never intersects the plane\n\n\t\treturn t >= 0 ? t : null;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given plane, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Plane} plane - The plane to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectPlane( plane, target ) {\n\n\t\tconst t = this.distanceToPlane( plane );\n\n\t\tif ( t === null ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn this.at( t, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given plane.\n\t *\n\t * @param {Plane} plane - The plane to intersect.\n\t * @return {boolean} Whether this ray intersects with the given plane or not.\n\t */\n\tintersectsPlane( plane ) {\n\n\t\t// check if the ray lies on the plane first\n\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\n\n\t\tif ( distToPoint === 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\tconst denominator = plane.normal.dot( this.direction );\n\n\t\tif ( denominator * distToPoint < 0 ) {\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\t// ray origin is behind the plane (and is pointing behind it)\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given bounding box, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectBox( box, target ) {\n\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\n\n\t\tconst invdirx = 1 / this.direction.x,\n\t\t\tinvdiry = 1 / this.direction.y,\n\t\t\tinvdirz = 1 / this.direction.z;\n\n\t\tconst origin = this.origin;\n\n\t\tif ( invdirx >= 0 ) {\n\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\n\n\t\t} else {\n\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\n\n\t\t}\n\n\t\tif ( invdiry >= 0 ) {\n\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\n\n\t\t} else {\n\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\n\n\t\t}\n\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\n\n\t\tif ( tymin > tmin || isNaN( tmin ) ) tmin = tymin;\n\n\t\tif ( tymax < tmax || isNaN( tmax ) ) tmax = tymax;\n\n\t\tif ( invdirz >= 0 ) {\n\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\n\n\t\t} else {\n\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\n\n\t\t}\n\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\n\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\n\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\n\n\t\t//return point closest to the ray (positive side)\n\n\t\tif ( tmax < 0 ) return null;\n\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @return {boolean} Whether this ray intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn this.intersectBox( box, _vector$a ) !== null;\n\n\t}\n\n\t/**\n\t * Intersects this ray with the given triangle, returning the intersection\n\t * point or `null` if there is no intersection.\n\t *\n\t * @param {Vector3} a - The first vertex of the triangle.\n\t * @param {Vector3} b - The second vertex of the triangle.\n\t * @param {Vector3} c - The third vertex of the triangle.\n\t * @param {boolean} backfaceCulling - Whether to use backface culling or not.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\n\n\t\t// Compute the offset origin, edges, and normal.\n\n\t\t// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\n\n\t\t_edge1.subVectors( b, a );\n\t\t_edge2.subVectors( c, a );\n\t\t_normal$1.crossVectors( _edge1, _edge2 );\n\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\n\t\t//   |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\n\t\t//   |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\n\t\t//   |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\n\t\tlet DdN = this.direction.dot( _normal$1 );\n\t\tlet sign;\n\n\t\tif ( DdN > 0 ) {\n\n\t\t\tif ( backfaceCulling ) return null;\n\t\t\tsign = 1;\n\n\t\t} else if ( DdN < 0 ) {\n\n\t\t\tsign = -1;\n\t\t\tDdN = - DdN;\n\n\t\t} else {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t_diff.subVectors( this.origin, a );\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\n\n\t\t// b1 < 0, no intersection\n\t\tif ( DdQxE2 < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\n\n\t\t// b2 < 0, no intersection\n\t\tif ( DdE1xQ < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// b1+b2 > 1, no intersection\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Line intersects triangle, check if ray does.\n\t\tconst QdN = - sign * _diff.dot( _normal$1 );\n\n\t\t// t < 0, no intersection\n\t\tif ( QdN < 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// Ray intersects triangle.\n\t\treturn this.at( QdN / DdN, target );\n\n\t}\n\n\t/**\n\t * Transforms this ray with the given 4x4 transformation matrix.\n\t *\n\t * @param {Matrix4} matrix4 - The transformation matrix.\n\t * @return {Ray} A reference to this ray.\n\t */\n\tapplyMatrix4( matrix4 ) {\n\n\t\tthis.origin.applyMatrix4( matrix4 );\n\t\tthis.direction.transformDirection( matrix4 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this ray is equal with the given one.\n\t *\n\t * @param {Ray} ray - The ray to test for equality.\n\t * @return {boolean} Whether this ray is equal with the given one.\n\t */\n\tequals( ray ) {\n\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\n\n\t}\n\n\t/**\n\t * Returns a new ray with copied values from this instance.\n\t *\n\t * @return {Ray} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Represents a 4x4 matrix.\n *\n * The most common use of a 4x4 matrix in 3D computer graphics is as a transformation matrix.\n * For an introduction to transformation matrices as used in WebGL, check out [this tutorial]{@link https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices}\n *\n * This allows a 3D vector representing a point in 3D space to undergo\n * transformations such as translation, rotation, shear, scale, reflection,\n * orthogonal or perspective projection and so on, by being multiplied by the\n * matrix. This is known as `applying` the matrix to the vector.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix3#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix4();\n * m.set( 11, 12, 13, 14,\n *        21, 22, 23, 24,\n *        31, 32, 33, 34,\n *        41, 42, 43, 44 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21, 31, 41,\n *                12, 22, 32, 42,\n *                13, 23, 33, 43,\n *                14, 24, 34, 44 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix4 {\n\n\t/**\n\t * Constructs a new 4x4 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n14] - 1-4 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n24] - 2-4 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @param {number} [n34] - 3-4 matrix element.\n\t * @param {number} [n41] - 4-1 matrix element.\n\t * @param {number} [n42] - 4-2 matrix element.\n\t * @param {number} [n43] - 4-3 matrix element.\n\t * @param {number} [n44] - 4-4 matrix element.\n\t */\n\tconstructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix4.prototype.isMatrix4 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array<number>}\n\t\t */\n\t\tthis.elements = [\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n13] - 1-3 matrix element.\n\t * @param {number} [n14] - 1-4 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t * @param {number} [n23] - 2-3 matrix element.\n\t * @param {number} [n24] - 2-4 matrix element.\n\t * @param {number} [n31] - 3-1 matrix element.\n\t * @param {number} [n32] - 3-2 matrix element.\n\t * @param {number} [n33] - 3-3 matrix element.\n\t * @param {number} [n34] - 3-4 matrix element.\n\t * @param {number} [n41] - 4-1 matrix element.\n\t * @param {number} [n42] - 4-2 matrix element.\n\t * @param {number} [n43] - 4-3 matrix element.\n\t * @param {number} [n44] - 4-4 matrix element.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 4x4 identity matrix.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, 1, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a matrix with copied values from this instance.\n\t *\n\t * @return {Matrix4} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Matrix4().fromArray( this.elements );\n\n\t}\n\n\t/**\n\t * Copies the values of the given matrix to this instance.\n\t *\n\t * @param {Matrix4} m - The matrix to copy.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcopy( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the translation component of the given matrix\n\t * into this matrix's translation component.\n\t *\n\t * @param {Matrix4} m - The matrix to copy the translation component.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcopyPosition( m ) {\n\n\t\tconst te = this.elements, me = m.elements;\n\n\t\tte[ 12 ] = me[ 12 ];\n\t\tte[ 13 ] = me[ 13 ];\n\t\tte[ 14 ] = me[ 14 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Set the upper 3x3 elements of this matrix to the values of given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The 3x3 matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tsetFromMatrix3( m ) {\n\n\t\tconst me = m.elements;\n\n\t\tthis.set(\n\n\t\t\tme[ 0 ], me[ 3 ], me[ 6 ], 0,\n\t\t\tme[ 1 ], me[ 4 ], me[ 7 ], 0,\n\t\t\tme[ 2 ], me[ 5 ], me[ 8 ], 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the basis of this matrix into the three axis vectors provided.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\textractBasis( xAxis, yAxis, zAxis ) {\n\n\t\txAxis.setFromMatrixColumn( this, 0 );\n\t\tyAxis.setFromMatrixColumn( this, 1 );\n\t\tzAxis.setFromMatrixColumn( this, 2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given basis vectors to this matrix.\n\t *\n\t * @param {Vector3} xAxis - The basis's x axis.\n\t * @param {Vector3} yAxis - The basis's y axis.\n\t * @param {Vector3} zAxis - The basis's z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeBasis( xAxis, yAxis, zAxis ) {\n\n\t\tthis.set(\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\n\t\t\t0, 0, 0, 1\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Extracts the rotation component of the given matrix\n\t * into this matrix's rotation component.\n\t *\n\t * Note: This method does not support reflection matrices.\n\t *\n\t * @param {Matrix4} m - The matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\textractRotation( m ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = m.elements;\n\n\t\tconst scaleX = 1 / _v1$5.setFromMatrixColumn( m, 0 ).length();\n\t\tconst scaleY = 1 / _v1$5.setFromMatrixColumn( m, 1 ).length();\n\t\tconst scaleZ = 1 / _v1$5.setFromMatrixColumn( m, 2 ).length();\n\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the rotation component (the upper left 3x3 matrix) of this matrix to\n\t * the rotation specified by the given Euler angles. The rest of\n\t * the matrix is set to the identity. Depending on the {@link Euler#order},\n\t * there are six possible outcomes. See [this page]{@link https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix}\n\t * for a complete list.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationFromEuler( euler ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\n\n\t\tif ( euler.order === 'XYZ' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - c * f;\n\t\t\tte[ 8 ] = d;\n\n\t\t\tte[ 1 ] = af + be * d;\n\t\t\tte[ 5 ] = ae - bf * d;\n\t\t\tte[ 9 ] = - b * c;\n\n\t\t\tte[ 2 ] = bf - ae * d;\n\t\t\tte[ 6 ] = be + af * d;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YXZ' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce + df * b;\n\t\t\tte[ 4 ] = de * b - cf;\n\t\t\tte[ 8 ] = a * d;\n\n\t\t\tte[ 1 ] = a * f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b;\n\n\t\t\tte[ 2 ] = cf * b - de;\n\t\t\tte[ 6 ] = df + ce * b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZXY' ) {\n\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\n\n\t\t\tte[ 0 ] = ce - df * b;\n\t\t\tte[ 4 ] = - a * f;\n\t\t\tte[ 8 ] = de + cf * b;\n\n\t\t\tte[ 1 ] = cf + de * b;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = df - ce * b;\n\n\t\t\tte[ 2 ] = - a * d;\n\t\t\tte[ 6 ] = b;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'ZYX' ) {\n\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = be * d - af;\n\t\t\tte[ 8 ] = ae * d + bf;\n\n\t\t\tte[ 1 ] = c * f;\n\t\t\tte[ 5 ] = bf * d + ae;\n\t\t\tte[ 9 ] = af * d - be;\n\n\t\t\tte[ 2 ] = - d;\n\t\t\tte[ 6 ] = b * c;\n\t\t\tte[ 10 ] = a * c;\n\n\t\t} else if ( euler.order === 'YZX' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = bd - ac * f;\n\t\t\tte[ 8 ] = bc * f + ad;\n\n\t\t\tte[ 1 ] = f;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = - b * e;\n\n\t\t\tte[ 2 ] = - d * e;\n\t\t\tte[ 6 ] = ad * f + bc;\n\t\t\tte[ 10 ] = ac - bd * f;\n\n\t\t} else if ( euler.order === 'XZY' ) {\n\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\n\n\t\t\tte[ 0 ] = c * e;\n\t\t\tte[ 4 ] = - f;\n\t\t\tte[ 8 ] = d * e;\n\n\t\t\tte[ 1 ] = ac * f + bd;\n\t\t\tte[ 5 ] = a * e;\n\t\t\tte[ 9 ] = ad * f - bc;\n\n\t\t\tte[ 2 ] = bc * f - ad;\n\t\t\tte[ 6 ] = b * e;\n\t\t\tte[ 10 ] = bd * f + ac;\n\n\t\t}\n\n\t\t// bottom row\n\t\tte[ 3 ] = 0;\n\t\tte[ 7 ] = 0;\n\t\tte[ 11 ] = 0;\n\n\t\t// last column\n\t\tte[ 12 ] = 0;\n\t\tte[ 13 ] = 0;\n\t\tte[ 14 ] = 0;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the rotation component of this matrix to the rotation specified by\n\t * the given Quaternion as outlined [here]{@link https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion}\n\t * The rest of the matrix is set to the identity.\n\t *\n\t * @param {Quaternion} q - The Quaternion.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationFromQuaternion( q ) {\n\n\t\treturn this.compose( _zero, q, _one );\n\n\t}\n\n\t/**\n\t * Sets the rotation component of the transformation matrix, looking from `eye` towards\n\t * `target`, and oriented by the up-direction.\n\t *\n\t * @param {Vector3} eye - The eye vector.\n\t * @param {Vector3} target - The target vector.\n\t * @param {Vector3} up - The up vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tlookAt( eye, target, up ) {\n\n\t\tconst te = this.elements;\n\n\t\t_z.subVectors( eye, target );\n\n\t\tif ( _z.lengthSq() === 0 ) {\n\n\t\t\t// eye and target are in the same position\n\n\t\t\t_z.z = 1;\n\n\t\t}\n\n\t\t_z.normalize();\n\t\t_x.crossVectors( up, _z );\n\n\t\tif ( _x.lengthSq() === 0 ) {\n\n\t\t\t// up and z are parallel\n\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\n\n\t\t\t\t_z.x += 0.0001;\n\n\t\t\t} else {\n\n\t\t\t\t_z.z += 0.0001;\n\n\t\t\t}\n\n\t\t\t_z.normalize();\n\t\t\t_x.crossVectors( up, _z );\n\n\t\t}\n\n\t\t_x.normalize();\n\t\t_y.crossVectors( _z, _x );\n\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Post-multiplies this matrix by the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The matrix to multiply with.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiply( m ) {\n\n\t\treturn this.multiplyMatrices( this, m );\n\n\t}\n\n\t/**\n\t * Pre-multiplies this matrix by the given 4x4 matrix.\n\t *\n\t * @param {Matrix4} m - The matrix to multiply with.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tpremultiply( m ) {\n\n\t\treturn this.multiplyMatrices( m, this );\n\n\t}\n\n\t/**\n\t * Multiples the given 4x4 matrices and stores the result\n\t * in this matrix.\n\t *\n\t * @param {Matrix4} a - The first matrix.\n\t * @param {Matrix4} b - The second matrix.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiplyMatrices( a, b ) {\n\n\t\tconst ae = a.elements;\n\t\tconst be = b.elements;\n\t\tconst te = this.elements;\n\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\n\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\n\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies every component of the matrix by the given scalar.\n\t *\n\t * @param {number} s - The scalar.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes and returns the determinant of this matrix.\n\t *\n\t * Based on the method outlined [here]{@link http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html}.\n\t *\n\t * @return {number} The determinant.\n\t */\n\tdeterminant() {\n\n\t\tconst te = this.elements;\n\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\n\n\t\t//TODO: make this more efficient\n\n\t\treturn (\n\t\t\tn41 * (\n\t\t\t\t+ n14 * n23 * n32\n\t\t\t\t - n13 * n24 * n32\n\t\t\t\t - n14 * n22 * n33\n\t\t\t\t + n12 * n24 * n33\n\t\t\t\t + n13 * n22 * n34\n\t\t\t\t - n12 * n23 * n34\n\t\t\t) +\n\t\t\tn42 * (\n\t\t\t\t+ n11 * n23 * n34\n\t\t\t\t - n11 * n24 * n33\n\t\t\t\t + n14 * n21 * n33\n\t\t\t\t - n13 * n21 * n34\n\t\t\t\t + n13 * n24 * n31\n\t\t\t\t - n14 * n23 * n31\n\t\t\t) +\n\t\t\tn43 * (\n\t\t\t\t+ n11 * n24 * n32\n\t\t\t\t - n11 * n22 * n34\n\t\t\t\t - n14 * n21 * n32\n\t\t\t\t + n12 * n21 * n34\n\t\t\t\t + n14 * n22 * n31\n\t\t\t\t - n12 * n24 * n31\n\t\t\t) +\n\t\t\tn44 * (\n\t\t\t\t- n13 * n22 * n31\n\t\t\t\t - n11 * n23 * n32\n\t\t\t\t + n11 * n22 * n33\n\t\t\t\t + n13 * n21 * n32\n\t\t\t\t - n12 * n21 * n33\n\t\t\t\t + n12 * n23 * n31\n\t\t\t)\n\n\t\t);\n\n\t}\n\n\t/**\n\t * Transposes this matrix in place.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\ttranspose() {\n\n\t\tconst te = this.elements;\n\t\tlet tmp;\n\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\n\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the position component for this matrix from the given vector,\n\t * without affecting the rest of the matrix.\n\t *\n\t * @param {number|Vector3} x - The x component of the vector or alternatively the vector object.\n\t * @param {number} y - The y component of the vector.\n\t * @param {number} z - The z component of the vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tsetPosition( x, y, z ) {\n\n\t\tconst te = this.elements;\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tte[ 12 ] = x.x;\n\t\t\tte[ 13 ] = x.y;\n\t\t\tte[ 14 ] = x.z;\n\n\t\t} else {\n\n\t\t\tte[ 12 ] = x;\n\t\t\tte[ 13 ] = y;\n\t\t\tte[ 14 ] = z;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.\n\t * You can not invert with a determinant of zero. If you attempt this, the method produces\n\t * a zero matrix instead.\n\t *\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tinvert() {\n\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\n\t\tconst te = this.elements,\n\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\n\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\n\n\t\tconst detInv = 1 / det;\n\n\t\tte[ 0 ] = t11 * detInv;\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\n\n\t\tte[ 4 ] = t12 * detInv;\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\n\n\t\tte[ 8 ] = t13 * detInv;\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\n\n\t\tte[ 12 ] = t14 * detInv;\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the columns of this matrix by the given vector.\n\t *\n\t * @param {Vector3} v - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tscale( v ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = v.x, y = v.y, z = v.z;\n\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Gets the maximum scale value of the three axes.\n\t *\n\t * @return {number} The maximum scale.\n\t */\n\tgetMaxScaleOnAxis() {\n\n\t\tconst te = this.elements;\n\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\n\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\n\n\t}\n\n\t/**\n\t * Sets this matrix as a translation transform from the given vector.\n\t *\n\t * @param {number|Vector3} x - The amount to translate in the X axis or alternatively a translation vector.\n\t * @param {number} y - The amount to translate in the Y axis.\n\t * @param {number} z - The amount to translate in the z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeTranslation( x, y, z ) {\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x.x,\n\t\t\t\t0, 1, 0, x.y,\n\t\t\t\t0, 0, 1, x.z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t} else {\n\n\t\t\tthis.set(\n\n\t\t\t\t1, 0, 0, x,\n\t\t\t\t0, 1, 0, y,\n\t\t\t\t0, 0, 1, z,\n\t\t\t\t0, 0, 0, 1\n\n\t\t\t);\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the X axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationX( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t1, 0, 0, 0,\n\t\t\t0, c, - s, 0,\n\t\t\t0, s, c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the Y axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationY( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\t c, 0, s, 0,\n\t\t\t 0, 1, 0, 0,\n\t\t\t- s, 0, c, 0,\n\t\t\t 0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the Z axis by\n\t * the given angle.\n\t *\n\t * @param {number} theta - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationZ( theta ) {\n\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\n\n\t\tthis.set(\n\n\t\t\tc, - s, 0, 0,\n\t\t\ts, c, 0, 0,\n\t\t\t0, 0, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a rotational transformation around the given axis by\n\t * the given angle.\n\t *\n\t * This is a somewhat controversial but mathematically sound alternative to\n\t * rotating via Quaternions. See the discussion [here]{@link https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199}.\n\t *\n\t * @param {Vector3} axis - The normalized rotation axis.\n\t * @param {number} angle - The rotation in radians.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeRotationAxis( axis, angle ) {\n\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\n\n\t\tconst c = Math.cos( angle );\n\t\tconst s = Math.sin( angle );\n\t\tconst t = 1 - c;\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\n\t\tconst tx = t * x, ty = t * y;\n\n\t\tthis.set(\n\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a scale transformation.\n\t *\n\t * @param {number} x - The amount to scale in the X axis.\n\t * @param {number} y - The amount to scale in the Y axis.\n\t * @param {number} z - The amount to scale in the Z axis.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeScale( x, y, z ) {\n\n\t\tthis.set(\n\n\t\t\tx, 0, 0, 0,\n\t\t\t0, y, 0, 0,\n\t\t\t0, 0, z, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix as a shear transformation.\n\t *\n\t * @param {number} xy - The amount to shear X by Y.\n\t * @param {number} xz - The amount to shear X by Z.\n\t * @param {number} yx - The amount to shear Y by X.\n\t * @param {number} yz - The amount to shear Y by Z.\n\t * @param {number} zx - The amount to shear Z by X.\n\t * @param {number} zy - The amount to shear Z by Y.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeShear( xy, xz, yx, yz, zx, zy ) {\n\n\t\tthis.set(\n\n\t\t\t1, yx, zx, 0,\n\t\t\txy, 1, zy, 0,\n\t\t\txz, yz, 1, 0,\n\t\t\t0, 0, 0, 1\n\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this matrix to the transformation composed of the given position,\n\t * rotation (Quaternion) and scale.\n\t *\n\t * @param {Vector3} position - The position vector.\n\t * @param {Quaternion} quaternion - The rotation as a Quaternion.\n\t * @param {Vector3} scale - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tcompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\n\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\n\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\n\t\tte[ 1 ] = ( xy + wz ) * sx;\n\t\tte[ 2 ] = ( xz - wy ) * sx;\n\t\tte[ 3 ] = 0;\n\n\t\tte[ 4 ] = ( xy - wz ) * sy;\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\n\t\tte[ 6 ] = ( yz + wx ) * sy;\n\t\tte[ 7 ] = 0;\n\n\t\tte[ 8 ] = ( xz + wy ) * sz;\n\t\tte[ 9 ] = ( yz - wx ) * sz;\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\n\t\tte[ 11 ] = 0;\n\n\t\tte[ 12 ] = position.x;\n\t\tte[ 13 ] = position.y;\n\t\tte[ 14 ] = position.z;\n\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Decomposes this matrix into its position, rotation and scale components\n\t * and provides the result in the given objects.\n\t *\n\t * Note: Not all matrices are decomposable in this way. For example, if an\n\t * object has a non-uniformly scaled parent, then the object's world matrix\n\t * may not be decomposable, and this method may not be appropriate.\n\t *\n\t * @param {Vector3} position - The position vector.\n\t * @param {Quaternion} quaternion - The rotation as a Quaternion.\n\t * @param {Vector3} scale - The scale vector.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tdecompose( position, quaternion, scale ) {\n\n\t\tconst te = this.elements;\n\n\t\tlet sx = _v1$5.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\n\t\tconst sy = _v1$5.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\n\t\tconst sz = _v1$5.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\n\n\t\t// if determine is negative, we need to invert one scale\n\t\tconst det = this.determinant();\n\t\tif ( det < 0 ) sx = - sx;\n\n\t\tposition.x = te[ 12 ];\n\t\tposition.y = te[ 13 ];\n\t\tposition.z = te[ 14 ];\n\n\t\t// scale the rotation part\n\t\t_m1$2.copy( this );\n\n\t\tconst invSX = 1 / sx;\n\t\tconst invSY = 1 / sy;\n\t\tconst invSZ = 1 / sz;\n\n\t\t_m1$2.elements[ 0 ] *= invSX;\n\t\t_m1$2.elements[ 1 ] *= invSX;\n\t\t_m1$2.elements[ 2 ] *= invSX;\n\n\t\t_m1$2.elements[ 4 ] *= invSY;\n\t\t_m1$2.elements[ 5 ] *= invSY;\n\t\t_m1$2.elements[ 6 ] *= invSY;\n\n\t\t_m1$2.elements[ 8 ] *= invSZ;\n\t\t_m1$2.elements[ 9 ] *= invSZ;\n\t\t_m1$2.elements[ 10 ] *= invSZ;\n\n\t\tquaternion.setFromRotationMatrix( _m1$2 );\n\n\t\tscale.x = sx;\n\t\tscale.y = sy;\n\t\tscale.z = sz;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a perspective projection matrix. This is used internally by\n\t * {@link PerspectiveCamera#updateProjectionMatrix}.\n\n\t * @param {number} left - Left boundary of the viewing frustum at the near plane.\n\t * @param {number} right - Right boundary of the viewing frustum at the near plane.\n\t * @param {number} top - Top boundary of the viewing frustum at the near plane.\n\t * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.\n\t * @param {number} near - The distance from the camera to the near plane.\n\t * @param {number} far - The distance from the camera to the far plane.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst x = 2 * near / ( right - left );\n\t\tconst y = 2 * near / ( top - bottom );\n\n\t\tconst a = ( right + left ) / ( right - left );\n\t\tconst b = ( top + bottom ) / ( top - bottom );\n\n\t\tlet c, d;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tc = - ( far + near ) / ( far - near );\n\t\t\td = ( -2 * far * near ) / ( far - near );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tc = - far / ( far - near );\n\t\t\td = ( - far * near ) / ( far - near );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makePerspective(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a; \tte[ 12 ] = 0;\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b; \tte[ 13 ] = 0;\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c; \tte[ 14 ] = d;\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = -1;\tte[ 15 ] = 0;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Creates a orthographic projection matrix. This is used internally by\n\t * {@link OrthographicCamera#updateProjectionMatrix}.\n\n\t * @param {number} left - Left boundary of the viewing frustum at the near plane.\n\t * @param {number} right - Right boundary of the viewing frustum at the near plane.\n\t * @param {number} top - Top boundary of the viewing frustum at the near plane.\n\t * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.\n\t * @param {number} near - The distance from the camera to the near plane.\n\t * @param {number} far - The distance from the camera to the far plane.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tmakeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst te = this.elements;\n\t\tconst w = 1.0 / ( right - left );\n\t\tconst h = 1.0 / ( top - bottom );\n\t\tconst p = 1.0 / ( far - near );\n\n\t\tconst x = ( right + left ) * w;\n\t\tconst y = ( top + bottom ) * h;\n\n\t\tlet z, zInv;\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tz = ( far + near ) * p;\n\t\t\tzInv = -2 * p;\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tz = near * p;\n\t\t\tzInv = -1 * p;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Matrix4.makeOrthographic(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\t\tte[ 8 ] = 0; \t\tte[ 12 ] = - x;\n\t\tte[ 1 ] = 0; \t\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0; \t\tte[ 13 ] = - y;\n\t\tte[ 2 ] = 0; \t\tte[ 6 ] = 0;\t\tte[ 10 ] = zInv;\tte[ 14 ] = - z;\n\t\tte[ 3 ] = 0; \t\tte[ 7 ] = 0;\t\tte[ 11 ] = 0;\t\tte[ 15 ] = 1;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this matrix is equal with the given one.\n\t *\n\t * @param {Matrix4} matrix - The matrix to test for equality.\n\t * @return {boolean} Whether this matrix is equal with the given one.\n\t */\n\tequals( matrix ) {\n\n\t\tconst te = this.elements;\n\t\tconst me = matrix.elements;\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array<number>} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix4} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 16; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the elements of this matrix to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array holding the matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number>} The matrix elements in column-major order.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst te = this.elements;\n\n\t\tarray[ offset ] = te[ 0 ];\n\t\tarray[ offset + 1 ] = te[ 1 ];\n\t\tarray[ offset + 2 ] = te[ 2 ];\n\t\tarray[ offset + 3 ] = te[ 3 ];\n\n\t\tarray[ offset + 4 ] = te[ 4 ];\n\t\tarray[ offset + 5 ] = te[ 5 ];\n\t\tarray[ offset + 6 ] = te[ 6 ];\n\t\tarray[ offset + 7 ] = te[ 7 ];\n\n\t\tarray[ offset + 8 ] = te[ 8 ];\n\t\tarray[ offset + 9 ] = te[ 9 ];\n\t\tarray[ offset + 10 ] = te[ 10 ];\n\t\tarray[ offset + 11 ] = te[ 11 ];\n\n\t\tarray[ offset + 12 ] = te[ 12 ];\n\t\tarray[ offset + 13 ] = te[ 13 ];\n\t\tarray[ offset + 14 ] = te[ 14 ];\n\t\tarray[ offset + 15 ] = te[ 15 ];\n\n\t\treturn array;\n\n\t}\n\n}\n\nconst _v1$5 = /*@__PURE__*/ new Vector3();\nconst _m1$2 = /*@__PURE__*/ new Matrix4();\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\nconst _x = /*@__PURE__*/ new Vector3();\nconst _y = /*@__PURE__*/ new Vector3();\nconst _z = /*@__PURE__*/ new Vector3();\n\nconst _matrix$2 = /*@__PURE__*/ new Matrix4();\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\n\n/**\n * A class representing Euler angles.\n *\n * Euler angles describe a rotational transformation by rotating an object on\n * its various axes in specified amounts per axis, and a specified axis\n * order.\n *\n * Iterating through an instance will yield its components (x, y, z,\n * order) in the corresponding order.\n *\n * ```js\n * const a = new THREE.Euler( 0, 1, 1.57, 'XYZ' );\n * const b = new THREE.Vector3( 1, 0, 1 );\n * b.applyEuler(a);\n * ```\n */\nclass Euler {\n\n\t/**\n\t * Constructs a new euler instance.\n\t *\n\t * @param {number} [x=0] - The angle of the x axis in radians.\n\t * @param {number} [y=0] - The angle of the y axis in radians.\n\t * @param {number} [z=0] - The angle of the z axis in radians.\n\t * @param {string} [order=Euler.DEFAULT_ORDER] - A string representing the order that the rotations are applied.\n\t */\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isEuler = true;\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t}\n\n\t/**\n\t * The angle of the x axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget x() {\n\n\t\treturn this._x;\n\n\t}\n\n\tset x( value ) {\n\n\t\tthis._x = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The angle of the y axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget y() {\n\n\t\treturn this._y;\n\n\t}\n\n\tset y( value ) {\n\n\t\tthis._y = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * The angle of the z axis in radians.\n\t *\n\t * @type {number}\n\t * @default 0\n\t */\n\tget z() {\n\n\t\treturn this._z;\n\n\t}\n\n\tset z( value ) {\n\n\t\tthis._z = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * A string representing the order that the rotations are applied.\n\t *\n\t * @type {string}\n\t * @default 'XYZ'\n\t */\n\tget order() {\n\n\t\treturn this._order;\n\n\t}\n\n\tset order( value ) {\n\n\t\tthis._order = value;\n\t\tthis._onChangeCallback();\n\n\t}\n\n\t/**\n\t * Sets the Euler components.\n\t *\n\t * @param {number} x - The angle of the x axis in radians.\n\t * @param {number} y - The angle of the y axis in radians.\n\t * @param {number} z - The angle of the z axis in radians.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tset( x, y, z, order = this._order ) {\n\n\t\tthis._x = x;\n\t\tthis._y = y;\n\t\tthis._z = z;\n\t\tthis._order = order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new Euler instance with copied values from this instance.\n\t *\n\t * @return {Euler} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\n\n\t}\n\n\t/**\n\t * Copies the values of the given Euler instance to this instance.\n\t *\n\t * @param {Euler} euler - The Euler instance to copy.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tcopy( euler ) {\n\n\t\tthis._x = euler._x;\n\t\tthis._y = euler._y;\n\t\tthis._z = euler._z;\n\t\tthis._order = euler._order;\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from a pure rotation matrix.\n\t *\n\t * @param {Matrix4} m - A 4x4 matrix of which the upper 3x3 of matrix is a pure rotation matrix (i.e. unscaled).\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromRotationMatrix( m, order = this._order, update = true ) {\n\n\t\tconst te = m.elements;\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\n\n\t\tswitch ( order ) {\n\n\t\t\tcase 'XYZ':\n\n\t\t\t\tthis._y = Math.asin( clamp( m13, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YXZ':\n\n\t\t\t\tthis._x = Math.asin( - clamp( m23, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\t\t\t\t\tthis._z = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZXY':\n\n\t\t\t\tthis._x = Math.asin( clamp( m32, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._y = 0;\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'ZYX':\n\n\t\t\t\tthis._y = Math.asin( - clamp( m31, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'YZX':\n\n\t\t\t\tthis._z = Math.asin( clamp( m21, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = 0;\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'XZY':\n\n\t\t\t\tthis._z = Math.asin( - clamp( m12, -1, 1 ) );\n\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\n\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\n\t\t\t\t\tthis._y = 0;\n\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\n\n\t\t}\n\n\t\tthis._order = order;\n\n\t\tif ( update === true ) this._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from a normalized quaternion.\n\t *\n\t * @param {Quaternion} q - A normalized Quaternion.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @param {boolean} [update=true] - Whether the internal `onChange` callback should be executed or not.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromQuaternion( q, order, update ) {\n\n\t\t_matrix$2.makeRotationFromQuaternion( q );\n\n\t\treturn this.setFromRotationMatrix( _matrix$2, order, update );\n\n\t}\n\n\t/**\n\t * Sets the angles of this Euler instance from the given vector.\n\t *\n\t * @param {Vector3} v - The vector.\n\t * @param {string} [order] - A string representing the order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tsetFromVector3( v, order = this._order ) {\n\n\t\treturn this.set( v.x, v.y, v.z, order );\n\n\t}\n\n\t/**\n\t * Resets the euler angle with a new order by creating a quaternion from this\n\t * euler angle and then setting this euler angle with the quaternion and the\n\t * new order.\n\t *\n\t * Warning: This discards revolution information.\n\t *\n\t * @param {string} [newOrder] - A string representing the new order that the rotations are applied.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\treorder( newOrder ) {\n\n\t\t_quaternion$3.setFromEuler( this );\n\n\t\treturn this.setFromQuaternion( _quaternion$3, newOrder );\n\n\t}\n\n\t/**\n\t * Returns `true` if this Euler instance is equal with the given one.\n\t *\n\t * @param {Euler} euler - The Euler instance to test for equality.\n\t * @return {boolean} Whether this Euler instance is equal with the given one.\n\t */\n\tequals( euler ) {\n\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\n\n\t}\n\n\t/**\n\t * Sets this Euler instance's components to values from the given array. The first three\n\t * entries of the array are assign to the x,y and z components. An optional fourth entry\n\t * defines the Euler order.\n\t *\n\t * @param {Array<number,number,number,?string>} array - An array holding the Euler component values.\n\t * @return {Euler} A reference to this Euler instance.\n\t */\n\tfromArray( array ) {\n\n\t\tthis._x = array[ 0 ];\n\t\tthis._y = array[ 1 ];\n\t\tthis._z = array[ 2 ];\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\n\n\t\tthis._onChangeCallback();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the components of this Euler instance to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number,number,number,string>} [array=[]] - The target array holding the Euler components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number,number,number,string>} The Euler components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this._x;\n\t\tarray[ offset + 1 ] = this._y;\n\t\tarray[ offset + 2 ] = this._z;\n\t\tarray[ offset + 3 ] = this._order;\n\n\t\treturn array;\n\n\t}\n\n\t_onChange( callback ) {\n\n\t\tthis._onChangeCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\t_onChangeCallback() {}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this._x;\n\t\tyield this._y;\n\t\tyield this._z;\n\t\tyield this._order;\n\n\t}\n\n}\n\n/**\n * The default Euler angle order.\n *\n * @static\n * @type {string}\n * @default 'XYZ'\n */\nEuler.DEFAULT_ORDER = 'XYZ';\n\nclass Layers {\n\n\tconstructor() {\n\n\t\tthis.mask = 1 | 0;\n\n\t}\n\n\tset( channel ) {\n\n\t\tthis.mask = ( 1 << channel | 0 ) >>> 0;\n\n\t}\n\n\tenable( channel ) {\n\n\t\tthis.mask |= 1 << channel | 0;\n\n\t}\n\n\tenableAll() {\n\n\t\tthis.mask = 0xffffffff | 0;\n\n\t}\n\n\ttoggle( channel ) {\n\n\t\tthis.mask ^= 1 << channel | 0;\n\n\t}\n\n\tdisable( channel ) {\n\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\n\n\t}\n\n\tdisableAll() {\n\n\t\tthis.mask = 0;\n\n\t}\n\n\ttest( layers ) {\n\n\t\treturn ( this.mask & layers.mask ) !== 0;\n\n\t}\n\n\tisEnabled( channel ) {\n\n\t\treturn ( this.mask & ( 1 << channel | 0 ) ) !== 0;\n\n\t}\n\n}\n\nlet _object3DId = 0;\n\nconst _v1$4 = /*@__PURE__*/ new Vector3();\nconst _q1 = /*@__PURE__*/ new Quaternion();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\nconst _target = /*@__PURE__*/ new Vector3();\n\nconst _position$3 = /*@__PURE__*/ new Vector3();\nconst _scale$2 = /*@__PURE__*/ new Vector3();\nconst _quaternion$2 = /*@__PURE__*/ new Quaternion();\n\nconst _xAxis = /*@__PURE__*/ new Vector3( 1, 0, 0 );\nconst _yAxis = /*@__PURE__*/ new Vector3( 0, 1, 0 );\nconst _zAxis = /*@__PURE__*/ new Vector3( 0, 0, 1 );\n\n/**\n * Fires when the object has been added to its parent object.\n *\n * @event Object3D#added\n * @type {Object}\n */\nconst _addedEvent = { type: 'added' };\n\n/**\n * Fires when the object has been removed from its parent object.\n *\n * @event Object3D#removed\n * @type {Object}\n */\nconst _removedEvent = { type: 'removed' };\n\n/**\n * Fires when a new child object has been added.\n *\n * @event Object3D#childadded\n * @type {Object}\n */\nconst _childaddedEvent = { type: 'childadded', child: null };\n\n/**\n * Fires when a new child object has been added.\n *\n * @event Object3D#childremoved\n * @type {Object}\n */\nconst _childremovedEvent = { type: 'childremoved', child: null };\n\n/**\n * This is the base class for most objects in three.js and provides a set of\n * properties and methods for manipulating objects in 3D space.\n *\n * @augments EventDispatcher\n */\nclass Object3D extends EventDispatcher {\n\n\t/**\n\t * Constructs a new 3D object.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isObject3D = true;\n\n\t\t/**\n\t\t * The ID of the 3D object.\n\t\t *\n\t\t * @name Object3D#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\n\n\t\t/**\n\t\t * The UUID of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the 3D object.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Object3D';\n\n\t\t/**\n\t\t * A reference to the parent object.\n\t\t *\n\t\t * @type {?Object3D}\n\t\t * @default null\n\t\t */\n\t\tthis.parent = null;\n\n\t\t/**\n\t\t * An array holding the child 3D objects of this instance.\n\t\t *\n\t\t * @type {Array<Object3D>}\n\t\t */\n\t\tthis.children = [];\n\n\t\t/**\n\t\t * Defines the `up` direction of the 3D object which influences\n\t\t * the orientation via methods like {@link Object3D#lookAt}.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_UP`.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.up = Object3D.DEFAULT_UP.clone();\n\n\t\tconst position = new Vector3();\n\t\tconst rotation = new Euler();\n\t\tconst quaternion = new Quaternion();\n\t\tconst scale = new Vector3( 1, 1, 1 );\n\n\t\tfunction onRotationChange() {\n\n\t\t\tquaternion.setFromEuler( rotation, false );\n\n\t\t}\n\n\t\tfunction onQuaternionChange() {\n\n\t\t\trotation.setFromQuaternion( quaternion, undefined, false );\n\n\t\t}\n\n\t\trotation._onChange( onRotationChange );\n\t\tquaternion._onChange( onQuaternionChange );\n\n\t\tObject.defineProperties( this, {\n\t\t\t/**\n\t\t\t * Represents the object's local position.\n\t\t\t *\n\t\t\t * @name Object3D#position\n\t\t\t * @type {Vector3}\n\t\t\t * @default (0,0,0)\n\t\t\t */\n\t\t\tposition: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: position\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local rotation as Euler angles, in radians.\n\t\t\t *\n\t\t\t * @name Object3D#rotation\n\t\t\t * @type {Euler}\n\t\t\t * @default (0,0,0)\n\t\t\t */\n\t\t\trotation: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: rotation\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local rotation as Quaternions.\n\t\t\t *\n\t\t\t * @name Object3D#quaternion\n\t\t\t * @type {Quaternion}\n\t\t\t */\n\t\t\tquaternion: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: quaternion\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's local scale.\n\t\t\t *\n\t\t\t * @name Object3D#scale\n\t\t\t * @type {Vector3}\n\t\t\t * @default (1,1,1)\n\t\t\t */\n\t\t\tscale: {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: scale\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's model-view matrix.\n\t\t\t *\n\t\t\t * @name Object3D#modelViewMatrix\n\t\t\t * @type {Matrix4}\n\t\t\t */\n\t\t\tmodelViewMatrix: {\n\t\t\t\tvalue: new Matrix4()\n\t\t\t},\n\t\t\t/**\n\t\t\t * Represents the object's normal matrix.\n\t\t\t *\n\t\t\t * @name Object3D#normalMatrix\n\t\t\t * @type {Matrix3}\n\t\t\t */\n\t\t\tnormalMatrix: {\n\t\t\t\tvalue: new Matrix3()\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Represents the object's transformation matrix in local space.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrix = new Matrix4();\n\n\t\t/**\n\t\t * Represents the object's transformation matrix in world space.\n\t\t * If the 3D object has no parent, then it's identical to the local transformation matrix\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrixWorld = new Matrix4();\n\n\t\t/**\n\t\t * When set to `true`, the engine automatically computes the local matrix from position,\n\t\t * rotation and scale every frame.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_AUTO_UPDATE`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n\n\t\t/**\n\t\t * When set to `true`, the engine automatically computes the world matrix from the current local\n\t\t * matrix and the object's transformation hierarchy.\n\t\t *\n\t\t * The default values for all 3D objects is defined by `Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE; // checked by the renderer\n\n\t\t/**\n\t\t * When set to `true`, it calculates the world matrix in that frame and resets this property\n\t\t * to `false`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t/**\n\t\t * The layer membership of the 3D object. The 3D object is only visible if it has\n\t\t * at least one layer in common with the camera in use. This property can also be\n\t\t * used to filter out unwanted objects in ray-intersection tests when using {@link Raycaster}.\n\t\t *\n\t\t * @type {Layers}\n\t\t */\n\t\tthis.layers = new Layers();\n\n\t\t/**\n\t\t * When set to `true`, the 3D object gets rendered.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.visible = true;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object gets rendered into shadow maps.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.castShadow = false;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object is affected by shadows in the scene.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.receiveShadow = false;\n\n\t\t/**\n\t\t * When set to `true`, the 3D object is honored by view frustum culling.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.frustumCulled = true;\n\n\t\t/**\n\t\t * This value allows the default rendering order of scene graph objects to be\n\t\t * overridden although opaque and transparent objects remain sorted independently.\n\t\t * When this property is set for an instance of {@link Group},all descendants\n\t\t * objects will be sorted and rendered together. Sorting is from lowest to highest\n\t\t * render order.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.renderOrder = 0;\n\n\t\t/**\n\t\t * An array holding the animation clips of the 3D object.\n\t\t *\n\t\t * @type {Array<AnimationClip>}\n\t\t */\n\t\tthis.animations = [];\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the 3D object. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t}\n\n\t/**\n\t * A callback that is executed immediately before a 3D object is rendered to a shadow map.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {Camera} shadowCamera - The shadow camera.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} depthMaterial - The depth material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately after a 3D object is rendered to a shadow map.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {Camera} shadowCamera - The shadow camera.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} depthMaterial - The depth material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonAfterShadow( /* renderer, object, camera, shadowCamera, geometry, depthMaterial, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately before a 3D object is rendered.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} material - The 3D object's material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\t/**\n\t * A callback that is executed immediately after a 3D object is rendered.\n\t *\n\t * @param {Renderer|WebGLRenderer} renderer - The renderer.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Material} material - The 3D object's material.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonAfterRender( /* renderer, scene, camera, geometry, material, group */ ) {}\n\n\t/**\n\t * Applies the given transformation matrix to the object and updates the object's position,\n\t * rotation and scale.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tthis.matrix.premultiply( matrix );\n\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\n\n\t}\n\n\t/**\n\t * Applies a rotation represented by given the quaternion to the 3D object.\n\t *\n\t * @param {Quaternion} q - The quaternion.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tapplyQuaternion( q ) {\n\n\t\tthis.quaternion.premultiply( q );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as an axis/angle couple to the 3D object.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t */\n\tsetRotationFromAxisAngle( axis, angle ) {\n\n\t\t// assumes axis is normalized\n\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as Euler angles to the 3D object.\n\t *\n\t * @param {Euler} euler - The Euler angles.\n\t */\n\tsetRotationFromEuler( euler ) {\n\n\t\tthis.quaternion.setFromEuler( euler, true );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as rotation matrix to the 3D object.\n\t *\n\t * @param {Matrix4} m - Although a 4x4 matrix is expected, the upper 3x3 portion must be\n\t * a pure rotation matrix (i.e, unscaled).\n\t */\n\tsetRotationFromMatrix( m ) {\n\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n\t\tthis.quaternion.setFromRotationMatrix( m );\n\n\t}\n\n\t/**\n\t * Sets the given rotation represented as a Quaternion to the 3D object.\n\t *\n\t * @param {Quaternion} q - The Quaternion\n\t */\n\tsetRotationFromQuaternion( q ) {\n\n\t\t// assumes q is normalized\n\n\t\tthis.quaternion.copy( q );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object along an axis in local space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateOnAxis( axis, angle ) {\n\n\t\t// rotate object on axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.multiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the 3D object along an axis in world space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateOnWorldAxis( axis, angle ) {\n\n\t\t// rotate object on axis in world space\n\t\t// axis is assumed to be normalized\n\t\t// method assumes no rotated parent\n\n\t\t_q1.setFromAxisAngle( axis, angle );\n\n\t\tthis.quaternion.premultiply( _q1 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its X axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateX( angle ) {\n\n\t\treturn this.rotateOnAxis( _xAxis, angle );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its Y axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateY( angle ) {\n\n\t\treturn this.rotateOnAxis( _yAxis, angle );\n\n\t}\n\n\t/**\n\t * Rotates the 3D object around its Z axis in local space.\n\t *\n\t * @param {number} angle - The angle in radians.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\trotateZ( angle ) {\n\n\t\treturn this.rotateOnAxis( _zAxis, angle );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along the given axis in local space.\n\t *\n\t * @param {Vector3} axis - The (normalized) axis vector.\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateOnAxis( axis, distance ) {\n\n\t\t// translate object by distance along axis in object space\n\t\t// axis is assumed to be normalized\n\n\t\t_v1$4.copy( axis ).applyQuaternion( this.quaternion );\n\n\t\tthis.position.add( _v1$4.multiplyScalar( distance ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its X-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateX( distance ) {\n\n\t\treturn this.translateOnAxis( _xAxis, distance );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its Y-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateY( distance ) {\n\n\t\treturn this.translateOnAxis( _yAxis, distance );\n\n\t}\n\n\t/**\n\t * Translate the 3D object by a distance along its Z-axis in local space.\n\t *\n\t * @param {number} distance - The distance in world units.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\ttranslateZ( distance ) {\n\n\t\treturn this.translateOnAxis( _zAxis, distance );\n\n\t}\n\n\t/**\n\t * Converts the given vector from this 3D object's local space to world space.\n\t *\n\t * @param {Vector3} vector - The vector to convert.\n\t * @return {Vector3} The converted vector.\n\t */\n\tlocalToWorld( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( this.matrixWorld );\n\n\t}\n\n\t/**\n\t * Converts the given vector from this 3D object's word space to local space.\n\t *\n\t * @param {Vector3} vector - The vector to convert.\n\t * @return {Vector3} The converted vector.\n\t */\n\tworldToLocal( vector ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\n\n\t}\n\n\t/**\n\t * Rotates the object to face a point in world space.\n\t *\n\t * This method does not support objects having non-uniformly-scaled parent(s).\n\t *\n\t * @param {number|Vector3} x - The x coordinate in world space. Alternatively, a vector representing a position in world space\n\t * @param {number} [y] - The y coordinate in world space.\n\t * @param {number} [z] - The z coordinate in world space.\n\t */\n\tlookAt( x, y, z ) {\n\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\n\n\t\tif ( x.isVector3 ) {\n\n\t\t\t_target.copy( x );\n\n\t\t} else {\n\n\t\t\t_target.set( x, y, z );\n\n\t\t}\n\n\t\tconst parent = this.parent;\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_position$3.setFromMatrixPosition( this.matrixWorld );\n\n\t\tif ( this.isCamera || this.isLight ) {\n\n\t\t\t_m1$1.lookAt( _position$3, _target, this.up );\n\n\t\t} else {\n\n\t\t\t_m1$1.lookAt( _target, _position$3, this.up );\n\n\t\t}\n\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\n\n\t\tif ( parent ) {\n\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Adds the given 3D object as a child to this 3D object. An arbitrary number of\n\t * objects may be added. Any current parent on an object passed in here will be\n\t * removed, since an object can have at most one parent.\n\t *\n\t * @fires Object3D#added\n\t * @fires Object3D#childadded\n\t * @param {Object3D} object - The 3D object to add.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tadd( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.add( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object === this ) {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tif ( object && object.isObject3D ) {\n\n\t\t\tobject.removeFromParent();\n\t\t\tobject.parent = this;\n\t\t\tthis.children.push( object );\n\n\t\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t\t_childaddedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t\t_childaddedEvent.child = null;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes the given 3D object as child from this 3D object.\n\t * An arbitrary number of objects may be removed.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @param {Object3D} object - The 3D object to remove.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tremove( object ) {\n\n\t\tif ( arguments.length > 1 ) {\n\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\n\n\t\t\t\tthis.remove( arguments[ i ] );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst index = this.children.indexOf( object );\n\n\t\tif ( index !== -1 ) {\n\n\t\t\tobject.parent = null;\n\t\t\tthis.children.splice( index, 1 );\n\n\t\t\tobject.dispatchEvent( _removedEvent );\n\n\t\t\t_childremovedEvent.child = object;\n\t\t\tthis.dispatchEvent( _childremovedEvent );\n\t\t\t_childremovedEvent.child = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes this 3D object from its current parent.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tremoveFromParent() {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tparent.remove( this );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes all child objects.\n\t *\n\t * @fires Object3D#removed\n\t * @fires Object3D#childremoved\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tclear() {\n\n\t\treturn this.remove( ... this.children );\n\n\t}\n\n\t/**\n\t * Adds the given 3D object as a child of this 3D object, while maintaining the object's world\n\t * transform. This method does not support scene graphs having non-uniformly-scaled nodes(s).\n\t *\n\t * @fires Object3D#added\n\t * @fires Object3D#childadded\n\t * @param {Object3D} object - The 3D object to attach.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tattach( object ) {\n\n\t\t// adds object as a child of this, while maintaining the object's world transform\n\n\t\t// Note: This method does not support scene graphs having non-uniformly-scaled nodes(s)\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\t_m1$1.copy( this.matrixWorld ).invert();\n\n\t\tif ( object.parent !== null ) {\n\n\t\t\tobject.parent.updateWorldMatrix( true, false );\n\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\n\n\t\t}\n\n\t\tobject.applyMatrix4( _m1$1 );\n\n\t\tobject.removeFromParent();\n\t\tobject.parent = this;\n\t\tthis.children.push( object );\n\n\t\tobject.updateWorldMatrix( false, true );\n\n\t\tobject.dispatchEvent( _addedEvent );\n\n\t\t_childaddedEvent.child = object;\n\t\tthis.dispatchEvent( _childaddedEvent );\n\t\t_childaddedEvent.child = null;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching ID.\n\t *\n\t * @param {number} id - The id.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectById( id ) {\n\n\t\treturn this.getObjectByProperty( 'id', id );\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching name.\n\t *\n\t * @param {string} name - The name.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectByName( name ) {\n\n\t\treturn this.getObjectByProperty( 'name', name );\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns the first with a matching property value.\n\t *\n\t * @param {string} name - The name of the property.\n\t * @param {any} value - The value.\n\t * @return {Object3D|undefined} The found 3D object. Returns `undefined` if no 3D object has been found.\n\t */\n\tgetObjectByProperty( name, value ) {\n\n\t\tif ( this[ name ] === value ) return this;\n\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\n\n\t\t\tconst child = this.children[ i ];\n\t\t\tconst object = child.getObjectByProperty( name, value );\n\n\t\t\tif ( object !== undefined ) {\n\n\t\t\t\treturn object;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Searches through the 3D object and its children, starting with the 3D object\n\t * itself, and returns all 3D objects with a matching property value.\n\t *\n\t * @param {string} name - The name of the property.\n\t * @param {any} value - The value.\n\t * @param {Array<Object3D>} result - The method stores the result in this array.\n\t * @return {Array<Object3D>} The found 3D objects.\n\t */\n\tgetObjectsByProperty( name, value, result = [] ) {\n\n\t\tif ( this[ name ] === value ) result.push( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].getObjectsByProperty( name, value, result );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the position of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's position in world space.\n\t */\n\tgetWorldPosition( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\n\n\t}\n\n\t/**\n\t * Returns a Quaternion representing the position of the 3D object in world space.\n\t *\n\t * @param {Quaternion} target - The target Quaternion the result is stored to.\n\t * @return {Quaternion} The 3D object's rotation in world space.\n\t */\n\tgetWorldQuaternion( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, target, _scale$2 );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the scale of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's scale in world space.\n\t */\n\tgetWorldScale( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$2, target );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the (\"look\") direction of the 3D object in world space.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's direction in world space.\n\t */\n\tgetWorldDirection( target ) {\n\n\t\tthis.updateWorldMatrix( true, false );\n\n\t\tconst e = this.matrixWorld.elements;\n\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\n\n\t}\n\n\t/**\n\t * Abstract method to get intersections between a casted ray and this\n\t * 3D object. Renderable 3D objects such as {@link Mesh}, {@link Line} or {@link Points}\n\t * implement this method in order to use raycasting.\n\t *\n\t * @abstract\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array<Object>} intersects - An array holding the result of the method.\n\t */\n\traycast( /* raycaster, intersects */ ) {}\n\n\t/**\n\t * Executes the callback on this 3D object and all descendants.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverse( callback ) {\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverse( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Like {@link Object3D#traverse}, but the callback will only be executed for visible 3D objects.\n\t * Descendants of invisible 3D objects are not traversed.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverseVisible( callback ) {\n\n\t\tif ( this.visible === false ) return;\n\n\t\tcallback( this );\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tchildren[ i ].traverseVisible( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Like {@link Object3D#traverse}, but the callback will only be executed for all ancestors.\n\t *\n\t * Note: Modifying the scene graph inside the callback is discouraged.\n\t *\n\t * @param {Function} callback - A callback function that allows to process the current 3D object.\n\t */\n\ttraverseAncestors( callback ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( parent !== null ) {\n\n\t\t\tcallback( parent );\n\n\t\t\tparent.traverseAncestors( callback );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the transformation matrix in local space by computing it from the current\n\t * position, rotation and scale values.\n\t */\n\tupdateMatrix() {\n\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\n\n\t\tthis.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t/**\n\t * Updates the transformation matrix in world space of this 3D objects and its descendants.\n\t *\n\t * To ensure correct results, this method also recomputes the 3D object's transformation matrix in\n\t * local space. The computation of the local and world matrix can be controlled with the\n\t * {@link Object3D#matrixAutoUpdate} and {@link Object3D#matrixWorldAutoUpdate} flags which are both\n\t * `true` by default.  Set these flags to `false` if you need more control over the update matrix process.\n\t *\n\t * @param {boolean} [force=false] - When set to `true`, a recomputation of world matrices is forced even\n\t * when {@link Object3D#matrixWorldAutoUpdate} is set to `false`.\n\t */\n\tupdateMatrixWorld( force ) {\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\n\n\t\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\t\tif ( this.parent === null ) {\n\n\t\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.matrixWorldNeedsUpdate = false;\n\n\t\t\tforce = true;\n\n\t\t}\n\n\t\t// make sure descendants are updated if required\n\n\t\tconst children = this.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tconst child = children[ i ];\n\n\t\t\tchild.updateMatrixWorld( force );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * An alternative version of {@link Object3D#updateMatrixWorld} with more control over the\n\t * update of ancestor and descendant nodes.\n\t *\n\t * @param {boolean} [updateParents=false] Whether ancestor nodes should be updated or not.\n\t * @param {boolean} [updateChildren=false] Whether descendant nodes should be updated or not.\n\t */\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tconst parent = this.parent;\n\n\t\tif ( updateParents === true && parent !== null ) {\n\n\t\t\tparent.updateWorldMatrix( true, false );\n\n\t\t}\n\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\n\n\t\tif ( this.matrixWorldAutoUpdate === true ) {\n\n\t\t\tif ( this.parent === null ) {\n\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// make sure descendants are updated\n\n\t\tif ( updateChildren === true ) {\n\n\t\t\tconst children = this.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tconst child = children[ i ];\n\n\t\t\t\tchild.updateWorldMatrix( false, true );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the 3D object into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized 3D object.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\t// meta is a string when called from JSON.stringify\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tconst output = {};\n\n\t\t// meta is a hash used to collect geometries, materials.\n\t\t// not providing it implies that this is the root object\n\t\t// being serialized.\n\t\tif ( isRootObject ) {\n\n\t\t\t// initialize meta obj\n\t\t\tmeta = {\n\t\t\t\tgeometries: {},\n\t\t\t\tmaterials: {},\n\t\t\t\ttextures: {},\n\t\t\t\timages: {},\n\t\t\t\tshapes: {},\n\t\t\t\tskeletons: {},\n\t\t\t\tanimations: {},\n\t\t\t\tnodes: {}\n\t\t\t};\n\n\t\t\toutput.metadata = {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Object',\n\t\t\t\tgenerator: 'Object3D.toJSON'\n\t\t\t};\n\n\t\t}\n\n\t\t// standard Object3D serialization\n\n\t\tconst object = {};\n\n\t\tobject.uuid = this.uuid;\n\t\tobject.type = this.type;\n\n\t\tif ( this.name !== '' ) object.name = this.name;\n\t\tif ( this.castShadow === true ) object.castShadow = true;\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\n\t\tif ( this.visible === false ) object.visible = false;\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\n\t\tif ( Object.keys( this.userData ).length > 0 ) object.userData = this.userData;\n\n\t\tobject.layers = this.layers.mask;\n\t\tobject.matrix = this.matrix.toArray();\n\t\tobject.up = this.up.toArray();\n\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\n\n\t\t// object specific properties\n\n\t\tif ( this.isInstancedMesh ) {\n\n\t\t\tobject.type = 'InstancedMesh';\n\t\t\tobject.count = this.count;\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\n\t\t\tif ( this.instanceColor !== null ) object.instanceColor = this.instanceColor.toJSON();\n\n\t\t}\n\n\t\tif ( this.isBatchedMesh ) {\n\n\t\t\tobject.type = 'BatchedMesh';\n\t\t\tobject.perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\t\tobject.sortObjects = this.sortObjects;\n\n\t\t\tobject.drawRanges = this._drawRanges;\n\t\t\tobject.reservedRanges = this._reservedRanges;\n\n\t\t\tobject.visibility = this._visibility;\n\t\t\tobject.active = this._active;\n\t\t\tobject.bounds = this._bounds.map( bound => ( {\n\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\tboxMin: bound.box.min.toArray(),\n\t\t\t\tboxMax: bound.box.max.toArray(),\n\n\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\tsphereRadius: bound.sphere.radius,\n\t\t\t\tsphereCenter: bound.sphere.center.toArray()\n\t\t\t} ) );\n\n\t\t\tobject.maxInstanceCount = this._maxInstanceCount;\n\t\t\tobject.maxVertexCount = this._maxVertexCount;\n\t\t\tobject.maxIndexCount = this._maxIndexCount;\n\n\t\t\tobject.geometryInitialized = this._geometryInitialized;\n\t\t\tobject.geometryCount = this._geometryCount;\n\n\t\t\tobject.matricesTexture = this._matricesTexture.toJSON( meta );\n\n\t\t\tif ( this._colorsTexture !== null ) object.colorsTexture = this._colorsTexture.toJSON( meta );\n\n\t\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\t\tobject.boundingSphere = {\n\t\t\t\t\tcenter: object.boundingSphere.center.toArray(),\n\t\t\t\t\tradius: object.boundingSphere.radius\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t\tif ( this.boundingBox !== null ) {\n\n\t\t\t\tobject.boundingBox = {\n\t\t\t\t\tmin: object.boundingBox.min.toArray(),\n\t\t\t\t\tmax: object.boundingBox.max.toArray()\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tfunction serialize( library, element ) {\n\n\t\t\tif ( library[ element.uuid ] === undefined ) {\n\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\n\n\t\t\t}\n\n\t\t\treturn element.uuid;\n\n\t\t}\n\n\t\tif ( this.isScene ) {\n\n\t\t\tif ( this.background ) {\n\n\t\t\t\tif ( this.background.isColor ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON();\n\n\t\t\t\t} else if ( this.background.isTexture ) {\n\n\t\t\t\t\tobject.background = this.background.toJSON( meta ).uuid;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true ) {\n\n\t\t\t\tobject.environment = this.environment.toJSON( meta ).uuid;\n\n\t\t\t}\n\n\t\t} else if ( this.isMesh || this.isLine || this.isPoints ) {\n\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\n\n\t\t\tconst parameters = this.geometry.parameters;\n\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\n\n\t\t\t\tconst shapes = parameters.shapes;\n\n\t\t\t\tif ( Array.isArray( shapes ) ) {\n\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst shape = shapes[ i ];\n\n\t\t\t\t\t\tserialize( meta.shapes, shape );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tserialize( meta.shapes, shapes );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.isSkinnedMesh ) {\n\n\t\t\tobject.bindMode = this.bindMode;\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\n\n\t\t\tif ( this.skeleton !== undefined ) {\n\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\n\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.material !== undefined ) {\n\n\t\t\tif ( Array.isArray( this.material ) ) {\n\n\t\t\t\tconst uuids = [];\n\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\n\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\n\n\t\t\t\t}\n\n\t\t\t\tobject.material = uuids;\n\n\t\t\t} else {\n\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.children.length > 0 ) {\n\n\t\t\tobject.children = [];\n\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\n\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.animations.length > 0 ) {\n\n\t\t\tobject.animations = [];\n\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\n\n\t\t\t\tconst animation = this.animations[ i ];\n\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst geometries = extractFromCache( meta.geometries );\n\t\t\tconst materials = extractFromCache( meta.materials );\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\t\t\tconst shapes = extractFromCache( meta.shapes );\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\n\t\t\tconst animations = extractFromCache( meta.animations );\n\t\t\tconst nodes = extractFromCache( meta.nodes );\n\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\n\t\t\tif ( images.length > 0 ) output.images = images;\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\n\t\t\tif ( nodes.length > 0 ) output.nodes = nodes;\n\n\t\t}\n\n\t\toutput.object = object;\n\n\t\treturn output;\n\n\t\t// extract data from the cache hash\n\t\t// remove metadata on each item\n\t\t// and return as array\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new 3D object with copied values from this instance.\n\t *\n\t * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are also cloned.\n\t * @return {Object3D} A clone of this instance.\n\t */\n\tclone( recursive ) {\n\n\t\treturn new this.constructor().copy( this, recursive );\n\n\t}\n\n\t/**\n\t * Copies the values of the given 3D object to this instance.\n\t *\n\t * @param {Object3D} source - The 3D object to copy.\n\t * @param {boolean} [recursive=true] - When set to `true`, descendants of the 3D object are cloned.\n\t * @return {Object3D} A reference to this instance.\n\t */\n\tcopy( source, recursive = true ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.up.copy( source.up );\n\n\t\tthis.position.copy( source.position );\n\t\tthis.rotation.order = source.rotation.order;\n\t\tthis.quaternion.copy( source.quaternion );\n\t\tthis.scale.copy( source.scale );\n\n\t\tthis.matrix.copy( source.matrix );\n\t\tthis.matrixWorld.copy( source.matrixWorld );\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\tthis.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n\n\t\tthis.layers.mask = source.layers.mask;\n\t\tthis.visible = source.visible;\n\n\t\tthis.castShadow = source.castShadow;\n\t\tthis.receiveShadow = source.receiveShadow;\n\n\t\tthis.frustumCulled = source.frustumCulled;\n\t\tthis.renderOrder = source.renderOrder;\n\n\t\tthis.animations = source.animations.slice();\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\tif ( recursive === true ) {\n\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\n\n\t\t\t\tconst child = source.children[ i ];\n\t\t\t\tthis.add( child.clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * The default up direction for objects, also used as the default\n * position for {@link DirectionalLight} and {@link HemisphereLight}.\n *\n * @static\n * @type {Vector3}\n * @default (0,1,0)\n */\nObject3D.DEFAULT_UP = /*@__PURE__*/ new Vector3( 0, 1, 0 );\n\n/**\n * The default setting for {@link Object3D#matrixAutoUpdate} for\n * newly created 3D objects.\n *\n * @static\n * @type {boolean}\n * @default true\n */\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\n\n/**\n * The default setting for {@link Object3D#matrixWorldAutoUpdate} for\n * newly created 3D objects.\n *\n * @static\n * @type {boolean}\n * @default true\n */\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\n\nconst _v0$1 = /*@__PURE__*/ new Vector3();\nconst _v1$3 = /*@__PURE__*/ new Vector3();\nconst _v2$2 = /*@__PURE__*/ new Vector3();\nconst _v3$2 = /*@__PURE__*/ new Vector3();\n\nconst _vab = /*@__PURE__*/ new Vector3();\nconst _vac = /*@__PURE__*/ new Vector3();\nconst _vbc = /*@__PURE__*/ new Vector3();\nconst _vap = /*@__PURE__*/ new Vector3();\nconst _vbp = /*@__PURE__*/ new Vector3();\nconst _vcp = /*@__PURE__*/ new Vector3();\n\nconst _v40 = /*@__PURE__*/ new Vector4();\nconst _v41 = /*@__PURE__*/ new Vector4();\nconst _v42 = /*@__PURE__*/ new Vector4();\n\n/**\n * A geometric triangle as defined by three vectors representing its three corners.\n */\nclass Triangle {\n\n\t/**\n\t * Constructs a new triangle.\n\t *\n\t * @param {Vector3} [a=(0,0,0)] - The first corner of the triangle.\n\t * @param {Vector3} [b=(0,0,0)] - The second corner of the triangle.\n\t * @param {Vector3} [c=(0,0,0)] - The third corner of the triangle.\n\t */\n\tconstructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {\n\n\t\t/**\n\t\t * The first corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.a = a;\n\n\t\t/**\n\t\t * The second corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.b = b;\n\n\t\t/**\n\t\t * The third corner of the triangle.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.c = c;\n\n\t}\n\n\t/**\n\t * Computes the normal vector of a triangle.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's normal.\n\t */\n\tstatic getNormal( a, b, c, target ) {\n\n\t\ttarget.subVectors( c, b );\n\t\t_v0$1.subVectors( a, b );\n\t\ttarget.cross( _v0$1 );\n\n\t\tconst targetLengthSq = target.lengthSq();\n\t\tif ( targetLengthSq > 0 ) {\n\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\n\n\t\t}\n\n\t\treturn target.set( 0, 0, 0 );\n\n\t}\n\n\t/**\n\t * Computes a barycentric coordinates from the given vector.\n\t * Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The barycentric coordinates for the given point\n\t */\n\tstatic getBarycoord( point, a, b, c, target ) {\n\n\t\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n\n\t\t_v0$1.subVectors( c, a );\n\t\t_v1$3.subVectors( b, a );\n\t\t_v2$2.subVectors( point, a );\n\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\n\t\tconst dot02 = _v0$1.dot( _v2$2 );\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\n\t\tconst dot12 = _v1$3.dot( _v2$2 );\n\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\n\n\t\t// collinear or singular triangle\n\t\tif ( denom === 0 ) {\n\n\t\t\ttarget.set( 0, 0, 0 );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst invDenom = 1 / denom;\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\n\n\t\t// barycentric coordinates must always sum to 1\n\t\treturn target.set( 1 - u - v, v, u );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle.\n\t *\n\t * @param {Vector3} point - The point in 3D space to test.\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @return {boolean} Whether the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle or not.\n\t */\n\tstatic containsPoint( point, a, b, c ) {\n\n\t\t// if the triangle is degenerate then we can't contain a point\n\t\tif ( this.getBarycoord( point, a, b, c, _v3$2 ) === null ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn ( _v3$2.x >= 0 ) && ( _v3$2.y >= 0 ) && ( ( _v3$2.x + _v3$2.y ) <= 1 );\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given point on the\n\t * triangle. Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - Position of interpolated point.\n\t * @param {Vector3} p1 - The first corner of the triangle.\n\t * @param {Vector3} p2 - The second corner of the triangle.\n\t * @param {Vector3} p3 - The third corner of the triangle.\n\t * @param {Vector3} v1 - Value to interpolate of first vertex.\n\t * @param {Vector3} v2 - Value to interpolate of second vertex.\n\t * @param {Vector3} v3 - Value to interpolate of third vertex.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The interpolated value.\n\t */\n\tstatic getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {\n\n\t\tif ( this.getBarycoord( point, p1, p2, p3, _v3$2 ) === null ) {\n\n\t\t\ttarget.x = 0;\n\t\t\ttarget.y = 0;\n\t\t\tif ( 'z' in target ) target.z = 0;\n\t\t\tif ( 'w' in target ) target.w = 0;\n\t\t\treturn null;\n\n\t\t}\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( v1, _v3$2.x );\n\t\ttarget.addScaledVector( v2, _v3$2.y );\n\t\ttarget.addScaledVector( v3, _v3$2.z );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given attribute and indices.\n\t *\n\t * @param {BufferAttribute} attr - The attribute to interpolate.\n\t * @param {number} i1 - Index of first vertex.\n\t * @param {number} i2 - Index of second vertex.\n\t * @param {number} i3 - Index of third vertex.\n\t * @param {Vector3} barycoord - The barycoordinate value to use to interpolate.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The interpolated attribute value.\n\t */\n\tstatic getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {\n\n\t\t_v40.setScalar( 0 );\n\t\t_v41.setScalar( 0 );\n\t\t_v42.setScalar( 0 );\n\n\t\t_v40.fromBufferAttribute( attr, i1 );\n\t\t_v41.fromBufferAttribute( attr, i2 );\n\t\t_v42.fromBufferAttribute( attr, i3 );\n\n\t\ttarget.setScalar( 0 );\n\t\ttarget.addScaledVector( _v40, barycoord.x );\n\t\ttarget.addScaledVector( _v41, barycoord.y );\n\t\ttarget.addScaledVector( _v42, barycoord.z );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns `true` if the triangle is oriented towards the given direction.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @param {Vector3} direction - The (normalized) direction vector.\n\t * @return {boolean} Whether the triangle is oriented towards the given direction or not.\n\t */\n\tstatic isFrontFacing( a, b, c, direction ) {\n\n\t\t_v0$1.subVectors( c, b );\n\t\t_v1$3.subVectors( a, b );\n\n\t\t// strictly front facing\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given values.\n\t *\n\t * @param {Vector3} a - The first corner of the triangle.\n\t * @param {Vector3} b - The second corner of the triangle.\n\t * @param {Vector3} c - The third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tset( a, b, c ) {\n\n\t\tthis.a.copy( a );\n\t\tthis.b.copy( b );\n\t\tthis.c.copy( c );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given array values.\n\t *\n\t * @param {Array<Vector3>} points - An array with 3D points.\n\t * @param {number} i0 - The array index representing the first corner of the triangle.\n\t * @param {number} i1 - The array index representing the second corner of the triangle.\n\t * @param {number} i2 - The array index representing the third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\n\n\t\tthis.a.copy( points[ i0 ] );\n\t\tthis.b.copy( points[ i1 ] );\n\t\tthis.c.copy( points[ i2 ] );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the triangle's vertices by copying the given attribute values.\n\t *\n\t * @param {BufferAttribute} attribute - A buffer attribute with 3D points data.\n\t * @param {number} i0 - The attribute index representing the first corner of the triangle.\n\t * @param {number} i1 - The attribute index representing the second corner of the triangle.\n\t * @param {number} i2 - The attribute index representing the third corner of the triangle.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tsetFromAttributeAndIndices( attribute, i0, i1, i2 ) {\n\n\t\tthis.a.fromBufferAttribute( attribute, i0 );\n\t\tthis.b.fromBufferAttribute( attribute, i1 );\n\t\tthis.c.fromBufferAttribute( attribute, i2 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new triangle with copied values from this instance.\n\t *\n\t * @return {Triangle} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given triangle to this instance.\n\t *\n\t * @param {Triangle} triangle - The triangle to copy.\n\t * @return {Triangle} A reference to this triangle.\n\t */\n\tcopy( triangle ) {\n\n\t\tthis.a.copy( triangle.a );\n\t\tthis.b.copy( triangle.b );\n\t\tthis.c.copy( triangle.c );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the area of the triangle.\n\t *\n\t * @return {number} The triangle's area.\n\t */\n\tgetArea() {\n\n\t\t_v0$1.subVectors( this.c, this.b );\n\t\t_v1$3.subVectors( this.a, this.b );\n\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\n\n\t}\n\n\t/**\n\t * Computes the midpoint of the triangle.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's midpoint.\n\t */\n\tgetMidpoint( target ) {\n\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\n\n\t}\n\n\t/**\n\t * Computes the normal of the triangle.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The triangle's normal.\n\t */\n\tgetNormal( target ) {\n\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\n\n\t}\n\n\t/**\n\t * Computes a plane the triangle lies within.\n\t *\n\t * @param {Plane} target - The target vector that is used to store the method's result.\n\t * @return {Plane} The plane the triangle lies within.\n\t */\n\tgetPlane( target ) {\n\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\n\n\t}\n\n\t/**\n\t * Computes a barycentric coordinates from the given vector.\n\t * Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - A point in 3D space.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The barycentric coordinates for the given point\n\t */\n\tgetBarycoord( point, target ) {\n\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\n\n\t}\n\n\t/**\n\t * Computes the value barycentrically interpolated for the given point on the\n\t * triangle. Returns `null` if the triangle is degenerate.\n\t *\n\t * @param {Vector3} point - Position of interpolated point.\n\t * @param {Vector3} v1 - Value to interpolate of first vertex.\n\t * @param {Vector3} v2 - Value to interpolate of second vertex.\n\t * @param {Vector3} v3 - Value to interpolate of third vertex.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The interpolated value.\n\t */\n\tgetInterpolation( point, v1, v2, v3, target ) {\n\n\t\treturn Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle.\n\t *\n\t * @param {Vector3} point - The point in 3D space to test.\n\t * @return {boolean} Whether the given point, when projected onto the plane of the\n\t * triangle, lies within the triangle or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\n\n\t}\n\n\t/**\n\t * Returns `true` if the triangle is oriented towards the given direction.\n\t *\n\t * @param {Vector3} direction - The (normalized) direction vector.\n\t * @return {boolean} Whether the triangle is oriented towards the given direction or not.\n\t */\n\tisFrontFacing( direction ) {\n\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\n\n\t}\n\n\t/**\n\t * Returns `true` if this triangle intersects with the given box.\n\t *\n\t * @param {Box3} box - The box to intersect.\n\t * @return {boolean} Whether this triangle intersects with the given box or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsTriangle( this );\n\n\t}\n\n\t/**\n\t * Returns the closest point on the triangle to the given point.\n\t *\n\t * @param {Vector3} p - The point to compute the closest point for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on the triangle.\n\t */\n\tclosestPointToPoint( p, target ) {\n\n\t\tconst a = this.a, b = this.b, c = this.c;\n\t\tlet v, w;\n\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\n\t\t// the point lies in with the minimum amount of redundant computation.\n\n\t\t_vab.subVectors( b, a );\n\t\t_vac.subVectors( c, a );\n\t\t_vap.subVectors( p, a );\n\t\tconst d1 = _vab.dot( _vap );\n\t\tconst d2 = _vac.dot( _vap );\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\n\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\n\t\t\treturn target.copy( a );\n\n\t\t}\n\n\t\t_vbp.subVectors( p, b );\n\t\tconst d3 = _vab.dot( _vbp );\n\t\tconst d4 = _vac.dot( _vbp );\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\n\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\n\t\t\treturn target.copy( b );\n\n\t\t}\n\n\t\tconst vc = d1 * d4 - d3 * d2;\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\n\n\t\t\tv = d1 / ( d1 - d3 );\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\n\n\t\t}\n\n\t\t_vcp.subVectors( p, c );\n\t\tconst d5 = _vab.dot( _vcp );\n\t\tconst d6 = _vac.dot( _vcp );\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\n\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\n\t\t\treturn target.copy( c );\n\n\t\t}\n\n\t\tconst vb = d5 * d2 - d1 * d6;\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\n\n\t\t\tw = d2 / ( d2 - d6 );\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\n\n\t\t}\n\n\t\tconst va = d3 * d6 - d5 * d4;\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\n\n\t\t\t_vbc.subVectors( c, b );\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\n\n\t\t}\n\n\t\t// face region\n\t\tconst denom = 1 / ( va + vb + vc );\n\t\t// u = va * denom\n\t\tv = vb * denom;\n\t\tw = vc * denom;\n\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\n\n\t}\n\n\t/**\n\t * Returns `true` if this triangle is equal with the given one.\n\t *\n\t * @param {Triangle} triangle - The triangle to test for equality.\n\t * @return {boolean} Whether this triangle is equal with the given one.\n\t */\n\tequals( triangle ) {\n\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\n\n\t}\n\n}\n\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\n\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\n\nfunction hue2rgb( p, q, t ) {\n\n\tif ( t < 0 ) t += 1;\n\tif ( t > 1 ) t -= 1;\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\n\tif ( t < 1 / 2 ) return q;\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\n\treturn p;\n\n}\n\n/**\n * A Color instance is represented by RGB components in the linear <i>working\n * color space</i>, which defaults to `LinearSRGBColorSpace`. Inputs\n * conventionally using `SRGBColorSpace` (such as hexadecimals and CSS\n * strings) are converted to the working color space automatically.\n *\n * ```js\n * // converted automatically from SRGBColorSpace to LinearSRGBColorSpace\n * const color = new THREE.Color().setHex( 0x112233 );\n * ```\n * Source color spaces may be specified explicitly, to ensure correct conversions.\n * ```js\n * // assumed already LinearSRGBColorSpace; no conversion\n * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5 );\n *\n * // converted explicitly from SRGBColorSpace to LinearSRGBColorSpace\n * const color = new THREE.Color().setRGB( 0.5, 0.5, 0.5, SRGBColorSpace );\n * ```\n * If THREE.ColorManagement is disabled, no conversions occur. For details,\n * see <i>Color management</i>. Iterating through a Color instance will yield\n * its components (r, g, b) in the corresponding order. A Color can be initialised\n * in any of the following ways:\n * ```js\n * //empty constructor - will default white\n * const color1 = new THREE.Color();\n *\n * //Hexadecimal color (recommended)\n * const color2 = new THREE.Color( 0xff0000 );\n *\n * //RGB string\n * const color3 = new THREE.Color(\"rgb(255, 0, 0)\");\n * const color4 = new THREE.Color(\"rgb(100%, 0%, 0%)\");\n *\n * //X11 color name - all 140 color names are supported.\n * //Note the lack of CamelCase in the name\n * const color5 = new THREE.Color( 'skyblue' );\n * //HSL string\n * const color6 = new THREE.Color(\"hsl(0, 100%, 50%)\");\n *\n * //Separate RGB values between 0 and 1\n * const color7 = new THREE.Color( 1, 0, 0 );\n * ```\n */\nclass Color {\n\n\t/**\n\t * Constructs a new color.\n\t *\n\t * Note that standard method of specifying color in three.js is with a hexadecimal triplet,\n\t * and that method is used throughout the rest of the documentation.\n\t *\n\t * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n\t * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n\t * @param {number} [g] - The green component.\n\t * @param {number} [b] - The blue component.\n\t */\n\tconstructor( r, g, b ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isColor = true;\n\n\t\t/**\n\t\t * The red component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.r = 1;\n\n\t\t/**\n\t\t * The green component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.g = 1;\n\n\t\t/**\n\t\t * The blue component.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.b = 1;\n\n\t\treturn this.set( r, g, b );\n\n\t}\n\n\t/**\n\t * Sets the colors's components from the given values.\n\t *\n\t * @param {(number|string|Color)} [r] - The red component of the color. If `g` and `b` are\n\t * not provided, it can be hexadecimal triplet, a CSS-style string or another `Color` instance.\n\t * @param {number} [g] - The green component.\n\t * @param {number} [b] - The blue component.\n\t * @return {Color} A reference to this color.\n\t */\n\tset( r, g, b ) {\n\n\t\tif ( g === undefined && b === undefined ) {\n\n\t\t\t// r is THREE.Color, hex or string\n\n\t\t\tconst value = r;\n\n\t\t\tif ( value && value.isColor ) {\n\n\t\t\t\tthis.copy( value );\n\n\t\t\t} else if ( typeof value === 'number' ) {\n\n\t\t\t\tthis.setHex( value );\n\n\t\t\t} else if ( typeof value === 'string' ) {\n\n\t\t\t\tthis.setStyle( value );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.setRGB( r, g, b );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the colors's components to the given scalar value.\n\t *\n\t * @param {number} scalar - The scalar value.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetScalar( scalar ) {\n\n\t\tthis.r = scalar;\n\t\tthis.g = scalar;\n\t\tthis.b = scalar;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a hexadecimal value.\n\t *\n\t * @param {number} hex - The hexadecimal value.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetHex( hex, colorSpace = SRGBColorSpace ) {\n\n\t\thex = Math.floor( hex );\n\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\n\t\tthis.b = ( hex & 255 ) / 255;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from RGB values.\n\t *\n\t * @param {number} r - Red channel value between `0.0` and `1.0`.\n\t * @param {number} g - Green channel value between `0.0` and `1.0`.\n\t * @param {number} b - Blue channel value between `0.0` and `1.0`.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tthis.r = r;\n\t\tthis.g = g;\n\t\tthis.b = b;\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from RGB values.\n\t *\n\t * @param {number} h - Hue value between `0.0` and `1.0`.\n\t * @param {number} s - Saturation value between `0.0` and `1.0`.\n\t * @param {number} l - Lightness value between `0.0` and `1.0`.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\t\th = euclideanModulo( h, 1 );\n\t\ts = clamp( s, 0, 1 );\n\t\tl = clamp( l, 0, 1 );\n\n\t\tif ( s === 0 ) {\n\n\t\t\tthis.r = this.g = this.b = l;\n\n\t\t} else {\n\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\n\t\t\tconst q = ( 2 * l ) - p;\n\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\n\t\t\tthis.g = hue2rgb( q, p, h );\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\n\n\t\t}\n\n\t\tColorManagement.toWorkingColorSpace( this, colorSpace );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,\n\t * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or\n\t * any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} -\n\t * all 140 color names are supported).\n\t *\n\t * @param {string} style - Color as a CSS-style string.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetStyle( style, colorSpace = SRGBColorSpace ) {\n\n\t\tfunction handleAlpha( string ) {\n\n\t\t\tif ( string === undefined ) return;\n\n\t\t\tif ( parseFloat( string ) < 1 ) {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\n\n\t\t\t}\n\n\t\t}\n\n\n\t\tlet m;\n\n\t\tif ( m = /^(\\w+)\\(([^\\)]*)\\)/.exec( style ) ) {\n\n\t\t\t// rgb / hsl\n\n\t\t\tlet color;\n\t\t\tconst name = m[ 1 ];\n\t\t\tconst components = m[ 2 ];\n\n\t\t\tswitch ( name ) {\n\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 1 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 2 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tMath.min( 255, parseInt( color[ 3 ], 10 ) ) / 255,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setRGB(\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 1 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 2 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tMath.min( 100, parseInt( color[ 3 ], 10 ) ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'hsl':\n\t\t\t\tcase 'hsla':\n\n\t\t\t\t\tif ( color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\n\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\n\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\n\n\t\t\t\t\t\treturn this.setHSL(\n\t\t\t\t\t\t\tparseFloat( color[ 1 ] ) / 360,\n\t\t\t\t\t\t\tparseFloat( color[ 2 ] ) / 100,\n\t\t\t\t\t\t\tparseFloat( color[ 3 ] ) / 100,\n\t\t\t\t\t\t\tcolorSpace\n\t\t\t\t\t\t);\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tconsole.warn( 'THREE.Color: Unknown color model ' + style );\n\n\t\t\t}\n\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\n\n\t\t\t// hex color\n\n\t\t\tconst hex = m[ 1 ];\n\t\t\tconst size = hex.length;\n\n\t\t\tif ( size === 3 ) {\n\n\t\t\t\t// #ff0\n\t\t\t\treturn this.setRGB(\n\t\t\t\t\tparseInt( hex.charAt( 0 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 1 ), 16 ) / 15,\n\t\t\t\t\tparseInt( hex.charAt( 2 ), 16 ) / 15,\n\t\t\t\t\tcolorSpace\n\t\t\t\t);\n\n\t\t\t} else if ( size === 6 ) {\n\n\t\t\t\t// #ff0000\n\t\t\t\treturn this.setHex( parseInt( hex, 16 ), colorSpace );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.warn( 'THREE.Color: Invalid hex color ' + style );\n\n\t\t\t}\n\n\t\t} else if ( style && style.length > 0 ) {\n\n\t\t\treturn this.setColorName( style, colorSpace );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets this color from a color name. Faster than {@link Color#setStyle} if\n\t * you don't need the other CSS-style formats.\n\t *\n\t * For convenience, the list of names is exposed in `Color.NAMES` as a hash.\n\t * ```js\n\t * Color.NAMES.aliceblue // returns 0xF0F8FF\n\t * ```\n\t *\n\t * @param {string} style - The color name.\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetColorName( style, colorSpace = SRGBColorSpace ) {\n\n\t\t// color keywords\n\t\tconst hex = _colorKeywords[ style.toLowerCase() ];\n\n\t\tif ( hex !== undefined ) {\n\n\t\t\t// red\n\t\t\tthis.setHex( hex, colorSpace );\n\n\t\t} else {\n\n\t\t\t// unknown color\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new color with copied values from this instance.\n\t *\n\t * @return {Color} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor( this.r, this.g, this.b );\n\n\t}\n\n\t/**\n\t * Copies the values of the given color to this instance.\n\t *\n\t * @param {Color} color - The color to copy.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopy( color ) {\n\n\t\tthis.r = color.r;\n\t\tthis.g = color.g;\n\t\tthis.b = color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given color into this color, and then converts this color from\n\t * `SRGBColorSpace` to `LinearSRGBColorSpace`.\n\t *\n\t * @param {Color} color - The color to copy/convert.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopySRGBToLinear( color ) {\n\n\t\tthis.r = SRGBToLinear( color.r );\n\t\tthis.g = SRGBToLinear( color.g );\n\t\tthis.b = SRGBToLinear( color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the given color into this color, and then converts this color from\n\t * `LinearSRGBColorSpace` to `SRGBColorSpace`.\n\t *\n\t * @param {Color} color - The color to copy/convert.\n\t * @return {Color} A reference to this color.\n\t */\n\tcopyLinearToSRGB( color ) {\n\n\t\tthis.r = LinearToSRGB( color.r );\n\t\tthis.g = LinearToSRGB( color.g );\n\t\tthis.b = LinearToSRGB( color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts this color from `SRGBColorSpace` to `LinearSRGBColorSpace`.\n\t *\n\t * @return {Color} A reference to this color.\n\t */\n\tconvertSRGBToLinear() {\n\n\t\tthis.copySRGBToLinear( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts this color from `LinearSRGBColorSpace` to `SRGBColorSpace`.\n\t *\n\t * @return {Color} A reference to this color.\n\t */\n\tconvertLinearToSRGB() {\n\n\t\tthis.copyLinearToSRGB( this );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the hexadecimal value of this color.\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {number} The hexadecimal value.\n\t */\n\tgetHex( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\treturn Math.round( clamp( _color.r * 255, 0, 255 ) ) * 65536 + Math.round( clamp( _color.g * 255, 0, 255 ) ) * 256 + Math.round( clamp( _color.b * 255, 0, 255 ) );\n\n\t}\n\n\t/**\n\t * Returns the hexadecimal value of this color as a string (for example, 'FFFFFF').\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {string} The hexadecimal value as a string.\n\t */\n\tgetHexString( colorSpace = SRGBColorSpace ) {\n\n\t\treturn ( '000000' + this.getHex( colorSpace ).toString( 16 ) ).slice( -6 );\n\n\t}\n\n\t/**\n\t * Converts the colors RGB values into the HSL format and stores them into the\n\t * given target object.\n\t *\n\t * @param {{h:0,s:0,l:0}} target - The target object that is used to store the method's result.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {{h:number,s:number,l:number}} The HSL representation of this color.\n\t */\n\tgetHSL( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\t// h,s,l ranges are in 0.0 - 1.0\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tconst max = Math.max( r, g, b );\n\t\tconst min = Math.min( r, g, b );\n\n\t\tlet hue, saturation;\n\t\tconst lightness = ( min + max ) / 2.0;\n\n\t\tif ( min === max ) {\n\n\t\t\thue = 0;\n\t\t\tsaturation = 0;\n\n\t\t} else {\n\n\t\t\tconst delta = max - min;\n\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\n\n\t\t\tswitch ( max ) {\n\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\n\n\t\t\t}\n\n\t\t\thue /= 6;\n\n\t\t}\n\n\t\ttarget.h = hue;\n\t\ttarget.s = saturation;\n\t\ttarget.l = lightness;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the RGB values of this color and stores them into the given target object.\n\t *\n\t * @param {Color} target - The target color that is used to store the method's result.\n\t * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.\n\t * @return {Color} The RGB representation of this color.\n\t */\n\tgetRGB( target, colorSpace = ColorManagement.workingColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\ttarget.r = _color.r;\n\t\ttarget.g = _color.g;\n\t\ttarget.b = _color.b;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the value of this color as a CSS style string. Example: `rgb(255,0,0)`.\n\t *\n\t * @param {string} [colorSpace=SRGBColorSpace] - The color space.\n\t * @return {string} The CSS representation of this color.\n\t */\n\tgetStyle( colorSpace = SRGBColorSpace ) {\n\n\t\tColorManagement.fromWorkingColorSpace( _color.copy( this ), colorSpace );\n\n\t\tconst r = _color.r, g = _color.g, b = _color.b;\n\n\t\tif ( colorSpace !== SRGBColorSpace ) {\n\n\t\t\t// Requires CSS Color Module Level 4 (https://www.w3.org/TR/css-color-4/).\n\t\t\treturn `color(${ colorSpace } ${ r.toFixed( 3 ) } ${ g.toFixed( 3 ) } ${ b.toFixed( 3 ) })`;\n\n\t\t}\n\n\t\treturn `rgb(${ Math.round( r * 255 ) },${ Math.round( g * 255 ) },${ Math.round( b * 255 ) })`;\n\n\t}\n\n\t/**\n\t * Adds the given HSL values to this color's values.\n\t * Internally, this converts the color's RGB values to HSL, adds HSL\n\t * and then converts the color back to RGB.\n\t *\n\t * @param {number} h - Hue value between `0.0` and `1.0`.\n\t * @param {number} s - Saturation value between `0.0` and `1.0`.\n\t * @param {number} l - Lightness value between `0.0` and `1.0`.\n\t * @return {Color} A reference to this color.\n\t */\n\toffsetHSL( h, s, l ) {\n\n\t\tthis.getHSL( _hslA );\n\n\t\treturn this.setHSL( _hslA.h + h, _hslA.s + s, _hslA.l + l );\n\n\t}\n\n\t/**\n\t * Adds the RGB values of the given color to the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to add.\n\t * @return {Color} A reference to this color.\n\t */\n\tadd( color ) {\n\n\t\tthis.r += color.r;\n\t\tthis.g += color.g;\n\t\tthis.b += color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the RGB values of the given colors and stores the result in this instance.\n\t *\n\t * @param {Color} color1 - The first color.\n\t * @param {Color} color2 - The second color.\n\t * @return {Color} A reference to this color.\n\t */\n\taddColors( color1, color2 ) {\n\n\t\tthis.r = color1.r + color2.r;\n\t\tthis.g = color1.g + color2.g;\n\t\tthis.b = color1.b + color2.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given scalar value to the RGB values of this color.\n\t *\n\t * @param {number} s - The scalar to add.\n\t * @return {Color} A reference to this color.\n\t */\n\taddScalar( s ) {\n\n\t\tthis.r += s;\n\t\tthis.g += s;\n\t\tthis.b += s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Subtracts the RGB values of the given color from the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to subtract.\n\t * @return {Color} A reference to this color.\n\t */\n\tsub( color ) {\n\n\t\tthis.r = Math.max( 0, this.r - color.r );\n\t\tthis.g = Math.max( 0, this.g - color.g );\n\t\tthis.b = Math.max( 0, this.b - color.b );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the RGB values of the given color with the RGB values of this color.\n\t *\n\t * @param {Color} color - The color to multiply.\n\t * @return {Color} A reference to this color.\n\t */\n\tmultiply( color ) {\n\n\t\tthis.r *= color.r;\n\t\tthis.g *= color.g;\n\t\tthis.b *= color.b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Multiplies the given scalar value with the RGB values of this color.\n\t *\n\t * @param {number} s - The scalar to multiply.\n\t * @return {Color} A reference to this color.\n\t */\n\tmultiplyScalar( s ) {\n\n\t\tthis.r *= s;\n\t\tthis.g *= s;\n\t\tthis.b *= s;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates this color's RGB values toward the RGB values of the\n\t * given color. The alpha argument can be thought of as the ratio between\n\t * the two colors, where `0.0` is this color and `1.0` is the first argument.\n\t *\n\t * @param {Color} color - The color to converge on.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerp( color, alpha ) {\n\n\t\tthis.r += ( color.r - this.r ) * alpha;\n\t\tthis.g += ( color.g - this.g ) * alpha;\n\t\tthis.b += ( color.b - this.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates between the given colors and stores the result in this instance.\n\t * The alpha argument can be thought of as the ratio between the two colors, where `0.0`\n\t * is the first and `1.0` is the second color.\n\t *\n\t * @param {Color} color1 - The first color.\n\t * @param {Color} color2 - The second color.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerpColors( color1, color2, alpha ) {\n\n\t\tthis.r = color1.r + ( color2.r - color1.r ) * alpha;\n\t\tthis.g = color1.g + ( color2.g - color1.g ) * alpha;\n\t\tthis.b = color1.b + ( color2.b - color1.b ) * alpha;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linearly interpolates this color's HSL values toward the HSL values of the\n\t * given color. It differs from {@link Color#lerp} by not interpolating straight\n\t * from one color to the other, but instead going through all the hues in between\n\t * those two colors. The alpha argument can be thought of as the ratio between\n\t * the two colors, where 0.0 is this color and 1.0 is the first argument.\n\t *\n\t * @param {Color} color - The color to converge on.\n\t * @param {number} alpha - The interpolation factor in the closed interval `[0,1]`.\n\t * @return {Color} A reference to this color.\n\t */\n\tlerpHSL( color, alpha ) {\n\n\t\tthis.getHSL( _hslA );\n\t\tcolor.getHSL( _hslB );\n\n\t\tconst h = lerp( _hslA.h, _hslB.h, alpha );\n\t\tconst s = lerp( _hslA.s, _hslB.s, alpha );\n\t\tconst l = lerp( _hslA.l, _hslB.l, alpha );\n\n\t\tthis.setHSL( h, s, l );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the color's RGB components from the given 3D vector.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Color} A reference to this color.\n\t */\n\tsetFromVector3( v ) {\n\n\t\tthis.r = v.x;\n\t\tthis.g = v.y;\n\t\tthis.b = v.z;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Transforms this color with the given 3x3 matrix.\n\t *\n\t * @param {Matrix3} m - The matrix.\n\t * @return {Color} A reference to this color.\n\t */\n\tapplyMatrix3( m ) {\n\n\t\tconst r = this.r, g = this.g, b = this.b;\n\t\tconst e = m.elements;\n\n\t\tthis.r = e[ 0 ] * r + e[ 3 ] * g + e[ 6 ] * b;\n\t\tthis.g = e[ 1 ] * r + e[ 4 ] * g + e[ 7 ] * b;\n\t\tthis.b = e[ 2 ] * r + e[ 5 ] * g + e[ 8 ] * b;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this color is equal with the given one.\n\t *\n\t * @param {Color} c - The color to test for equality.\n\t * @return {boolean} Whether this bounding color is equal with the given one.\n\t */\n\tequals( c ) {\n\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\n\n\t}\n\n\t/**\n\t * Sets this color's RGB components from the given array.\n\t *\n\t * @param {Array<number>} array - An array holding the RGB values.\n\t * @param {number} [offset=0] - The offset into the array.\n\t * @return {Color} A reference to this color.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tthis.r = array[ offset ];\n\t\tthis.g = array[ offset + 1 ];\n\t\tthis.b = array[ offset + 2 ];\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Writes the RGB components of this color to the given array. If no array is provided,\n\t * the method returns a new instance.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array holding the color components.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Array<number>} The color components.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tarray[ offset ] = this.r;\n\t\tarray[ offset + 1 ] = this.g;\n\t\tarray[ offset + 2 ] = this.b;\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Sets the components of this color from the given buffer attribute.\n\t *\n\t * @param {BufferAttribute} attribute - The buffer attribute holding color data.\n\t * @param {number} index - The index into the attribute.\n\t * @return {Color} A reference to this color.\n\t */\n\tfromBufferAttribute( attribute, index ) {\n\n\t\tthis.r = attribute.getX( index );\n\t\tthis.g = attribute.getY( index );\n\t\tthis.b = attribute.getZ( index );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This methods defines the serialization result of this class. Returns the color\n\t * as a hexadecimal value.\n\t *\n\t * @return {number} The hexadecimal value.\n\t */\n\ttoJSON() {\n\n\t\treturn this.getHex();\n\n\t}\n\n\t*[ Symbol.iterator ]() {\n\n\t\tyield this.r;\n\t\tyield this.g;\n\t\tyield this.b;\n\n\t}\n\n}\n\nconst _color = /*@__PURE__*/ new Color();\n\n/**\n * A dictionary with X11 color names.\n *\n * Note that multiple words such as Dark Orange become the string 'darkorange'.\n *\n * @static\n * @type {Object}\n */\nColor.NAMES = _colorKeywords;\n\nlet _materialId = 0;\n\n/**\n * Abstract base class for materials.\n *\n * Materials define the appearance of renderable 3D objects.\n *\n * @abstract\n * @augments EventDispatcher\n */\nclass Material extends EventDispatcher {\n\n\t/**\n\t * Constructs a new material.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMaterial = true;\n\n\t\t/**\n\t\t * The ID of the material.\n\t\t *\n\t\t * @name Material#id\n\t\t * @type {number}\n\t\t * @readonly\n\t\t */\n\t\tObject.defineProperty( this, 'id', { value: _materialId ++ } );\n\n\t\t/**\n\t\t * The UUID of the material.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * The name of the material.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Material';\n\n\t\t/**\n\t\t * Defines the blending type of the material.\n\t\t *\n\t\t * It must be set to `CustomBlending` if custom blending properties like\n\t\t * {@link Material#blendSrc}, {@link Material#blendDst} or {@link Material#blendEquation}\n\t\t * should have any effect.\n\t\t *\n\t\t * @type {(NoBlending|NormalBlending|AdditiveBlending|SubtractiveBlending|MultiplyBlending|CustomBlending)}\n\t\t * @default NormalBlending\n\t\t */\n\t\tthis.blending = NormalBlending;\n\n\t\t/**\n\t\t * Defines which side of faces will be rendered - front, back or both.\n\t\t *\n\t\t * @type {(FrontSide|BackSide|DoubleSide)}\n\t\t * @default FrontSide\n\t\t */\n\t\tthis.side = FrontSide;\n\n\t\t/**\n\t\t * If set to `true`, vertex colors should be used.\n\t\t *\n\t\t * The engine supports RGB and RGBA vertex colors depending on whether a three (RGB) or\n\t\t * four (RGBA) component color buffer attribute is used.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.vertexColors = false;\n\n\t\t/**\n\t\t * Defines how transparent the material is.\n\t\t * A value of `0.0` indicates fully transparent, `1.0` is fully opaque.\n\t\t *\n\t\t * If the {@link Material#transparent} is not set to `true`,\n\t\t * the material will remain fully opaque and this value will only affect its color.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.opacity = 1;\n\n\t\t/**\n\t\t * Defines whether this material is transparent. This has an effect on\n\t\t * rendering as transparent objects need special treatment and are rendered\n\t\t * after non-transparent objects.\n\t\t *\n\t\t * When set to true, the extent to which the material is transparent is\n\t\t * controlled by {@link Material#opacity}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.transparent = false;\n\n\t\t/**\n\t\t * Enables alpha hashed transparency, an alternative to {@link Material#transparent} or\n\t\t * {@link Material#alphaTest}. The material will not be rendered if opacity is lower than\n\t\t * a random threshold. Randomization introduces some grain or noise, but approximates alpha\n\t\t * blending without the associated problems of sorting. Using TAA can reduce the resulting noise.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.alphaHash = false;\n\n\t\t/**\n\t\t * Defines the blending source factor.\n\t\t *\n\t\t * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default SrcAlphaFactor\n\t\t */\n\t\tthis.blendSrc = SrcAlphaFactor;\n\n\t\t/**\n\t\t * Defines the blending destination factor.\n\t\t *\n\t\t * @type {(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default OneMinusSrcAlphaFactor\n\t\t */\n\t\tthis.blendDst = OneMinusSrcAlphaFactor;\n\n\t\t/**\n\t\t * Defines the blending equation.\n\t\t *\n\t\t * @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}\n\t\t * @default OneMinusSrcAlphaFactor\n\t\t */\n\t\tthis.blendEquation = AddEquation;\n\n\t\t/**\n\t\t * Defines the blending source alpha factor.\n\t\t *\n\t\t * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendSrcAlpha = null;\n\n\t\t/**\n\t\t * Defines the blending destination alpha factor.\n\t\t *\n\t\t * @type {?(ZeroFactor|OneFactor|SrcColorFactor|OneMinusSrcColorFactor|SrcAlphaFactor|OneMinusSrcAlphaFactor|DstAlphaFactor|OneMinusDstAlphaFactor|DstColorFactor|OneMinusDstColorFactor|SrcAlphaSaturateFactor|ConstantColorFactor|OneMinusConstantColorFactor|ConstantAlphaFactor|OneMinusConstantAlphaFactor)}\n\t\t * @default null\n\t\t */\n\t\tthis.blendDstAlpha = null;\n\n\t\t/**\n\t\t * Defines the blending equation of the alpha channel.\n\t\t *\n\t\t * @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}\n\t\t * @default OneMinusSrcAlphaFactor\n\t\t */\n\t\tthis.blendEquationAlpha = null;\n\n\t\t/**\n\t\t * Represents the RGB values of the constant blend color.\n\t\t *\n\t\t * This property has only an effect when using custom blending with `ConstantColor` or `OneMinusConstantColor`.\n\t\t *\n\t\t * @type {Color}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.blendColor = new Color( 0, 0, 0 );\n\n\t\t/**\n\t\t * Represents the alpha value of the constant blend color.\n\t\t *\n\t\t * This property has only an effect when using custom blending with `ConstantAlpha` or `OneMinusConstantAlpha`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.blendAlpha = 0;\n\n\t\t/**\n\t\t * Defines the depth function.\n\t\t *\n\t\t * @type {(NeverDepth|AlwaysDepth|LessDepth|LessEqualDepth|EqualDepth|GreaterEqualDepth|GreaterDepth|NotEqualDepth)}\n\t\t * @default LessEqualDepth\n\t\t */\n\t\tthis.depthFunc = LessEqualDepth;\n\n\t\t/**\n\t\t * Whether to have depth test enabled when rendering this material.\n\t\t * When the depth test is disabled, the depth write will also be implicitly disabled.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthTest = true;\n\n\t\t/**\n\t\t * Whether rendering this material has any effect on the depth buffer.\n\t\t *\n\t\t * When drawing 2D overlays it can be useful to disable the depth writing in\n\t\t * order to layer several things together without creating z-index artifacts.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.depthWrite = true;\n\n\t\t/**\n\t\t * The bit mask to use when writing to the stencil buffer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0xff\n\t\t */\n\t\tthis.stencilWriteMask = 0xff;\n\n\t\t/**\n\t\t * The stencil comparison function to use.\n\t\t *\n\t\t * @type {NeverStencilFunc|LessStencilFunc|EqualStencilFunc|LessEqualStencilFunc|GreaterStencilFunc|NotEqualStencilFunc|GreaterEqualStencilFunc|AlwaysStencilFunc}\n\t\t * @default AlwaysStencilFunc\n\t\t */\n\t\tthis.stencilFunc = AlwaysStencilFunc;\n\n\t\t/**\n\t\t * The value to use when performing stencil comparisons or stencil operations.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.stencilRef = 0;\n\n\t\t/**\n\t\t * The bit mask to use when comparing against the stencil buffer.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0xff\n\t\t */\n\t\tthis.stencilFuncMask = 0xff;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns `false`.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilFail = KeepStencilOp;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns\n\t\t * `true` but the depth test fails.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilZFail = KeepStencilOp;\n\n\t\t/**\n\t\t * Which stencil operation to perform when the comparison function returns\n\t\t * `true` and the depth test passes.\n\t\t *\n\t\t * @type {ZeroStencilOp|KeepStencilOp|ReplaceStencilOp|IncrementStencilOp|DecrementStencilOp|IncrementWrapStencilOp|DecrementWrapStencilOp|InvertStencilOp}\n\t\t * @default KeepStencilOp\n\t\t */\n\t\tthis.stencilZPass = KeepStencilOp;\n\n\t\t/**\n\t\t * Whether stencil operations are performed against the stencil buffer. In\n\t\t * order to perform writes or comparisons against the stencil buffer this\n\t\t * value must be `true`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.stencilWrite = false;\n\n\t\t/**\n\t\t * User-defined clipping planes specified as THREE.Plane objects in world\n\t\t * space. These planes apply to the objects this material is attached to.\n\t\t * Points in space whose signed distance to the plane is negative are clipped\n\t\t * (not rendered). This requires {@link WebGLRenderer#localClippingEnabled} to\n\t\t * be `true`.\n\t\t *\n\t\t * @type {?Array<Plane>}\n\t\t * @default null\n\t\t */\n\t\tthis.clippingPlanes = null;\n\n\t\t/**\n\t\t * Changes the behavior of clipping planes so that only their intersection is\n\t\t * clipped, rather than their union.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipIntersection = false;\n\n\t\t/**\n\t\t * Defines whether to clip shadows according to the clipping planes specified\n\t\t * on this material.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.clipShadows = false;\n\n\t\t/**\n\t\t * Defines which side of faces cast shadows. If `null`, the side casting shadows\n\t\t * is determined as follows:\n\t\t *\n\t\t * - When {@link Material#side} is set to `FrontSide`, the back side cast shadows.\n\t\t * - When {@link Material#side} is set to `BackSide`, the front side cast shadows.\n\t\t * - When {@link Material#side} is set to `DoubleSide`, both sides cast shadows.\n\t\t *\n\t\t * @type {?(FrontSide|BackSide|DoubleSide)}\n\t\t * @default null\n\t\t */\n\t\tthis.shadowSide = null;\n\n\t\t/**\n\t\t * Whether to render the material's color.\n\t\t *\n\t\t * This can be used in conjunction with {@link Object3D#renderOder} to create invisible\n\t\t * objects that occlude other objects.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.colorWrite = true;\n\n\t\t/**\n\t\t * Override the renderer's default precision for this material.\n\t\t *\n\t\t * @type {?('highp'|'mediump'|'lowp')}\n\t\t * @default null\n\t\t */\n\t\tthis.precision = null;\n\n\t\t/**\n\t\t * Whether to use polygon offset or not. When enabled, each fragment's depth value will\n\t\t * be offset after it is interpolated from the depth values of the appropriate vertices.\n\t\t * The offset is added before the depth test is performed and before the value is written\n\t\t * into the depth buffer.\n\t\t *\n\t\t * Can be useful for rendering hidden-line images, for applying decals to surfaces, and for\n\t\t * rendering solids with highlighted edges.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.polygonOffset = false;\n\n\t\t/**\n\t\t * Specifies a scale factor that is used to create a variable depth offset for each polygon.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.polygonOffsetFactor = 0;\n\n\t\t/**\n\t\t * Is multiplied by an implementation-specific value to create a constant depth offset.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.polygonOffsetUnits = 0;\n\n\t\t/**\n\t\t * Whether to apply dithering to the color to remove the appearance of banding.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.dithering = false;\n\n\t\t/**\n\t\t * Whether alpha to coverage should be enabled or not. Can only be used with MSAA-enabled contexts\n\t\t * (meaning when the renderer was created with *antialias* parameter set to `true`). Enabling this\n\t\t * will smooth aliasing on clip plane edges and alphaTest-clipped edges.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.alphaToCoverage = false;\n\n\t\t/**\n\t\t * Whether to premultiply the alpha (transparency) value.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.premultipliedAlpha = false;\n\n\t\t/**\n\t\t * Whether double-sided, transparent objects should be rendered with a single pass or not.\n\t\t *\n\t\t * The engine renders double-sided, transparent objects with two draw calls (back faces first,\n\t\t * then front faces) to mitigate transparency artifacts. There are scenarios however where this\n\t\t * approach produces no quality gains but still doubles draw calls e.g. when rendering flat\n\t\t * vegetation like grass sprites. In these cases, set the `forceSinglePass` flag to `true` to\n\t\t * disable the two pass rendering to avoid performance issues.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.forceSinglePass = false;\n\n\t\t/**\n\t\t * Defines whether 3D objects using this material are visible.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.visible = true;\n\n\t\t/**\n\t\t * Defines whether this material is tone mapped according to the renderer's tone mapping setting.\n\t\t *\n\t\t * It is ignored when rendering to a render target or using post processing or when using\n\t\t * `WebGPURenderer`. In all these cases, all materials are honored by tone mapping.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.toneMapped = true;\n\n\t\t/**\n\t\t * An object that can be used to store custom data about the Material. It\n\t\t * should not hold references to functions as these will not be cloned.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.userData = {};\n\n\t\t/**\n\t\t * This starts at `0` and counts how many times {@link Material#needsUpdate} is set to `true`.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 0\n\t\t */\n\t\tthis.version = 0;\n\n\t\tthis._alphaTest = 0;\n\n\t}\n\n\t/**\n\t * Sets the alpha value to be used when running an alpha test. The material\n\t * will not be rendered if the opacity is lower than this value.\n\t *\n\t * @type {number}\n\t * @readonly\n\t * @default 0\n\t */\n\tget alphaTest() {\n\n\t\treturn this._alphaTest;\n\n\t}\n\n\tset alphaTest( value ) {\n\n\t\tif ( this._alphaTest > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._alphaTest = value;\n\n\t}\n\n\t/**\n\t * An optional callback that is executed immediately before the material is used to render a 3D object.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}.\n\t *\n\t * @param {WebGLRenderer} renderer - The renderer.\n\t * @param {Scene} scene - The scene.\n\t * @param {Camera} camera - The camera that is used to render the scene.\n\t * @param {BufferGeometry} geometry - The 3D object's geometry.\n\t * @param {Object3D} object - The 3D object.\n\t * @param {Object} group - The geometry group data.\n\t */\n\tonBeforeRender( /* renderer, scene, camera, geometry, object, group */ ) {}\n\n\t/**\n\t * An optional callback that is executed immediately before the shader\n\t * program is compiled. This function is called with the shader source code\n\t * as a parameter. Useful for the modification of built-in materials.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}. The\n\t * recommended approach when customizing materials is to use `WebGPURenderer` with the new\n\t * Node Material system and [TSL]{@link https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language}.\n\t *\n\t * @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source.\n\t * @param {WebGLRenderer} renderer - A reference to the renderer.\n\t */\n\tonBeforeCompile( /* shaderobject, renderer */ ) {}\n\n\t/**\n\t * In case {@link Material#onBeforeCompile} is used, this callback can be used to identify\n\t * values of settings used in `onBeforeCompile()`, so three.js can reuse a cached\n\t * shader or recompile the shader for this material as needed.\n\t *\n\t * This method can only be used when rendering with {@link WebGLRenderer}.\n\t *\n\t * @return {string} The custom program cache key.\n\t */\n\tcustomProgramCacheKey() {\n\n\t\treturn this.onBeforeCompile.toString();\n\n\t}\n\n\tsetValues( values ) {\n\n\t\tif ( values === undefined ) return;\n\n\t\tfor ( const key in values ) {\n\n\t\t\tconst newValue = values[ key ];\n\n\t\t\tif ( newValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst currentValue = this[ key ];\n\n\t\t\tif ( currentValue === undefined ) {\n\n\t\t\t\tconsole.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( currentValue && currentValue.isColor ) {\n\n\t\t\t\tcurrentValue.set( newValue );\n\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\n\n\t\t\t\tcurrentValue.copy( newValue );\n\n\t\t\t} else {\n\n\t\t\t\tthis[ key ] = newValue;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Serializes the material into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized material.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON( meta ) {\n\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\n\n\t\tif ( isRootObject ) {\n\n\t\t\tmeta = {\n\t\t\t\ttextures: {},\n\t\t\t\timages: {}\n\t\t\t};\n\n\t\t}\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Material',\n\t\t\t\tgenerator: 'Material.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard Material serialization\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\n\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\n\n\t\tif ( this.sheen !== undefined ) data.sheen = this.sheen;\n\t\tif ( this.sheenColor && this.sheenColor.isColor ) data.sheenColor = this.sheenColor.getHex();\n\t\tif ( this.sheenRoughness !== undefined ) data.sheenRoughness = this.sheenRoughness;\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\n\t\tif ( this.emissiveIntensity !== undefined && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\n\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\n\t\tif ( this.specularIntensity !== undefined ) data.specularIntensity = this.specularIntensity;\n\t\tif ( this.specularColor && this.specularColor.isColor ) data.specularColor = this.specularColor.getHex();\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\n\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\n\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\n\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\n\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.dispersion !== undefined ) data.dispersion = this.dispersion;\n\n\t\tif ( this.iridescence !== undefined ) data.iridescence = this.iridescence;\n\t\tif ( this.iridescenceIOR !== undefined ) data.iridescenceIOR = this.iridescenceIOR;\n\t\tif ( this.iridescenceThicknessRange !== undefined ) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n\n\t\tif ( this.iridescenceMap && this.iridescenceMap.isTexture ) {\n\n\t\t\tdata.iridescenceMap = this.iridescenceMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture ) {\n\n\t\t\tdata.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.anisotropy !== undefined ) data.anisotropy = this.anisotropy;\n\t\tif ( this.anisotropyRotation !== undefined ) data.anisotropyRotation = this.anisotropyRotation;\n\n\t\tif ( this.anisotropyMap && this.anisotropyMap.isTexture ) {\n\n\t\t\tdata.anisotropyMap = this.anisotropyMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\n\n\t\tif ( this.lightMap && this.lightMap.isTexture ) {\n\n\t\t\tdata.lightMap = this.lightMap.toJSON( meta ).uuid;\n\t\t\tdata.lightMapIntensity = this.lightMapIntensity;\n\n\t\t}\n\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\n\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\n\n\t\t}\n\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\n\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\n\t\t\tdata.bumpScale = this.bumpScale;\n\n\t\t}\n\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\n\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\n\t\t\tdata.normalMapType = this.normalMapType;\n\t\t\tdata.normalScale = this.normalScale.toArray();\n\n\t\t}\n\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\n\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\n\t\t\tdata.displacementScale = this.displacementScale;\n\t\t\tdata.displacementBias = this.displacementBias;\n\n\t\t}\n\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\n\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\n\t\tif ( this.specularIntensityMap && this.specularIntensityMap.isTexture ) data.specularIntensityMap = this.specularIntensityMap.toJSON( meta ).uuid;\n\t\tif ( this.specularColorMap && this.specularColorMap.isTexture ) data.specularColorMap = this.specularColorMap.toJSON( meta ).uuid;\n\n\t\tif ( this.envMap && this.envMap.isTexture ) {\n\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\n\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\n\n\t\t}\n\n\t\tif ( this.envMapRotation !== undefined ) data.envMapRotation = this.envMapRotation.toArray();\n\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\n\t\tif ( this.reflectivity !== undefined ) data.reflectivity = this.reflectivity;\n\t\tif ( this.refractionRatio !== undefined ) data.refractionRatio = this.refractionRatio;\n\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\n\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\n\n\t\t}\n\n\t\tif ( this.transmission !== undefined ) data.transmission = this.transmission;\n\t\tif ( this.transmissionMap && this.transmissionMap.isTexture ) data.transmissionMap = this.transmissionMap.toJSON( meta ).uuid;\n\t\tif ( this.thickness !== undefined ) data.thickness = this.thickness;\n\t\tif ( this.thicknessMap && this.thicknessMap.isTexture ) data.thicknessMap = this.thicknessMap.toJSON( meta ).uuid;\n\t\tif ( this.attenuationDistance !== undefined && this.attenuationDistance !== Infinity ) data.attenuationDistance = this.attenuationDistance;\n\t\tif ( this.attenuationColor !== undefined ) data.attenuationColor = this.attenuationColor.getHex();\n\n\t\tif ( this.size !== undefined ) data.size = this.size;\n\t\tif ( this.shadowSide !== null ) data.shadowSide = this.shadowSide;\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\n\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\n\t\tif ( this.vertexColors === true ) data.vertexColors = true;\n\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\n\t\tif ( this.transparent === true ) data.transparent = true;\n\n\t\tif ( this.blendSrc !== SrcAlphaFactor ) data.blendSrc = this.blendSrc;\n\t\tif ( this.blendDst !== OneMinusSrcAlphaFactor ) data.blendDst = this.blendDst;\n\t\tif ( this.blendEquation !== AddEquation ) data.blendEquation = this.blendEquation;\n\t\tif ( this.blendSrcAlpha !== null ) data.blendSrcAlpha = this.blendSrcAlpha;\n\t\tif ( this.blendDstAlpha !== null ) data.blendDstAlpha = this.blendDstAlpha;\n\t\tif ( this.blendEquationAlpha !== null ) data.blendEquationAlpha = this.blendEquationAlpha;\n\t\tif ( this.blendColor && this.blendColor.isColor ) data.blendColor = this.blendColor.getHex();\n\t\tif ( this.blendAlpha !== 0 ) data.blendAlpha = this.blendAlpha;\n\n\t\tif ( this.depthFunc !== LessEqualDepth ) data.depthFunc = this.depthFunc;\n\t\tif ( this.depthTest === false ) data.depthTest = this.depthTest;\n\t\tif ( this.depthWrite === false ) data.depthWrite = this.depthWrite;\n\t\tif ( this.colorWrite === false ) data.colorWrite = this.colorWrite;\n\n\t\tif ( this.stencilWriteMask !== 0xff ) data.stencilWriteMask = this.stencilWriteMask;\n\t\tif ( this.stencilFunc !== AlwaysStencilFunc ) data.stencilFunc = this.stencilFunc;\n\t\tif ( this.stencilRef !== 0 ) data.stencilRef = this.stencilRef;\n\t\tif ( this.stencilFuncMask !== 0xff ) data.stencilFuncMask = this.stencilFuncMask;\n\t\tif ( this.stencilFail !== KeepStencilOp ) data.stencilFail = this.stencilFail;\n\t\tif ( this.stencilZFail !== KeepStencilOp ) data.stencilZFail = this.stencilZFail;\n\t\tif ( this.stencilZPass !== KeepStencilOp ) data.stencilZPass = this.stencilZPass;\n\t\tif ( this.stencilWrite === true ) data.stencilWrite = this.stencilWrite;\n\n\t\t// rotation (SpriteMaterial)\n\t\tif ( this.rotation !== undefined && this.rotation !== 0 ) data.rotation = this.rotation;\n\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\n\n\t\tif ( this.linewidth !== undefined && this.linewidth !== 1 ) data.linewidth = this.linewidth;\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\n\n\t\tif ( this.dithering === true ) data.dithering = true;\n\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\n\t\tif ( this.alphaHash === true ) data.alphaHash = true;\n\t\tif ( this.alphaToCoverage === true ) data.alphaToCoverage = true;\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;\n\t\tif ( this.forceSinglePass === true ) data.forceSinglePass = true;\n\n\t\tif ( this.wireframe === true ) data.wireframe = true;\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\n\n\t\tif ( this.flatShading === true ) data.flatShading = true;\n\n\t\tif ( this.visible === false ) data.visible = false;\n\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\n\n\t\tif ( this.fog === false ) data.fog = false;\n\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\t// TODO: Copied from Object3D.toJSON\n\n\t\tfunction extractFromCache( cache ) {\n\n\t\t\tconst values = [];\n\n\t\t\tfor ( const key in cache ) {\n\n\t\t\t\tconst data = cache[ key ];\n\t\t\t\tdelete data.metadata;\n\t\t\t\tvalues.push( data );\n\n\t\t\t}\n\n\t\t\treturn values;\n\n\t\t}\n\n\t\tif ( isRootObject ) {\n\n\t\t\tconst textures = extractFromCache( meta.textures );\n\t\t\tconst images = extractFromCache( meta.images );\n\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\n\t\t\tif ( images.length > 0 ) data.images = images;\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Returns a new material with copied values from this instance.\n\t *\n\t * @return {Material} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given material to this instance.\n\t *\n\t * @param {Material} source - The material to copy.\n\t * @return {Material} A reference to this instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\n\t\tthis.blending = source.blending;\n\t\tthis.side = source.side;\n\t\tthis.vertexColors = source.vertexColors;\n\n\t\tthis.opacity = source.opacity;\n\t\tthis.transparent = source.transparent;\n\n\t\tthis.blendSrc = source.blendSrc;\n\t\tthis.blendDst = source.blendDst;\n\t\tthis.blendEquation = source.blendEquation;\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\n\t\tthis.blendColor.copy( source.blendColor );\n\t\tthis.blendAlpha = source.blendAlpha;\n\n\t\tthis.depthFunc = source.depthFunc;\n\t\tthis.depthTest = source.depthTest;\n\t\tthis.depthWrite = source.depthWrite;\n\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\n\t\tthis.stencilFunc = source.stencilFunc;\n\t\tthis.stencilRef = source.stencilRef;\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\n\t\tthis.stencilFail = source.stencilFail;\n\t\tthis.stencilZFail = source.stencilZFail;\n\t\tthis.stencilZPass = source.stencilZPass;\n\t\tthis.stencilWrite = source.stencilWrite;\n\n\t\tconst srcPlanes = source.clippingPlanes;\n\t\tlet dstPlanes = null;\n\n\t\tif ( srcPlanes !== null ) {\n\n\t\t\tconst n = srcPlanes.length;\n\t\t\tdstPlanes = new Array( n );\n\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.clippingPlanes = dstPlanes;\n\t\tthis.clipIntersection = source.clipIntersection;\n\t\tthis.clipShadows = source.clipShadows;\n\n\t\tthis.shadowSide = source.shadowSide;\n\n\t\tthis.colorWrite = source.colorWrite;\n\n\t\tthis.precision = source.precision;\n\n\t\tthis.polygonOffset = source.polygonOffset;\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\n\n\t\tthis.dithering = source.dithering;\n\n\t\tthis.alphaTest = source.alphaTest;\n\t\tthis.alphaHash = source.alphaHash;\n\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\n\t\tthis.forceSinglePass = source.forceSinglePass;\n\n\t\tthis.visible = source.visible;\n\n\t\tthis.toneMapped = source.toneMapped;\n\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t *\n\t * @fires Material#dispose\n\t */\n\tdispose() {\n\n\t\t/**\n\t\t * Fires when the material has been disposed of.\n\t\t *\n\t\t * @event Material#dispose\n\t\t * @type {Object}\n\t\t */\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n\t/**\n\t * Setting this property to `true` indicates the engine the material\n\t * needs to be recompiled.\n\t *\n\t * @type {boolean}\n\t * @default false\n\t * @param {boolean} value\n\t */\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tonBuild( /* shaderobject, renderer */ ) {\n\n\t\tconsole.warn( 'Material: onBuild() has been removed.' ); // @deprecated, r166\n\n\t}\n\n}\n\nclass MeshBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshBasicMaterial = true;\n\n\t\tthis.type = 'MeshBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // emissive\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf\n\nconst _tables = /*@__PURE__*/ _generateTables();\n\nfunction _generateTables() {\n\n\t// float32 to float16 helpers\n\n\tconst buffer = new ArrayBuffer( 4 );\n\tconst floatView = new Float32Array( buffer );\n\tconst uint32View = new Uint32Array( buffer );\n\n\tconst baseTable = new Uint32Array( 512 );\n\tconst shiftTable = new Uint32Array( 512 );\n\n\tfor ( let i = 0; i < 256; ++ i ) {\n\n\t\tconst e = i - 127;\n\n\t\t// very small number (0, -0)\n\n\t\tif ( e < -27 ) {\n\n\t\t\tbaseTable[ i ] = 0x0000;\n\t\t\tbaseTable[ i | 0x100 ] = 0x8000;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// small number (denorm)\n\n\t\t} else if ( e < -14 ) {\n\n\t\t\tbaseTable[ i ] = 0x0400 >> ( - e - 14 );\n\t\t\tbaseTable[ i | 0x100 ] = ( 0x0400 >> ( - e - 14 ) ) | 0x8000;\n\t\t\tshiftTable[ i ] = - e - 1;\n\t\t\tshiftTable[ i | 0x100 ] = - e - 1;\n\n\t\t\t// normal number\n\n\t\t} else if ( e <= 15 ) {\n\n\t\t\tbaseTable[ i ] = ( e + 15 ) << 10;\n\t\t\tbaseTable[ i | 0x100 ] = ( ( e + 15 ) << 10 ) | 0x8000;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t\t// large number (Infinity, -Infinity)\n\n\t\t} else if ( e < 128 ) {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 24;\n\t\t\tshiftTable[ i | 0x100 ] = 24;\n\n\t\t\t// stay (NaN, Infinity, -Infinity)\n\n\t\t} else {\n\n\t\t\tbaseTable[ i ] = 0x7c00;\n\t\t\tbaseTable[ i | 0x100 ] = 0xfc00;\n\t\t\tshiftTable[ i ] = 13;\n\t\t\tshiftTable[ i | 0x100 ] = 13;\n\n\t\t}\n\n\t}\n\n\t// float16 to float32 helpers\n\n\tconst mantissaTable = new Uint32Array( 2048 );\n\tconst exponentTable = new Uint32Array( 64 );\n\tconst offsetTable = new Uint32Array( 64 );\n\n\tfor ( let i = 1; i < 1024; ++ i ) {\n\n\t\tlet m = i << 13; // zero pad mantissa bits\n\t\tlet e = 0; // zero exponent\n\n\t\t// normalized\n\t\twhile ( ( m & 0x00800000 ) === 0 ) {\n\n\t\t\tm <<= 1;\n\t\t\te -= 0x00800000; // decrement exponent\n\n\t\t}\n\n\t\tm &= -8388609; // clear leading 1 bit\n\t\te += 0x38800000; // adjust bias\n\n\t\tmantissaTable[ i ] = m | e;\n\n\t}\n\n\tfor ( let i = 1024; i < 2048; ++ i ) {\n\n\t\tmantissaTable[ i ] = 0x38000000 + ( ( i - 1024 ) << 13 );\n\n\t}\n\n\tfor ( let i = 1; i < 31; ++ i ) {\n\n\t\texponentTable[ i ] = i << 23;\n\n\t}\n\n\texponentTable[ 31 ] = 0x47800000;\n\texponentTable[ 32 ] = 0x80000000;\n\n\tfor ( let i = 33; i < 63; ++ i ) {\n\n\t\texponentTable[ i ] = 0x80000000 + ( ( i - 32 ) << 23 );\n\n\t}\n\n\texponentTable[ 63 ] = 0xc7800000;\n\n\tfor ( let i = 1; i < 64; ++ i ) {\n\n\t\tif ( i !== 32 ) {\n\n\t\t\toffsetTable[ i ] = 1024;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tfloatView: floatView,\n\t\tuint32View: uint32View,\n\t\tbaseTable: baseTable,\n\t\tshiftTable: shiftTable,\n\t\tmantissaTable: mantissaTable,\n\t\texponentTable: exponentTable,\n\t\toffsetTable: offsetTable\n\t};\n\n}\n\n/**\n * Returns a half precision floating point value (FP16) from the given single\n * precision floating point value (FP32).\n *\n * @param {number} val - A single precision floating point value.\n * @return {number} The FP16 value.\n */\nfunction toHalfFloat( val ) {\n\n\tif ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );\n\n\tval = clamp( val, -65504, 65504 );\n\n\t_tables.floatView[ 0 ] = val;\n\tconst f = _tables.uint32View[ 0 ];\n\tconst e = ( f >> 23 ) & 0x1ff;\n\treturn _tables.baseTable[ e ] + ( ( f & 0x007fffff ) >> _tables.shiftTable[ e ] );\n\n}\n\n/**\n * Returns a single precision floating point value (FP32) from the given half\n * precision floating point value (FP16).\n *\n * @param {number} val - A half precision floating point value.\n * @return {number} The FP32 value.\n */\nfunction fromHalfFloat( val ) {\n\n\tconst m = val >> 10;\n\t_tables.uint32View[ 0 ] = _tables.mantissaTable[ _tables.offsetTable[ m ] + ( val & 0x3ff ) ] + _tables.exponentTable[ m ];\n\treturn _tables.floatView[ 0 ];\n\n}\n\n/**\n * A class containing utility functions for data.\n *\n * @hideconstructor\n */\nclass DataUtils {\n\n\t/**\n\t * Returns a half precision floating point value (FP16) from the given single\n\t * precision floating point value (FP32).\n\t *\n\t * @param {number} val - A single precision floating point value.\n\t * @return {number} The FP16 value.\n\t */\n\tstatic toHalfFloat( val ) {\n\n\t\treturn toHalfFloat( val );\n\n\t}\n\n\t/**\n\t * Returns a single precision floating point value (FP32) from the given half\n\t * precision floating point value (FP16).\n\t *\n\t * @param {number} val - A half precision floating point value.\n\t * @return {number} The FP32 value.\n\t */\n\tstatic fromHalfFloat( val ) {\n\n\t\treturn fromHalfFloat( val );\n\n\t}\n\n}\n\nconst _vector$9 = /*@__PURE__*/ new Vector3();\nconst _vector2$1 = /*@__PURE__*/ new Vector2();\n\nlet _id$2 = 0;\n\nclass BufferAttribute {\n\n\tconstructor( array, itemSize, normalized = false ) {\n\n\t\tif ( Array.isArray( array ) ) {\n\n\t\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\n\n\t\t}\n\n\t\tthis.isBufferAttribute = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$2 ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.array = array;\n\t\tthis.itemSize = itemSize;\n\t\tthis.count = array !== undefined ? array.length / itemSize : 0;\n\t\tthis.normalized = normalized;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRanges = [];\n\t\tthis.gpuType = FloatType;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.itemSize = source.itemSize;\n\t\tthis.count = source.count;\n\t\tthis.normalized = source.normalized;\n\n\t\tthis.usage = source.usage;\n\t\tthis.gpuType = source.gpuType;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.itemSize;\n\t\tindex2 *= attribute.itemSize;\n\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcopyArray( array ) {\n\n\t\tthis.array.set( array );\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix3( m ) {\n\n\t\tif ( this.itemSize === 2 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\n\t\t\t\t_vector2$1.applyMatrix3( m );\n\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\n\n\t\t\t}\n\n\t\t} else if ( this.itemSize === 3 ) {\n\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t\t_vector$9.fromBufferAttribute( this, i );\n\t\t\t\t_vector$9.applyMatrix3( m );\n\n\t\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$9.fromBufferAttribute( this, i );\n\n\t\t\t_vector$9.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$9.x, _vector$9.y, _vector$9.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\t// Matching BufferAttribute constructor, do not normalize the array.\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.itemSize + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.array[ index * this.itemSize + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.array[ index * this.itemSize ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.array[ index * this.itemSize + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.array[ index * this.itemSize + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.array[ index * this.itemSize + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = x;\n\t\tthis.array[ index + 1 ] = y;\n\t\tthis.array[ index + 2 ] = z;\n\t\tthis.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\titemSize: this.itemSize,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tarray: Array.from( this.array ),\n\t\t\tnormalized: this.normalized\n\t\t};\n\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( this.usage !== StaticDrawUsage ) data.usage = this.usage;\n\n\t\treturn data;\n\n\t}\n\n}\n\n//\n\nclass Int8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint8ClampedArray( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Int32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Int32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Uint32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nclass Float16BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Uint16Array( array ), itemSize, normalized );\n\n\t\tthis.isFloat16BufferAttribute = true;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = fromHalfFloat( this.array[ index * this.itemSize ] );\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.array[ index * this.itemSize ] = toHalfFloat( x );\n\n\t\treturn this;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = fromHalfFloat( this.array[ index * this.itemSize + 1 ] );\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.array[ index * this.itemSize + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = fromHalfFloat( this.array[ index * this.itemSize + 2 ] );\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.array[ index * this.itemSize + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = fromHalfFloat( this.array[ index * this.itemSize + 3 ] );\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.array[ index * this.itemSize + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex *= this.itemSize;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.array[ index + 0 ] = toHalfFloat( x );\n\t\tthis.array[ index + 1 ] = toHalfFloat( y );\n\t\tthis.array[ index + 2 ] = toHalfFloat( z );\n\t\tthis.array[ index + 3 ] = toHalfFloat( w );\n\n\t\treturn this;\n\n\t}\n\n}\n\n\nclass Float32BufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized ) {\n\n\t\tsuper( new Float32Array( array ), itemSize, normalized );\n\n\t}\n\n}\n\nlet _id$1 = 0;\n\nconst _m1 = /*@__PURE__*/ new Matrix4();\nconst _obj = /*@__PURE__*/ new Object3D();\nconst _offset = /*@__PURE__*/ new Vector3();\nconst _box$2 = /*@__PURE__*/ new Box3();\nconst _boxMorphTargets = /*@__PURE__*/ new Box3();\nconst _vector$8 = /*@__PURE__*/ new Vector3();\n\nclass BufferGeometry extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isBufferGeometry = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id$1 ++ } );\n\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.name = '';\n\t\tthis.type = 'BufferGeometry';\n\n\t\tthis.index = null;\n\t\tthis.indirect = null;\n\t\tthis.attributes = {};\n\n\t\tthis.morphAttributes = {};\n\t\tthis.morphTargetsRelative = false;\n\n\t\tthis.groups = [];\n\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\tthis.drawRange = { start: 0, count: Infinity };\n\n\t\tthis.userData = {};\n\n\t}\n\n\tgetIndex() {\n\n\t\treturn this.index;\n\n\t}\n\n\tsetIndex( index ) {\n\n\t\tif ( Array.isArray( index ) ) {\n\n\t\t\tthis.index = new ( arrayNeedsUint32( index ) ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\n\n\t\t} else {\n\n\t\t\tthis.index = index;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tsetIndirect( indirect ) {\n\n\t\tthis.indirect = indirect;\n\n\t\treturn this;\n\n\t}\n\n\tgetIndirect() {\n\n\t\treturn this.indirect;\n\n\t}\n\n\tgetAttribute( name ) {\n\n\t\treturn this.attributes[ name ];\n\n\t}\n\n\tsetAttribute( name, attribute ) {\n\n\t\tthis.attributes[ name ] = attribute;\n\n\t\treturn this;\n\n\t}\n\n\tdeleteAttribute( name ) {\n\n\t\tdelete this.attributes[ name ];\n\n\t\treturn this;\n\n\t}\n\n\thasAttribute( name ) {\n\n\t\treturn this.attributes[ name ] !== undefined;\n\n\t}\n\n\taddGroup( start, count, materialIndex = 0 ) {\n\n\t\tthis.groups.push( {\n\n\t\t\tstart: start,\n\t\t\tcount: count,\n\t\t\tmaterialIndex: materialIndex\n\n\t\t} );\n\n\t}\n\n\tclearGroups() {\n\n\t\tthis.groups = [];\n\n\t}\n\n\tsetDrawRange( start, count ) {\n\n\t\tthis.drawRange.start = start;\n\t\tthis.drawRange.count = count;\n\n\t}\n\n\tapplyMatrix4( matrix ) {\n\n\t\tconst position = this.attributes.position;\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tposition.applyMatrix4( matrix );\n\n\t\t\tposition.needsUpdate = true;\n\n\t\t}\n\n\t\tconst normal = this.attributes.normal;\n\n\t\tif ( normal !== undefined ) {\n\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\n\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\n\n\t\t\tnormal.needsUpdate = true;\n\n\t\t}\n\n\t\tconst tangent = this.attributes.tangent;\n\n\t\tif ( tangent !== undefined ) {\n\n\t\t\ttangent.transformDirection( matrix );\n\n\t\t\ttangent.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tthis.computeBoundingBox();\n\n\t\t}\n\n\t\tif ( this.boundingSphere !== null ) {\n\n\t\t\tthis.computeBoundingSphere();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyQuaternion( q ) {\n\n\t\t_m1.makeRotationFromQuaternion( q );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateX( angle ) {\n\n\t\t// rotate geometry around world x-axis\n\n\t\t_m1.makeRotationX( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateY( angle ) {\n\n\t\t// rotate geometry around world y-axis\n\n\t\t_m1.makeRotationY( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\trotateZ( angle ) {\n\n\t\t// rotate geometry around world z-axis\n\n\t\t_m1.makeRotationZ( angle );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\ttranslate( x, y, z ) {\n\n\t\t// translate geometry\n\n\t\t_m1.makeTranslation( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tscale( x, y, z ) {\n\n\t\t// scale geometry\n\n\t\t_m1.makeScale( x, y, z );\n\n\t\tthis.applyMatrix4( _m1 );\n\n\t\treturn this;\n\n\t}\n\n\tlookAt( vector ) {\n\n\t\t_obj.lookAt( vector );\n\n\t\t_obj.updateMatrix();\n\n\t\tthis.applyMatrix4( _obj.matrix );\n\n\t\treturn this;\n\n\t}\n\n\tcenter() {\n\n\t\tthis.computeBoundingBox();\n\n\t\tthis.boundingBox.getCenter( _offset ).negate();\n\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\n\n\t\treturn this;\n\n\t}\n\n\tsetFromPoints( points ) {\n\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute === undefined ) {\n\n\t\t\tconst position = [];\n\n\t\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tposition.push( point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\n\n\t\t} else {\n\n\t\t\tconst l = Math.min( points.length, positionAttribute.count ); // make sure data do not exceed buffer size\n\n\t\t\tfor ( let i = 0; i < l; i ++ ) {\n\n\t\t\t\tconst point = points[ i ];\n\t\t\t\tpositionAttribute.setXYZ( i, point.x, point.y, point.z || 0 );\n\n\t\t\t}\n\n\t\t\tif ( points.length > positionAttribute.count ) {\n\n\t\t\t\tconsole.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );\n\n\t\t\t}\n\n\t\t\tpositionAttribute.needsUpdate = true;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );\n\n\t\t\tthis.boundingBox.set(\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\n\t\t\t);\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position !== undefined ) {\n\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.min, _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( this.boundingBox.max, _box$2.max );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthis.boundingBox.makeEmpty();\n\n\t\t}\n\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t}\n\n\t}\n\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst position = this.attributes.position;\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\n\n\t\tif ( position && position.isGLBufferAttribute ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );\n\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( position ) {\n\n\t\t\t// first, find the center of the bounding sphere\n\n\t\t\tconst center = this.boundingSphere.center;\n\n\t\t\t_box$2.setFromBufferAttribute( position );\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\n\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.min, _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t\t_vector$8.addVectors( _box$2.max, _boxMorphTargets.max );\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$8 );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_box$2.getCenter( center );\n\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\n\n\t\t\tlet maxRadiusSq = 0;\n\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\n\n\t\t\t\t_vector$8.fromBufferAttribute( position, i );\n\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t}\n\n\t\t\t// process morph attributes if present\n\n\t\t\tif ( morphAttributesPosition ) {\n\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\n\n\t\t\t\t\t\t_vector$8.fromBufferAttribute( morphAttribute, j );\n\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\n\t\t\t\t\t\t\t_vector$8.add( _offset );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$8 ) );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\n\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\n\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeTangents() {\n\n\t\tconst index = this.index;\n\t\tconst attributes = this.attributes;\n\n\t\t// based on http://www.terathon.com/code/tangent.html\n\t\t// (per vertex tangents)\n\n\t\tif ( index === null ||\n\t\t\t attributes.position === undefined ||\n\t\t\t attributes.normal === undefined ||\n\t\t\t attributes.uv === undefined ) {\n\n\t\t\tconsole.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst positionAttribute = attributes.position;\n\t\tconst normalAttribute = attributes.normal;\n\t\tconst uvAttribute = attributes.uv;\n\n\t\tif ( this.hasAttribute( 'tangent' ) === false ) {\n\n\t\t\tthis.setAttribute( 'tangent', new BufferAttribute( new Float32Array( 4 * positionAttribute.count ), 4 ) );\n\n\t\t}\n\n\t\tconst tangentAttribute = this.getAttribute( 'tangent' );\n\n\t\tconst tan1 = [], tan2 = [];\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\ttan1[ i ] = new Vector3();\n\t\t\ttan2[ i ] = new Vector3();\n\n\t\t}\n\n\t\tconst vA = new Vector3(),\n\t\t\tvB = new Vector3(),\n\t\t\tvC = new Vector3(),\n\n\t\t\tuvA = new Vector2(),\n\t\t\tuvB = new Vector2(),\n\t\t\tuvC = new Vector2(),\n\n\t\t\tsdir = new Vector3(),\n\t\t\ttdir = new Vector3();\n\n\t\tfunction handleTriangle( a, b, c ) {\n\n\t\t\tvA.fromBufferAttribute( positionAttribute, a );\n\t\t\tvB.fromBufferAttribute( positionAttribute, b );\n\t\t\tvC.fromBufferAttribute( positionAttribute, c );\n\n\t\t\tuvA.fromBufferAttribute( uvAttribute, a );\n\t\t\tuvB.fromBufferAttribute( uvAttribute, b );\n\t\t\tuvC.fromBufferAttribute( uvAttribute, c );\n\n\t\t\tvB.sub( vA );\n\t\t\tvC.sub( vA );\n\n\t\t\tuvB.sub( uvA );\n\t\t\tuvC.sub( uvA );\n\n\t\t\tconst r = 1.0 / ( uvB.x * uvC.y - uvC.x * uvB.y );\n\n\t\t\t// silently ignore degenerate uv triangles having coincident or colinear vertices\n\n\t\t\tif ( ! isFinite( r ) ) return;\n\n\t\t\tsdir.copy( vB ).multiplyScalar( uvC.y ).addScaledVector( vC, - uvB.y ).multiplyScalar( r );\n\t\t\ttdir.copy( vC ).multiplyScalar( uvB.x ).addScaledVector( vB, - uvC.x ).multiplyScalar( r );\n\n\t\t\ttan1[ a ].add( sdir );\n\t\t\ttan1[ b ].add( sdir );\n\t\t\ttan1[ c ].add( sdir );\n\n\t\t\ttan2[ a ].add( tdir );\n\t\t\ttan2[ b ].add( tdir );\n\t\t\ttan2[ c ].add( tdir );\n\n\t\t}\n\n\t\tlet groups = this.groups;\n\n\t\tif ( groups.length === 0 ) {\n\n\t\t\tgroups = [ {\n\t\t\t\tstart: 0,\n\t\t\t\tcount: index.count\n\t\t\t} ];\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleTriangle(\n\t\t\t\t\tindex.getX( j + 0 ),\n\t\t\t\t\tindex.getX( j + 1 ),\n\t\t\t\t\tindex.getX( j + 2 )\n\t\t\t\t);\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst tmp = new Vector3(), tmp2 = new Vector3();\n\t\tconst n = new Vector3(), n2 = new Vector3();\n\n\t\tfunction handleVertex( v ) {\n\n\t\t\tn.fromBufferAttribute( normalAttribute, v );\n\t\t\tn2.copy( n );\n\n\t\t\tconst t = tan1[ v ];\n\n\t\t\t// Gram-Schmidt orthogonalize\n\n\t\t\ttmp.copy( t );\n\t\t\ttmp.sub( n.multiplyScalar( n.dot( t ) ) ).normalize();\n\n\t\t\t// Calculate handedness\n\n\t\t\ttmp2.crossVectors( n2, t );\n\t\t\tconst test = tmp2.dot( tan2[ v ] );\n\t\t\tconst w = ( test < 0.0 ) ? -1 : 1.0;\n\n\t\t\ttangentAttribute.setXYZW( v, tmp.x, tmp.y, tmp.z, w );\n\n\t\t}\n\n\t\tfor ( let i = 0, il = groups.length; i < il; ++ i ) {\n\n\t\t\tconst group = groups[ i ];\n\n\t\t\tconst start = group.start;\n\t\t\tconst count = group.count;\n\n\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\n\n\t\t\t\thandleVertex( index.getX( j + 0 ) );\n\t\t\t\thandleVertex( index.getX( j + 1 ) );\n\t\t\t\thandleVertex( index.getX( j + 2 ) );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcomputeVertexNormals() {\n\n\t\tconst index = this.index;\n\t\tconst positionAttribute = this.getAttribute( 'position' );\n\n\t\tif ( positionAttribute !== undefined ) {\n\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\n\n\t\t\tif ( normalAttribute === undefined ) {\n\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\n\n\t\t\t} else {\n\n\t\t\t\t// reset existing normals to zero\n\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\n\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\n\n\t\t\t// indexed elements\n\n\t\t\tif ( index ) {\n\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\n\n\t\t\t\t\tconst vA = index.getX( i + 0 );\n\t\t\t\t\tconst vB = index.getX( i + 1 );\n\t\t\t\t\tconst vC = index.getX( i + 2 );\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\n\n\t\t\t\t\tnA.add( cb );\n\t\t\t\t\tnB.add( cb );\n\t\t\t\t\tnC.add( cb );\n\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\n\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\n\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\n\n\t\t\t\t\tcb.subVectors( pC, pB );\n\t\t\t\t\tab.subVectors( pA, pB );\n\t\t\t\t\tcb.cross( ab );\n\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.normalizeNormals();\n\n\t\t\tnormalAttribute.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\tnormalizeNormals() {\n\n\t\tconst normals = this.attributes.normal;\n\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\n\n\t\t\t_vector$8.fromBufferAttribute( normals, i );\n\n\t\t\t_vector$8.normalize();\n\n\t\t\tnormals.setXYZ( i, _vector$8.x, _vector$8.y, _vector$8.z );\n\n\t\t}\n\n\t}\n\n\ttoNonIndexed() {\n\n\t\tfunction convertBufferAttribute( attribute, indices ) {\n\n\t\t\tconst array = attribute.array;\n\t\t\tconst itemSize = attribute.itemSize;\n\t\t\tconst normalized = attribute.normalized;\n\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\n\n\t\t\tlet index = 0, index2 = 0;\n\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\n\n\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\tindex = indices[ i ] * attribute.data.stride + attribute.offset;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindex = indices[ i ] * itemSize;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\n\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\n\n\t\t}\n\n\t\t//\n\n\t\tif ( this.index === null ) {\n\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tconst geometry2 = new BufferGeometry();\n\n\t\tconst indices = this.index.array;\n\t\tconst attributes = this.attributes;\n\n\t\t// attributes\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\tgeometry2.setAttribute( name, newAttribute );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = this.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst morphArray = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = morphAttribute[ i ];\n\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\n\n\t\t\t\tmorphArray.push( newAttribute );\n\n\t\t\t}\n\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\n\n\t\t}\n\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = this.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\treturn geometry2;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'BufferGeometry',\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\n\t\t\t}\n\t\t};\n\n\t\t// standard BufferGeometry serialization\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.type = this.type;\n\t\tif ( this.name !== '' ) data.name = this.name;\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\n\n\t\tif ( this.parameters !== undefined ) {\n\n\t\t\tconst parameters = this.parameters;\n\n\t\t\tfor ( const key in parameters ) {\n\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\n\n\t\t\t}\n\n\t\t\treturn data;\n\n\t\t}\n\n\t\t// for simplicity the code assumes attributes are not shared across geometries, see #15811\n\n\t\tdata.data = { attributes: {} };\n\n\t\tconst index = this.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tdata.data.index = {\n\t\t\t\ttype: index.array.constructor.name,\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\n\t\t\t};\n\n\t\t}\n\n\t\tconst attributes = this.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\n\t\t\tdata.data.attributes[ key ] = attribute.toJSON( data.data );\n\n\t\t}\n\n\t\tconst morphAttributes = {};\n\t\tlet hasMorphAttributes = false;\n\n\t\tfor ( const key in this.morphAttributes ) {\n\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\tconst attribute = attributeArray[ i ];\n\n\t\t\t\tarray.push( attribute.toJSON( data.data ) );\n\n\t\t\t}\n\n\t\t\tif ( array.length > 0 ) {\n\n\t\t\t\tmorphAttributes[ key ] = array;\n\n\t\t\t\thasMorphAttributes = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( hasMorphAttributes ) {\n\n\t\t\tdata.data.morphAttributes = morphAttributes;\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\n\n\t\t}\n\n\t\tconst groups = this.groups;\n\n\t\tif ( groups.length > 0 ) {\n\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tdata.data.boundingSphere = {\n\t\t\t\tcenter: boundingSphere.center.toArray(),\n\t\t\t\tradius: boundingSphere.radius\n\t\t\t};\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\tcopy( source ) {\n\n\t\t// reset\n\n\t\tthis.index = null;\n\t\tthis.attributes = {};\n\t\tthis.morphAttributes = {};\n\t\tthis.groups = [];\n\t\tthis.boundingBox = null;\n\t\tthis.boundingSphere = null;\n\n\t\t// used for storing cloned, shared data\n\n\t\tconst data = {};\n\n\t\t// name\n\n\t\tthis.name = source.name;\n\n\t\t// index\n\n\t\tconst index = source.index;\n\n\t\tif ( index !== null ) {\n\n\t\t\tthis.setIndex( index.clone( data ) );\n\n\t\t}\n\n\t\t// attributes\n\n\t\tconst attributes = source.attributes;\n\n\t\tfor ( const name in attributes ) {\n\n\t\t\tconst attribute = attributes[ name ];\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\n\n\t\t}\n\n\t\t// morph attributes\n\n\t\tconst morphAttributes = source.morphAttributes;\n\n\t\tfor ( const name in morphAttributes ) {\n\n\t\t\tconst array = [];\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\n\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\n\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\n\n\t\t\t}\n\n\t\t\tthis.morphAttributes[ name ] = array;\n\n\t\t}\n\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\n\n\t\t// groups\n\n\t\tconst groups = source.groups;\n\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\tconst group = groups[ i ];\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t}\n\n\t\t// bounding box\n\n\t\tconst boundingBox = source.boundingBox;\n\n\t\tif ( boundingBox !== null ) {\n\n\t\t\tthis.boundingBox = boundingBox.clone();\n\n\t\t}\n\n\t\t// bounding sphere\n\n\t\tconst boundingSphere = source.boundingSphere;\n\n\t\tif ( boundingSphere !== null ) {\n\n\t\t\tthis.boundingSphere = boundingSphere.clone();\n\n\t\t}\n\n\t\t// draw range\n\n\t\tthis.drawRange.start = source.drawRange.start;\n\t\tthis.drawRange.count = source.drawRange.count;\n\n\t\t// user data\n\n\t\tthis.userData = source.userData;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t}\n\n}\n\nconst _inverseMatrix$3 = /*@__PURE__*/ new Matrix4();\nconst _ray$3 = /*@__PURE__*/ new Ray();\nconst _sphere$6 = /*@__PURE__*/ new Sphere();\nconst _sphereHitAt = /*@__PURE__*/ new Vector3();\n\nconst _vA$1 = /*@__PURE__*/ new Vector3();\nconst _vB$1 = /*@__PURE__*/ new Vector3();\nconst _vC$1 = /*@__PURE__*/ new Vector3();\n\nconst _tempA = /*@__PURE__*/ new Vector3();\nconst _morphA = /*@__PURE__*/ new Vector3();\n\nconst _intersectionPoint = /*@__PURE__*/ new Vector3();\nconst _intersectionPointWorld = /*@__PURE__*/ new Vector3();\n\n/**\n * Class representing triangular polygon mesh based objects.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry( 1, 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments Object3D\n */\nclass Mesh extends Object3D {\n\n\t/**\n\t * Constructs a new mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array<Material>} [material] - The mesh material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isMesh = true;\n\n\t\tthis.type = 'Mesh';\n\n\t\t/**\n\t\t * The mesh geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The mesh material.\n\t\t *\n\t\t * @type {Material|Array<Material>}\n\t\t * @default MeshBasicMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object<String,number>|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array<number>|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.morphTargetInfluences !== undefined ) {\n\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\n\n\t\t}\n\n\t\tif ( source.morphTargetDictionary !== undefined ) {\n\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\n\n\t\t}\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Mesh#morphTargetDictionary} and {@link Mesh#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns the local-space position of the vertex at the given index, taking into\n\t * account the current animation state of both morph targets and skinning.\n\t *\n\t * @param {number} index - The vertex index.\n\t * @param {Vector3} target - The target object that is used to store the method's result.\n\t * @return {Vector3} The vertex position in local space.\n\t */\n\tgetVertexPosition( index, target ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.attributes.position;\n\t\tconst morphPosition = geometry.morphAttributes.position;\n\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\n\n\t\ttarget.fromBufferAttribute( position, index );\n\n\t\tconst morphInfluences = this.morphTargetInfluences;\n\n\t\tif ( morphPosition && morphInfluences ) {\n\n\t\t\t_morphA.set( 0, 0, 0 );\n\n\t\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\n\n\t\t\t\tconst influence = morphInfluences[ i ];\n\t\t\t\tconst morphAttribute = morphPosition[ i ];\n\n\t\t\t\tif ( influence === 0 ) continue;\n\n\t\t\t\t_tempA.fromBufferAttribute( morphAttribute, index );\n\n\t\t\t\tif ( morphTargetsRelative ) {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA, influence );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_morphA.addScaledVector( _tempA.sub( target ), influence );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\ttarget.add( _morphA );\n\n\t\t}\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this line.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array<Object>} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$6.copy( geometry.boundingSphere );\n\t\t_sphere$6.applyMatrix4( matrixWorld );\n\n\t\t// check distance from ray origin to bounding sphere\n\n\t\t_ray$3.copy( raycaster.ray ).recast( raycaster.near );\n\n\t\tif ( _sphere$6.containsPoint( _ray$3.origin ) === false ) {\n\n\t\t\tif ( _ray$3.intersectSphere( _sphere$6, _sphereHitAt ) === null ) return;\n\n\t\t\tif ( _ray$3.origin.distanceToSquared( _sphereHitAt ) > ( raycaster.far - raycaster.near ) ** 2 ) return;\n\n\t\t}\n\n\t\t// convert ray to local space of mesh\n\n\t\t_inverseMatrix$3.copy( matrixWorld ).invert();\n\t\t_ray$3.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$3 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tif ( _ray$3.intersectsBox( geometry.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$3 );\n\n\t}\n\n\t_computeIntersections( raycaster, intersects, rayLocalSpace ) {\n\n\t\tlet intersection;\n\n\t\tconst geometry = this.geometry;\n\t\tconst material = this.material;\n\n\t\tconst index = geometry.index;\n\t\tconst position = geometry.attributes.position;\n\t\tconst uv = geometry.attributes.uv;\n\t\tconst uv1 = geometry.attributes.uv1;\n\t\tconst normal = geometry.attributes.normal;\n\t\tconst groups = geometry.groups;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\tif ( index !== null ) {\n\n\t\t\t// indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( index.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = index.getX( j );\n\t\t\t\t\t\tconst b = index.getX( j + 1 );\n\t\t\t\t\t\tconst c = index.getX( j + 2 );\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = index.getX( i );\n\t\t\t\t\tconst b = index.getX( i + 1 );\n\t\t\t\t\tconst c = index.getX( i + 2 );\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else if ( position !== undefined ) {\n\n\t\t\t// non-indexed buffer geometry\n\n\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\n\t\t\t\t\tconst end = Math.min( position.count, Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) ) );\n\n\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\n\n\t\t\t\t\t\tconst a = j;\n\t\t\t\t\t\tconst b = j + 1;\n\t\t\t\t\t\tconst c = j + 2;\n\n\t\t\t\t\t\tintersection = checkGeometryIntersection( this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\n\t\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\n\n\t\t\t\t\tconst a = i;\n\t\t\t\t\tconst b = i + 1;\n\t\t\t\t\tconst c = i + 2;\n\n\t\t\t\t\tintersection = checkGeometryIntersection( this, material, raycaster, rayLocalSpace, uv, uv1, normal, a, b, c );\n\n\t\t\t\t\tif ( intersection ) {\n\n\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\n\t\t\t\t\t\tintersects.push( intersection );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection$1( object, material, raycaster, ray, pA, pB, pC, point ) {\n\n\tlet intersect;\n\n\tif ( material.side === BackSide ) {\n\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\n\n\t} else {\n\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, ( material.side === FrontSide ), point );\n\n\t}\n\n\tif ( intersect === null ) return null;\n\n\t_intersectionPointWorld.copy( point );\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\n\n\treturn {\n\t\tdistance: distance,\n\t\tpoint: _intersectionPointWorld.clone(),\n\t\tobject: object\n\t};\n\n}\n\nfunction checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, normal, a, b, c ) {\n\n\tobject.getVertexPosition( a, _vA$1 );\n\tobject.getVertexPosition( b, _vB$1 );\n\tobject.getVertexPosition( c, _vC$1 );\n\n\tconst intersection = checkIntersection$1( object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint );\n\n\tif ( intersection ) {\n\n\t\tconst barycoord = new Vector3();\n\t\tTriangle.getBarycoord( _intersectionPoint, _vA$1, _vB$1, _vC$1, barycoord );\n\n\t\tif ( uv ) {\n\n\t\t\tintersection.uv = Triangle.getInterpolatedAttribute( uv, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( uv1 ) {\n\n\t\t\tintersection.uv1 = Triangle.getInterpolatedAttribute( uv1, a, b, c, barycoord, new Vector2() );\n\n\t\t}\n\n\t\tif ( normal ) {\n\n\t\t\tintersection.normal = Triangle.getInterpolatedAttribute( normal, a, b, c, barycoord, new Vector3() );\n\n\t\t\tif ( intersection.normal.dot( ray.direction ) > 0 ) {\n\n\t\t\t\tintersection.normal.multiplyScalar( -1 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst face = {\n\t\t\ta: a,\n\t\t\tb: b,\n\t\t\tc: c,\n\t\t\tnormal: new Vector3(),\n\t\t\tmaterialIndex: 0\n\t\t};\n\n\t\tTriangle.getNormal( _vA$1, _vB$1, _vC$1, face.normal );\n\n\t\tintersection.face = face;\n\t\tintersection.barycoord = barycoord;\n\n\t}\n\n\treturn intersection;\n\n}\n\n/**\n * A geometry class for a rectangular cuboid with a given width, height, and depth.\n * On creation, the cuboid is centred on the origin, with each edge parallel to one\n * of the axes.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry( 1, 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const cube = new THREE.Mesh( geometry, material );\n * scene.add( cube );\n * ```\n *\n * @augments BufferGeometry\n */\nclass BoxGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new box geometry.\n\t *\n\t * @param {number} [width=1] - The width. That is, the length of the edges parallel to the X axis.\n\t * @param {number} [height=1] - The height. That is, the length of the edges parallel to the Y axis.\n\t * @param {number} [depth=1] - The depth. That is, the length of the edges parallel to the Z axis.\n\t * @param {number} [widthSegments=1] - Number of segmented rectangular faces along the width of the sides.\n\t * @param {number} [heightSegments=1] - Number of segmented rectangular faces along the height of the sides.\n\t * @param {number} [depthSegments=1] - Number of segmented rectangular faces along the depth of the sides.\n\t */\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'BoxGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\tdepth: depth,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tdepthSegments: depthSegments\n\t\t};\n\n\t\tconst scope = this;\n\n\t\t// segments\n\n\t\twidthSegments = Math.floor( widthSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\t\tdepthSegments = Math.floor( depthSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet numberOfVertices = 0;\n\t\tlet groupStart = 0;\n\n\t\t// build each side of the box geometry\n\n\t\tbuildPlane( 'z', 'y', 'x', -1, -1, depth, height, width, depthSegments, heightSegments, 0 ); // px\n\t\tbuildPlane( 'z', 'y', 'x', 1, -1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\n\t\tbuildPlane( 'x', 'z', 'y', 1, -1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\n\t\tbuildPlane( 'x', 'y', 'z', 1, -1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\n\t\tbuildPlane( 'x', 'y', 'z', -1, -1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\n\n\t\t\tconst segmentWidth = width / gridX;\n\t\t\tconst segmentHeight = height / gridY;\n\n\t\t\tconst widthHalf = width / 2;\n\t\t\tconst heightHalf = height / 2;\n\t\t\tconst depthHalf = depth / 2;\n\n\t\t\tconst gridX1 = gridX + 1;\n\t\t\tconst gridY1 = gridY + 1;\n\n\t\t\tlet vertexCounter = 0;\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst vector = new Vector3();\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\n\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = x * udir;\n\t\t\t\t\tvector[ v ] = y * vdir;\n\t\t\t\t\tvector[ w ] = depthHalf;\n\n\t\t\t\t\t// now apply vector to vertex buffer\n\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// set values to correct vector component\n\n\t\t\t\t\tvector[ u ] = 0;\n\t\t\t\t\tvector[ v ] = 0;\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : -1;\n\n\t\t\t\t\t// now apply vector to normal buffer\n\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\n\n\t\t\t\t\t// uvs\n\n\t\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t\t\t// counters\n\n\t\t\t\t\tvertexCounter += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\t// 1. you need three indices to draw a single face\n\t\t\t// 2. a single segment consists of two faces\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\n\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t\t// increase counter\n\n\t\t\t\t\tgroupCount += 6;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t\t// update total number of vertices\n\n\t\t\tnumberOfVertices += vertexCounter;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {BoxGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new BoxGeometry( data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments );\n\n\t}\n\n}\n\n/**\n * Uniform Utilities\n */\n\nfunction cloneUniforms( src ) {\n\n\tconst dst = {};\n\n\tfor ( const u in src ) {\n\n\t\tdst[ u ] = {};\n\n\t\tfor ( const p in src[ u ] ) {\n\n\t\t\tconst property = src[ u ][ p ];\n\n\t\t\tif ( property && ( property.isColor ||\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\n\t\t\t\tproperty.isTexture || property.isQuaternion ) ) {\n\n\t\t\t\tif ( property.isRenderTargetTexture ) {\n\n\t\t\t\t\tconsole.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );\n\t\t\t\t\tdst[ u ][ p ] = null;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdst[ u ][ p ] = property.clone();\n\n\t\t\t\t}\n\n\t\t\t} else if ( Array.isArray( property ) ) {\n\n\t\t\t\tdst[ u ][ p ] = property.slice();\n\n\t\t\t} else {\n\n\t\t\t\tdst[ u ][ p ] = property;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction mergeUniforms( uniforms ) {\n\n\tconst merged = {};\n\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\n\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\n\n\t\tfor ( const p in tmp ) {\n\n\t\t\tmerged[ p ] = tmp[ p ];\n\n\t\t}\n\n\t}\n\n\treturn merged;\n\n}\n\nfunction cloneUniformsGroups( src ) {\n\n\tconst dst = [];\n\n\tfor ( let u = 0; u < src.length; u ++ ) {\n\n\t\tdst.push( src[ u ].clone() );\n\n\t}\n\n\treturn dst;\n\n}\n\nfunction getUnlitUniformColorSpace( renderer ) {\n\n\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\tif ( currentRenderTarget === null ) {\n\n\t\t// https://github.com/mrdoob/three.js/pull/23937#issuecomment-1111067398\n\t\treturn renderer.outputColorSpace;\n\n\t}\n\n\t// https://github.com/mrdoob/three.js/issues/27868\n\tif ( currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\treturn currentRenderTarget.texture.colorSpace;\n\n\t}\n\n\treturn ColorManagement.workingColorSpace;\n\n}\n\n// Legacy\n\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\n\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\n\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\n\nclass ShaderMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShaderMaterial = true;\n\n\t\tthis.type = 'ShaderMaterial';\n\n\t\tthis.defines = {};\n\t\tthis.uniforms = {};\n\t\tthis.uniformsGroups = [];\n\n\t\tthis.vertexShader = default_vertex;\n\t\tthis.fragmentShader = default_fragment;\n\n\t\tthis.linewidth = 1;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.fog = false; // set to use scene fog\n\t\tthis.lights = false; // set to use scene lights\n\t\tthis.clipping = false; // set to use user-defined clipping planes\n\n\t\tthis.forceSinglePass = true;\n\n\t\tthis.extensions = {\n\t\t\tclipCullDistance: false, // set to use vertex shader clipping\n\t\t\tmultiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID\n\t\t};\n\n\t\t// When rendered geometry doesn't include these attributes but the material does,\n\t\t// use these default values in WebGL. This avoids errors when buffer data is missing.\n\t\tthis.defaultAttributeValues = {\n\t\t\t'color': [ 1, 1, 1 ],\n\t\t\t'uv': [ 0, 0 ],\n\t\t\t'uv1': [ 0, 0 ]\n\t\t};\n\n\t\tthis.index0AttributeName = undefined;\n\t\tthis.uniformsNeedUpdate = false;\n\n\t\tthis.glslVersion = null;\n\n\t\tif ( parameters !== undefined ) {\n\n\t\t\tthis.setValues( parameters );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.fragmentShader = source.fragmentShader;\n\t\tthis.vertexShader = source.vertexShader;\n\n\t\tthis.uniforms = cloneUniforms( source.uniforms );\n\t\tthis.uniformsGroups = cloneUniformsGroups( source.uniformsGroups );\n\n\t\tthis.defines = Object.assign( {}, source.defines );\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.fog = source.fog;\n\t\tthis.lights = source.lights;\n\t\tthis.clipping = source.clipping;\n\n\t\tthis.extensions = Object.assign( {}, source.extensions );\n\n\t\tthis.glslVersion = source.glslVersion;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.glslVersion = this.glslVersion;\n\t\tdata.uniforms = {};\n\n\t\tfor ( const name in this.uniforms ) {\n\n\t\t\tconst uniform = this.uniforms[ name ];\n\t\t\tconst value = uniform.value;\n\n\t\t\tif ( value && value.isTexture ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 't',\n\t\t\t\t\tvalue: value.toJSON( meta ).uuid\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isColor ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'c',\n\t\t\t\t\tvalue: value.getHex()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector2 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v2',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isVector4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'v4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix3 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm3',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else if ( value && value.isMatrix4 ) {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\ttype: 'm4',\n\t\t\t\t\tvalue: value.toArray()\n\t\t\t\t};\n\n\t\t\t} else {\n\n\t\t\t\tdata.uniforms[ name ] = {\n\t\t\t\t\tvalue: value\n\t\t\t\t};\n\n\t\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\n\n\t\tdata.vertexShader = this.vertexShader;\n\t\tdata.fragmentShader = this.fragmentShader;\n\n\t\tdata.lights = this.lights;\n\t\tdata.clipping = this.clipping;\n\n\t\tconst extensions = {};\n\n\t\tfor ( const key in this.extensions ) {\n\n\t\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\n\n\t\t}\n\n\t\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Abstract base class for cameras. This class should always be inherited\n * when you build a new camera.\n *\n * @abstract\n * @augments Object3D\n */\nclass Camera extends Object3D {\n\n\t/**\n\t * Constructs a new camera.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCamera = true;\n\n\t\tthis.type = 'Camera';\n\n\t\t/**\n\t\t * The inverse of the camera's world matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrixWorldInverse = new Matrix4();\n\n\t\t/**\n\t\t * The camera's projection matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.projectionMatrix = new Matrix4();\n\n\t\t/**\n\t\t * The inverse of the camera's projection matrix.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.projectionMatrixInverse = new Matrix4();\n\n\t\t/**\n\t\t * The coordinate system in which the camera is used.\n\t\t *\n\t\t * @type {(WebGLCoordinateSystem|WebGPUCoordinateSystem)}\n\t\t */\n\t\tthis.coordinateSystem = WebGLCoordinateSystem;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\n\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\n\n\t\tthis.coordinateSystem = source.coordinateSystem;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a vector representing the (\"look\") direction of the 3D object in world space.\n\t *\n\t * This method is overwritten since cameras have a different forward vector compared to other\n\t * 3D objects. A camera looks down its local, negative z-axis by default.\n\t *\n\t * @param {Vector3} target - The target vector the result is stored to.\n\t * @return {Vector3} The 3D object's direction in world space.\n\t */\n\tgetWorldDirection( target ) {\n\n\t\treturn super.getWorldDirection( target ).negate();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tupdateWorldMatrix( updateParents, updateChildren ) {\n\n\t\tsuper.updateWorldMatrix( updateParents, updateChildren );\n\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _v3$1 = /*@__PURE__*/ new Vector3();\nconst _minTarget = /*@__PURE__*/ new Vector2();\nconst _maxTarget = /*@__PURE__*/ new Vector2();\n\n/**\n * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.\n *\n * This projection mode is designed to mimic the way the human eye sees. It\n * is the most common projection mode used for rendering a 3D scene.\n *\n * ```js\n * const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );\n * scene.add( camera );\n * ```\n *\n * @augments Camera\n */\nclass PerspectiveCamera extends Camera {\n\n\t/**\n\t * Constructs a new perspective camera.\n\t *\n\t * @param {number} [fov=50] - The vertical field of view.\n\t * @param {number} [aspect=1] - The aspect ratio.\n\t * @param {number} [near=0.1] - The camera's near plane.\n\t * @param {number} [far=2000] - The camera's far plane.\n\t */\n\tconstructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPerspectiveCamera = true;\n\n\t\tthis.type = 'PerspectiveCamera';\n\n\t\t/**\n\t\t * The vertical field of view, from bottom to top of view,\n\t\t * in degrees.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 50\n\t\t */\n\t\tthis.fov = fov;\n\n\t\t/**\n\t\t * The zoom factor of the camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.zoom = 1;\n\n\t\t/**\n\t\t * The camera's near plane. The valid range is greater than `0`\n\t\t * and less than the current value of {@link PerspectiveCamera#far}.\n\t\t *\n\t\t * Note that, unlike for the {@link OrthographicCamera}, `0` is <em>not</em> a\n\t\t * valid value for a perspective camera's near plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The camera's far plane. Must be greater than the\n\t\t * current value of {@link PerspectiveCamera#near}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2000\n\t\t */\n\t\tthis.far = far;\n\n\t\t/**\n\t\t * Object distance used for stereoscopy and depth-of-field effects. This\n\t\t * parameter does not influence the projection matrix unless a\n\t\t * {@link StereoCamera} is being used.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.focus = 10;\n\n\t\t/**\n\t\t * The aspect ratio, usually the canvas width / canvas height.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = aspect;\n\n\t\t/**\n\t\t * Represents the frustum window specification. This property should not be edited\n\t\t * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.view = null;\n\n\t\t/**\n\t\t * Film size used for the larger axis. Default is `35` (millimeters). This\n\t\t * parameter does not influence the projection matrix unless {@link PerspectiveCamera#filmOffset}\n\t\t * is set to a nonzero value.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 35\n\t\t */\n\t\tthis.filmGauge = 35;\n\n\t\t/**\n\t\t * Horizontal off-center offset in the same unit as {@link PerspectiveCamera#filmGauge}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.filmOffset = 0;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.fov = source.fov;\n\t\tthis.zoom = source.zoom;\n\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\t\tthis.focus = source.focus;\n\n\t\tthis.aspect = source.aspect;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\tthis.filmGauge = source.filmGauge;\n\t\tthis.filmOffset = source.filmOffset;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the FOV by focal length in respect to the current {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * The default film gauge is 35, so that the focal length can be specified for\n\t * a 35mm (full frame) camera.\n\t *\n\t * @param {number} focalLength - Values for focal length and film gauge must have the same unit.\n\t */\n\tsetFocalLength( focalLength ) {\n\n\t\t/** see {@link http://www.bobatkins.com/photography/technical/field_of_view.html} */\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n\n\t\tthis.fov = RAD2DEG * 2 * Math.atan( vExtentSlope );\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Returns the focal length from the current {@link PerspectiveCamera#fov} and\n\t * {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The computed focal length.\n\t */\n\tgetFocalLength() {\n\n\t\tconst vExtentSlope = Math.tan( DEG2RAD * 0.5 * this.fov );\n\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\n\n\t}\n\n\t/**\n\t * Returns the current vertical field of view angle in degrees considering {@link PerspectiveCamera#zoom}.\n\t *\n\t * @return {number} The effective FOV.\n\t */\n\tgetEffectiveFOV() {\n\n\t\treturn RAD2DEG * 2 * Math.atan(\n\t\t\tMath.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom );\n\n\t}\n\n\t/**\n\t * Returns the width of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or\n\t * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The film width.\n\t */\n\tgetFilmWidth() {\n\n\t\t// film not completely covered in portrait format (aspect < 1)\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Returns the height of the image on the film. If {@link PerspectiveCamera#aspect} is greater than or\n\t * equal to one (landscape format), the result equals {@link PerspectiveCamera#filmGauge}.\n\t *\n\t * @return {number} The film width.\n\t */\n\tgetFilmHeight() {\n\n\t\t// film not completely covered in landscape format (aspect > 1)\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\n\n\t}\n\n\t/**\n\t * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n\t * Sets `minTarget` and `maxTarget` to the coordinates of the lower-left and upper-right corners of the view rectangle.\n\t *\n\t * @param {number} distance - The viewing distance.\n\t * @param {Vector2} minTarget - The lower-left corner of the view rectangle is written into this vector.\n\t * @param {Vector2} maxTarget - The upper-right corner of the view rectangle is written into this vector.\n\t */\n\tgetViewBounds( distance, minTarget, maxTarget ) {\n\n\t\t_v3$1.set( -1, -1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tminTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t\t_v3$1.set( 1, 1, 0.5 ).applyMatrix4( this.projectionMatrixInverse );\n\n\t\tmaxTarget.set( _v3$1.x, _v3$1.y ).multiplyScalar( - distance / _v3$1.z );\n\n\t}\n\n\t/**\n\t * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n\t *\n\t * @param {number} distance - The viewing distance.\n\t * @param {Vector2} target - The target vector that is used to store result where x is width and y is height.\n\t * @returns {Vector2} The view size.\n\t */\n\tgetViewSize( distance, target ) {\n\n\t\tthis.getViewBounds( distance, _minTarget, _maxTarget );\n\n\t\treturn target.subVectors( _maxTarget, _minTarget );\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n\t * the monitors are in grid like this\n\t *```\n\t *   +---+---+---+\n\t *   | A | B | C |\n\t *   +---+---+---+\n\t *   | D | E | F |\n\t *   +---+---+---+\n\t *```\n\t * then for each monitor you would call it like this:\n\t *```js\n\t * const w = 1920;\n\t * const h = 1080;\n\t * const fullWidth = w * 3;\n\t * const fullHeight = h * 2;\n\t *\n\t * // --A--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n\t * // --B--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n\t * // --C--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n\t * // --D--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n\t * // --E--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n\t * // --F--\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n\t * ```\n\t *\n\t * Note there is no reason monitors have to be the same size or in a grid.\n\t *\n\t * @param {number} fullWidth - The full width of multiview setup.\n\t * @param {number} fullHeight - The full height of multiview setup.\n\t * @param {number} x - The horizontal offset of the subcamera.\n\t * @param {number} y - The vertical offset of the subcamera.\n\t * @param {number} width - The width of subcamera.\n\t * @param {number} height - The height of subcamera.\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tthis.aspect = fullWidth / fullHeight;\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Removes the view offset from the projection matrix.\n\t */\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Updates the camera's projection matrix. Must be called after any change of\n\t * camera properties.\n\t */\n\tupdateProjectionMatrix() {\n\n\t\tconst near = this.near;\n\t\tlet top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;\n\t\tlet height = 2 * top;\n\t\tlet width = this.aspect * height;\n\t\tlet left = -0.5 * width;\n\t\tconst view = this.view;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst fullWidth = view.fullWidth,\n\t\t\t\tfullHeight = view.fullHeight;\n\n\t\t\tleft += view.offsetX * width / fullWidth;\n\t\t\ttop -= view.offsetY * height / fullHeight;\n\t\t\twidth *= view.width / fullWidth;\n\t\t\theight *= view.height / fullHeight;\n\n\t\t}\n\n\t\tconst skew = this.filmOffset;\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\n\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.fov = this.fov;\n\t\tdata.object.zoom = this.zoom;\n\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\t\tdata.object.focus = this.focus;\n\n\t\tdata.object.aspect = this.aspect;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\tdata.object.filmGauge = this.filmGauge;\n\t\tdata.object.filmOffset = this.filmOffset;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst fov = -90; // negative fov is not an error\nconst aspect = 1;\n\n/**\n * A special type of camera that is positioned in 3D space to render its surroundings into a\n * cube render target. The render target can then be used as an environment map for rendering\n * realtime reflections in your scene.\n *\n * ```js\n * // Create cube render target\n * const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 256, { generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );\n *\n * // Create cube camera\n * const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );\n * scene.add( cubeCamera );\n *\n * // Create car\n * const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );\n * const car = new THREE.Mesh( carGeometry, chromeMaterial );\n * scene.add( car );\n *\n * // Update the render target cube\n * car.visible = false;\n * cubeCamera.position.copy( car.position );\n * cubeCamera.update( renderer, scene );\n *\n * // Render the scene\n * car.visible = true;\n * renderer.render( scene, camera );\n * ```\n *\n * @augments Object3D\n */\nclass CubeCamera extends Object3D {\n\n\t/**\n\t * Constructs a new cube camera.\n\t *\n\t * @param {number} near - The camera's near plane.\n\t * @param {number} far - The camera's far plane.\n\t * @param {WebGLCubeRenderTarget} renderTarget - The cube render target.\n\t */\n\tconstructor( near, far, renderTarget ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CubeCamera';\n\n\t\t/**\n\t\t * A reference to the cube render target.\n\t\t *\n\t\t * @type {WebGLCubeRenderTarget}\n\t\t */\n\t\tthis.renderTarget = renderTarget;\n\n\t\t/**\n\t\t * The current active coordinate system.\n\t\t *\n\t\t * @type {?(WebGLCoordinateSystem|WebGPUCoordinateSystem)}\n\t\t * @default null\n\t\t */\n\t\tthis.coordinateSystem = null;\n\n\t\t/**\n\t\t * The current active mipmap level\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.activeMipmapLevel = 0;\n\n\t\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPX.layers = this.layers;\n\t\tthis.add( cameraPX );\n\n\t\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNX.layers = this.layers;\n\t\tthis.add( cameraNX );\n\n\t\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPY.layers = this.layers;\n\t\tthis.add( cameraPY );\n\n\t\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNY.layers = this.layers;\n\t\tthis.add( cameraNY );\n\n\t\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraPZ.layers = this.layers;\n\t\tthis.add( cameraPZ );\n\n\t\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\n\t\tcameraNZ.layers = this.layers;\n\t\tthis.add( cameraNZ );\n\n\t}\n\n\t/**\n\t * Must be called when the coordinate system of the cube camera is changed.\n\t */\n\tupdateCoordinateSystem() {\n\n\t\tconst coordinateSystem = this.coordinateSystem;\n\n\t\tconst cameras = this.children.concat();\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = cameras;\n\n\t\tfor ( const camera of cameras ) this.remove( camera );\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, 1, 0 );\n\t\t\tcameraPX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, 1, 0 );\n\t\t\tcameraNX.lookAt( -1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, -1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, 1 );\n\t\t\tcameraNY.lookAt( 0, -1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, 1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, 1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, -1 );\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tcameraPX.up.set( 0, -1, 0 );\n\t\t\tcameraPX.lookAt( -1, 0, 0 );\n\n\t\t\tcameraNX.up.set( 0, -1, 0 );\n\t\t\tcameraNX.lookAt( 1, 0, 0 );\n\n\t\t\tcameraPY.up.set( 0, 0, 1 );\n\t\t\tcameraPY.lookAt( 0, 1, 0 );\n\n\t\t\tcameraNY.up.set( 0, 0, -1 );\n\t\t\tcameraNY.lookAt( 0, -1, 0 );\n\n\t\t\tcameraPZ.up.set( 0, -1, 0 );\n\t\t\tcameraPZ.lookAt( 0, 0, 1 );\n\n\t\t\tcameraNZ.up.set( 0, -1, 0 );\n\t\t\tcameraNZ.lookAt( 0, 0, -1 );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\tfor ( const camera of cameras ) {\n\n\t\t\tthis.add( camera );\n\n\t\t\tcamera.updateMatrixWorld();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Calling this method will render the given scene with the given renderer\n\t * into the cube render target of the camera.\n\t *\n\t * @param {(Renderer|WebGLRenderer)} renderer - The renderer.\n\t * @param {Scene} scene - The scene to render.\n\t */\n\tupdate( renderer, scene ) {\n\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\n\n\t\tconst { renderTarget, activeMipmapLevel } = this;\n\n\t\tif ( this.coordinateSystem !== renderer.coordinateSystem ) {\n\n\t\t\tthis.coordinateSystem = renderer.coordinateSystem;\n\n\t\t\tthis.updateCoordinateSystem();\n\n\t\t}\n\n\t\tconst [ cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ ] = this.children;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst currentActiveCubeFace = renderer.getActiveCubeFace();\n\t\tconst currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst currentXrEnabled = renderer.xr.enabled;\n\n\t\trenderer.xr.enabled = false;\n\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\n\n\t\trenderTarget.texture.generateMipmaps = false;\n\n\t\trenderer.setRenderTarget( renderTarget, 0, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPX );\n\n\t\trenderer.setRenderTarget( renderTarget, 1, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNX );\n\n\t\trenderer.setRenderTarget( renderTarget, 2, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPY );\n\n\t\trenderer.setRenderTarget( renderTarget, 3, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNY );\n\n\t\trenderer.setRenderTarget( renderTarget, 4, activeMipmapLevel );\n\t\trenderer.render( scene, cameraPZ );\n\n\t\t// mipmaps are generated during the last call of render()\n\t\t// at this point, all sides of the cube render target are defined\n\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\n\n\t\trenderer.setRenderTarget( renderTarget, 5, activeMipmapLevel );\n\t\trenderer.render( scene, cameraNZ );\n\n\t\trenderer.setRenderTarget( currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel );\n\n\t\trenderer.xr.enabled = currentXrEnabled;\n\n\t\trenderTarget.texture.needsPMREMUpdate = true;\n\n\t}\n\n}\n\nclass CubeTexture extends Texture {\n\n\tconstructor( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace ) {\n\n\t\timages = images !== undefined ? images : [];\n\t\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\n\n\t\tsuper( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.flipY = false;\n\n\t}\n\n\tget images() {\n\n\t\treturn this.image;\n\n\t}\n\n\tset images( value ) {\n\n\t\tthis.image = value;\n\n\t}\n\n}\n\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n\n\tconstructor( size = 1, options = {} ) {\n\n\t\tsuper( size, size, options );\n\n\t\tthis.isWebGLCubeRenderTarget = true;\n\n\t\tconst image = { width: size, height: size, depth: 1 };\n\t\tconst images = [ image, image, image, image, image, image ];\n\n\t\tthis.texture = new CubeTexture( images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace );\n\n\t\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\n\t\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\n\t\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\n\n\t\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\n\t\t// and the flag isRenderTargetTexture controls this conversion. The flip is not required when using WebGLCubeRenderTarget.texture\n\t\t// as a cube texture (this is detected when isRenderTargetTexture is set to true for cube textures).\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\n\t\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\n\n\t}\n\n\tfromEquirectangularTexture( renderer, texture ) {\n\n\t\tthis.texture.type = texture.type;\n\t\tthis.texture.colorSpace = texture.colorSpace;\n\n\t\tthis.texture.generateMipmaps = texture.generateMipmaps;\n\t\tthis.texture.minFilter = texture.minFilter;\n\t\tthis.texture.magFilter = texture.magFilter;\n\n\t\tconst shader = {\n\n\t\t\tuniforms: {\n\t\t\t\ttEquirect: { value: null },\n\t\t\t},\n\n\t\t\tvertexShader: /* glsl */`\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`,\n\n\t\t\tfragmentShader: /* glsl */`\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\t\t};\n\n\t\tconst geometry = new BoxGeometry( 5, 5, 5 );\n\n\t\tconst material = new ShaderMaterial( {\n\n\t\t\tname: 'CubemapFromEquirect',\n\n\t\t\tuniforms: cloneUniforms( shader.uniforms ),\n\t\t\tvertexShader: shader.vertexShader,\n\t\t\tfragmentShader: shader.fragmentShader,\n\t\t\tside: BackSide,\n\t\t\tblending: NoBlending\n\n\t\t} );\n\n\t\tmaterial.uniforms.tEquirect.value = texture;\n\n\t\tconst mesh = new Mesh( geometry, material );\n\n\t\tconst currentMinFilter = texture.minFilter;\n\n\t\t// Avoid blurred poles\n\t\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\n\n\t\tconst camera = new CubeCamera( 1, 10, this );\n\t\tcamera.update( renderer, mesh );\n\n\t\ttexture.minFilter = currentMinFilter;\n\n\t\tmesh.geometry.dispose();\n\t\tmesh.material.dispose();\n\n\t\treturn this;\n\n\t}\n\n\tclear( renderer, color, depth, stencil ) {\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\trenderer.setRenderTarget( this, i );\n\n\t\t\trenderer.clear( color, depth, stencil );\n\n\t\t}\n\n\t\trenderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n}\n\n/**\n * This is almost identical to an {@link Object3D}. Its purpose is to\n * make working with groups of objects syntactically clearer.\n *\n * ```js\n * // Create a group and add the two cubes.\n * // These cubes can now be rotated / scaled etc as a group.\n * const group = new THREE.Group();\n *\n * group.add( meshA );\n * group.add( meshB );\n *\n * scene.add( group );\n * ```\n *\n * @augments Object3D\n */\nclass Group extends Object3D {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isGroup = true;\n\n\t\tthis.type = 'Group';\n\n\t}\n\n}\n\nconst _moveEvent = { type: 'move' };\n\nclass WebXRController {\n\n\tconstructor() {\n\n\t\tthis._targetRay = null;\n\t\tthis._grip = null;\n\t\tthis._hand = null;\n\n\t}\n\n\tgetHandSpace() {\n\n\t\tif ( this._hand === null ) {\n\n\t\t\tthis._hand = new Group();\n\t\t\tthis._hand.matrixAutoUpdate = false;\n\t\t\tthis._hand.visible = false;\n\n\t\t\tthis._hand.joints = {};\n\t\t\tthis._hand.inputState = { pinching: false };\n\n\t\t}\n\n\t\treturn this._hand;\n\n\t}\n\n\tgetTargetRaySpace() {\n\n\t\tif ( this._targetRay === null ) {\n\n\t\t\tthis._targetRay = new Group();\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\n\t\t\tthis._targetRay.visible = false;\n\t\t\tthis._targetRay.hasLinearVelocity = false;\n\t\t\tthis._targetRay.linearVelocity = new Vector3();\n\t\t\tthis._targetRay.hasAngularVelocity = false;\n\t\t\tthis._targetRay.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._targetRay;\n\n\t}\n\n\tgetGripSpace() {\n\n\t\tif ( this._grip === null ) {\n\n\t\t\tthis._grip = new Group();\n\t\t\tthis._grip.matrixAutoUpdate = false;\n\t\t\tthis._grip.visible = false;\n\t\t\tthis._grip.hasLinearVelocity = false;\n\t\t\tthis._grip.linearVelocity = new Vector3();\n\t\t\tthis._grip.hasAngularVelocity = false;\n\t\t\tthis._grip.angularVelocity = new Vector3();\n\n\t\t}\n\n\t\treturn this._grip;\n\n\t}\n\n\tdispatchEvent( event ) {\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.dispatchEvent( event );\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.dispatchEvent( event );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tconnect( inputSource ) {\n\n\t\tif ( inputSource && inputSource.hand ) {\n\n\t\t\tconst hand = this._hand;\n\n\t\t\tif ( hand ) {\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Initialize hand with joints when connected\n\t\t\t\t\tthis._getHandJoint( hand, inputjoint );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.dispatchEvent( { type: 'connected', data: inputSource } );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect( inputSource ) {\n\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\n\n\t\tif ( this._targetRay !== null ) {\n\n\t\t\tthis._targetRay.visible = false;\n\n\t\t}\n\n\t\tif ( this._grip !== null ) {\n\n\t\t\tthis._grip.visible = false;\n\n\t\t}\n\n\t\tif ( this._hand !== null ) {\n\n\t\t\tthis._hand.visible = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tupdate( inputSource, frame, referenceSpace ) {\n\n\t\tlet inputPose = null;\n\t\tlet gripPose = null;\n\t\tlet handPose = null;\n\n\t\tconst targetRay = this._targetRay;\n\t\tconst grip = this._grip;\n\t\tconst hand = this._hand;\n\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\n\n\t\t\tif ( hand && inputSource.hand ) {\n\n\t\t\t\thandPose = true;\n\n\t\t\t\tfor ( const inputjoint of inputSource.hand.values() ) {\n\n\t\t\t\t\t// Update the joints groups with the XRJoint poses\n\t\t\t\t\tconst jointPose = frame.getJointPose( inputjoint, referenceSpace );\n\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\n\t\t\t\t\tconst joint = this._getHandJoint( hand, inputjoint );\n\n\t\t\t\t\tif ( jointPose !== null ) {\n\n\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\n\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\n\t\t\t\t\t\tjoint.matrixWorldNeedsUpdate = true;\n\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tjoint.visible = jointPose !== null;\n\n\t\t\t\t}\n\n\t\t\t\t// Custom events\n\n\t\t\t\t// Check pinchz\n\t\t\t\tconst indexTip = hand.joints[ 'index-finger-tip' ];\n\t\t\t\tconst thumbTip = hand.joints[ 'thumb-tip' ];\n\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\n\n\t\t\t\tconst distanceToPinch = 0.02;\n\t\t\t\tconst threshold = 0.005;\n\n\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = false;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchend',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\n\n\t\t\t\t\thand.inputState.pinching = true;\n\t\t\t\t\tthis.dispatchEvent( {\n\t\t\t\t\t\ttype: 'pinchstart',\n\t\t\t\t\t\thandedness: inputSource.handedness,\n\t\t\t\t\t\ttarget: this\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\n\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\n\n\t\t\t\t\tif ( gripPose !== null ) {\n\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\n\t\t\t\t\t\tgrip.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\t\tif ( gripPose.linearVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = true;\n\t\t\t\t\t\t\tgrip.linearVelocity.copy( gripPose.linearVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasLinearVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( gripPose.angularVelocity ) {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = true;\n\t\t\t\t\t\t\tgrip.angularVelocity.copy( gripPose.angularVelocity );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tgrip.hasAngularVelocity = false;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( targetRay !== null ) {\n\n\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\n\n\t\t\t\t// Some runtimes (namely Vive Cosmos with Vive OpenXR Runtime) have only grip space and ray space is equal to it\n\t\t\t\tif ( inputPose === null && gripPose !== null ) {\n\n\t\t\t\t\tinputPose = gripPose;\n\n\t\t\t\t}\n\n\t\t\t\tif ( inputPose !== null ) {\n\n\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\n\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\n\t\t\t\t\ttargetRay.matrixWorldNeedsUpdate = true;\n\n\t\t\t\t\tif ( inputPose.linearVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = true;\n\t\t\t\t\t\ttargetRay.linearVelocity.copy( inputPose.linearVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasLinearVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( inputPose.angularVelocity ) {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = true;\n\t\t\t\t\t\ttargetRay.angularVelocity.copy( inputPose.angularVelocity );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttargetRay.hasAngularVelocity = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.dispatchEvent( _moveEvent );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t}\n\n\t\tif ( targetRay !== null ) {\n\n\t\t\ttargetRay.visible = ( inputPose !== null );\n\n\t\t}\n\n\t\tif ( grip !== null ) {\n\n\t\t\tgrip.visible = ( gripPose !== null );\n\n\t\t}\n\n\t\tif ( hand !== null ) {\n\n\t\t\thand.visible = ( handPose !== null );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// private method\n\n\t_getHandJoint( hand, inputjoint ) {\n\n\t\tif ( hand.joints[ inputjoint.jointName ] === undefined ) {\n\n\t\t\tconst joint = new Group();\n\t\t\tjoint.matrixAutoUpdate = false;\n\t\t\tjoint.visible = false;\n\t\t\thand.joints[ inputjoint.jointName ] = joint;\n\n\t\t\thand.add( joint );\n\n\t\t}\n\n\t\treturn hand.joints[ inputjoint.jointName ];\n\n\t}\n\n}\n\n/**\n * This class can be used to define an exponential squared fog,\n * which gives a clear view near the camera and a faster than exponentially\n * densening fog farther from the camera.\n *\n * ```js\n * const scene = new THREE.Scene();\n * scene.fog = new THREE.FogExp2( 0xcccccc, 0.002 );\n * ```\n */\nclass FogExp2 {\n\n\t/**\n\t * Constructs a new fog.\n\t *\n\t * @param {number|Color} color - The fog's color.\n\t * @param {number} [density=0.00025] - Defines how fast the fog will grow dense.\n\t */\n\tconstructor( color, density = 0.00025 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFogExp2 = true;\n\n\t\t/**\n\t\t * The name of the fog.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The fog's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t *  Defines how fast the fog will grow dense.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.00025\n\t\t */\n\t\tthis.density = density;\n\n\t}\n\n\t/**\n\t * Returns a new fog with copied values from this instance.\n\t *\n\t * @return {FogExp2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new FogExp2( this.color, this.density );\n\n\t}\n\n\t/**\n\t * Serializes the fog into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized fog\n\t */\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'FogExp2',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tdensity: this.density\n\t\t};\n\n\t}\n\n}\n\n/**\n * This class can be used to define a linear fog that grows linearly denser\n * with the distance.\n *\n * ```js\n * const scene = new THREE.Scene();\n * scene.fog = new THREE.Fog( 0xcccccc, 10, 15 );\n * ```\n */\nclass Fog {\n\n\t/**\n\t * Constructs a new fog.\n\t *\n\t * @param {number|Color} color - The fog's color.\n\t * @param {number} [near=1] - The minimum distance to start applying fog.\n\t * @param {number} [far=1000] - The maximum distance at which fog stops being calculated and applied.\n\t */\n\tconstructor( color, near = 1, far = 1000 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isFog = true;\n\n\t\t/**\n\t\t * The name of the fog.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.name = '';\n\n\t\t/**\n\t\t * The fog's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * The minimum distance to start applying fog. Objects that are less than\n\t\t * `near` units from the active camera won't be affected by fog.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The maximum distance at which fog stops being calculated and applied.\n\t\t * Objects that are more than `far` units away from the active camera won't\n\t\t * be affected by fog.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1000\n\t\t */\n\t\tthis.far = far;\n\n\t}\n\n\t/**\n\t * Returns a new fog with copied values from this instance.\n\t *\n\t * @return {Fog} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Fog( this.color, this.near, this.far );\n\n\t}\n\n\t/**\n\t * Serializes the fog into JSON.\n\t *\n\t * @param {?(Object|string)} meta - An optional value holding meta information about the serialization.\n\t * @return {Object} A JSON object representing the serialized fog\n\t */\n\ttoJSON( /* meta */ ) {\n\n\t\treturn {\n\t\t\ttype: 'Fog',\n\t\t\tname: this.name,\n\t\t\tcolor: this.color.getHex(),\n\t\t\tnear: this.near,\n\t\t\tfar: this.far\n\t\t};\n\n\t}\n\n}\n\n/**\n * Scenes allow you to set up what is to be rendered and where by three.js.\n * This is where you place 3D objects like meshes, lines or lights.\n *\n * @augments Object3D\n */\nclass Scene extends Object3D {\n\n\t/**\n\t * Constructs a new scene.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isScene = true;\n\n\t\tthis.type = 'Scene';\n\n\t\t/**\n\t\t * Defines the background of the scene. Valid inputs are:\n\t\t *\n\t\t * - A color for defining a uniform colored background.\n\t\t * - A texture for defining a (flat) textured background.\n\t\t * - Cube textures or equirectangular textures for defining a skybox.\n\t\t *\n\t\t * @type {?(Color|Texture)}\n\t\t * @default null\n\t\t */\n\t\tthis.background = null;\n\n\t\t/**\n\t\t * Sets the environment map for all physical materials in the scene. However,\n\t\t * it's not possible to overwrite an existing texture assigned to the `envMap`\n\t\t * material property.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.environment = null;\n\n\t\t/**\n\t\t * A fog instance defining the type of fog that affects everything\n\t\t * rendered in the scene.\n\t\t *\n\t\t * @type {?(Fog|FogExp2)}\n\t\t * @default null\n\t\t */\n\t\tthis.fog = null;\n\n\t\t/**\n\t\t * Sets the blurriness of the background. Only influences environment maps\n\t\t * assigned to {@link Scene#background}. Valid input is a float between `0`\n\t\t * and `1`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.backgroundBlurriness = 0;\n\n\t\t/**\n\t\t * Attenuates the color of the background. Only applies to background textures.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.backgroundIntensity = 1;\n\n\t\t/**\n\t\t * The rotation of the background in radians. Only influences environment maps\n\t\t * assigned to {@link Scene#background}.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.backgroundRotation = new Euler();\n\n\t\t/**\n\t\t * Attenuates the color of the environment. Only influences environment maps\n\t\t * assigned to {@link Scene#environment}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.environmentIntensity = 1;\n\n\t\t/**\n\t\t * The rotation of the environment map in radians. Only influences physical materials\n\t\t * in the scene when {@link Scene#environment} is used.\n\t\t *\n\t\t * @type {Euler}\n\t\t * @default (0,0,0)\n\t\t */\n\t\tthis.environmentRotation = new Euler();\n\n\t\t/**\n\t\t * Forces everything in the scene to be rendered with the defined material.\n\t\t *\n\t\t * @type {?Material}\n\t\t * @default null\n\t\t */\n\t\tthis.overrideMaterial = null;\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.background !== null ) this.background = source.background.clone();\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\n\n\t\tthis.backgroundBlurriness = source.backgroundBlurriness;\n\t\tthis.backgroundIntensity = source.backgroundIntensity;\n\t\tthis.backgroundRotation.copy( source.backgroundRotation );\n\n\t\tthis.environmentIntensity = source.environmentIntensity;\n\t\tthis.environmentRotation.copy( source.environmentRotation );\n\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\n\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\n\n\t\tif ( this.backgroundBlurriness > 0 ) data.object.backgroundBlurriness = this.backgroundBlurriness;\n\t\tif ( this.backgroundIntensity !== 1 ) data.object.backgroundIntensity = this.backgroundIntensity;\n\t\tdata.object.backgroundRotation = this.backgroundRotation.toArray();\n\n\t\tif ( this.environmentIntensity !== 1 ) data.object.environmentIntensity = this.environmentIntensity;\n\t\tdata.object.environmentRotation = this.environmentRotation.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InterleavedBuffer {\n\n\tconstructor( array, stride ) {\n\n\t\tthis.isInterleavedBuffer = true;\n\n\t\tthis.array = array;\n\t\tthis.stride = stride;\n\t\tthis.count = array !== undefined ? array.length / stride : 0;\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.updateRanges = [];\n\n\t\tthis.version = 0;\n\n\t\tthis.uuid = generateUUID();\n\n\t}\n\n\tonUploadCallback() {}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\taddUpdateRange( start, count ) {\n\n\t\tthis.updateRanges.push( { start, count } );\n\n\t}\n\n\tclearUpdateRanges() {\n\n\t\tthis.updateRanges.length = 0;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.array = new source.array.constructor( source.array );\n\t\tthis.count = source.count;\n\t\tthis.stride = source.stride;\n\t\tthis.usage = source.usage;\n\n\t\treturn this;\n\n\t}\n\n\tcopyAt( index1, attribute, index2 ) {\n\n\t\tindex1 *= this.stride;\n\t\tindex2 *= attribute.stride;\n\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\n\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tset( value, offset = 0 ) {\n\n\t\tthis.array.set( value, offset );\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\n\n\t\t}\n\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\n\n\t\tconst ib = new this.constructor( array, this.stride );\n\t\tib.setUsage( this.usage );\n\n\t\treturn ib;\n\n\t}\n\n\tonUpload( callback ) {\n\n\t\tthis.onUploadCallback = callback;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data.arrayBuffers === undefined ) {\n\n\t\t\tdata.arrayBuffers = {};\n\n\t\t}\n\n\t\t// generate UUID for array buffer if necessary\n\n\t\tif ( this.array.buffer._uuid === undefined ) {\n\n\t\t\tthis.array.buffer._uuid = generateUUID();\n\n\t\t}\n\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\n\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.from( new Uint32Array( this.array.buffer ) );\n\n\t\t}\n\n\t\t//\n\n\t\treturn {\n\t\t\tuuid: this.uuid,\n\t\t\tbuffer: this.array.buffer._uuid,\n\t\t\ttype: this.array.constructor.name,\n\t\t\tstride: this.stride\n\t\t};\n\n\t}\n\n}\n\nconst _vector$7 = /*@__PURE__*/ new Vector3();\n\nclass InterleavedBufferAttribute {\n\n\tconstructor( interleavedBuffer, itemSize, offset, normalized = false ) {\n\n\t\tthis.isInterleavedBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.data = interleavedBuffer;\n\t\tthis.itemSize = itemSize;\n\t\tthis.offset = offset;\n\n\t\tthis.normalized = normalized;\n\n\t}\n\n\tget count() {\n\n\t\treturn this.data.count;\n\n\t}\n\n\tget array() {\n\n\t\treturn this.data.array;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tthis.data.needsUpdate = value;\n\n\t}\n\n\tapplyMatrix4( m ) {\n\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.applyMatrix4( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tapplyNormalMatrix( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.applyNormalMatrix( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttransformDirection( m ) {\n\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\n\n\t\t\t_vector$7.fromBufferAttribute( this, i );\n\n\t\t\t_vector$7.transformDirection( m );\n\n\t\t\tthis.setXYZ( i, _vector$7.x, _vector$7.y, _vector$7.z );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tgetComponent( index, component ) {\n\n\t\tlet value = this.array[ index * this.data.stride + this.offset + component ];\n\n\t\tif ( this.normalized ) value = denormalize( value, this.array );\n\n\t\treturn value;\n\n\t}\n\n\tsetComponent( index, component, value ) {\n\n\t\tif ( this.normalized ) value = normalize( value, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + component ] = value;\n\n\t\treturn this;\n\n\t}\n\n\tsetX( index, x ) {\n\n\t\tif ( this.normalized ) x = normalize( x, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\n\n\t\treturn this;\n\n\t}\n\n\tsetY( index, y ) {\n\n\t\tif ( this.normalized ) y = normalize( y, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetZ( index, z ) {\n\n\t\tif ( this.normalized ) z = normalize( z, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetW( index, w ) {\n\n\t\tif ( this.normalized ) w = normalize( w, this.array );\n\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tgetX( index ) {\n\n\t\tlet x = this.data.array[ index * this.data.stride + this.offset ];\n\n\t\tif ( this.normalized ) x = denormalize( x, this.array );\n\n\t\treturn x;\n\n\t}\n\n\tgetY( index ) {\n\n\t\tlet y = this.data.array[ index * this.data.stride + this.offset + 1 ];\n\n\t\tif ( this.normalized ) y = denormalize( y, this.array );\n\n\t\treturn y;\n\n\t}\n\n\tgetZ( index ) {\n\n\t\tlet z = this.data.array[ index * this.data.stride + this.offset + 2 ];\n\n\t\tif ( this.normalized ) z = denormalize( z, this.array );\n\n\t\treturn z;\n\n\t}\n\n\tgetW( index ) {\n\n\t\tlet w = this.data.array[ index * this.data.stride + this.offset + 3 ];\n\n\t\tif ( this.normalized ) w = denormalize( w, this.array );\n\n\t\treturn w;\n\n\t}\n\n\tsetXY( index, x, y ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZ( index, x, y, z ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\n\t\treturn this;\n\n\t}\n\n\tsetXYZW( index, x, y, z, w ) {\n\n\t\tindex = index * this.data.stride + this.offset;\n\n\t\tif ( this.normalized ) {\n\n\t\t\tx = normalize( x, this.array );\n\t\t\ty = normalize( y, this.array );\n\t\t\tz = normalize( z, this.array );\n\t\t\tw = normalize( w, this.array );\n\n\t\t}\n\n\t\tthis.data.array[ index + 0 ] = x;\n\t\tthis.data.array[ index + 1 ] = y;\n\t\tthis.data.array[ index + 2 ] = z;\n\t\tthis.data.array[ index + 3 ] = w;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\n\n\t\t} else {\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\n\n\t\t\t}\n\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\n\n\t\t}\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tif ( data === undefined ) {\n\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );\n\n\t\t\tconst array = [];\n\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\n\n\t\t\t\tconst index = i * this.data.stride + this.offset;\n\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\n\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// de-interleave data and save it as an ordinary buffer attribute for now\n\n\t\t\treturn {\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\ttype: this.array.constructor.name,\n\t\t\t\tarray: array,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t// save as true interleaved attribute\n\n\t\t\tif ( data.interleavedBuffers === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers = {};\n\n\t\t\t}\n\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\n\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\n\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tisInterleavedBufferAttribute: true,\n\t\t\t\titemSize: this.itemSize,\n\t\t\t\tdata: this.data.uuid,\n\t\t\t\toffset: this.offset,\n\t\t\t\tnormalized: this.normalized\n\t\t\t};\n\n\t\t}\n\n\t}\n\n}\n\nclass SpriteMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isSpriteMaterial = true;\n\n\t\tthis.type = 'SpriteMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.rotation = 0;\n\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.rotation = source.rotation;\n\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nlet _geometry;\n\nconst _intersectPoint = /*@__PURE__*/ new Vector3();\nconst _worldScale = /*@__PURE__*/ new Vector3();\nconst _mvPosition = /*@__PURE__*/ new Vector3();\n\nconst _alignedPosition = /*@__PURE__*/ new Vector2();\nconst _rotatedPosition = /*@__PURE__*/ new Vector2();\nconst _viewWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _vA = /*@__PURE__*/ new Vector3();\nconst _vB = /*@__PURE__*/ new Vector3();\nconst _vC = /*@__PURE__*/ new Vector3();\n\nconst _uvA = /*@__PURE__*/ new Vector2();\nconst _uvB = /*@__PURE__*/ new Vector2();\nconst _uvC = /*@__PURE__*/ new Vector2();\n\n/**\n * A sprite is a plane that always faces towards the camera, generally with a\n * partially transparent texture applied.\n *\n * Sprites do not cast shadows, setting {@link Object3D#castShadow} to `true` will\n * have no effect.\n *\n * ```js\n * const map = new THREE.TextureLoader().load( 'sprite.png' );\n * const material = new THREE.SpriteMaterial( { map: map } );\n *\n * const sprite = new THREE.Sprite( material );\n * scene.add( sprite );\n * ```\n *\n * @augments Object3D\n */\nclass Sprite extends Object3D {\n\n\t/**\n\t * Constructs a new sprite.\n\t *\n\t * @param {SpriteMaterial} [material] - The sprite material.\n\t */\n\tconstructor( material = new SpriteMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSprite = true;\n\n\t\tthis.type = 'Sprite';\n\n\t\tif ( _geometry === undefined ) {\n\n\t\t\t_geometry = new BufferGeometry();\n\n\t\t\tconst float32Array = new Float32Array( [\n\t\t\t\t-0.5, -0.5, 0, 0, 0,\n\t\t\t\t0.5, -0.5, 0, 1, 0,\n\t\t\t\t0.5, 0.5, 0, 1, 1,\n\t\t\t\t-0.5, 0.5, 0, 0, 1\n\t\t\t] );\n\n\t\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\n\n\t\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\n\t\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\n\t\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\n\n\t\t}\n\n\t\t/**\n\t\t * The sprite geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = _geometry;\n\n\t\t/**\n\t\t * The sprite material.\n\t\t *\n\t\t * @type {SpriteMaterial}\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * The sprite's anchor point, and the point around which the sprite rotates.\n\t\t * A value of `(0.5, 0.5)` corresponds to the midpoint of the sprite. A value\n\t\t * of `(0, 0)` corresponds to the lower left corner of the sprite.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (0.5,0.5)\n\t\t */\n\t\tthis.center = new Vector2( 0.5, 0.5 );\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this sprite.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array<Object>} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tif ( raycaster.camera === null ) {\n\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\n\n\t\t}\n\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\n\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\n\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\n\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\n\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\n\n\t\t}\n\n\t\tconst rotation = this.material.rotation;\n\t\tlet sin, cos;\n\n\t\tif ( rotation !== 0 ) {\n\n\t\t\tcos = Math.cos( rotation );\n\t\t\tsin = Math.sin( rotation );\n\n\t\t}\n\n\t\tconst center = this.center;\n\n\t\ttransformVertex( _vA.set( -0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vB.set( 0.5, -0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\ttransformVertex( _vC.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\n\t\t_uvA.set( 0, 0 );\n\t\t_uvB.set( 1, 0 );\n\t\t_uvC.set( 1, 1 );\n\n\t\t// check first triangle\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA, _vB, _vC, false, _intersectPoint );\n\n\t\tif ( intersect === null ) {\n\n\t\t\t// check second triangle\n\t\t\ttransformVertex( _vB.set( -0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\n\t\t\t_uvB.set( 0, 1 );\n\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA, _vC, _vB, false, _intersectPoint );\n\t\t\tif ( intersect === null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tpoint: _intersectPoint.clone(),\n\t\t\tuv: Triangle.getInterpolation( _intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() ),\n\t\t\tface: null,\n\t\t\tobject: this\n\n\t\t} );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\n\n\t\tthis.material = source.material;\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\n\n\t// compute position in camera space\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\n\n\t// to check if rotation is not zero\n\tif ( sin !== undefined ) {\n\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\n\n\t} else {\n\n\t\t_rotatedPosition.copy( _alignedPosition );\n\n\t}\n\n\n\tvertexPosition.copy( mvPosition );\n\tvertexPosition.x += _rotatedPosition.x;\n\tvertexPosition.y += _rotatedPosition.y;\n\n\t// transform to world space\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\n\n}\n\nconst _v1$2 = /*@__PURE__*/ new Vector3();\nconst _v2$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * A component for providing a basic Level of Detail (LOD) mechanism.\n *\n * Every LOD level is associated with an object, and rendering can be switched\n * between them at the distances specified. Typically you would create, say,\n * three meshes, one for far away (low detail), one for mid range (medium\n * detail) and one for close up (high detail).\n *\n * ```js\n * const lod = new THREE.LOD();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n *\n * //Create spheres with 3 levels of detail and create new LOD levels for them\n * for( let i = 0; i < 3; i++ ) {\n *\n * \tconst geometry = new THREE.IcosahedronGeometry( 10, 3 - i );\n * \tconst mesh = new THREE.Mesh( geometry, material );\n * \tlod.addLevel( mesh, i * 75 );\n *\n * }\n *\n * scene.add( lod );\n * ```\n *\n * @augments Object3D\n */\nclass LOD extends Object3D {\n\n\t/**\n\t * Constructs a new LOD.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLOD = true;\n\n\t\t/**\n\t\t * The current LOD index.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis._currentLevel = 0;\n\n\t\tthis.type = 'LOD';\n\n\t\tObject.defineProperties( this, {\n\t\t\t/**\n\t\t\t * This array holds the LOD levels.\n\t\t\t *\n\t\t\t * @name LOD#levels\n\t\t\t * @type {Array<{object:Object3D,distance:number,hysteresis:number}>}\n\t\t\t */\n\t\t\tlevels: {\n\t\t\t\tenumerable: true,\n\t\t\t\tvalue: []\n\t\t\t}\n\t\t} );\n\n\t\t/**\n\t\t * Whether the LOD object is updated automatically by the renderer per frame\n\t\t * or not. If set to `false`, you have to call {@link LOD#update} in the\n\t\t * render loop by yourself.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoUpdate = true;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tconst levels = source.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tthis.addLevel( level.object.clone(), level.distance, level.hysteresis );\n\n\t\t}\n\n\t\tthis.autoUpdate = source.autoUpdate;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds a mesh that will display at a certain distance and greater. Typically\n\t * the further away the distance, the lower the detail on the mesh.\n\t *\n\t * @param {Object3D} object - The 3D object to display at this level.\n\t * @param {number} [distance=0] - The distance at which to display this level of detail.\n\t * @param {number} [hysteresis=0] - Threshold used to avoid flickering at LOD boundaries, as a fraction of distance.\n\t * @return {LOD} A reference to this instance.\n\t */\n\taddLevel( object, distance = 0, hysteresis = 0 ) {\n\n\t\tdistance = Math.abs( distance );\n\n\t\tconst levels = this.levels;\n\n\t\tlet l;\n\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\n\n\t\t\tif ( distance < levels[ l ].distance ) {\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlevels.splice( l, 0, { distance: distance, hysteresis: hysteresis, object: object } );\n\n\t\tthis.add( object );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Removes an existing level, based on the distance from the camera.\n\t * Returns `true` when the level has been removed. Otherwise `false`.\n\t *\n\t * @param {number} distance - Distance of the level to remove.\n\t * @return {boolean} Whether the level has been removed or not.\n\t */\n\tremoveLevel( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0; i < levels.length; i ++ ) {\n\n\t\t\tif ( levels[ i ].distance === distance ) {\n\n\t\t\t\tconst removedElements = levels.splice( i, 1 );\n\t\t\t\tthis.remove( removedElements[ 0 ].object );\n\n\t\t\t\treturn true;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Returns the currently active LOD level index.\n\t *\n\t * @return {number} The current active LOD level index.\n\t */\n\tgetCurrentLevel() {\n\n\t\treturn this._currentLevel;\n\n\t}\n\n\t/**\n\t * Returns a reference to the first 3D object that is greater than\n\t * the given distance.\n\t *\n\t * @param {number} distance - The LOD distance.\n\t * @return {Object3D|null} The found 3D object. `null` if no 3D object has been found.\n\t */\n\tgetObjectForDistance( distance ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance < levelDistance ) {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn levels[ i - 1 ].object;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this LOD.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array<Object>} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 0 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$2 );\n\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates the LOD by computing which LOD level should be visible according\n\t * to the current distance of the given camera.\n\t *\n\t * @param {Camera} camera - The camera the scene is renderd with.\n\t */\n\tupdate( camera ) {\n\n\t\tconst levels = this.levels;\n\n\t\tif ( levels.length > 1 ) {\n\n\t\t\t_v1$2.setFromMatrixPosition( camera.matrixWorld );\n\t\t\t_v2$1.setFromMatrixPosition( this.matrixWorld );\n\n\t\t\tconst distance = _v1$2.distanceTo( _v2$1 ) / camera.zoom;\n\n\t\t\tlevels[ 0 ].object.visible = true;\n\n\t\t\tlet i, l;\n\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\n\n\t\t\t\tlet levelDistance = levels[ i ].distance;\n\n\t\t\t\tif ( levels[ i ].object.visible ) {\n\n\t\t\t\t\tlevelDistance -= levelDistance * levels[ i ].hysteresis;\n\n\t\t\t\t}\n\n\t\t\t\tif ( distance >= levelDistance ) {\n\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\n\t\t\t\t\tlevels[ i ].object.visible = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._currentLevel = i - 1;\n\n\t\t\tfor ( ; i < l; i ++ ) {\n\n\t\t\t\tlevels[ i ].object.visible = false;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\n\n\t\tdata.object.levels = [];\n\n\t\tconst levels = this.levels;\n\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\n\n\t\t\tconst level = levels[ i ];\n\n\t\t\tdata.object.levels.push( {\n\t\t\t\tobject: level.object.uuid,\n\t\t\t\tdistance: level.distance,\n\t\t\t\thysteresis: level.hysteresis\n\t\t\t} );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _basePosition = /*@__PURE__*/ new Vector3();\n\nconst _skinIndex = /*@__PURE__*/ new Vector4();\nconst _skinWeight = /*@__PURE__*/ new Vector4();\n\nconst _vector3 = /*@__PURE__*/ new Vector3();\nconst _matrix4 = /*@__PURE__*/ new Matrix4();\nconst _vertex = /*@__PURE__*/ new Vector3();\n\nconst _sphere$5 = /*@__PURE__*/ new Sphere();\nconst _inverseMatrix$2 = /*@__PURE__*/ new Matrix4();\nconst _ray$2 = /*@__PURE__*/ new Ray();\n\n/**\n * A mesh that has a {@link Skeleton} that can then be used to animate the\n * vertices of the geometry with skinning/skeleton animation.\n *\n * Next to a valid skeleton, the skinned mesh requires skin indices and weights\n * as buffer attributes in its geometry. These attribute define which bones affect a single\n * vertex to a certain extend.\n *\n * Typically skinned meshes are not created manually but loaders like {@link GLTFLoader}\n * or {@link FBXLoader } import respective models.\n *\n * @augments Mesh\n */\nclass SkinnedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new skinned mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array<Material>} [material] - The mesh material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSkinnedMesh = true;\n\n\t\tthis.type = 'SkinnedMesh';\n\n\t\t/**\n\t\t * `AttachedBindMode` means the skinned mesh shares the same world space as the skeleton.\n\t\t * This is not true when using `DetachedBindMode` which is useful when sharing a skeleton\n\t\t * across multiple skinned meshes.\n\t\t *\n\t\t * @type {(AttachedBindMode|DetachedBindMode)}\n\t\t * @default AttachedBindMode\n\t\t */\n\t\tthis.bindMode = AttachedBindMode;\n\n\t\t/**\n\t\t * The base matrix that is used for the bound bone transforms.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.bindMatrix = new Matrix4();\n\n\t\t/**\n\t\t * The base matrix that is used for resetting the bound bone transforms.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.bindMatrixInverse = new Matrix4();\n\n\t\t/**\n\t\t * The bounding box of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the skinned mesh. Can be computed via {@link SkinnedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the skinned mesh, and updates {@link SkinnedMesh#boundingBox}.\n\t * The bounding box is not automatically computed by the engine; this method must be called by your app.\n\t * If the skinned mesh is animated, the bounding box should be recomputed per frame in order to reflect\n\t * the current animation state.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingBox.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the skinned mesh, and updates {@link SkinnedMesh#boundingSphere}.\n\t * The bounding sphere is automatically computed by the engine once when it is needed, e.g., for ray casting\n\t * and view frustum culling. If the skinned mesh is animated, the bounding sphere should be recomputed\n\t * per frame in order to reflect the current animation state.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tconst positionAttribute = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0; i < positionAttribute.count; i ++ ) {\n\n\t\t\tthis.getVertexPosition( i, _vertex );\n\t\t\tthis.boundingSphere.expandByPoint( _vertex );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.bindMode = source.bindMode;\n\t\tthis.bindMatrix.copy( source.bindMatrix );\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\n\n\t\tthis.skeleton = source.skeleton;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst material = this.material;\n\t\tconst matrixWorld = this.matrixWorld;\n\n\t\tif ( material === undefined ) return;\n\n\t\t// test with bounding sphere in world space\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$5.copy( this.boundingSphere );\n\t\t_sphere$5.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$5 ) === false ) return;\n\n\t\t// convert ray to local space of skinned mesh\n\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\n\n\t\t// test with bounding box in local space\n\n\t\tif ( this.boundingBox !== null ) {\n\n\t\t\tif ( _ray$2.intersectsBox( this.boundingBox ) === false ) return;\n\n\t\t}\n\n\t\t// test for intersections with geometry\n\n\t\tthis._computeIntersections( raycaster, intersects, _ray$2 );\n\n\t}\n\n\tgetVertexPosition( index, target ) {\n\n\t\tsuper.getVertexPosition( index, target );\n\n\t\tthis.applyBoneTransform( index, target );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Binds the given skeleton to the skinned mesh.\n\t *\n\t * @param {Skeleton} skeleton - The skeleton to bind.\n\t * @param {Matrix4} [bindMatrix] - The bind matrix. If no bind matrix is provided,\n\t * the skinned mesh's world matrix will be used instead.\n\t */\n\tbind( skeleton, bindMatrix ) {\n\n\t\tthis.skeleton = skeleton;\n\n\t\tif ( bindMatrix === undefined ) {\n\n\t\t\tthis.updateMatrixWorld( true );\n\n\t\t\tthis.skeleton.calculateInverses();\n\n\t\t\tbindMatrix = this.matrixWorld;\n\n\t\t}\n\n\t\tthis.bindMatrix.copy( bindMatrix );\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\n\n\t}\n\n\t/**\n\t * This method sets the skinned mesh in the rest pose).\n\t */\n\tpose() {\n\n\t\tthis.skeleton.pose();\n\n\t}\n\n\t/**\n\t * Normalizes the skin weights which are defined as a buffer attribute\n\t * in the skinned mesh's geometry.\n\t */\n\tnormalizeSkinWeights() {\n\n\t\tconst vector = new Vector4();\n\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\n\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\n\n\t\t\tvector.fromBufferAttribute( skinWeight, i );\n\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\n\n\t\t\tif ( scale !== Infinity ) {\n\n\t\t\t\tvector.multiplyScalar( scale );\n\n\t\t\t} else {\n\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\n\n\t\t\t}\n\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\n\n\t\t}\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.bindMode === AttachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\n\n\t\t} else if ( this.bindMode === DetachedBindMode ) {\n\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies the bone transform associated with the given index to the given\n\t * vertex position. Returns the updated vector.\n\t *\n\t * @param {number} index - The vertex index.\n\t * @param {Vector3} target - The target object that is used to store the method's result.\n\t * the skinned mesh's world matrix will be used instead.\n\t * @return {Vector3} The updated vertex position.\n\t */\n\tapplyBoneTransform( index, target ) {\n\n\t\tconst skeleton = this.skeleton;\n\t\tconst geometry = this.geometry;\n\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\n\n\t\t_basePosition.copy( target ).applyMatrix4( this.bindMatrix );\n\n\t\ttarget.set( 0, 0, 0 );\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tconst weight = _skinWeight.getComponent( i );\n\n\t\t\tif ( weight !== 0 ) {\n\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\n\n\t\t\t\t_matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\n\n\t\t\t\ttarget.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\n\n\t}\n\n}\n\n/**\n * A bone which is part of a {@link Skeleton}. The skeleton in turn is used by\n * the {@link SkinnedMesh}.\n *\n * ```js\n * const root = new THREE.Bone();\n * const child = new THREE.Bone();\n *\n * root.add( child );\n * child.position.y = 5;\n * ```\n *\n * @augments Object3D\n */\nclass Bone extends Object3D {\n\n\t/**\n\t * Constructs a new bone.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBone = true;\n\n\t\tthis.type = 'Bone';\n\n\t}\n\n}\n\nclass DataTexture extends Texture {\n\n\tconstructor( data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isDataTexture = true;\n\n\t\tthis.image = { data: data, width: width, height: height };\n\n\t\tthis.generateMipmaps = false;\n\t\tthis.flipY = false;\n\t\tthis.unpackAlignment = 1;\n\n\t}\n\n}\n\nconst _offsetMatrix = /*@__PURE__*/ new Matrix4();\nconst _identityMatrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * Class for representing the armatures in `three.js`. The skeleton\n * is defined by a hierarchy of bones.\n *\n * ```js\n * const bones = [];\n *\n * const shoulder = new THREE.Bone();\n * const elbow = new THREE.Bone();\n * const hand = new THREE.Bone();\n *\n * shoulder.add( elbow );\n * elbow.add( hand );\n *\n * bones.push( shoulder , elbow, hand);\n *\n * shoulder.position.y = -5;\n * elbow.position.y = 0;\n * hand.position.y = 5;\n *\n * const armSkeleton = new THREE.Skeleton( bones );\n * ```\n */\nclass Skeleton {\n\n\t/**\n\t * Constructs a new skeleton.\n\t *\n\t * @param {Array<Bone>} [bones] - An array of bones.\n\t * @param {Array<Matrix4>} [boneInverses] - An array of bone inverse matrices.\n\t * If not provided, these matrices will be computed automatically via {@link Skeleton#calculateInverses}.\n\t */\n\tconstructor( bones = [], boneInverses = [] ) {\n\n\t\tthis.uuid = generateUUID();\n\n\t\t/**\n\t\t * An array of bones defining the skeleton.\n\t\t *\n\t\t * @type {Array<Bone>}\n\t\t */\n\t\tthis.bones = bones.slice( 0 );\n\n\t\t/**\n\t\t * An array of bone inverse matrices.\n\t\t *\n\t\t * @type {Array<Matrix4>}\n\t\t */\n\t\tthis.boneInverses = boneInverses;\n\n\t\t/**\n\t\t * An array buffer holding the bone data.\n\t\t * Input data for {@link Skeleton#boneTexture}.\n\t\t *\n\t\t * @type {?Float32Array}\n\t\t * @default null\n\t\t */\n\t\tthis.boneMatrices = null;\n\n\t\t/**\n\t\t * A texture holding the bone data for use\n\t\t * in the vertex shader.\n\t\t *\n\t\t * @type {?DataTexture}\n\t\t * @default null\n\t\t */\n\t\tthis.boneTexture = null;\n\n\t\tthis.init();\n\n\t}\n\n\t/**\n\t * Initializes the skeleton. This method gets automatically called by the constructor\n\t * but depending on how the skeleton is created it might be necessary to call this method\n\t * manually.\n\t */\n\tinit() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\n\n\t\t// calculate inverse bone matrices if necessary\n\n\t\tif ( boneInverses.length === 0 ) {\n\n\t\t\tthis.calculateInverses();\n\n\t\t} else {\n\n\t\t\t// handle special case\n\n\t\t\tif ( bones.length !== boneInverses.length ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\n\n\t\t\t\tthis.boneInverses = [];\n\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bone inverse matrices. This method resets {@link Skeleton#boneInverses}\n\t * and fills it with new matrices.\n\t */\n\tcalculateInverses() {\n\n\t\tthis.boneInverses.length = 0;\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst inverse = new Matrix4();\n\n\t\t\tif ( this.bones[ i ] ) {\n\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\n\n\t\t\t}\n\n\t\t\tthis.boneInverses.push( inverse );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resets the skeleton to the base pose.\n\t */\n\tpose() {\n\n\t\t// recover the bind-time world matrices\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\t// compute the local matrices, positions, rotations and scales\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone ) {\n\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\n\n\t\t\t\t}\n\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resets the skeleton to the base pose.\n\t */\n\tupdate() {\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\t\tconst boneMatrices = this.boneMatrices;\n\t\tconst boneTexture = this.boneTexture;\n\n\t\t// flatten bone matrices to array\n\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\n\n\t\t\t// compute the offset between the current and the original transform\n\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\n\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\n\n\t\t}\n\n\t\tif ( boneTexture !== null ) {\n\n\t\t\tboneTexture.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Returns a new skeleton with copied values from this instance.\n\t *\n\t * @return {Skeleton} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new Skeleton( this.bones, this.boneInverses );\n\n\t}\n\n\t/**\n\t * Computes a data texture for passing bone data to the vertex shader.\n\t *\n\t * @return {Skeleton} A reference of this instance.\n\t */\n\tcomputeBoneTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t//  with  8x8  pixel texture max   16 bones * 4 pixels =  (8 * 8)\n\t\t//       16x16 pixel texture max   64 bones * 4 pixels = (16 * 16)\n\t\t//       32x32 pixel texture max  256 bones * 4 pixels = (32 * 32)\n\t\t//       64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this.bones.length * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tboneMatrices.set( this.boneMatrices ); // copy current values\n\n\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\n\t\tboneTexture.needsUpdate = true;\n\n\t\tthis.boneMatrices = boneMatrices;\n\t\tthis.boneTexture = boneTexture;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Searches through the skeleton's bone array and returns the first with a\n\t * matching name.\n\t *\n\t * @param {string} name - The name of the bone.\n\t * @return {Bone|undefined} The found bone. `undefined` if no bone has been found.\n\t */\n\tgetBoneByName( name ) {\n\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\n\n\t\t\tconst bone = this.bones[ i ];\n\n\t\t\tif ( bone.name === name ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose( ) {\n\n\t\tif ( this.boneTexture !== null ) {\n\n\t\t\tthis.boneTexture.dispose();\n\n\t\t\tthis.boneTexture = null;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Setups the skeleton by the given JSON and bones.\n\t *\n\t * @param {Object} json - The skeleton as serialized JSON.\n\t * @param {Array<Bone>} bones - An array of bones.\n\t * @return {Skeleton} A reference of this instance.\n\t */\n\tfromJSON( json, bones ) {\n\n\t\tthis.uuid = json.uuid;\n\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\n\n\t\t\tconst uuid = json.bones[ i ];\n\t\t\tlet bone = bones[ uuid ];\n\n\t\t\tif ( bone === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\n\t\t\t\tbone = new Bone();\n\n\t\t\t}\n\n\t\t\tthis.bones.push( bone );\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\n\n\t\t}\n\n\t\tthis.init();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the skeleton into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized skeleton.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Skeleton',\n\t\t\t\tgenerator: 'Skeleton.toJSON'\n\t\t\t},\n\t\t\tbones: [],\n\t\t\tboneInverses: []\n\t\t};\n\n\t\tdata.uuid = this.uuid;\n\n\t\tconst bones = this.bones;\n\t\tconst boneInverses = this.boneInverses;\n\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\t\t\tdata.bones.push( bone.uuid );\n\n\t\t\tconst boneInverse = boneInverses[ i ];\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass InstancedBufferAttribute extends BufferAttribute {\n\n\tconstructor( array, itemSize, normalized, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, itemSize, normalized );\n\n\t\tthis.isInstancedBufferAttribute = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\n\n\t\tdata.isInstancedBufferAttribute = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nconst _instanceLocalMatrix = /*@__PURE__*/ new Matrix4();\nconst _instanceWorldMatrix = /*@__PURE__*/ new Matrix4();\n\nconst _instanceIntersects = [];\n\nconst _box3 = /*@__PURE__*/ new Box3();\nconst _identity = /*@__PURE__*/ new Matrix4();\nconst _mesh$1 = /*@__PURE__*/ new Mesh();\nconst _sphere$4 = /*@__PURE__*/ new Sphere();\n\n/**\n * A special version of a mesh with instanced rendering support. Use\n * this class if you have to render a large number of objects with the same\n * geometry and material(s) but with different world transformations. The usage\n * of 'InstancedMesh' will help you to reduce the number of draw calls and thus\n * improve the overall rendering performance in your application.\n *\n * @augments Mesh\n */\nclass InstancedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new instanced mesh.\n\t *\n\t * @param {BufferGeometry} [geometry] - The mesh geometry.\n\t * @param {Material|Array<Material>} [material] - The mesh material.\n\t * @param {number} count - The number of instances.\n\t */\n\tconstructor( geometry, material, count ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isInstancedMesh = true;\n\n\t\t/**\n\t\t * Represents the local transformation of all instances. You have to set its\n\t\t * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setMatrixAt}.\n\t\t *\n\t\t * @type {InstancedBufferAttribute}\n\t\t */\n\t\tthis.instanceMatrix = new InstancedBufferAttribute( new Float32Array( count * 16 ), 16 );\n\n\t\t/**\n\t\t * Represents the color of all instances. You have to set its\n\t\t * {@link BufferAttribute#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setColorAt}.\n\t\t *\n\t\t * @type {?InstancedBufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.instanceColor = null;\n\n\t\t/**\n\t\t * Represents the morph target weights of all instances. You have to set its\n\t\t * {@link Texture#needsUpdate} flag to true if you modify instanced data\n\t\t * via {@link InstancedMesh#setMorphAt}.\n\t\t *\n\t\t * @type {?InstancedBufferAttribute}\n\t\t * @default null\n\t\t */\n\t\tthis.morphTexture = null;\n\n\t\t/**\n\t\t * The number of instances.\n\t\t *\n\t\t * @type {number}\n\t\t */\n\t\tthis.count = count;\n\n\t\t/**\n\t\t * The bounding box of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the instanced mesh. Can be computed via {@link InstancedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.setMatrixAt( i, _identity );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding box of the instanced mesh, and updates {@link InstancedMesh#boundingBox}.\n\t * The bounding box is not automatically computed by the engine; this method must be called by your app.\n\t * You may need to recompute the bounding box if an instance is transformed via {@link InstancedMesh#setMatrixAt}.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( geometry.boundingBox === null ) {\n\n\t\t\tgeometry.computeBoundingBox();\n\n\t\t}\n\n\t\tthis.boundingBox.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_box3.copy( geometry.boundingBox ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingBox.union( _box3 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere of the instanced mesh, and updates {@link InstancedMesh#boundingSphere}\n\t * The engine automatically computes the bounding sphere when it is needed, e.g., for ray casting or view frustum culling.\n\t * You may need to recompute the bounding sphere if an instance is transformed via {@link InstancedMesh#setMatrixAt}.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst count = this.count;\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tif ( geometry.boundingSphere === null ) {\n\n\t\t\tgeometry.computeBoundingSphere();\n\n\t\t}\n\n\t\tthis.boundingSphere.makeEmpty();\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tthis.getMatrixAt( i, _instanceLocalMatrix );\n\n\t\t\t_sphere$4.copy( geometry.boundingSphere ).applyMatrix4( _instanceLocalMatrix );\n\n\t\t\tthis.boundingSphere.union( _sphere$4 );\n\n\t\t}\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\n\n\t\tif ( source.morphTexture !== null ) this.morphTexture = source.morphTexture.clone();\n\t\tif ( source.instanceColor !== null ) this.instanceColor = source.instanceColor.clone();\n\n\t\tthis.count = source.count;\n\n\t\tif ( source.boundingBox !== null ) this.boundingBox = source.boundingBox.clone();\n\t\tif ( source.boundingSphere !== null ) this.boundingSphere = source.boundingSphere.clone();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Gets the color of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Color} color - The target object that is used to store the method's result.\n\t */\n\tgetColorAt( index, color ) {\n\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\t/**\n\t * Gets the local transformation matrix of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Matrix4} matrix - The target object that is used to store the method's result.\n\t */\n\tgetMatrixAt( index, matrix ) {\n\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\t/**\n\t * Gets the morph target weights of the defined instance.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Mesh} object - The target object that is used to store the method's result.\n\t */\n\tgetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tconst len = objectInfluences.length + 1; // All influences + the baseInfluenceSum\n\n\t\tconst dataIndex = index * len + 1; // Skip the baseInfluenceSum at the beginning\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tobjectInfluences[ i ] = array[ dataIndex + i ];\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst raycastTimes = this.count;\n\n\t\t_mesh$1.geometry = this.geometry;\n\t\t_mesh$1.material = this.material;\n\n\t\tif ( _mesh$1.material === undefined ) return;\n\n\t\t// test with bounding sphere first\n\n\t\tif ( this.boundingSphere === null ) this.computeBoundingSphere();\n\n\t\t_sphere$4.copy( this.boundingSphere );\n\t\t_sphere$4.applyMatrix4( matrixWorld );\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$4 ) === false ) return;\n\n\t\t// now test each instance\n\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\n\n\t\t\t// calculate the world matrix for each instance\n\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\n\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\n\n\t\t\t// the mesh represents this single instance\n\n\t\t\t_mesh$1.matrixWorld = _instanceWorldMatrix;\n\n\t\t\t_mesh$1.raycast( raycaster, _instanceIntersects );\n\n\t\t\t// process the result of raycast\n\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\n\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\n\t\t\t\tintersect.instanceId = instanceId;\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_instanceIntersects.length = 0;\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the given color to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#instanceColor} to `true` after updating all the colors.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Color} color - The instance color.\n\t */\n\tsetColorAt( index, color ) {\n\n\t\tif ( this.instanceColor === null ) {\n\n\t\t\tthis.instanceColor = new InstancedBufferAttribute( new Float32Array( this.instanceMatrix.count * 3 ).fill( 1 ), 3 );\n\n\t\t}\n\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\n\n\t}\n\n\t/**\n\t * Sets the given local transformation matrix to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#instanceMatrix} to `true` after updating all the colors.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Matrix4} matrix - The the local transformation.\n\t */\n\tsetMatrixAt( index, matrix ) {\n\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\n\n\t}\n\n\t/**\n\t * Sets the morph target weights to the defined instance. Make sure you set the `needsUpdate` flag of\n\t * {@link InstancedMesh#morphTexture} to `true` after updating all the influences.\n\t *\n\t * @param {number} index - The instance index.\n\t * @param {Mesh} object -  A mesh which `morphTargetInfluences` property containing the morph target weights\n\t * of a single instance.\n\t */\n\tsetMorphAt( index, object ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\tconst len = objectInfluences.length + 1; // morphBaseInfluence + all influences\n\n\t\tif ( this.morphTexture === null ) {\n\n\t\t\tthis.morphTexture = new DataTexture( new Float32Array( len * this.count ), len, this.count, RedFormat, FloatType );\n\n\t\t}\n\n\t\tconst array = this.morphTexture.source.data.data;\n\n\t\tlet morphInfluencesSum = 0;\n\n\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t}\n\n\t\tconst morphBaseInfluence = this.geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\t\tconst dataIndex = len * index;\n\n\t\tarray[ dataIndex ] = morphBaseInfluence;\n\n\t\tarray.set( objectInfluences, dataIndex + 1 );\n\n\t}\n\n\tupdateMorphTargets() {\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\tif ( this.morphTexture !== null ) {\n\n\t\t\tthis.morphTexture.dispose();\n\t\t\tthis.morphTexture = null;\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector1 = /*@__PURE__*/ new Vector3();\nconst _vector2 = /*@__PURE__*/ new Vector3();\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\n\n/**\n * A two dimensional surface that extends infinitely in 3D space, represented\n * in [Hessian normal form]{@link http://mathworld.wolfram.com/HessianNormalForm.html}\n * by a unit length normal vector and a constant.\n */\nclass Plane {\n\n\t/**\n\t * Constructs a new plane.\n\t *\n\t * @param {Vector3} [normal=(1,0,0)] - A unit length vector defining the normal of the plane.\n\t * @param {number} [constant=0] - The signed distance from the origin to the plane.\n\t */\n\tconstructor( normal = new Vector3( 1, 0, 0 ), constant = 0 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPlane = true;\n\n\t\t/**\n\t\t * A unit length vector defining the normal of the plane.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.normal = normal;\n\n\t\t/**\n\t\t * The signed distance from the origin to the plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.constant = constant;\n\n\t}\n\n\t/**\n\t * Sets the plane components by copying the given values.\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {number} constant - The constant.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tset( normal, constant ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = constant;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane components by defining `x`, `y`, `z` as the\n\t * plane normal and `w` as the constant.\n\t *\n\t * @param {number} x - The value for the normal's x component.\n\t * @param {number} y - The value for the normal's y component.\n\t * @param {number} z - The value for the normal's z component.\n\t * @param {number} w - The constant value.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetComponents( x, y, z, w ) {\n\n\t\tthis.normal.set( x, y, z );\n\t\tthis.constant = w;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane from the given normal and coplanar point (that is a point\n\t * that lies onto the plane).\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {Vector3} point - A coplanar point.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\n\n\t\tthis.normal.copy( normal );\n\t\tthis.constant = - point.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the plane from three coplanar points. The winding order is\n\t * assumed to be counter-clockwise, and determines the direction of\n\t * the plane normal.\n\t *\n\t * @param {Vector3} a - The first coplanar point.\n\t * @param {Vector3} b - The second coplanar point.\n\t * @param {Vector3} c - The third coplanar point.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tsetFromCoplanarPoints( a, b, c ) {\n\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\n\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\n\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given plane to this instance.\n\t *\n\t * @param {Plane} plane - The plane to copy.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tcopy( plane ) {\n\n\t\tthis.normal.copy( plane.normal );\n\t\tthis.constant = plane.constant;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Normalizes the plane normal and adjusts the constant accordingly.\n\t *\n\t * @return {Plane} A reference to this plane.\n\t */\n\tnormalize() {\n\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\n\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\n\t\tthis.constant *= inverseNormalLength;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Negates both the plane normal and the constant.\n\t *\n\t * @return {Plane} A reference to this plane.\n\t */\n\tnegate() {\n\n\t\tthis.constant *= -1;\n\t\tthis.normal.negate();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the signed distance from the given point to this plane.\n\t *\n\t * @param {Vector3} point - The point to compute the distance for.\n\t * @return {number} The signed distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.normal.dot( point ) + this.constant;\n\n\t}\n\n\t/**\n\t * Returns the signed distance from the given sphere to this plane.\n\t *\n\t * @param {Sphere} sphere - The sphere to compute the distance for.\n\t * @return {number} The signed distance.\n\t */\n\tdistanceToSphere( sphere ) {\n\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\n\n\t}\n\n\t/**\n\t * Projects a the given point onto the plane.\n\t *\n\t * @param {Vector3} point - The point to project.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The projected point on the plane.\n\t */\n\tprojectPoint( point, target ) {\n\n\t\treturn target.copy( point ).addScaledVector( this.normal, - this.distanceToPoint( point ) );\n\n\t}\n\n\t/**\n\t * Returns the intersection point of the passed line and the plane. Returns\n\t * `null` if the line does not intersect. Returns the line's starting point if\n\t * the line is coplanar with the plane.\n\t *\n\t * @param {Line3} line - The line to compute the intersection for.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {?Vector3} The intersection point.\n\t */\n\tintersectLine( line, target ) {\n\n\t\tconst direction = line.delta( _vector1 );\n\n\t\tconst denominator = this.normal.dot( direction );\n\n\t\tif ( denominator === 0 ) {\n\n\t\t\t// line is coplanar, return origin\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\n\n\t\t\t\treturn target.copy( line.start );\n\n\t\t\t}\n\n\t\t\t// Unsure if this is the correct method to handle this case.\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\n\n\t\tif ( t < 0 || t > 1 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\treturn target.copy( line.start ).addScaledVector( direction, t );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given line segment intersects with (passes through) the plane.\n\t *\n\t * @param {Line3} line - The line to test.\n\t * @return {boolean} Whether the given line segment intersects with the plane or not.\n\t */\n\tintersectsLine( line ) {\n\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\n\n\t\tconst startSign = this.distanceToPoint( line.start );\n\t\tconst endSign = this.distanceToPoint( line.end );\n\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with the plane.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with the plane or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\treturn box.intersectsPlane( this );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere intersects with the plane.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the given bounding sphere intersects with the plane or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\treturn sphere.intersectsPlane( this );\n\n\t}\n\n\t/**\n\t * Returns a coplanar vector to the plane, by calculating the\n\t * projection of the normal at the origin onto the plane.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The coplanar point.\n\t */\n\tcoplanarPoint( target ) {\n\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\n\n\t}\n\n\t/**\n\t * Apply a 4x4 matrix to the plane. The matrix must be an affine, homogeneous transform.\n\t *\n\t * The optional normal matrix can be pre-computed like so:\n\t * ```js\n\t * const optionalNormalMatrix = new THREE.Matrix3().getNormalMatrix( matrix );\n\t * ```\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @param {Matrix4} [optionalNormalMatrix] - A pre-computed normal matrix.\n\t * @return {Plane} A reference to this plane.\n\t */\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\n\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\n\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\n\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\n\n\t\tthis.constant = - referencePoint.dot( normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Translates the plane by the distance defined by the given offset vector.\n\t * Note that this only affects the plane constant and will not affect the normal vector.\n\t *\n\t * @param {Vector3} offset - The offset vector.\n\t * @return {Plane} A reference to this plane.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.constant -= offset.dot( this.normal );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this plane is equal with the given one.\n\t *\n\t * @param {Plane} plane - The plane to test for equality.\n\t * @return {boolean} Whether this plane is equal with the given one.\n\t */\n\tequals( plane ) {\n\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\n\n\t}\n\n\t/**\n\t * Returns a new plane with copied values from this instance.\n\t *\n\t * @return {Plane} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _sphere$3 = /*@__PURE__*/ new Sphere();\nconst _vector$6 = /*@__PURE__*/ new Vector3();\n\n/**\n * Frustums are used to determine what is inside the camera's field of view.\n * They help speed up the rendering process - objects which lie outside a camera's\n * frustum can safely be excluded from rendering.\n *\n * This class is mainly intended for use internally by a renderer.\n */\nclass Frustum {\n\n\t/**\n\t * Constructs a new frustum.\n\t *\n\t * @param {Plane} [p0] - The first plane that encloses the frustum.\n\t * @param {Plane} [p1] - The second plane that encloses the frustum.\n\t * @param {Plane} [p2] - The third plane that encloses the frustum.\n\t * @param {Plane} [p3] - The fourth plane that encloses the frustum.\n\t * @param {Plane} [p4] - The fifth plane that encloses the frustum.\n\t * @param {Plane} [p5] - The sixth plane that encloses the frustum.\n\t */\n\tconstructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane() ) {\n\n\t\t/**\n\t\t * This array holds the planes that enclose the frustum.\n\t\t *\n\t\t * @type {Array<Plane>}\n\t\t */\n\t\tthis.planes = [ p0, p1, p2, p3, p4, p5 ];\n\n\t}\n\n\t/**\n\t * Sets the frustum planes by copying the given planes.\n\t *\n\t * @param {Plane} [p0] - The first plane that encloses the frustum.\n\t * @param {Plane} [p1] - The second plane that encloses the frustum.\n\t * @param {Plane} [p2] - The third plane that encloses the frustum.\n\t * @param {Plane} [p3] - The fourth plane that encloses the frustum.\n\t * @param {Plane} [p4] - The fifth plane that encloses the frustum.\n\t * @param {Plane} [p5] - The sixth plane that encloses the frustum.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tset( p0, p1, p2, p3, p4, p5 ) {\n\n\t\tconst planes = this.planes;\n\n\t\tplanes[ 0 ].copy( p0 );\n\t\tplanes[ 1 ].copy( p1 );\n\t\tplanes[ 2 ].copy( p2 );\n\t\tplanes[ 3 ].copy( p3 );\n\t\tplanes[ 4 ].copy( p4 );\n\t\tplanes[ 5 ].copy( p5 );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given frustum to this instance.\n\t *\n\t * @param {Frustum} frustum - The frustum to copy.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tcopy( frustum ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the frustum planes from the given projection matrix.\n\t *\n\t * @param {Matrix4} m - The projection matrix.\n\t * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} coordinateSystem - The coordinate system.\n\t * @return {Frustum} A reference to this frustum.\n\t */\n\tsetFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {\n\n\t\tconst planes = this.planes;\n\t\tconst me = m.elements;\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\n\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\n\n\t\tif ( coordinateSystem === WebGLCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\n\n\t\t} else if ( coordinateSystem === WebGPUCoordinateSystem ) {\n\n\t\t\tplanes[ 5 ].setComponents( me2, me6, me10, me14 ).normalize();\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: ' + coordinateSystem );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the 3D object's bounding sphere is intersecting this frustum.\n\t *\n\t * Note that the 3D object must have a geometry so that the bounding sphere can be calculated.\n\t *\n\t * @param {Object3D} object - The 3D object to test.\n\t * @return {boolean} Whether the 3D object's bounding sphere is intersecting this frustum or not.\n\t */\n\tintersectsObject( object ) {\n\n\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\n\t\t\t_sphere$3.copy( object.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t} else {\n\n\t\t\tconst geometry = object.geometry;\n\n\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t\t_sphere$3.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\n\n\t\t}\n\n\t\treturn this.intersectsSphere( _sphere$3 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given sprite is intersecting this frustum.\n\t *\n\t * @param {Sprite} sprite - The sprite to test.\n\t * @return {boolean} Whether the sprite is intersecting this frustum or not.\n\t */\n\tintersectsSprite( sprite ) {\n\n\t\t_sphere$3.center.set( 0, 0, 0 );\n\t\t_sphere$3.radius = 0.7071067811865476;\n\t\t_sphere$3.applyMatrix4( sprite.matrixWorld );\n\n\t\treturn this.intersectsSphere( _sphere$3 );\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding sphere is intersecting this frustum.\n\t *\n\t * @param {Sphere} sphere - The bounding sphere to test.\n\t * @return {boolean} Whether the bounding sphere is intersecting this frustum or not.\n\t */\n\tintersectsSphere( sphere ) {\n\n\t\tconst planes = this.planes;\n\t\tconst center = sphere.center;\n\t\tconst negRadius = - sphere.radius;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\n\n\t\t\tif ( distance < negRadius ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box is intersecting this frustum.\n\t *\n\t * @param {Box3} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box is intersecting this frustum or not.\n\t */\n\tintersectsBox( box ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst plane = planes[ i ];\n\n\t\t\t// corner at max distance\n\n\t\t\t_vector$6.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n\t\t\t_vector$6.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n\t\t\t_vector$6.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n\n\t\t\tif ( plane.distanceToPoint( _vector$6 ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within the frustum.\n\t *\n\t * @param {Vector3} point - The point to test.\n\t * @return {boolean} Whether the point lies within this frustum or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\tconst planes = this.planes;\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Returns a new frustum with copied values from this instance.\n\t *\n\t * @return {Frustum} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nfunction ascIdSort( a, b ) {\n\n\treturn a - b;\n\n}\n\nfunction sortOpaque( a, b ) {\n\n\treturn a.z - b.z;\n\n}\n\nfunction sortTransparent( a, b ) {\n\n\treturn b.z - a.z;\n\n}\n\nclass MultiDrawRenderList {\n\n\tconstructor() {\n\n\t\tthis.index = 0;\n\t\tthis.pool = [];\n\t\tthis.list = [];\n\n\t}\n\n\tpush( start, count, z, index ) {\n\n\t\tconst pool = this.pool;\n\t\tconst list = this.list;\n\t\tif ( this.index >= pool.length ) {\n\n\t\t\tpool.push( {\n\n\t\t\t\tstart: -1,\n\t\t\t\tcount: -1,\n\t\t\t\tz: -1,\n\t\t\t\tindex: -1,\n\n\t\t\t} );\n\n\t\t}\n\n\t\tconst item = pool[ this.index ];\n\t\tlist.push( item );\n\t\tthis.index ++;\n\n\t\titem.start = start;\n\t\titem.count = count;\n\t\titem.z = z;\n\t\titem.index = index;\n\n\t}\n\n\treset() {\n\n\t\tthis.list.length = 0;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nconst _matrix$1 = /*@__PURE__*/ new Matrix4();\nconst _whiteColor = /*@__PURE__*/ new Color( 1, 1, 1 );\nconst _frustum = /*@__PURE__*/ new Frustum();\nconst _box$1 = /*@__PURE__*/ new Box3();\nconst _sphere$2 = /*@__PURE__*/ new Sphere();\nconst _vector$5 = /*@__PURE__*/ new Vector3();\nconst _forward = /*@__PURE__*/ new Vector3();\nconst _temp = /*@__PURE__*/ new Vector3();\nconst _renderList = /*@__PURE__*/ new MultiDrawRenderList();\nconst _mesh = /*@__PURE__*/ new Mesh();\nconst _batchIntersects = [];\n\n// copies data from attribute \"src\" into \"target\" starting at \"targetOffset\"\nfunction copyAttributeData( src, target, targetOffset = 0 ) {\n\n\tconst itemSize = target.itemSize;\n\tif ( src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor ) {\n\n\t\t// use the component getters and setters if the array data cannot\n\t\t// be copied directly\n\t\tconst vertexCount = src.count;\n\t\tfor ( let i = 0; i < vertexCount; i ++ ) {\n\n\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\ttarget.setComponent( i + targetOffset, c, src.getComponent( i, c ) );\n\n\t\t\t}\n\n\t\t}\n\n\t} else {\n\n\t\t// faster copy approach using typed array set function\n\t\ttarget.array.set( src.array, targetOffset * itemSize );\n\n\t}\n\n\ttarget.needsUpdate = true;\n\n}\n\n// safely copies array contents to a potentially smaller array\nfunction copyArrayContents( src, target ) {\n\n\tif ( src.constructor !== target.constructor ) {\n\n\t\t// if arrays are of a different type (eg due to index size increasing) then data must be per-element copied\n\t\tconst len = Math.min( src.length, target.length );\n\t\tfor ( let i = 0; i < len; i ++ ) {\n\n\t\t\ttarget[ i ] = src[ i ];\n\n\t\t}\n\n\t} else {\n\n\t\t// if the arrays use the same data layout we can use a fast block copy\n\t\tconst len = Math.min( src.length, target.length );\n\t\ttarget.set( new src.constructor( src.buffer, 0, len ) );\n\n\t}\n\n}\n\n/**\n * A special version of a mesh with multi draw batch rendering support. Use\n * this class if you have to render a large number of objects with the same\n * material but with different geometries or world transformations. The usage of\n * `BatchedMesh` will help you to reduce the number of draw calls and thus improve the overall\n * rendering performance in your application.\n *\n * ```js\n * const box = new THREE.BoxGeometry( 1, 1, 1 );\n * const sphere = new THREE.SphereGeometry( 1, 12, 12 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n *\n * // initialize and add geometries into the batched mesh\n * const batchedMesh = new BatchedMesh( 10, 5000, 10000, material );\n * const boxGeometryId = batchedMesh.addGeometry( box );\n * const sphereGeometryId = batchedMesh.addGeometry( sphere );\n *\n * // create instances of those geometries\n * const boxInstancedId1 = batchedMesh.addInstance( boxGeometryId );\n * const boxInstancedId2 = batchedMesh.addInstance( boxGeometryId );\n *\n * const sphereInstancedId1 = batchedMesh.addInstance( sphereGeometryId );\n * const sphereInstancedId2 = batchedMesh.addInstance( sphereGeometryId );\n *\n * // position the geometries\n * batchedMesh.setMatrixAt( boxInstancedId1, boxMatrix1 );\n * batchedMesh.setMatrixAt( boxInstancedId2, boxMatrix2 );\n *\n * batchedMesh.setMatrixAt( sphereInstancedId1, sphereMatrix1 );\n * batchedMesh.setMatrixAt( sphereInstancedId2, sphereMatrix2 );\n *\n * scene.add( batchedMesh );\n * ```\n *\n * @augments Mesh\n */\nclass BatchedMesh extends Mesh {\n\n\t/**\n\t * Constructs a new batched mesh.\n\t *\n\t * @param {number} maxInstanceCount - The maximum number of individual instances planned to be added and rendered.\n\t * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries.\n\t * @param {number} [maxIndexCount=maxVertexCount*2] - The maximum number of indices to be used by all unique geometries\n\t * @param {Material|Array<Material>} [material] - The mesh material.\n\t */\n\tconstructor( maxInstanceCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material ) {\n\n\t\tsuper( new BufferGeometry(), material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBatchedMesh = true;\n\n\t\t/**\n\t\t * When set ot `true`, the individual objects of a batch are frustum culled.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.perObjectFrustumCulled = true;\n\n\t\t/**\n\t\t * When set to `true`, the individual objects of a batch are sorted to improve overdraw-related artifacts.\n\t\t * If the material is marked as \"transparent\" objects are rendered back to front and if not then they are\n\t\t * rendered front to back.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.sortObjects = true;\n\n\t\t/**\n\t\t * The bounding box of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingBox}.\n\t\t *\n\t\t * @type {?Box3}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingBox = null;\n\n\t\t/**\n\t\t * The bounding sphere of the batched mesh. Can be computed via {@link BatchedMesh#computeBoundingSphere}.\n\t\t *\n\t\t * @type {?Sphere}\n\t\t * @default null\n\t\t */\n\t\tthis.boundingSphere = null;\n\n\t\t/**\n\t\t * Takes a sort a function that is run before render. The function takes a list of instances to\n\t\t * sort and a camera. The objects in the list include a \"z\" field to perform a depth-ordered\n\t\t * sort with.\n\t\t *\n\t\t * @type {?Function}\n\t\t * @default null\n\t\t */\n\t\tthis.customSort = null;\n\n\t\t// stores visible, active, and geometry id per instance and reserved buffer ranges for geometries\n\t\tthis._instanceInfo = [];\n\t\tthis._geometryInfo = [];\n\n\t\t// instance, geometry ids that have been set as inactive, and are available to be overwritten\n\t\tthis._availableInstanceIds = [];\n\t\tthis._availableGeometryIds = [];\n\n\t\t// used to track where the next point is that geometry should be inserted\n\t\tthis._nextIndexStart = 0;\n\t\tthis._nextVertexStart = 0;\n\t\tthis._geometryCount = 0;\n\n\t\t// flags\n\t\tthis._visibilityChanged = true;\n\t\tthis._geometryInitialized = false;\n\n\t\t// cached user options\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\t// buffers for multi draw\n\t\tthis._multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tthis._multiDrawCount = 0;\n\t\tthis._multiDrawInstances = null;\n\n\t\t// Local matrix per geometry by using data texture\n\t\tthis._matricesTexture = null;\n\t\tthis._indirectTexture = null;\n\t\tthis._colorsTexture = null;\n\n\t\tthis._initMatricesTexture();\n\t\tthis._initIndirectTexture();\n\n\t}\n\n\t/**\n\t * The maximum number of individual instances that can be stored in the batch.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget maxInstanceCount() {\n\n\t\treturn this._maxInstanceCount;\n\n\t}\n\n\t/**\n\t * The instance count.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget instanceCount() {\n\n\t\treturn this._instanceInfo.length - this._availableInstanceIds.length;\n\n\t}\n\n\t/**\n\t * The number of unused vertices.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget unusedVertexCount() {\n\n\t\treturn this._maxVertexCount - this._nextVertexStart;\n\n\t}\n\n\t/**\n\t * The number of unused indices.\n\t *\n\t * @type {number}\n\t * @readonly\n\t */\n\tget unusedIndexCount() {\n\n\t\treturn this._maxIndexCount - this._nextIndexStart;\n\n\t}\n\n\t_initMatricesTexture() {\n\n\t\t// layout (1 matrix = 4 pixels)\n\t\t//      RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\n\t\t//  with  8x8  pixel texture max   16 matrices * 4 pixels =  (8 * 8)\n\t\t//       16x16 pixel texture max   64 matrices * 4 pixels = (16 * 16)\n\t\t//       32x32 pixel texture max  256 matrices * 4 pixels = (32 * 32)\n\t\t//       64x64 pixel texture max 1024 matrices * 4 pixels = (64 * 64)\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount * 4 ); // 4 pixels needed for 1 matrix\n\t\tsize = Math.ceil( size / 4 ) * 4;\n\t\tsize = Math.max( size, 4 );\n\n\t\tconst matricesArray = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\n\t\tconst matricesTexture = new DataTexture( matricesArray, size, size, RGBAFormat, FloatType );\n\n\t\tthis._matricesTexture = matricesTexture;\n\n\t}\n\n\t_initIndirectTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\tconst indirectArray = new Uint32Array( size * size );\n\t\tconst indirectTexture = new DataTexture( indirectArray, size, size, RedIntegerFormat, UnsignedIntType );\n\n\t\tthis._indirectTexture = indirectTexture;\n\n\t}\n\n\t_initColorsTexture() {\n\n\t\tlet size = Math.sqrt( this._maxInstanceCount );\n\t\tsize = Math.ceil( size );\n\n\t\t// 4 floats per RGBA pixel initialized to white\n\t\tconst colorsArray = new Float32Array( size * size * 4 ).fill( 1 );\n\t\tconst colorsTexture = new DataTexture( colorsArray, size, size, RGBAFormat, FloatType );\n\t\tcolorsTexture.colorSpace = ColorManagement.workingColorSpace;\n\n\t\tthis._colorsTexture = colorsTexture;\n\n\t}\n\n\t_initializeGeometry( reference ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst maxVertexCount = this._maxVertexCount;\n\t\tconst maxIndexCount = this._maxIndexCount;\n\t\tif ( this._geometryInitialized === false ) {\n\n\t\t\tfor ( const attributeName in reference.attributes ) {\n\n\t\t\t\tconst srcAttribute = reference.getAttribute( attributeName );\n\t\t\t\tconst { array, itemSize, normalized } = srcAttribute;\n\n\t\t\t\tconst dstArray = new array.constructor( maxVertexCount * itemSize );\n\t\t\t\tconst dstAttribute = new BufferAttribute( dstArray, itemSize, normalized );\n\n\t\t\t\tgeometry.setAttribute( attributeName, dstAttribute );\n\n\t\t\t}\n\n\t\t\tif ( reference.getIndex() !== null ) {\n\n\t\t\t\t// Reserve last u16 index for primitive restart.\n\t\t\t\tconst indexArray = maxVertexCount > 65535\n\t\t\t\t\t? new Uint32Array( maxIndexCount )\n\t\t\t\t\t: new Uint16Array( maxIndexCount );\n\n\t\t\t\tgeometry.setIndex( new BufferAttribute( indexArray, 1 ) );\n\n\t\t\t}\n\n\t\t\tthis._geometryInitialized = true;\n\n\t\t}\n\n\t}\n\n\t// Make sure the geometry is compatible with the existing combined geometry attributes\n\t_validateGeometry( geometry ) {\n\n\t\t// check to ensure the geometries are using consistent attributes and indices\n\t\tconst batchGeometry = this.geometry;\n\t\tif ( Boolean( geometry.getIndex() ) !== Boolean( batchGeometry.getIndex() ) ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: All geometries must consistently have \"index\".' );\n\n\t\t}\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\tif ( ! geometry.hasAttribute( attributeName ) ) {\n\n\t\t\t\tthrow new Error( `THREE.BatchedMesh: Added geometry missing \"${ attributeName }\". All geometries must have consistent attributes.` );\n\n\t\t\t}\n\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tif ( srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized ) {\n\n\t\t\t\tthrow new Error( 'THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.' );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Validates the instance defined by the given ID.\n\t *\n\t * @param {number} instanceId - The the instance to validate.\n\t */\n\tvalidateInstanceId( instanceId ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tif ( instanceId < 0 || instanceId >= instanceInfo.length || instanceInfo[ instanceId ].active === false ) {\n\n\t\t\tthrow new Error( `THREE.BatchedMesh: Invalid instanceId ${instanceId}. Instance is either out of range or has been deleted.` );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Validates the geometry defined by the given ID.\n\t *\n\t * @param {number} geometryId - The the geometry to validate.\n\t */\n\tvalidateGeometryId( geometryId ) {\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( geometryId < 0 || geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\tthrow new Error( `THREE.BatchedMesh: Invalid geometryId ${geometryId}. Geometry is either out of range or has been deleted.` );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Takes a sort a function that is run before render. The function takes a list of instances to\n\t * sort and a camera. The objects in the list include a \"z\" field to perform a depth-ordered sort with.\n\t *\n\t * @param {Function} func - The custom sort function.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetCustomSort( func ) {\n\n\t\tthis.customSort = func;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the bounding box, updating {@link BatchedMesh#boundingBox}.\n\t * Bounding boxes aren't computed by default. They need to be explicitly computed,\n\t * otherwise they are `null`.\n\t */\n\tcomputeBoundingBox() {\n\n\t\tif ( this.boundingBox === null ) {\n\n\t\t\tthis.boundingBox = new Box3();\n\n\t\t}\n\n\t\tconst boundingBox = this.boundingBox;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingBox.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingBox.union( _box$1 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Computes the bounding sphere, updating {@link BatchedMesh#boundingSphere}.\n\t * Bounding spheres aren't computed by default. They need to be explicitly computed,\n\t * otherwise they are `null`.\n\t */\n\tcomputeBoundingSphere() {\n\n\t\tif ( this.boundingSphere === null ) {\n\n\t\t\tthis.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tconst boundingSphere = this.boundingSphere;\n\t\tconst instanceInfo = this._instanceInfo;\n\n\t\tboundingSphere.makeEmpty();\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active === false ) continue;\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\tboundingSphere.union( _sphere$2 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Adds a new instance to the batch using the geometry of the given ID and returns\n\t * a new id referring to the new instance to be used by other functions.\n\t *\n\t * @param {number} geometryId - The ID of a previously added geometry via {@link BatchedMesh#addGeometry}.\n\t * @return {number} The instance ID.\n\t */\n\taddInstance( geometryId ) {\n\n\t\tconst atCapacity = this._instanceInfo.length >= this.maxInstanceCount;\n\n\t\t// ensure we're not over geometry\n\t\tif ( atCapacity && this._availableInstanceIds.length === 0 ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Maximum item count reached.' );\n\n\t\t}\n\n\t\tconst instanceInfo = {\n\t\t\tvisible: true,\n\t\t\tactive: true,\n\t\t\tgeometryIndex: geometryId,\n\t\t};\n\n\t\tlet drawId = null;\n\n\t\t// Prioritize using previously freed instance ids\n\t\tif ( this._availableInstanceIds.length > 0 ) {\n\n\t\t\tthis._availableInstanceIds.sort( ascIdSort );\n\n\t\t\tdrawId = this._availableInstanceIds.shift();\n\t\t\tthis._instanceInfo[ drawId ] = instanceInfo;\n\n\t\t} else {\n\n\t\t\tdrawId = this._instanceInfo.length;\n\t\t\tthis._instanceInfo.push( instanceInfo );\n\n\t\t}\n\n\t\tconst matricesTexture = this._matricesTexture;\n\t\t_matrix$1.identity().toArray( matricesTexture.image.data, drawId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\tconst colorsTexture = this._colorsTexture;\n\t\tif ( colorsTexture ) {\n\n\t\t\t_whiteColor.toArray( colorsTexture.image.data, drawId * 4 );\n\t\t\tcolorsTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn drawId;\n\n\t}\n\n\t/**\n\t * Adds the given geometry to the batch and returns the associated\n\t * geometry id referring to it to be used in other functions.\n\t *\n\t * @param {BufferGeometry} geometry - The geometry to add.\n\t * @param {number} [reservedVertexCount=-1] - Optional parameter specifying the amount of\n\t * vertex buffer space to reserve for the added geometry. This is necessary if it is planned\n\t * to set a new geometry at this index at a later time that is larger than the original geometry.\n\t * Defaults to the length of the given geometry vertex buffer.\n\t * @param {number} [reservedIndexCount=-1] - Optional parameter specifying the amount of index\n\t * buffer space to reserve for the added geometry. This is necessary if it is planned to set a\n\t * new geometry at this index at a later time that is larger than the original geometry. Defaults to\n\t * the length of the given geometry index buffer.\n\t * @return {number} The geometry ID.\n\t */\n\taddGeometry( geometry, reservedVertexCount = -1, reservedIndexCount = -1 ) {\n\n\t\tthis._initializeGeometry( geometry );\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst geometryInfo = {\n\t\t\t// geometry information\n\t\t\tvertexStart: -1,\n\t\t\tvertexCount: -1,\n\t\t\treservedVertexCount: -1,\n\n\t\t\tindexStart: -1,\n\t\t\tindexCount: -1,\n\t\t\treservedIndexCount: -1,\n\n\t\t\t// draw range information\n\t\t\tstart: -1,\n\t\t\tcount: -1,\n\n\t\t\t// state\n\t\t\tboundingBox: null,\n\t\t\tboundingSphere: null,\n\t\t\tactive: true,\n\t\t};\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tgeometryInfo.vertexStart = this._nextVertexStart;\n\t\tgeometryInfo.reservedVertexCount = reservedVertexCount === -1 ? geometry.getAttribute( 'position' ).count : reservedVertexCount;\n\n\t\tconst index = geometry.getIndex();\n\t\tconst hasIndex = index !== null;\n\t\tif ( hasIndex ) {\n\n\t\t\tgeometryInfo.indexStart = this._nextIndexStart;\n\t\t\tgeometryInfo.reservedIndexCount = reservedIndexCount === -1 ? index.count : reservedIndexCount;\n\n\t\t}\n\n\t\tif (\n\t\t\tgeometryInfo.indexStart !== -1 &&\n\t\t\tgeometryInfo.indexStart + geometryInfo.reservedIndexCount > this._maxIndexCount ||\n\t\t\tgeometryInfo.vertexStart + geometryInfo.reservedVertexCount > this._maxVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.' );\n\n\t\t}\n\n\t\t// update id\n\t\tlet geometryId;\n\t\tif ( this._availableGeometryIds.length > 0 ) {\n\n\t\t\tthis._availableGeometryIds.sort( ascIdSort );\n\n\t\t\tgeometryId = this._availableGeometryIds.shift();\n\t\t\tgeometryInfoList[ geometryId ] = geometryInfo;\n\n\n\t\t} else {\n\n\t\t\tgeometryId = this._geometryCount;\n\t\t\tthis._geometryCount ++;\n\t\t\tgeometryInfoList.push( geometryInfo );\n\n\t\t}\n\n\t\t// update the geometry\n\t\tthis.setGeometryAt( geometryId, geometry );\n\n\t\t// increment the next geometry position\n\t\tthis._nextIndexStart = geometryInfo.indexStart + geometryInfo.reservedIndexCount;\n\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\treturn geometryId;\n\n\t}\n\n\t/**\n\t * Replaces the geometry at the given ID with the provided geometry. Throws an error if there\n\t * is not enough space reserved for geometry. Calling this will change all instances that are\n\t * rendering that geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geomtry that should be replaced with the given geometry.\n\t * @param {BufferGeometry} geometry - The new geometry.\n\t * @return {number} The geometry ID.\n\t */\n\tsetGeometryAt( geometryId, geometry ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Maximum geometry count reached.' );\n\n\t\t}\n\n\t\tthis._validateGeometry( geometry );\n\n\t\tconst batchGeometry = this.geometry;\n\t\tconst hasIndex = batchGeometry.getIndex() !== null;\n\t\tconst dstIndex = batchGeometry.getIndex();\n\t\tconst srcIndex = geometry.getIndex();\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif (\n\t\t\thasIndex &&\n\t\t\tsrcIndex.count > geometryInfo.reservedIndexCount ||\n\t\t\tgeometry.attributes.position.count > geometryInfo.reservedVertexCount\n\t\t) {\n\n\t\t\tthrow new Error( 'THREE.BatchedMesh: Reserved space not large enough for provided geometry.' );\n\n\t\t}\n\n\t\t// copy geometry buffer data over\n\t\tconst vertexStart = geometryInfo.vertexStart;\n\t\tconst reservedVertexCount = geometryInfo.reservedVertexCount;\n\t\tgeometryInfo.vertexCount = geometry.getAttribute( 'position' ).count;\n\n\t\tfor ( const attributeName in batchGeometry.attributes ) {\n\n\t\t\t// copy attribute data\n\t\t\tconst srcAttribute = geometry.getAttribute( attributeName );\n\t\t\tconst dstAttribute = batchGeometry.getAttribute( attributeName );\n\t\t\tcopyAttributeData( srcAttribute, dstAttribute, vertexStart );\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tconst itemSize = srcAttribute.itemSize;\n\t\t\tfor ( let i = srcAttribute.count, l = reservedVertexCount; i < l; i ++ ) {\n\n\t\t\t\tconst index = vertexStart + i;\n\t\t\t\tfor ( let c = 0; c < itemSize; c ++ ) {\n\n\t\t\t\t\tdstAttribute.setComponent( index, c, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tdstAttribute.needsUpdate = true;\n\t\t\tdstAttribute.addUpdateRange( vertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t}\n\n\t\t// copy index\n\t\tif ( hasIndex ) {\n\n\t\t\tconst indexStart = geometryInfo.indexStart;\n\t\t\tconst reservedIndexCount = geometryInfo.reservedIndexCount;\n\t\t\tgeometryInfo.indexCount = geometry.getIndex().count;\n\n\t\t\t// copy index data over\n\t\t\tfor ( let i = 0; i < srcIndex.count; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart + srcIndex.getX( i ) );\n\n\t\t\t}\n\n\t\t\t// fill the rest in with zeroes\n\t\t\tfor ( let i = srcIndex.count, l = reservedIndexCount; i < l; i ++ ) {\n\n\t\t\t\tdstIndex.setX( indexStart + i, vertexStart );\n\n\t\t\t}\n\n\t\t\tdstIndex.needsUpdate = true;\n\t\t\tdstIndex.addUpdateRange( indexStart, geometryInfo.reservedIndexCount );\n\n\t\t}\n\n\t\t// update the draw range\n\t\tgeometryInfo.start = hasIndex ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\t\tgeometryInfo.count = hasIndex ? geometryInfo.indexCount : geometryInfo.vertexCount;\n\n\t\t// store the bounding boxes\n\t\tgeometryInfo.boundingBox = null;\n\t\tif ( geometry.boundingBox !== null ) {\n\n\t\t\tgeometryInfo.boundingBox = geometry.boundingBox.clone();\n\n\t\t}\n\n\t\tgeometryInfo.boundingSphere = null;\n\t\tif ( geometry.boundingSphere !== null ) {\n\n\t\t\tgeometryInfo.boundingSphere = geometry.boundingSphere.clone();\n\n\t\t}\n\n\t\tthis._visibilityChanged = true;\n\t\treturn geometryId;\n\n\t}\n\n\t/**\n\t * Deletes the geometry defined by the given ID from this batch. Any instances referencing\n\t * this geometry will also be removed as a side effect.\n\t *\n\t * @param {number} geometryId - The ID of the geomtry to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tdeleteGeometry( geometryId ) {\n\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tif ( geometryId >= geometryInfoList.length || geometryInfoList[ geometryId ].active === false ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\t// delete any instances associated with this geometry\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( instanceInfo[ i ].active && instanceInfo[ i ].geometryIndex === geometryId ) {\n\n\t\t\t\tthis.deleteInstance( i );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometryInfoList[ geometryId ].active = false;\n\t\tthis._availableGeometryIds.push( geometryId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deletes an existing instance from the batch using the given ID.\n\t *\n\t * @param {number} instanceId - The ID of the instance to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tdeleteInstance( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tthis._instanceInfo[ instanceId ].active = false;\n\t\tthis._availableInstanceIds.push( instanceId );\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Repacks the sub geometries in [name] to remove any unused space remaining from\n\t * previously deleted geometry, freeing up space to add new geometry.\n\t *\n\t * @param {number} instanceId - The ID of the instance to remove from the batch.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\toptimize() {\n\n\t\t// track the next indices to copy data to\n\t\tlet nextVertexStart = 0;\n\t\tlet nextIndexStart = 0;\n\n\t\t// Iterate over all geometry ranges in order sorted from earliest in the geometry buffer to latest\n\t\t// in the geometry buffer. Because draw range objects can be reused there is no guarantee of their order.\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst indices = geometryInfoList\n\t\t\t.map( ( e, i ) => i )\n\t\t\t.sort( ( a, b ) => {\n\n\t\t\t\treturn geometryInfoList[ a ].vertexStart - geometryInfoList[ b ].vertexStart;\n\n\t\t\t} );\n\n\t\tconst geometry = this.geometry;\n\t\tfor ( let i = 0, l = geometryInfoList.length; i < l; i ++ ) {\n\n\t\t\t// if a geometry range is inactive then don't copy anything\n\t\t\tconst index = indices[ i ];\n\t\t\tconst geometryInfo = geometryInfoList[ index ];\n\t\t\tif ( geometryInfo.active === false ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\t// if a geometry contains an index buffer then shift it, as well\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\tif ( geometryInfo.indexStart !== nextIndexStart ) {\n\n\t\t\t\t\tconst { indexStart, vertexStart, reservedIndexCount } = geometryInfo;\n\t\t\t\t\tconst index = geometry.index;\n\t\t\t\t\tconst array = index.array;\n\n\t\t\t\t\t// shift the index pointers based on how the vertex data will shift\n\t\t\t\t\t// adjusting the index must happen first so the original vertex start value is available\n\t\t\t\t\tconst elementDelta = nextVertexStart - vertexStart;\n\t\t\t\t\tfor ( let j = indexStart; j < indexStart + reservedIndexCount; j ++ ) {\n\n\t\t\t\t\t\tarray[ j ] = array[ j ] + elementDelta;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tindex.array.copyWithin( nextIndexStart, indexStart, indexStart + reservedIndexCount );\n\t\t\t\t\tindex.addUpdateRange( nextIndexStart, reservedIndexCount );\n\n\t\t\t\t\tgeometryInfo.indexStart = nextIndexStart;\n\n\t\t\t\t}\n\n\t\t\t\tnextIndexStart += geometryInfo.reservedIndexCount;\n\n\t\t\t}\n\n\t\t\t// if a geometry needs to be moved then copy attribute data to overwrite unused space\n\t\t\tif ( geometryInfo.vertexStart !== nextVertexStart ) {\n\n\t\t\t\tconst { vertexStart, reservedVertexCount } = geometryInfo;\n\t\t\t\tconst attributes = geometry.attributes;\n\t\t\t\tfor ( const key in attributes ) {\n\n\t\t\t\t\tconst attribute = attributes[ key ];\n\t\t\t\t\tconst { array, itemSize } = attribute;\n\t\t\t\t\tarray.copyWithin( nextVertexStart * itemSize, vertexStart * itemSize, ( vertexStart + reservedVertexCount ) * itemSize );\n\t\t\t\t\tattribute.addUpdateRange( nextVertexStart * itemSize, reservedVertexCount * itemSize );\n\n\t\t\t\t}\n\n\t\t\t\tgeometryInfo.vertexStart = nextVertexStart;\n\n\t\t\t}\n\n\t\t\tnextVertexStart += geometryInfo.reservedVertexCount;\n\t\t\tgeometryInfo.start = geometry.index ? geometryInfo.indexStart : geometryInfo.vertexStart;\n\n\t\t\t// step the next geometry points to the shifted position\n\t\t\tthis._nextIndexStart = geometry.index ? geometryInfo.indexStart + geometryInfo.reservedIndexCount : 0;\n\t\t\tthis._nextVertexStart = geometryInfo.vertexStart + geometryInfo.reservedVertexCount;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the bounding box for the given geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to return the bounding box for.\n\t * @param {Box3} target - The target object that is used to store the method's result.\n\t * @return {Box3|null} The geometry's bounding box. Returns `null` if no geometry has been found for the given ID.\n\t */\n\tgetBoundingBoxAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding box\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingBox === null ) {\n\n\t\t\tconst box = new Box3();\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\tbox.expandByPoint( _vector$5.fromBufferAttribute( position, iv ) );\n\n\t\t\t}\n\n\t\t\tgeometryInfo.boundingBox = box;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingBox );\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the bounding sphere for the given geometry.\n\t *\n\t * @param {number} geometryId - The ID of the geometry to return the bounding sphere for.\n\t * @param {Sphere} target - The target object that is used to store the method's result.\n\t * @return {Sphere|null} The geometry's bounding sphere. Returns `null` if no geometry has been found for the given ID.\n\t */\n\tgetBoundingSphereAt( geometryId, target ) {\n\n\t\tif ( geometryId >= this._geometryCount ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\t// compute bounding sphere\n\t\tconst geometry = this.geometry;\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\tif ( geometryInfo.boundingSphere === null ) {\n\n\t\t\tconst sphere = new Sphere();\n\t\t\tthis.getBoundingBoxAt( geometryId, _box$1 );\n\t\t\t_box$1.getCenter( sphere.center );\n\n\t\t\tconst index = geometry.index;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet maxRadiusSq = 0;\n\t\t\tfor ( let i = geometryInfo.start, l = geometryInfo.start + geometryInfo.count; i < l; i ++ ) {\n\n\t\t\t\tlet iv = i;\n\t\t\t\tif ( index ) {\n\n\t\t\t\t\tiv = index.getX( iv );\n\n\t\t\t\t}\n\n\t\t\t\t_vector$5.fromBufferAttribute( position, iv );\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, sphere.center.distanceToSquared( _vector$5 ) );\n\n\t\t\t}\n\n\t\t\tsphere.radius = Math.sqrt( maxRadiusSq );\n\t\t\tgeometryInfo.boundingSphere = sphere;\n\n\t\t}\n\n\t\ttarget.copy( geometryInfo.boundingSphere );\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Sets the given local transformation matrix to the defined instance.\n\t * Negatively scaled matrices are not supported.\n\t *\n\t * @param {number} instanceId - The ID of an instance to set the matrix of.\n\t * @param {Matrix4} matrix - A 4x4 matrix representing the local transformation of a single instance.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetMatrixAt( instanceId, matrix ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst matricesArray = this._matricesTexture.image.data;\n\t\tmatrix.toArray( matricesArray, instanceId * 16 );\n\t\tmatricesTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the local transformation matrix of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the matrix of.\n\t * @param {Matrix4} matrix - The target object that is used to store the method's result.\n\t * @return {Matrix4} The instance's local transformation matrix.\n\t */\n\tgetMatrixAt( instanceId, matrix ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\treturn matrix.fromArray( this._matricesTexture.image.data, instanceId * 16 );\n\n\t}\n\n\t/**\n\t * Sets the given color to the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to set the color of.\n\t * @param {Color} color - The color to set the instance to.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetColorAt( instanceId, color ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tif ( this._colorsTexture === null ) {\n\n\t\t\tthis._initColorsTexture();\n\n\t\t}\n\n\t\tcolor.toArray( this._colorsTexture.image.data, instanceId * 4 );\n\t\tthis._colorsTexture.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the color of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the color of.\n\t * @param {Color} color - The target object that is used to store the method's result.\n\t * @return {Color} The instance's color.\n\t */\n\tgetColorAt( instanceId, color ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\treturn color.fromArray( this._colorsTexture.image.data, instanceId * 4 );\n\n\t}\n\n\t/**\n\t * Sets the visibility of the instance.\n\t *\n\t * @param {number} instanceId - The id of the instance to set the visibility of.\n\t * @param {boolean} visible - Whether the instance is visible or not.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetVisibleAt( instanceId, visible ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\tif ( this._instanceInfo[ instanceId ].visible === visible ) {\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis._instanceInfo[ instanceId ].visible = visible;\n\t\tthis._visibilityChanged = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the visibility state of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the visibility state of.\n\t * @return {boolean} Whether the instance is visible or not.\n\t */\n\tgetVisibleAt( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\treturn this._instanceInfo[ instanceId ].visible;\n\n\t}\n\n\t/**\n\t * Sets the geometry ID of the instance at the given index.\n\t *\n\t * @param {number} instanceId - The ID of the instance to set the geometry ID of.\n\t * @param {number} geometryId - The geometry ID to be use by the instance.\n\t * @return {BatchedMesh} A reference to this batched mesh.\n\t */\n\tsetGeometryIdAt( instanceId, geometryId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\t\tthis.validateGeometryId( geometryId );\n\n\t\tthis._instanceInfo[ instanceId ].geometryIndex = geometryId;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the geometry ID of the defined instance.\n\t *\n\t * @param {number} instanceId - The ID of an instance to get the geometry ID of.\n\t * @return {number} The instance's geometry ID.\n\t */\n\tgetGeometryIdAt( instanceId ) {\n\n\t\tthis.validateInstanceId( instanceId );\n\n\t\treturn this._instanceInfo[ instanceId ].geometryIndex;\n\n\t}\n\n\t/**\n\t * Get the range representing the subset of triangles related to the attached geometry,\n\t * indicating the starting offset and count, or `null` if invalid.\n\t *\n\t * @param {number} geometryId - The id of the geometry to get the range of.\n\t * @param {Object} [target] - The target object that is used to store the method's result.\n\t * @return {{\n\t * \tvertexStart:number,vertexCount:number,reservedVertexCount:number,\n\t * \tindexStart:number,indexCount:number,reservedIndexCount:number,\n\t * \tstart:number,count:number\n\t * }} The result object with range data.\n\t */\n\tgetGeometryRangeAt( geometryId, target = {} ) {\n\n\t\tthis.validateGeometryId( geometryId );\n\n\t\tconst geometryInfo = this._geometryInfo[ geometryId ];\n\t\ttarget.vertexStart = geometryInfo.vertexStart;\n\t\ttarget.vertexCount = geometryInfo.vertexCount;\n\t\ttarget.reservedVertexCount = geometryInfo.reservedVertexCount;\n\n\t\ttarget.indexStart = geometryInfo.indexStart;\n\t\ttarget.indexCount = geometryInfo.indexCount;\n\t\ttarget.reservedIndexCount = geometryInfo.reservedIndexCount;\n\n\t\ttarget.start = geometryInfo.start;\n\t\ttarget.count = geometryInfo.count;\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Resizes the necessary buffers to support the provided number of instances.\n\t * If the provided arguments shrink the number of instances but there are not enough\n\t * unused Ids at the end of the list then an error is thrown.\n\t *\n\t * @param {number} maxInstanceCount - The max number of individual instances that can be added and rendered by the batch.\n\t*/\n\tsetInstanceCount( maxInstanceCount ) {\n\n\t\t// shrink the available instances as much as possible\n\t\tconst availableInstanceIds = this._availableInstanceIds;\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tavailableInstanceIds.sort( ascIdSort );\n\t\twhile ( availableInstanceIds[ availableInstanceIds.length - 1 ] === instanceInfo.length ) {\n\n\t\t\tinstanceInfo.pop();\n\t\t\tavailableInstanceIds.pop();\n\n\t\t}\n\n\t\t// throw an error if it can't be shrunk to the desired size\n\t\tif ( maxInstanceCount < instanceInfo.length ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Instance ids outside the range ${ maxInstanceCount } are being used. Cannot shrink instance count.` );\n\n\t\t}\n\n\t\t// copy the multi draw counts\n\t\tconst multiDrawCounts = new Int32Array( maxInstanceCount );\n\t\tconst multiDrawStarts = new Int32Array( maxInstanceCount );\n\t\tcopyArrayContents( this._multiDrawCounts, multiDrawCounts );\n\t\tcopyArrayContents( this._multiDrawStarts, multiDrawStarts );\n\n\t\tthis._multiDrawCounts = multiDrawCounts;\n\t\tthis._multiDrawStarts = multiDrawStarts;\n\t\tthis._maxInstanceCount = maxInstanceCount;\n\n\t\t// update texture data for instance sampling\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst matricesTexture = this._matricesTexture;\n\t\tconst colorsTexture = this._colorsTexture;\n\n\t\tindirectTexture.dispose();\n\t\tthis._initIndirectTexture();\n\t\tcopyArrayContents( indirectTexture.image.data, this._indirectTexture.image.data );\n\n\t\tmatricesTexture.dispose();\n\t\tthis._initMatricesTexture();\n\t\tcopyArrayContents( matricesTexture.image.data, this._matricesTexture.image.data );\n\n\t\tif ( colorsTexture ) {\n\n\t\t\tcolorsTexture.dispose();\n\t\t\tthis._initColorsTexture();\n\t\t\tcopyArrayContents( colorsTexture.image.data, this._colorsTexture.image.data );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Resizes the available space in the batch's vertex and index buffer attributes to the provided sizes.\n\t * If the provided arguments shrink the geometry buffers but there is not enough unused space at the\n\t * end of the geometry attributes then an error is thrown.\n\t *\n\t * @param {number} maxVertexCount - The maximum number of vertices to be used by all unique geometries to resize to.\n\t * @param {number} maxIndexCount - The maximum number of indices to be used by all unique geometries to resize to.\n\t*/\n\tsetGeometrySize( maxVertexCount, maxIndexCount ) {\n\n\t\t// Check if we can shrink to the requested vertex attribute size\n\t\tconst validRanges = [ ...this._geometryInfo ].filter( info => info.active );\n\t\tconst requiredVertexLength = Math.max( ...validRanges.map( range => range.vertexStart + range.reservedVertexCount ) );\n\t\tif ( requiredVertexLength > maxVertexCount ) {\n\n\t\t\tthrow new Error( `BatchedMesh: Geometry vertex values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t}\n\n\t\t// Check if we can shrink to the requested index attribute size\n\t\tif ( this.geometry.index ) {\n\n\t\t\tconst requiredIndexLength = Math.max( ...validRanges.map( range => range.indexStart + range.reservedIndexCount ) );\n\t\t\tif ( requiredIndexLength > maxIndexCount ) {\n\n\t\t\t\tthrow new Error( `BatchedMesh: Geometry index values are being used outside the range ${ maxIndexCount }. Cannot shrink further.` );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\t// dispose of the previous geometry\n\t\tconst oldGeometry = this.geometry;\n\t\toldGeometry.dispose();\n\n\t\t// recreate the geometry needed based on the previous variant\n\t\tthis._maxVertexCount = maxVertexCount;\n\t\tthis._maxIndexCount = maxIndexCount;\n\n\t\tif ( this._geometryInitialized ) {\n\n\t\t\tthis._geometryInitialized = false;\n\t\t\tthis.geometry = new BufferGeometry();\n\t\t\tthis._initializeGeometry( oldGeometry );\n\n\t\t}\n\n\t\t// copy data from the previous geometry\n\t\tconst geometry = this.geometry;\n\t\tif ( oldGeometry.index ) {\n\n\t\t\tcopyArrayContents( oldGeometry.index.array, geometry.index.array );\n\n\t\t}\n\n\t\tfor ( const key in oldGeometry.attributes ) {\n\n\t\t\tcopyArrayContents( oldGeometry.attributes[ key ].array, geometry.attributes[ key ].array );\n\n\t\t}\n\n\t}\n\n\traycast( raycaster, intersects ) {\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst batchGeometry = this.geometry;\n\n\t\t// iterate over each geometry\n\t\t_mesh.material = this.material;\n\t\t_mesh.geometry.index = batchGeometry.index;\n\t\t_mesh.geometry.attributes = batchGeometry.attributes;\n\t\tif ( _mesh.geometry.boundingBox === null ) {\n\n\t\t\t_mesh.geometry.boundingBox = new Box3();\n\n\t\t}\n\n\t\tif ( _mesh.geometry.boundingSphere === null ) {\n\n\t\t\t_mesh.geometry.boundingSphere = new Sphere();\n\n\t\t}\n\n\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\tif ( ! instanceInfo[ i ].visible || ! instanceInfo[ i ].active ) {\n\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t_mesh.geometry.setDrawRange( geometryInfo.start, geometryInfo.count );\n\n\t\t\t// get the intersects\n\t\t\tthis.getMatrixAt( i, _mesh.matrixWorld ).premultiply( matrixWorld );\n\t\t\tthis.getBoundingBoxAt( geometryId, _mesh.geometry.boundingBox );\n\t\t\tthis.getBoundingSphereAt( geometryId, _mesh.geometry.boundingSphere );\n\t\t\t_mesh.raycast( raycaster, _batchIntersects );\n\n\t\t\t// add batch id to the intersects\n\t\t\tfor ( let j = 0, l = _batchIntersects.length; j < l; j ++ ) {\n\n\t\t\t\tconst intersect = _batchIntersects[ j ];\n\t\t\t\tintersect.object = this;\n\t\t\t\tintersect.batchId = i;\n\t\t\t\tintersects.push( intersect );\n\n\t\t\t}\n\n\t\t\t_batchIntersects.length = 0;\n\n\t\t}\n\n\t\t_mesh.material = null;\n\t\t_mesh.geometry.index = null;\n\t\t_mesh.geometry.attributes = {};\n\t\t_mesh.geometry.setDrawRange( 0, Infinity );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.geometry = source.geometry.clone();\n\t\tthis.perObjectFrustumCulled = source.perObjectFrustumCulled;\n\t\tthis.sortObjects = source.sortObjects;\n\t\tthis.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n\t\tthis.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n\n\t\tthis._geometryInfo = source._geometryInfo.map( info => ( {\n\t\t\t...info,\n\n\t\t\tboundingBox: info.boundingBox !== null ? info.boundingBox.clone() : null,\n\t\t\tboundingSphere: info.boundingSphere !== null ? info.boundingSphere.clone() : null,\n\t\t} ) );\n\t\tthis._instanceInfo = source._instanceInfo.map( info => ( { ...info } ) );\n\n\t\tthis._maxInstanceCount = source._maxInstanceCount;\n\t\tthis._maxVertexCount = source._maxVertexCount;\n\t\tthis._maxIndexCount = source._maxIndexCount;\n\n\t\tthis._geometryInitialized = source._geometryInitialized;\n\t\tthis._geometryCount = source._geometryCount;\n\t\tthis._multiDrawCounts = source._multiDrawCounts.slice();\n\t\tthis._multiDrawStarts = source._multiDrawStarts.slice();\n\n\t\tthis._matricesTexture = source._matricesTexture.clone();\n\t\tthis._matricesTexture.image.data = this._matricesTexture.image.data.slice();\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture = source._colorsTexture.clone();\n\t\t\tthis._colorsTexture.image.data = this._colorsTexture.image.data.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\t// Assuming the geometry is not shared with other meshes\n\t\tthis.geometry.dispose();\n\n\t\tthis._matricesTexture.dispose();\n\t\tthis._matricesTexture = null;\n\n\t\tthis._indirectTexture.dispose();\n\t\tthis._indirectTexture = null;\n\n\t\tif ( this._colorsTexture !== null ) {\n\n\t\t\tthis._colorsTexture.dispose();\n\t\t\tthis._colorsTexture = null;\n\n\t\t}\n\n\t}\n\n\tonBeforeRender( renderer, scene, camera, geometry, material/*, _group*/ ) {\n\n\t\t// if visibility has not changed and frustum culling and object sorting is not required\n\t\t// then skip iterating over all items\n\t\tif ( ! this._visibilityChanged && ! this.perObjectFrustumCulled && ! this.sortObjects ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// the indexed version of the multi draw function requires specifying the start\n\t\t// offset in bytes.\n\t\tconst index = geometry.getIndex();\n\t\tconst bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n\n\t\tconst instanceInfo = this._instanceInfo;\n\t\tconst multiDrawStarts = this._multiDrawStarts;\n\t\tconst multiDrawCounts = this._multiDrawCounts;\n\t\tconst geometryInfoList = this._geometryInfo;\n\t\tconst perObjectFrustumCulled = this.perObjectFrustumCulled;\n\t\tconst indirectTexture = this._indirectTexture;\n\t\tconst indirectArray = indirectTexture.image.data;\n\n\t\t// prepare the frustum in the local frame\n\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t_matrix$1\n\t\t\t\t.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse )\n\t\t\t\t.multiply( this.matrixWorld );\n\t\t\t_frustum.setFromProjectionMatrix(\n\t\t\t\t_matrix$1,\n\t\t\t\trenderer.coordinateSystem\n\t\t\t);\n\n\t\t}\n\n\t\tlet multiDrawCount = 0;\n\t\tif ( this.sortObjects ) {\n\n\t\t\t// get the camera position in the local frame\n\t\t\t_matrix$1.copy( this.matrixWorld ).invert();\n\t\t\t_vector$5.setFromMatrixPosition( camera.matrixWorld ).applyMatrix4( _matrix$1 );\n\t\t\t_forward.set( 0, 0, -1 ).transformDirection( camera.matrixWorld ).transformDirection( _matrix$1 );\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\t// get the distance from camera used for sorting\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tconst z = _temp.subVectors( _sphere$2.center, _vector$5 ).dot( _forward );\n\t\t\t\t\t\t_renderList.push( geometryInfo.start, geometryInfo.count, z, i );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Sort the draw ranges and prep for rendering\n\t\t\tconst list = _renderList.list;\n\t\t\tconst customSort = this.customSort;\n\t\t\tif ( customSort === null ) {\n\n\t\t\t\tlist.sort( material.transparent ? sortTransparent : sortOpaque );\n\n\t\t\t} else {\n\n\t\t\t\tcustomSort.call( this, list, camera );\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = list.length; i < l; i ++ ) {\n\n\t\t\t\tconst item = list[ i ];\n\t\t\t\tmultiDrawStarts[ multiDrawCount ] = item.start * bytesPerElement;\n\t\t\t\tmultiDrawCounts[ multiDrawCount ] = item.count;\n\t\t\t\tindirectArray[ multiDrawCount ] = item.index;\n\t\t\t\tmultiDrawCount ++;\n\n\t\t\t}\n\n\t\t\t_renderList.reset();\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0, l = instanceInfo.length; i < l; i ++ ) {\n\n\t\t\t\tif ( instanceInfo[ i ].visible && instanceInfo[ i ].active ) {\n\n\t\t\t\t\tconst geometryId = instanceInfo[ i ].geometryIndex;\n\n\t\t\t\t\t// determine whether the batched geometry is within the frustum\n\t\t\t\t\tlet culled = false;\n\t\t\t\t\tif ( perObjectFrustumCulled ) {\n\n\t\t\t\t\t\t// get the bounds in world space\n\t\t\t\t\t\tthis.getMatrixAt( i, _matrix$1 );\n\t\t\t\t\t\tthis.getBoundingSphereAt( geometryId, _sphere$2 ).applyMatrix4( _matrix$1 );\n\t\t\t\t\t\tculled = ! _frustum.intersectsSphere( _sphere$2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! culled ) {\n\n\t\t\t\t\t\tconst geometryInfo = geometryInfoList[ geometryId ];\n\t\t\t\t\t\tmultiDrawStarts[ multiDrawCount ] = geometryInfo.start * bytesPerElement;\n\t\t\t\t\t\tmultiDrawCounts[ multiDrawCount ] = geometryInfo.count;\n\t\t\t\t\t\tindirectArray[ multiDrawCount ] = i;\n\t\t\t\t\t\tmultiDrawCount ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tindirectTexture.needsUpdate = true;\n\t\tthis._multiDrawCount = multiDrawCount;\n\t\tthis._visibilityChanged = false;\n\n\t}\n\n\tonBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial/* , group */ ) {\n\n\t\tthis.onBeforeRender( renderer, null, shadowCamera, geometry, depthMaterial );\n\n\t}\n\n}\n\nclass LineBasicMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineBasicMaterial = true;\n\n\t\tthis.type = 'LineBasicMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.linewidth = 1;\n\t\tthis.linecap = 'round';\n\t\tthis.linejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.linewidth = source.linewidth;\n\t\tthis.linecap = source.linecap;\n\t\tthis.linejoin = source.linejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vStart = /*@__PURE__*/ new Vector3();\nconst _vEnd = /*@__PURE__*/ new Vector3();\n\nconst _inverseMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _ray$1 = /*@__PURE__*/ new Ray();\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\n\nconst _intersectPointOnRay = /*@__PURE__*/ new Vector3();\nconst _intersectPointOnSegment = /*@__PURE__*/ new Vector3();\n\n/**\n * A continuous line. The line are rendered by connecting consecutive\n * vertices with straight lines.\n *\n * ```js\n * const material = new THREE.LineBasicMaterial( { color: 0x0000ff } );\n *\n * const points = [];\n * points.push( new THREE.Vector3( - 10, 0, 0 ) );\n * points.push( new THREE.Vector3( 0, 10, 0 ) );\n * points.push( new THREE.Vector3( 10, 0, 0 ) );\n *\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const line = new THREE.Line( geometry, material );\n * scene.add( line );\n * ```\n *\n * @augments Object3D\n */\nclass Line extends Object3D {\n\n\t/**\n\t * Constructs a new line.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array<Material>} [material] - The line material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLine = true;\n\n\t\tthis.type = 'Line';\n\n\t\t/**\n\t\t * The line geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The line material.\n\t\t *\n\t\t * @type {Material|Array<Material>}\n\t\t * @default LineBasicMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object<String,number>|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array<number>|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes an array of distance values which are necessary for rendering dashed lines.\n\t * For each vertex in the geometry, the method calculates the cumulative length from the\n\t * current point to the very beginning of the line.\n\t *\n\t * @return {Line} A reference to this line.\n\t */\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [ 0 ];\n\n\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\n\n\t\t\t\t_vStart.fromBufferAttribute( positionAttribute, i - 1 );\n\t\t\t\t_vEnd.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i ] += _vStart.distanceTo( _vEnd );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this line.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array<Object>} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Line.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere$1.copy( geometry.boundingSphere );\n\t\t_sphere$1.applyMatrix4( matrixWorld );\n\t\t_sphere$1.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$1 ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst step = this.isLineSegments ? 2 : 1;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst a = index.getX( i );\n\t\t\t\tconst b = index.getX( i + 1 );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst a = index.getX( end - 1 );\n\t\t\t\tconst b = index.getX( start );\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, a, b, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end - 1; i < l; i += step ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, i, i + 1, i );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( this.isLineLoop ) {\n\n\t\t\t\tconst intersect = checkIntersection( this, raycaster, _ray$1, localThresholdSq, end - 1, start, end - 1 );\n\n\t\t\t\tif ( intersect ) {\n\n\t\t\t\t\tintersects.push( intersect );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Line#morphTargetDictionary} and {@link Line#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction checkIntersection( object, raycaster, ray, thresholdSq, a, b, i ) {\n\n\tconst positionAttribute = object.geometry.attributes.position;\n\n\t_vStart.fromBufferAttribute( positionAttribute, a );\n\t_vEnd.fromBufferAttribute( positionAttribute, b );\n\n\tconst distSq = ray.distanceSqToSegment( _vStart, _vEnd, _intersectPointOnRay, _intersectPointOnSegment );\n\n\tif ( distSq > thresholdSq ) return;\n\n\t_intersectPointOnRay.applyMatrix4( object.matrixWorld ); // Move back to world space for distance calculation\n\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectPointOnRay );\n\n\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\treturn {\n\n\t\tdistance: distance,\n\t\t// What do we want? intersection point on the ray or on the segment??\n\t\t// point: raycaster.ray.at( distance ),\n\t\tpoint: _intersectPointOnSegment.clone().applyMatrix4( object.matrixWorld ),\n\t\tindex: i,\n\t\tface: null,\n\t\tfaceIndex: null,\n\t\tbarycoord: null,\n\t\tobject: object\n\n\t};\n\n}\n\nconst _start = /*@__PURE__*/ new Vector3();\nconst _end = /*@__PURE__*/ new Vector3();\n\n/**\n * A series of lines drawn between pairs of vertices.\n *\n * @augments Line\n */\nclass LineSegments extends Line {\n\n\t/**\n\t * Constructs a new line segments.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array<Material>} [material] - The line material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineSegments = true;\n\n\t\tthis.type = 'LineSegments';\n\n\t}\n\n\tcomputeLineDistances() {\n\n\t\tconst geometry = this.geometry;\n\n\t\t// we assume non-indexed geometry\n\n\t\tif ( geometry.index === null ) {\n\n\t\t\tconst positionAttribute = geometry.attributes.position;\n\t\t\tconst lineDistances = [];\n\n\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\n\n\t\t\t\t_start.fromBufferAttribute( positionAttribute, i );\n\t\t\t\t_end.fromBufferAttribute( positionAttribute, i + 1 );\n\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start.distanceTo( _end );\n\n\t\t\t}\n\n\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A continuous line. This is nearly the same as {@link Line} the only difference\n * is that the last vertex is connected with the first vertex in order to close\n * the line to form a loop.\n *\n * @augments Line\n */\nclass LineLoop extends Line {\n\n\t/**\n\t * Constructs a new line loop.\n\t *\n\t * @param {BufferGeometry} [geometry] - The line geometry.\n\t * @param {Material|Array<Material>} [material] - The line material.\n\t */\n\tconstructor( geometry, material ) {\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineLoop = true;\n\n\t\tthis.type = 'LineLoop';\n\n\t}\n\n}\n\nclass PointsMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isPointsMaterial = true;\n\n\t\tthis.type = 'PointsMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.size = 1;\n\t\tthis.sizeAttenuation = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.size = source.size;\n\t\tthis.sizeAttenuation = source.sizeAttenuation;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _inverseMatrix = /*@__PURE__*/ new Matrix4();\nconst _ray = /*@__PURE__*/ new Ray();\nconst _sphere = /*@__PURE__*/ new Sphere();\nconst _position$2 = /*@__PURE__*/ new Vector3();\n\n/**\n * A class for displaying points or point clouds.\n *\n * @augments Object3D\n */\nclass Points extends Object3D {\n\n\t/**\n\t * Constructs a new point cloud.\n\t *\n\t * @param {BufferGeometry} [geometry] - The points geometry.\n\t * @param {Material|Array<Material>} [material] - The points material.\n\t */\n\tconstructor( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPoints = true;\n\n\t\tthis.type = 'Points';\n\n\t\t/**\n\t\t * The points geometry.\n\t\t *\n\t\t * @type {BufferGeometry}\n\t\t */\n\t\tthis.geometry = geometry;\n\n\t\t/**\n\t\t * The line material.\n\t\t *\n\t\t * @type {Material|Array<Material>}\n\t\t * @default PointsMaterial\n\t\t */\n\t\tthis.material = material;\n\n\t\t/**\n\t\t * A dictionary representing the morph targets in the geometry. The key is the\n\t\t * morph targets name, the value its attribute index. This member is `undefined`\n\t\t * by default and only set when morph targets are detected in the geometry.\n\t\t *\n\t\t * @type {Object<String,number>|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetDictionary = undefined;\n\n\t\t/**\n\t\t * An array of weights typically in the range `[0,1]` that specify how much of the morph\n\t\t * is applied. This member is `undefined` by default and only set when morph targets are\n\t\t * detected in the geometry.\n\t\t *\n\t\t * @type {Array<number>|undefined}\n\t\t * @default undefined\n\t\t */\n\t\tthis.morphTargetInfluences = undefined;\n\n\t\tthis.updateMorphTargets();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.material = Array.isArray( source.material ) ? source.material.slice() : source.material;\n\t\tthis.geometry = source.geometry;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes intersection points between a casted ray and this point cloud.\n\t *\n\t * @param {Raycaster} raycaster - The raycaster.\n\t * @param {Array<Object>} intersects - The target array that holds the intersection points.\n\t */\n\traycast( raycaster, intersects ) {\n\n\t\tconst geometry = this.geometry;\n\t\tconst matrixWorld = this.matrixWorld;\n\t\tconst threshold = raycaster.params.Points.threshold;\n\t\tconst drawRange = geometry.drawRange;\n\n\t\t// Checking boundingSphere distance to ray\n\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\n\t\t_sphere.copy( geometry.boundingSphere );\n\t\t_sphere.applyMatrix4( matrixWorld );\n\t\t_sphere.radius += threshold;\n\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\n\n\t\t//\n\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\n\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\n\t\tconst localThresholdSq = localThreshold * localThreshold;\n\n\t\tconst index = geometry.index;\n\t\tconst attributes = geometry.attributes;\n\t\tconst positionAttribute = attributes.position;\n\n\t\tif ( index !== null ) {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, il = end; i < il; i ++ ) {\n\n\t\t\t\tconst a = index.getX( i );\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, a );\n\n\t\t\t\ttestPoint( _position$2, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst start = Math.max( 0, drawRange.start );\n\t\t\tconst end = Math.min( positionAttribute.count, ( drawRange.start + drawRange.count ) );\n\n\t\t\tfor ( let i = start, l = end; i < l; i ++ ) {\n\n\t\t\t\t_position$2.fromBufferAttribute( positionAttribute, i );\n\n\t\t\t\ttestPoint( _position$2, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the values of {@link Points#morphTargetDictionary} and {@link Points#morphTargetInfluences}\n\t * to make sure existing morph targets can influence this 3D object.\n\t */\n\tupdateMorphTargets() {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst morphAttributes = geometry.morphAttributes;\n\t\tconst keys = Object.keys( morphAttributes );\n\n\t\tif ( keys.length > 0 ) {\n\n\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\n\n\t\t\tif ( morphAttribute !== undefined ) {\n\n\t\t\t\tthis.morphTargetInfluences = [];\n\t\t\t\tthis.morphTargetDictionary = {};\n\n\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\n\n\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\n\n\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\n\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\n\n\tconst rayPointDistanceSq = _ray.distanceSqToPoint( point );\n\n\tif ( rayPointDistanceSq < localThresholdSq ) {\n\n\t\tconst intersectPoint = new Vector3();\n\n\t\t_ray.closestPointToPoint( point, intersectPoint );\n\t\tintersectPoint.applyMatrix4( matrixWorld );\n\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\n\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\n\n\t\tintersects.push( {\n\n\t\t\tdistance: distance,\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\n\t\t\tpoint: intersectPoint,\n\t\t\tindex: index,\n\t\t\tface: null,\n\t\t\tfaceIndex: null,\n\t\t\tbarycoord: null,\n\t\t\tobject: object\n\n\t\t} );\n\n\t}\n\n}\n\nclass VideoTexture extends Texture {\n\n\tconstructor( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoTexture = true;\n\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tconst scope = this;\n\n\t\tfunction updateVideo() {\n\n\t\t\tscope.needsUpdate = true;\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t\tif ( 'requestVideoFrameCallback' in video ) {\n\n\t\t\tvideo.requestVideoFrameCallback( updateVideo );\n\n\t\t}\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor( this.image ).copy( this );\n\n\t}\n\n\tupdate() {\n\n\t\tconst video = this.image;\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\n\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\n\n\t\t\tthis.needsUpdate = true;\n\n\t\t}\n\n\t}\n\n}\n\nclass VideoFrameTexture extends VideoTexture {\n\n\tconstructor( mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( {}, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isVideoFrameTexture = true;\n\n\t}\n\n\tupdate() {\n\n\t\t// overwrites `VideoTexture.update()` with an empty method since\n\t\t// this type of texture is updated via `setFrame()`.\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this ); // restoring Texture.clone()\n\n\t}\n\n\tsetFrame( frame ) {\n\n\t\tthis.image = frame;\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass FramebufferTexture extends Texture {\n\n\tconstructor( width, height ) {\n\n\t\tsuper( { width, height } );\n\n\t\tthis.isFramebufferTexture = true;\n\n\t\tthis.magFilter = NearestFilter;\n\t\tthis.minFilter = NearestFilter;\n\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass CompressedTexture extends Texture {\n\n\tconstructor( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace ) {\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace );\n\n\t\tthis.isCompressedTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\t\tthis.mipmaps = mipmaps;\n\n\t\t// no flipping for cube textures\n\t\t// (also flipping doesn't work for compressed textures )\n\n\t\tthis.flipY = false;\n\n\t\t// can't generate mipmaps for compressed textures\n\t\t// mips must be embedded in DDS files\n\n\t\tthis.generateMipmaps = false;\n\n\t}\n\n}\n\nclass CompressedArrayTexture extends CompressedTexture {\n\n\tconstructor( mipmaps, width, height, depth, format, type ) {\n\n\t\tsuper( mipmaps, width, height, format, type );\n\n\t\tthis.isCompressedArrayTexture = true;\n\t\tthis.image.depth = depth;\n\t\tthis.wrapR = ClampToEdgeWrapping;\n\n\t\tthis.layerUpdates = new Set();\n\n\t}\n\n\taddLayerUpdate( layerIndex ) {\n\n\t\tthis.layerUpdates.add( layerIndex );\n\n\t}\n\n\tclearLayerUpdates() {\n\n\t\tthis.layerUpdates.clear();\n\n\t}\n\n}\n\nclass CompressedCubeTexture extends CompressedTexture {\n\n\tconstructor( images, format, type ) {\n\n\t\tsuper( undefined, images[ 0 ].width, images[ 0 ].height, format, type, CubeReflectionMapping );\n\n\t\tthis.isCompressedCubeTexture = true;\n\t\tthis.isCubeTexture = true;\n\n\t\tthis.image = images;\n\n\t}\n\n}\n\nclass CanvasTexture extends Texture {\n\n\tconstructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\n\n\t\tsuper( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isCanvasTexture = true;\n\n\t\tthis.needsUpdate = true;\n\n\t}\n\n}\n\nclass DepthTexture extends Texture {\n\n\tconstructor( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format = DepthFormat ) {\n\n\t\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\n\n\t\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\n\n\t\t}\n\n\t\tif ( type === undefined && format === DepthFormat ) type = UnsignedIntType;\n\t\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\n\n\t\tsuper( null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\n\n\t\tthis.isDepthTexture = true;\n\n\t\tthis.image = { width: width, height: height };\n\n\t\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\n\t\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\n\n\t\tthis.flipY = false;\n\t\tthis.generateMipmaps = false;\n\n\t\tthis.compareFunction = null;\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.source = new Source( Object.assign( {}, source.image ) ); // see #30540\n\t\tthis.compareFunction = source.compareFunction;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tif ( this.compareFunction !== null ) data.compareFunction = this.compareFunction;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * An abstract base class for creating an analytic curve object that contains methods\n * for interpolation.\n *\n * @abstract\n */\nclass Curve {\n\n\t/**\n\t * Constructs a new curve.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'Curve';\n\n\t\t/**\n\t\t * This value determines the amount of divisions when calculating the\n\t\t * cumulative segment lengths of a curve via {@link Curve#getLengths}. To ensure\n\t\t * precision when using methods like {@link Curve#getSpacedPoints}, it is\n\t\t * recommended to increase the value of this property if the curve is very large.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 200\n\t\t */\n\t\tthis.arcLengthDivisions = 200;\n\n\t\t/**\n\t\t * Must be set to `true` if the curve parameters have changed.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.needsUpdate = false;\n\n\t\t/**\n\t\t * An internal cache that holds precomputed curve length values.\n\t\t *\n\t\t * @private\n\t\t * @type {?Array<number>}\n\t\t * @default null\n\t\t */\n\t\tthis.cacheArcLengths = null;\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definition)\n\t * for the given interpolation factor.\n\t *\n\t * @abstract\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {?(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPoint( /* t, optionalTarget */ ) {\n\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definition)\n\t * for the given interpolation factor. Unlike {@link Curve#getPoint}, this method honors the length\n\t * of the curve which equidistant samples.\n\t *\n\t * @param {number} u - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPointAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getPoint( t, optionalTarget );\n\n\t}\n\n\t/**\n\t * This method samples the curve via {@link Curve#getPoint} and returns an array of points representing\n\t * the curve shape.\n\t *\n\t * @param {number} [divisions=5] - The number of divisions.\n\t * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`.\n\t */\n\tgetPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t// Get sequence of points using getPointAt( u )\n\n\t/**\n\t * This method samples the curve via {@link Curve#getPointAt} and returns an array of points representing\n\t * the curve shape. Unlike {@link Curve#getPoints}, this method returns equi-spaced points across the entire\n\t * curve.\n\t *\n\t * @param {number} [divisions=5] - The number of divisions.\n\t * @return {Array<(Vector2|Vector3)>} An array holding the sampled curve values. The number of points is `divisions + 1`.\n\t */\n\tgetSpacedPoints( divisions = 5 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\n\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\t/**\n\t * Returns the total arc length of the curve.\n\t *\n\t * @return {number} The length of the curve.\n\t */\n\tgetLength() {\n\n\t\tconst lengths = this.getLengths();\n\t\treturn lengths[ lengths.length - 1 ];\n\n\t}\n\n\t/**\n\t * Returns an array of cumulative segment lengths of the curve.\n\t *\n\t * @param {number} [divisions=this.arcLengthDivisions] - The number of divisions.\n\t * @return {Array<number>} An array holding the cumulative segment lengths.\n\t */\n\tgetLengths( divisions = this.arcLengthDivisions ) {\n\n\t\tif ( this.cacheArcLengths &&\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\n\t\t\t! this.needsUpdate ) {\n\n\t\t\treturn this.cacheArcLengths;\n\n\t\t}\n\n\t\tthis.needsUpdate = false;\n\n\t\tconst cache = [];\n\t\tlet current, last = this.getPoint( 0 );\n\t\tlet sum = 0;\n\n\t\tcache.push( 0 );\n\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\n\n\t\t\tcurrent = this.getPoint( p / divisions );\n\t\t\tsum += current.distanceTo( last );\n\t\t\tcache.push( sum );\n\t\t\tlast = current;\n\n\t\t}\n\n\t\tthis.cacheArcLengths = cache;\n\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\n\n\t}\n\n\t/**\n\t * Update the cumulative segment distance cache. The method must be called\n\t * every time curve parameters are changed. If an updated curve is part of a\n\t * composed curve like {@link CurvePath}, this method must be called on the\n\t * composed curve, too.\n\t */\n\tupdateArcLengths() {\n\n\t\tthis.needsUpdate = true;\n\t\tthis.getLengths();\n\n\t}\n\n\t/**\n\t * Given an interpolation factor in the range `[0,1]`, this method returns an updated\n\t * interpolation factor in the same range that can be ued to sample equidistant points\n\t * from a curve.\n\t *\n\t * @param {number} u - The interpolation factor.\n\t * @param {?number} distance - An optional distance on the curve.\n\t * @return {number} The updated interpolation factor.\n\t */\n\tgetUtoTmapping( u, distance = null ) {\n\n\t\tconst arcLengths = this.getLengths();\n\n\t\tlet i = 0;\n\t\tconst il = arcLengths.length;\n\n\t\tlet targetArcLength; // The targeted u distance value to get\n\n\t\tif ( distance ) {\n\n\t\t\ttargetArcLength = distance;\n\n\t\t} else {\n\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\n\n\t\t}\n\n\t\t// binary search for the index with largest value smaller than target u distance\n\n\t\tlet low = 0, high = il - 1, comparison;\n\n\t\twhile ( low <= high ) {\n\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\n\n\t\t\tif ( comparison < 0 ) {\n\n\t\t\t\tlow = i + 1;\n\n\t\t\t} else if ( comparison > 0 ) {\n\n\t\t\t\thigh = i - 1;\n\n\t\t\t} else {\n\n\t\t\t\thigh = i;\n\t\t\t\tbreak;\n\n\t\t\t\t// DONE\n\n\t\t\t}\n\n\t\t}\n\n\t\ti = high;\n\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\n\n\t\t\treturn i / ( il - 1 );\n\n\t\t}\n\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\n\n\t\tconst lengthBefore = arcLengths[ i ];\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\n\n\t\tconst segmentLength = lengthAfter - lengthBefore;\n\n\t\t// determine where we are between the 'before' and 'after' points\n\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\n\n\t\t// add that fractional amount to t\n\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\n\n\t\treturn t;\n\n\t}\n\n\t/**\n\t * Returns a unit vector tangent for the given interpolation factor.\n\t * If the derived curve does not implement its tangent derivation,\n\t * two points a small delta apart will be used to find its gradient\n\t * which seems to give a reasonable approximation.\n\t *\n\t * @param {number} t - The interpolation factor.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The tangent vector.\n\t */\n\tgetTangent( t, optionalTarget ) {\n\n\t\tconst delta = 0.0001;\n\t\tlet t1 = t - delta;\n\t\tlet t2 = t + delta;\n\n\t\t// Capping in case of danger\n\n\t\tif ( t1 < 0 ) t1 = 0;\n\t\tif ( t2 > 1 ) t2 = 1;\n\n\t\tconst pt1 = this.getPoint( t1 );\n\t\tconst pt2 = this.getPoint( t2 );\n\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\n\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\n\n\t\treturn tangent;\n\n\t}\n\n\t/**\n\t * Same as {@link Curve#getTangent} but with equidistant samples.\n\t *\n\t * @param {number} u - The interpolation factor.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {(Vector2|Vector3)} The tangent vector.\n\t * @see {@link Curve#getPointAt}\n\t */\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\tconst t = this.getUtoTmapping( u );\n\t\treturn this.getTangent( t, optionalTarget );\n\n\t}\n\n\t/**\n\t * Generates the Frenet Frames. Requires a curve definition in 3D space. Used\n\t * in geometries like {@link TubeGeometry} or {@link ExtrudeGeometry}.\n\t *\n\t * @param {number} segments - The number of segments.\n\t * @param {boolean} [closed=false] - Whether the curve is closed or not.\n\t * @return {{tangents: Array<Vector3>, normals: Array<Vector3>, binormals: Array<Vector3>}} The Frenet Frames.\n\t */\n\tcomputeFrenetFrames( segments, closed = false ) {\n\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\n\n\t\tconst normal = new Vector3();\n\n\t\tconst tangents = [];\n\t\tconst normals = [];\n\t\tconst binormals = [];\n\n\t\tconst vec = new Vector3();\n\t\tconst mat = new Matrix4();\n\n\t\t// compute the tangent vectors for each segment on the curve\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst u = i / segments;\n\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\n\n\t\t}\n\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\n\t\t// and in the direction of the minimum tangent xyz component\n\n\t\tnormals[ 0 ] = new Vector3();\n\t\tbinormals[ 0 ] = new Vector3();\n\t\tlet min = Number.MAX_VALUE;\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\n\n\t\tif ( tx <= min ) {\n\n\t\t\tmin = tx;\n\t\t\tnormal.set( 1, 0, 0 );\n\n\t\t}\n\n\t\tif ( ty <= min ) {\n\n\t\t\tmin = ty;\n\t\t\tnormal.set( 0, 1, 0 );\n\n\t\t}\n\n\t\tif ( tz <= min ) {\n\n\t\t\tnormal.set( 0, 0, 1 );\n\n\t\t}\n\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\n\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\n\n\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\n\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\n\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\n\n\t\t\tif ( vec.length() > Number.EPSILON ) {\n\n\t\t\t\tvec.normalize();\n\n\t\t\t\tconst theta = Math.acos( clamp( tangents[ i - 1 ].dot( tangents[ i ] ), -1, 1 ) ); // clamp for floating pt errors\n\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\n\n\t\t\t}\n\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t}\n\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\n\n\t\tif ( closed === true ) {\n\n\t\t\tlet theta = Math.acos( clamp( normals[ 0 ].dot( normals[ segments ] ), -1, 1 ) );\n\t\t\ttheta /= segments;\n\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\n\n\t\t\t\ttheta = - theta;\n\n\t\t\t}\n\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\t\t// twist a little...\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttangents: tangents,\n\t\t\tnormals: normals,\n\t\t\tbinormals: binormals\n\t\t};\n\n\t}\n\n\t/**\n\t * Returns a new curve with copied values from this instance.\n\t *\n\t * @return {Curve} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given curve to this instance.\n\t *\n\t * @param {Curve} source - The curve to copy.\n\t * @return {Curve} A reference to this curve.\n\t */\n\tcopy( source ) {\n\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Serializes the curve into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized curve.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst data = {\n\t\t\tmetadata: {\n\t\t\t\tversion: 4.6,\n\t\t\t\ttype: 'Curve',\n\t\t\t\tgenerator: 'Curve.toJSON'\n\t\t\t}\n\t\t};\n\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\n\t\tdata.type = this.type;\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Deserializes the curve from the given JSON.\n\t *\n\t * @param {Object} json - The JSON holding the serialized curve.\n\t * @return {Curve} A reference to this curve.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing an ellipse.\n *\n * ```js\n * const curve = new THREE.EllipseCurve(\n * \t0, 0,\n * \t10, 10,\n * \t0, 2 * Math.PI,\n * \tfalse,\n * \t0\n * );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const ellipse = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass EllipseCurve extends Curve {\n\n\t/**\n\t * Constructs a new ellipse curve.\n\t *\n\t * @param {number} [aX=0] - The X center of the ellipse.\n\t * @param {number} [aY=0] - The Y center of the ellipse.\n\t * @param {number} [xRadius=1] - The radius of the ellipse in the x direction.\n\t * @param {number} [yRadius=1] - The radius of the ellipse in the y direction.\n\t * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.\n\t * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t */\n\tconstructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isEllipseCurve = true;\n\n\t\tthis.type = 'EllipseCurve';\n\n\t\t/**\n\t\t * The X center of the ellipse.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aX = aX;\n\n\t\t/**\n\t\t * The Y center of the ellipse.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aY = aY;\n\n\t\t/**\n\t\t * The radius of the ellipse in the x direction.\n\t\t * Setting the this value equal to the {@link EllipseCurve#yRadius} will result in a circle.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.xRadius = xRadius;\n\n\t\t/**\n\t\t * The radius of the ellipse in the y direction.\n\t\t * Setting the this value equal to the {@link EllipseCurve#xRadius} will result in a circle.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.yRadius = yRadius;\n\n\t\t/**\n\t\t * The start angle of the curve in radians starting from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aStartAngle = aStartAngle;\n\n\t\t/**\n\t\t * The end angle of the curve in radians starting from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Math.PI*2\n\t\t */\n\t\tthis.aEndAngle = aEndAngle;\n\n\t\t/**\n\t\t * Whether the ellipse is drawn clockwise or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.aClockwise = aClockwise;\n\n\t\t/**\n\t\t * The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.aRotation = aRotation;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst twoPi = Math.PI * 2;\n\t\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\n\t\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\n\n\t\t// ensures that deltaAngle is 0 .. 2 PI\n\t\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\n\t\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\n\n\t\tif ( deltaAngle < Number.EPSILON ) {\n\n\t\t\tif ( samePoints ) {\n\n\t\t\t\tdeltaAngle = 0;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.aClockwise === true && ! samePoints ) {\n\n\t\t\tif ( deltaAngle === twoPi ) {\n\n\t\t\t\tdeltaAngle = - twoPi;\n\n\t\t\t} else {\n\n\t\t\t\tdeltaAngle = deltaAngle - twoPi;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst angle = this.aStartAngle + t * deltaAngle;\n\t\tlet x = this.aX + this.xRadius * Math.cos( angle );\n\t\tlet y = this.aY + this.yRadius * Math.sin( angle );\n\n\t\tif ( this.aRotation !== 0 ) {\n\n\t\t\tconst cos = Math.cos( this.aRotation );\n\t\t\tconst sin = Math.sin( this.aRotation );\n\n\t\t\tconst tx = x - this.aX;\n\t\t\tconst ty = y - this.aY;\n\n\t\t\t// Rotate the point about the center of the ellipse.\n\t\t\tx = tx * cos - ty * sin + this.aX;\n\t\t\ty = tx * sin + ty * cos + this.aY;\n\n\t\t}\n\n\t\treturn point.set( x, y );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.aX = source.aX;\n\t\tthis.aY = source.aY;\n\n\t\tthis.xRadius = source.xRadius;\n\t\tthis.yRadius = source.yRadius;\n\n\t\tthis.aStartAngle = source.aStartAngle;\n\t\tthis.aEndAngle = source.aEndAngle;\n\n\t\tthis.aClockwise = source.aClockwise;\n\n\t\tthis.aRotation = source.aRotation;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.aX = this.aX;\n\t\tdata.aY = this.aY;\n\n\t\tdata.xRadius = this.xRadius;\n\t\tdata.yRadius = this.yRadius;\n\n\t\tdata.aStartAngle = this.aStartAngle;\n\t\tdata.aEndAngle = this.aEndAngle;\n\n\t\tdata.aClockwise = this.aClockwise;\n\n\t\tdata.aRotation = this.aRotation;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.aX = json.aX;\n\t\tthis.aY = json.aY;\n\n\t\tthis.xRadius = json.xRadius;\n\t\tthis.yRadius = json.yRadius;\n\n\t\tthis.aStartAngle = json.aStartAngle;\n\t\tthis.aEndAngle = json.aEndAngle;\n\n\t\tthis.aClockwise = json.aClockwise;\n\n\t\tthis.aRotation = json.aRotation;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing an arc.\n *\n * @augments EllipseCurve\n */\nclass ArcCurve extends EllipseCurve {\n\n\t/**\n\t * Constructs a new arc curve.\n\t *\n\t * @param {number} [aX=0] - The X center of the ellipse.\n\t * @param {number} [aY=0] - The Y center of the ellipse.\n\t * @param {number} [aRadius=1] - The radius of the ellipse in the x direction.\n\t * @param {number} [aStartAngle=0] - The start angle of the curve in radians starting from the positive X axis.\n\t * @param {number} [aEndAngle=Math.PI*2] - The end angle of the curve in radians starting from the positive X axis.\n\t * @param {boolean} [aClockwise=false] - Whether the ellipse is drawn clockwise or not.\n\t */\n\tconstructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tsuper( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isArcCurve = true;\n\n\t\tthis.type = 'ArcCurve';\n\n\t}\n\n}\n\nfunction CubicPoly() {\n\n\t/**\n\t * Centripetal CatmullRom Curve - which is useful for avoiding\n\t* cusps and self-intersections in non-uniform catmull rom curves.\n\t* http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\n\t*\n\t* curve.type accepts centripetal(default), chordal and catmullrom\n\t* curve.tension is used for catmullrom which defaults to 0.5\n\t*/\n\n\t/*\n\tBased on an optimized c++ solution in\n\t- http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\n\t- http://ideone.com/NoEbVM\n\n\tThis CubicPoly class could be used for reusing some variables and calculations,\n\tbut for three.js curve use, it could be possible inlined and flatten into a single function call\n\twhich can be placed in CurveUtils.\n\t*/\n\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n\n\t/*\n\t * Compute coefficients for a cubic polynomial\n\t *   p(s) = c0 + c1*s + c2*s^2 + c3*s^3\n\t * such that\n\t *   p(0) = x0, p(1) = x1\n\t *  and\n\t *   p'(0) = t0, p'(1) = t1.\n\t */\n\tfunction init( x0, x1, t0, t1 ) {\n\n\t\tc0 = x0;\n\t\tc1 = t0;\n\t\tc2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\n\n\t}\n\n\treturn {\n\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\n\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\n\n\t\t},\n\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\n\n\t\t\t// compute tangents when parameterized in [t1,t2]\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\n\n\t\t\t// rescale tangents for parametrization in [0,1]\n\t\t\tt1 *= dt1;\n\t\t\tt2 *= dt1;\n\n\t\t\tinit( x1, x2, t1, t2 );\n\n\t\t},\n\n\t\tcalc: function ( t ) {\n\n\t\t\tconst t2 = t * t;\n\t\t\tconst t3 = t2 * t;\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\n\n\t\t}\n\n\t};\n\n}\n\n//\n\nconst tmp = /*@__PURE__*/ new Vector3();\nconst px = /*@__PURE__*/ new CubicPoly();\nconst py = /*@__PURE__*/ new CubicPoly();\nconst pz = /*@__PURE__*/ new CubicPoly();\n\n/**\n * A curve representing a Catmull-Rom spline.\n *\n * ```js\n * //Create a closed wavey loop\n * const curve = new THREE.CatmullRomCurve3( [\n * \tnew THREE.Vector3( -10, 0, 10 ),\n * \tnew THREE.Vector3( -5, 5, 5 ),\n * \tnew THREE.Vector3( 0, 0, 0 ),\n * \tnew THREE.Vector3( 5, -5, 5 ),\n * \tnew THREE.Vector3( 10, 0, 10 )\n * ] );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass CatmullRomCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Catmull-Rom curve.\n\t *\n\t * @param {Array<Vector3>} [points] - An array of 3D points defining the curve.\n\t * @param {boolean} [closed=false] - Whether the curve is closed or not.\n\t * @param {('centripetal'|'chordal'|'catmullrom')} [curveType='centripetal'] - The curve type.\n\t * @param {number} [tension=0.5] - Tension of the curve.\n\t */\n\tconstructor( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCatmullRomCurve3 = true;\n\n\t\tthis.type = 'CatmullRomCurve3';\n\n\t\t/**\n\t\t * An array of 3D points defining the curve.\n\t\t *\n\t\t * @type {Array<Vector3>}\n\t\t */\n\t\tthis.points = points;\n\n\t\t/**\n\t\t * Whether the curve is closed or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.closed = closed;\n\n\t\t/**\n\t\t * The curve type.\n\t\t *\n\t\t * @type {('centripetal'|'chordal'|'catmullrom')}\n\t\t * @default 'centripetal'\n\t\t */\n\t\tthis.curveType = curveType;\n\n\t\t/**\n\t\t * Tension of the curve.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.5\n\t\t */\n\t\tthis.tension = tension;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst l = points.length;\n\n\t\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\n\t\tlet intPoint = Math.floor( p );\n\t\tlet weight = p - intPoint;\n\n\t\tif ( this.closed ) {\n\n\t\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\n\n\t\t} else if ( weight === 0 && intPoint === l - 1 ) {\n\n\t\t\tintPoint = l - 2;\n\t\t\tweight = 1;\n\n\t\t}\n\n\t\tlet p0, p3; // 4 points (p1 & p2 defined below)\n\n\t\tif ( this.closed || intPoint > 0 ) {\n\n\t\t\tp0 = points[ ( intPoint - 1 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate first point\n\t\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\n\t\t\tp0 = tmp;\n\n\t\t}\n\n\t\tconst p1 = points[ intPoint % l ];\n\t\tconst p2 = points[ ( intPoint + 1 ) % l ];\n\n\t\tif ( this.closed || intPoint + 2 < l ) {\n\n\t\t\tp3 = points[ ( intPoint + 2 ) % l ];\n\n\t\t} else {\n\n\t\t\t// extrapolate last point\n\t\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\n\t\t\tp3 = tmp;\n\n\t\t}\n\n\t\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\n\n\t\t\t// init Centripetal / Chordal Catmull-Rom\n\t\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\n\t\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\n\t\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\n\t\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\n\n\t\t\t// safety check for repeated points\n\t\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\n\t\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\n\t\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\n\n\t\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\n\t\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\n\t\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\n\n\t\t} else if ( this.curveType === 'catmullrom' ) {\n\n\t\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\n\t\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\n\t\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\n\n\t\t}\n\n\t\tpoint.set(\n\t\t\tpx.calc( weight ),\n\t\t\tpy.calc( weight ),\n\t\t\tpz.calc( weight )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\tthis.closed = source.closed;\n\t\tthis.curveType = source.curveType;\n\t\tthis.tension = source.tension;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\tdata.closed = this.closed;\n\t\tdata.curveType = this.curveType;\n\t\tdata.tension = this.tension;\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector3().fromArray( point ) );\n\n\t\t}\n\n\t\tthis.closed = json.closed;\n\t\tthis.curveType = json.curveType;\n\t\tthis.tension = json.tension;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n/**\n * Computes a point on a Catmull-Rom spline.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @param {number} p3 - The fourth control point.\n * @return {number} The calculated point on a Catmull-Rom spline.\n */\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\n\n\tconst v0 = ( p2 - p0 ) * 0.5;\n\tconst v1 = ( p3 - p1 ) * 0.5;\n\tconst t2 = t * t;\n\tconst t3 = t * t2;\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( -3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\n\n}\n\n//\n\nfunction QuadraticBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * p;\n\n}\n\nfunction QuadraticBezierP1( t, p ) {\n\n\treturn 2 * ( 1 - t ) * t * p;\n\n}\n\nfunction QuadraticBezierP2( t, p ) {\n\n\treturn t * t * p;\n\n}\n\n/**\n * Computes a point on a Quadratic Bezier curve.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @return {number} The calculated point on a Quadratic Bezier curve.\n */\nfunction QuadraticBezier( t, p0, p1, p2 ) {\n\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\n\t\tQuadraticBezierP2( t, p2 );\n\n}\n\n//\n\nfunction CubicBezierP0( t, p ) {\n\n\tconst k = 1 - t;\n\treturn k * k * k * p;\n\n}\n\nfunction CubicBezierP1( t, p ) {\n\n\tconst k = 1 - t;\n\treturn 3 * k * k * t * p;\n\n}\n\nfunction CubicBezierP2( t, p ) {\n\n\treturn 3 * ( 1 - t ) * t * t * p;\n\n}\n\nfunction CubicBezierP3( t, p ) {\n\n\treturn t * t * t * p;\n\n}\n\n/**\n * Computes a point on a Cubic Bezier curve.\n *\n * @param {number} t - The interpolation factor.\n * @param {number} p0 - The first control point.\n * @param {number} p1 - The second control point.\n * @param {number} p2 - The third control point.\n * @param {number} p3 - The fourth control point.\n * @return {number} The calculated point on a Cubic Bezier curve.\n */\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\n\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\n\t\tCubicBezierP3( t, p3 );\n\n}\n\n/**\n * A curve representing a 2D Cubic Bezier curve.\n *\n * ```js\n * const curve = new THREE.CubicBezierCurve(\n * \tnew THREE.Vector2( - 0, 0 ),\n * \tnew THREE.Vector2( - 5, 15 ),\n * \tnew THREE.Vector2( 20, 15 ),\n * \tnew THREE.Vector2( 10, 0 )\n * );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass CubicBezierCurve extends Curve {\n\n\t/**\n\t * Constructs a new Cubic Bezier curve.\n\t *\n\t * @param {Vector2} [v0] - The start point.\n\t * @param {Vector2} [v1] - The first control point.\n\t * @param {Vector2} [v2] - The second control point.\n\t * @param {Vector2} [v3] - The end point.\n\t */\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubicBezierCurve = true;\n\n\t\tthis.type = 'CubicBezierCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The first control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The second control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v3 = v3;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D Cubic Bezier curve.\n *\n * @augments Curve\n */\nclass CubicBezierCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Cubic Bezier curve.\n\t *\n\t * @param {Vector3} [v0] - The start point.\n\t * @param {Vector3} [v1] - The first control point.\n\t * @param {Vector3} [v2] - The second control point.\n\t * @param {Vector3} [v3] - The end point.\n\t */\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isCubicBezierCurve3 = true;\n\n\t\tthis.type = 'CubicBezierCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The first control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The second control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v3 = v3;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n\n\t\tpoint.set(\n\t\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\n\t\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\n\t\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\t\tthis.v3.copy( source.v3 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\t\tdata.v3 = this.v3.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\t\tthis.v3.fromArray( json.v3 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D line segment.\n *\n * @augments Curve\n */\nclass LineCurve extends Curve {\n\n\t/**\n\t * Constructs a new line curve.\n\t *\n\t * @param {Vector2} [v1] - The start point.\n\t * @param {Vector2} [v2] - The end point.\n\t */\n\tconstructor( v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineCurve = true;\n\n\t\tthis.type = 'LineCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the line.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the line.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector2() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D line segment.\n *\n * @augments Curve\n */\nclass LineCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new line curve.\n\t *\n\t * @param {Vector3} [v1] - The start point.\n\t * @param {Vector3} [v2] - The end point.\n\t */\n\tconstructor( v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLineCurve3 = true;\n\n\t\tthis.type = 'LineCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the line.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the line. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the line.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tif ( t === 1 ) {\n\n\t\t\tpoint.copy( this.v2 );\n\n\t\t} else {\n\n\t\t\tpoint.copy( this.v2 ).sub( this.v1 );\n\t\t\tpoint.multiplyScalar( t ).add( this.v1 );\n\n\t\t}\n\n\t\treturn point;\n\n\t}\n\n\t// Line curve is linear, so we can overwrite default getPointAt\n\tgetPointAt( u, optionalTarget ) {\n\n\t\treturn this.getPoint( u, optionalTarget );\n\n\t}\n\n\tgetTangent( t, optionalTarget = new Vector3() ) {\n\n\t\treturn optionalTarget.subVectors( this.v2, this.v1 ).normalize();\n\n\t}\n\n\tgetTangentAt( u, optionalTarget ) {\n\n\t\treturn this.getTangent( u, optionalTarget );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D Quadratic Bezier curve.\n *\n * ```js\n * const curve = new THREE.QuadraticBezierCurve(\n * \tnew THREE.Vector2( - 10, 0 ),\n * \tnew THREE.Vector2( 20, 15 ),\n * \tnew THREE.Vector2( 10, 0 )\n * )\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const curveObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass QuadraticBezierCurve extends Curve {\n\n\t/**\n\t * Constructs a new Quadratic Bezier curve.\n\t *\n\t * @param {Vector2} [v0] - The start point.\n\t * @param {Vector2} [v1] - The control point.\n\t * @param {Vector2} [v2] - The end point.\n\t */\n\tconstructor( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuadraticBezierCurve = true;\n\n\t\tthis.type = 'QuadraticBezierCurve';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The control point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 3D Quadratic Bezier curve.\n *\n * @augments Curve\n */\nclass QuadraticBezierCurve3 extends Curve {\n\n\t/**\n\t * Constructs a new Quadratic Bezier curve.\n\t *\n\t * @param {Vector3} [v0] - The start point.\n\t * @param {Vector3} [v1] - The control point.\n\t * @param {Vector3} [v2] - The end point.\n\t */\n\tconstructor( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isQuadraticBezierCurve3 = true;\n\n\t\tthis.type = 'QuadraticBezierCurve3';\n\n\t\t/**\n\t\t * The start point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v0 = v0;\n\n\t\t/**\n\t\t * The control point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v1 = v1;\n\n\t\t/**\n\t\t * The end point.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.v2 = v2;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector3} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector3} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector3() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\n\n\t\tpoint.set(\n\t\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\n\t\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\n\t\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.v0.copy( source.v0 );\n\t\tthis.v1.copy( source.v1 );\n\t\tthis.v2.copy( source.v2 );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.v0 = this.v0.toArray();\n\t\tdata.v1 = this.v1.toArray();\n\t\tdata.v2 = this.v2.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.v0.fromArray( json.v0 );\n\t\tthis.v1.fromArray( json.v1 );\n\t\tthis.v2.fromArray( json.v2 );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A curve representing a 2D spline curve.\n *\n * ```js\n * // Create a sine-like wave\n * const curve = new THREE.SplineCurve( [\n * \tnew THREE.Vector2( -10, 0 ),\n * \tnew THREE.Vector2( -5, 5 ),\n * \tnew THREE.Vector2( 0, 0 ),\n * \tnew THREE.Vector2( 5, -5 ),\n * \tnew THREE.Vector2( 10, 0 )\n * ] );\n *\n * const points = curve.getPoints( 50 );\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n *\n * const material = new THREE.LineBasicMaterial( { color: 0xff0000 } );\n *\n * // Create the final object to add to the scene\n * const splineObject = new THREE.Line( geometry, material );\n * ```\n *\n * @augments Curve\n */\nclass SplineCurve extends Curve {\n\n\t/**\n\t * Constructs a new 2D spline curve.\n\t *\n\t * @param {Array<Vector2>} [points] -  An array of 2D points defining the curve.\n\t */\n\tconstructor( points = [] ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSplineCurve = true;\n\n\t\tthis.type = 'SplineCurve';\n\n\t\t/**\n\t\t * An array of 2D points defining the curve.\n\t\t *\n\t\t * @type {Array<Vector2>}\n\t\t */\n\t\tthis.points = points;\n\n\t}\n\n\t/**\n\t * Returns a point on the curve.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {Vector2} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {Vector2} The position on the curve.\n\t */\n\tgetPoint( t, optionalTarget = new Vector2() ) {\n\n\t\tconst point = optionalTarget;\n\n\t\tconst points = this.points;\n\t\tconst p = ( points.length - 1 ) * t;\n\n\t\tconst intPoint = Math.floor( p );\n\t\tconst weight = p - intPoint;\n\n\t\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\n\t\tconst p1 = points[ intPoint ];\n\t\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\n\t\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\n\n\t\tpoint.set(\n\t\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\n\t\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\n\t\t);\n\n\t\treturn point;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = source.points[ i ];\n\n\t\t\tthis.points.push( point.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.points = [];\n\n\t\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = this.points[ i ];\n\t\t\tdata.points.push( point.toArray() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.points = [];\n\n\t\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\n\n\t\t\tconst point = json.points[ i ];\n\t\t\tthis.points.push( new Vector2().fromArray( point ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\nvar Curves = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tArcCurve: ArcCurve,\n\tCatmullRomCurve3: CatmullRomCurve3,\n\tCubicBezierCurve: CubicBezierCurve,\n\tCubicBezierCurve3: CubicBezierCurve3,\n\tEllipseCurve: EllipseCurve,\n\tLineCurve: LineCurve,\n\tLineCurve3: LineCurve3,\n\tQuadraticBezierCurve: QuadraticBezierCurve,\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\n\tSplineCurve: SplineCurve\n});\n\n/**\n * A base class extending {@link Curve}. `CurvePath` is simply an\n * array of connected curves, but retains the API of a curve.\n *\n * @augments Curve\n */\nclass CurvePath extends Curve {\n\n\t/**\n\t * Constructs a new curve path.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'CurvePath';\n\n\t\t/**\n\t\t * An array of curves defining the\n\t\t * path.\n\t\t *\n\t\t * @type {Array<Curve>}\n\t\t */\n\t\tthis.curves = [];\n\n\t\t/**\n\t\t * Whether the path should automatically be closed\n\t\t * by a line curve.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.autoClose = false;\n\n\t}\n\n\t/**\n\t * Adds a curve to this curve path.\n\t *\n\t * @param {Curve} curve - The curve to add.\n\t */\n\tadd( curve ) {\n\n\t\tthis.curves.push( curve );\n\n\t}\n\n\t/**\n\t * Adds a line curve to close the path.\n\t *\n\t * @return {CurvePath} A reference to this curve path.\n\t */\n\tclosePath() {\n\n\t\t// Add a line curve if start and end of lines are not connected\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\n\n\t\tif ( ! startPoint.equals( endPoint ) ) {\n\n\t\t\tconst lineType = ( startPoint.isVector2 === true ) ? 'LineCurve' : 'LineCurve3';\n\t\t\tthis.curves.push( new Curves[ lineType ]( endPoint, startPoint ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * This method returns a vector in 2D or 3D space (depending on the curve definitions)\n\t * for the given interpolation factor.\n\t *\n\t * @param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.\n\t * @param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.\n\t * @return {?(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.\n\t */\n\tgetPoint( t, optionalTarget ) {\n\n\t\t// To get accurate point with reference to\n\t\t// entire path distance at time t,\n\t\t// following has to be done:\n\n\t\t// 1. Length of each sub path have to be known\n\t\t// 2. Locate and identify type of curve\n\t\t// 3. Get t for the curve\n\t\t// 4. Return curve.getPointAt(t')\n\n\t\tconst d = t * this.getLength();\n\t\tconst curveLengths = this.getCurveLengths();\n\t\tlet i = 0;\n\n\t\t// To think about boundaries points.\n\n\t\twhile ( i < curveLengths.length ) {\n\n\t\t\tif ( curveLengths[ i ] >= d ) {\n\n\t\t\t\tconst diff = curveLengths[ i ] - d;\n\t\t\t\tconst curve = this.curves[ i ];\n\n\t\t\t\tconst segmentLength = curve.getLength();\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n\n\t\t\t\treturn curve.getPointAt( u, optionalTarget );\n\n\t\t\t}\n\n\t\t\ti ++;\n\n\t\t}\n\n\t\treturn null;\n\n\t\t// loop where sum != 0, sum > d , sum+1 <d\n\n\t}\n\n\tgetLength() {\n\n\t\t// We cannot use the default THREE.Curve getPoint() with getLength() because in\n\t\t// THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n\t\t// getPoint() depends on getLength\n\n\t\tconst lens = this.getCurveLengths();\n\t\treturn lens[ lens.length - 1 ];\n\n\t}\n\n\tupdateArcLengths() {\n\n\t\t// cacheLengths must be recalculated.\n\n\t\tthis.needsUpdate = true;\n\t\tthis.cacheLengths = null;\n\t\tthis.getCurveLengths();\n\n\t}\n\n\t/**\n\t * Returns list of cumulative curve lengths of the defined curves.\n\t *\n\t * @return {Array<number>} The curve lengths.\n\t */\n\tgetCurveLengths() {\n\n\t\t// Compute lengths and cache them\n\t\t// We cannot overwrite getLengths() because UtoT mapping uses it.\n\t\t// We use cache values if curves and cache array are same length\n\n\t\tif ( this.cacheLengths && this.cacheLengths.length === this.curves.length ) {\n\n\t\t\treturn this.cacheLengths;\n\n\t\t}\n\n\t\t// Get length of sub-curve\n\t\t// Push sums into cached array\n\n\t\tconst lengths = [];\n\t\tlet sums = 0;\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tsums += this.curves[ i ].getLength();\n\t\t\tlengths.push( sums );\n\n\t\t}\n\n\t\tthis.cacheLengths = lengths;\n\n\t\treturn lengths;\n\n\t}\n\n\tgetSpacedPoints( divisions = 40 ) {\n\n\t\tconst points = [];\n\n\t\tfor ( let i = 0; i <= divisions; i ++ ) {\n\n\t\t\tpoints.push( this.getPoint( i / divisions ) );\n\n\t\t}\n\n\t\tif ( this.autoClose ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tgetPoints( divisions = 12 ) {\n\n\t\tconst points = [];\n\t\tlet last;\n\n\t\tfor ( let i = 0, curves = this.curves; i < curves.length; i ++ ) {\n\n\t\t\tconst curve = curves[ i ];\n\t\t\tconst resolution = curve.isEllipseCurve ? divisions * 2\n\t\t\t\t: ( curve.isLineCurve || curve.isLineCurve3 ) ? 1\n\t\t\t\t\t: curve.isSplineCurve ? divisions * curve.points.length\n\t\t\t\t\t\t: divisions;\n\n\t\t\tconst pts = curve.getPoints( resolution );\n\n\t\t\tfor ( let j = 0; j < pts.length; j ++ ) {\n\n\t\t\t\tconst point = pts[ j ];\n\n\t\t\t\tif ( last && last.equals( point ) ) continue; // ensures no consecutive points are duplicates\n\n\t\t\t\tpoints.push( point );\n\t\t\t\tlast = point;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.autoClose && points.length > 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\n\n\t\t\tpoints.push( points[ 0 ] );\n\n\t\t}\n\n\t\treturn points;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = source.curves[ i ];\n\n\t\t\tthis.curves.push( curve.clone() );\n\n\t\t}\n\n\t\tthis.autoClose = source.autoClose;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.autoClose = this.autoClose;\n\t\tdata.curves = [];\n\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = this.curves[ i ];\n\t\t\tdata.curves.push( curve.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.autoClose = json.autoClose;\n\t\tthis.curves = [];\n\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\n\n\t\t\tconst curve = json.curves[ i ];\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * A 2D path representation. The class provides methods for creating paths\n * and contours of 2D shapes similar to the 2D Canvas API.\n *\n * ```js\n * const path = new THREE.Path();\n *\n * path.lineTo( 0, 0.8 );\n * path.quadraticCurveTo( 0, 1, 0.2, 1 );\n * path.lineTo( 1, 1 );\n *\n * const points = path.getPoints();\n *\n * const geometry = new THREE.BufferGeometry().setFromPoints( points );\n * const material = new THREE.LineBasicMaterial( { color: 0xffffff } );\n *\n * const line = new THREE.Line( geometry, material );\n * scene.add( line );\n * ```\n *\n * @augments CurvePath\n */\nclass Path extends CurvePath {\n\n\t/**\n\t * Constructs a new path.\n\t *\n\t * @param {Array<Vector2>} [points] - An array of 2D points defining the path.\n\t */\n\tconstructor( points ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Path';\n\n\t\t/**\n\t\t * The current offset of the path. Any new curve added will start here.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.currentPoint = new Vector2();\n\n\t\tif ( points ) {\n\n\t\t\tthis.setFromPoints( points );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Creates a path from the given list of points. The points are added\n\t * to the path as instances of {@link LineCurve}.\n\t *\n\t * @param {Array<Vector2>} points - An array of 2D points.\n\t * @return {Path} A reference to this path.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\n\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\n\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Moves {@link Path#currentPoint} to the given point.\n\t *\n\t * @param {number} x - The x coordinate.\n\t * @param {number} y - The y coordinate.\n\t * @return {Path} A reference to this path.\n\t */\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link LineCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} x - The x coordinate of the end point.\n\t * @param {number} y - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tlineTo( x, y ) {\n\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCPx - The x coordinate of the control point.\n\t * @param {number} aCPy - The y coordinate of the control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tconst curve = new QuadraticBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCPx, aCPy ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link CubicBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCP1x - The x coordinate of the first control point.\n\t * @param {number} aCP1y - The y coordinate of the first control point.\n\t * @param {number} aCP2x - The x coordinate of the second control point.\n\t * @param {number} aCP2y - The y coordinate of the second control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {Path} A reference to this path.\n\t */\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tconst curve = new CubicBezierCurve(\n\t\t\tthis.currentPoint.clone(),\n\t\t\tnew Vector2( aCP1x, aCP1y ),\n\t\t\tnew Vector2( aCP2x, aCP2y ),\n\t\t\tnew Vector2( aX, aY )\n\t\t);\n\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.set( aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link SplineCurve} to the path by connecting\n\t * the current point with the given list of points.\n\t *\n\t * @param {Array<Vector2>} pts - An array of points in 2D space.\n\t * @return {Path} A reference to this path.\n\t */\n\tsplineThru( pts ) {\n\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\n\n\t\tconst curve = new SplineCurve( npts );\n\t\tthis.curves.push( curve );\n\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an arc as an instance of {@link EllipseCurve} to the path, positioned relative\n\t * to the current point.\n\t *\n\t * @param {number} aX - The x coordinate of the center of the arc offsetted from the previous curve.\n\t * @param {number} aY - The y coordinate of the center of the arc offsetted from the previous curve.\n\t * @param {number} aRadius - The radius of the arc.\n\t * @param {number} aStartAngle - The start angle in radians.\n\t * @param {number} aEndAngle - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.\n\t * @return {Path} A reference to this path.\n\t */\n\tarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\n\t\t\taStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an absolutely positioned arc as an instance of {@link EllipseCurve} to the path.\n\t *\n\t * @param {number} aX - The x coordinate of the center of the arc.\n\t * @param {number} aY - The y coordinate of the center of the arc.\n\t * @param {number} aRadius - The radius of the arc.\n\t * @param {number} aStartAngle - The start angle in radians.\n\t * @param {number} aEndAngle - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the arc clockwise or not.\n\t * @return {Path} A reference to this path.\n\t */\n\tabsarc( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\n\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an ellipse as an instance of {@link EllipseCurve} to the path, positioned relative\n\t * to the current point\n\t *\n\t * @param {number} aX - The x coordinate of the center of the ellipse offsetted from the previous curve.\n\t * @param {number} aY - The y coordinate of the center of the ellipse offsetted from the previous curve.\n\t * @param {number} xRadius - The radius of the ellipse in the x axis.\n\t * @param {number} yRadius - The radius of the ellipse in the y axis.\n\t * @param {number} aStartAngle - The start angle in radians.\n\t * @param {number} aEndAngle - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.\n\t * @param {boolean} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t * @return {Path} A reference to this path.\n\t */\n\tellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst x0 = this.currentPoint.x;\n\t\tconst y0 = this.currentPoint.y;\n\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an absolutely positioned ellipse as an instance of {@link EllipseCurve} to the path.\n\t *\n\t * @param {number} aX - The x coordinate of the absolute center of the ellipse.\n\t * @param {number} aY - The y coordinate of the absolute center of the ellipse.\n\t * @param {number} xRadius - The radius of the ellipse in the x axis.\n\t * @param {number} yRadius - The radius of the ellipse in the y axis.\n\t * @param {number} aStartAngle - The start angle in radians.\n\t * @param {number} aEndAngle - The end angle in radians.\n\t * @param {boolean} [aClockwise=false] - Whether to sweep the ellipse clockwise or not.\n\t * @param {number} [aRotation=0] - The rotation angle of the ellipse in radians, counterclockwise from the positive X axis.\n\t * @return {Path} A reference to this path.\n\t */\n\tabsellipse( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\n\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\n\n\t\tif ( this.curves.length > 0 ) {\n\n\t\t\t// if a previous curve is present, attempt to join\n\t\t\tconst firstPoint = curve.getPoint( 0 );\n\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\n\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.curves.push( curve );\n\n\t\tconst lastPoint = curve.getPoint( 1 );\n\t\tthis.currentPoint.copy( lastPoint );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.currentPoint.copy( source.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.currentPoint = this.currentPoint.toArray();\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.currentPoint.fromArray( json.currentPoint );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Creates meshes with axial symmetry like vases. The lathe rotates around the Y axis.\n *\n * ```js\n * const points = [];\n * for ( let i = 0; i < 10; i ++ ) {\n * \tpoints.push( new THREE.Vector2( Math.sin( i * 0.2 ) * 10 + 5, ( i - 5 ) * 2 ) );\n * }\n * const geometry = new THREE.LatheGeometry( points );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const lathe = new THREE.Mesh( geometry, material );\n * scene.add( lathe );\n * ```\n *\n * @augments BufferGeometry\n */\nclass LatheGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new lathe geometry.\n\t *\n\t * @param {Array<Vector2>} [points] - An array of points in 2D space. The x-coordinate of each point\n\t * must be greater than zero.\n\t * @param {number} [segments=12] - The number of circumference segments to generate.\n\t * @param {number} [phiStart=0] - The starting angle in radians.\n\t * @param {number} [phiLength=Math.PI*2] - The radian (0 to 2PI) range of the lathed section 2PI is a\n\t * closed lathe, less than 2PI is a portion.\n\t */\n\tconstructor( points = [ new Vector2( 0, -0.5 ), new Vector2( 0.5, 0 ), new Vector2( 0, 0.5 ) ], segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'LatheGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tpoints: points,\n\t\t\tsegments: segments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength\n\t\t};\n\n\t\tsegments = Math.floor( segments );\n\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\n\n\t\tphiLength = clamp( phiLength, 0, Math.PI * 2 );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst uvs = [];\n\t\tconst initNormals = [];\n\t\tconst normals = [];\n\n\t\t// helper variables\n\n\t\tconst inverseSegments = 1.0 / segments;\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tconst normal = new Vector3();\n\t\tconst curNormal = new Vector3();\n\t\tconst prevNormal = new Vector3();\n\t\tlet dx = 0;\n\t\tlet dy = 0;\n\n\t\t// pre-compute normals for initial \"meridian\"\n\n\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\tswitch ( j ) {\n\n\t\t\t\tcase 0:\t\t\t\t// special handling for 1st vertex on path\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tprevNormal.copy( normal );\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase ( points.length - 1 ):\t// special handling for last Vertex on path\n\n\t\t\t\t\tinitNormals.push( prevNormal.x, prevNormal.y, prevNormal.z );\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\t\t\t// default handling for all vertices in between\n\n\t\t\t\t\tdx = points[ j + 1 ].x - points[ j ].x;\n\t\t\t\t\tdy = points[ j + 1 ].y - points[ j ].y;\n\n\t\t\t\t\tnormal.x = dy * 1.0;\n\t\t\t\t\tnormal.y = - dx;\n\t\t\t\t\tnormal.z = dy * 0.0;\n\n\t\t\t\t\tcurNormal.copy( normal );\n\n\t\t\t\t\tnormal.x += prevNormal.x;\n\t\t\t\t\tnormal.y += prevNormal.y;\n\t\t\t\t\tnormal.z += prevNormal.z;\n\n\t\t\t\t\tnormal.normalize();\n\n\t\t\t\t\tinitNormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\tprevNormal.copy( curNormal );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate vertices, uvs and normals\n\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\n\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\n\n\t\t\tconst sin = Math.sin( phi );\n\t\t\tconst cos = Math.cos( phi );\n\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = points[ j ].x * sin;\n\t\t\t\tvertex.y = points[ j ].y;\n\t\t\t\tvertex.z = points[ j ].x * cos;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = i / segments;\n\t\t\t\tuv.y = j / ( points.length - 1 );\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// normal\n\n\t\t\t\tconst x = initNormals[ 3 * j + 0 ] * sin;\n\t\t\t\tconst y = initNormals[ 3 * j + 1 ];\n\t\t\t\tconst z = initNormals[ 3 * j + 0 ] * cos;\n\n\t\t\t\tnormals.push( x, y, z );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 0; i < segments; i ++ ) {\n\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\n\n\t\t\t\tconst base = j + i * points.length;\n\n\t\t\t\tconst a = base;\n\t\t\t\tconst b = base + points.length;\n\t\t\t\tconst c = base + points.length + 1;\n\t\t\t\tconst d = base + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( c, d, b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {LatheGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new LatheGeometry( data.points, data.segments, data.phiStart, data.phiLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for a capsule with given radii and height. It is constructed using a lathe.\n *\n * ```js\n * const geometry = new THREE.CapsuleGeometry( 1, 1, 4, 8 );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const capsule = new THREE.Mesh( geometry, material );\n * scene.add( capsule );\n * ```\n *\n * @augments LatheGeometry\n */\nclass CapsuleGeometry extends LatheGeometry {\n\n\t/**\n\t * Constructs a new capsule geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the capsule.\n\t * @param {number} [length=1] - Length of the middle section.\n\t * @param {number} [capSegments=4] - Number of curve segments used to build the caps.\n\t * @param {number} [radialSegments=8] - Number of segmented faces around the circumference of the capsule.\n\t */\n\tconstructor( radius = 1, length = 1, capSegments = 4, radialSegments = 8 ) {\n\n\t\tconst path = new Path();\n\t\tpath.absarc( 0, - length / 2, radius, Math.PI * 1.5, 0 );\n\t\tpath.absarc( 0, length / 2, radius, 0, Math.PI * 0.5 );\n\n\t\tsuper( path.getPoints( capSegments ), radialSegments );\n\n\t\tthis.type = 'CapsuleGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tlength: length,\n\t\t\tcapSegments: capSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CapsuleGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CapsuleGeometry( data.radius, data.length, data.capSegments, data.radialSegments );\n\n\t}\n\n}\n\n/**\n * A simple shape of Euclidean geometry. It is constructed from a\n * number of triangular segments that are oriented around a central point and\n * extend as far out as a given radius. It is built counter-clockwise from a\n * start angle and a given central angle. It can also be used to create\n * regular polygons, where the number of segments determines the number of\n * sides.\n *\n * ```js\n * const geometry = new THREE.CircleGeometry( 5, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const circle = new THREE.Mesh( geometry, material );\n * scene.add( circle )\n * ```\n *\n * @augments BufferGeometry\n */\nclass CircleGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new circle geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the circle.\n\t * @param {number} [segments=32] - Number of segments (triangles), minimum = `3`.\n\t * @param {number} [thetaStart=0] - Start angle for first segment in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - The central angle, often called theta,\n\t * of the circular sector in radians. The default value results in a complete circle.\n\t */\n\tconstructor( radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CircleGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tsegments: segments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tsegments = Math.max( 3, segments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// center point\n\n\t\tvertices.push( 0, 0, 0 );\n\t\tnormals.push( 0, 0, 1 );\n\t\tuvs.push( 0.5, 0.5 );\n\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\n\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\n\n\t\t\t// vertex\n\n\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t// normal\n\n\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t// uvs\n\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\n\n\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\n\n\t\t\tindices.push( i, i + 1, 0 );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CircleGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CircleGeometry( data.radius, data.segments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a cylinder.\n *\n * ```js\n * const geometry = new THREE.CylinderGeometry( 5, 5, 20, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const cylinder = new THREE.Mesh( geometry, material );\n * scene.add( cylinder );\n * ```\n *\n * @augments BufferGeometry\n */\nclass CylinderGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new cylinder geometry.\n\t *\n\t * @param {number} [radiusTop=1] - Radius of the cylinder at the top.\n\t * @param {number} [radiusBottom=1] - Radius of the cylinder at the bottom.\n\t * @param {number} [height=1] - Height of the cylinder.\n\t * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cylinder.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cylinder.\n\t * @param {boolean} [openEnded=false] - Whether the base of the cylinder is open or capped.\n\t * @param {boolean} [thetaStart=0] - Start angle for first segment, in radians.\n\t * @param {boolean} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.\n\t * The default value results in a complete cylinder.\n\t */\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'CylinderGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradiusTop: radiusTop,\n\t\t\tradiusBottom: radiusBottom,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tconst scope = this;\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\theightSegments = Math.floor( heightSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet index = 0;\n\t\tconst indexArray = [];\n\t\tconst halfHeight = height / 2;\n\t\tlet groupStart = 0;\n\n\t\t// generate geometry\n\n\t\tgenerateTorso();\n\n\t\tif ( openEnded === false ) {\n\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\tfunction generateTorso() {\n\n\t\t\tconst normal = new Vector3();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\t// this will be used to calculate the normal\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\n\n\t\t\t// generate vertices, normals and uvs\n\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\n\n\t\t\t\tconst indexRow = [];\n\n\t\t\t\tconst v = y / heightSegments;\n\n\t\t\t\t// calculate the radius of the current row\n\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\n\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\t\tconst u = x / radialSegments;\n\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\n\n\t\t\t\t\t// vertex\n\n\t\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\n\t\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t\t// normal\n\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t\t// uv\n\n\t\t\t\t\tuvs.push( u, 1 - v );\n\n\t\t\t\t\t// save index of vertex in respective row\n\n\t\t\t\t\tindexRow.push( index ++ );\n\n\t\t\t\t}\n\n\t\t\t\t// now save vertices of the row in our index array\n\n\t\t\t\tindexArray.push( indexRow );\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\n\n\t\t\t\t\t// we use the index array to access the correct indices\n\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tif ( radiusTop > 0 || y !== 0 ) {\n\n\t\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( radiusBottom > 0 || y !== heightSegments - 1 ) {\n\n\t\t\t\t\t\tindices.push( b, c, d );\n\t\t\t\t\t\tgroupCount += 3;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t\tfunction generateCap( top ) {\n\n\t\t\t// save the index of the first center vertex\n\t\t\tconst centerIndexStart = index;\n\n\t\t\tconst uv = new Vector2();\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tlet groupCount = 0;\n\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\n\t\t\tconst sign = ( top === true ) ? 1 : -1;\n\n\t\t\t// first we generate the center vertex data of the cap.\n\t\t\t// because the geometry needs one set of uvs per face,\n\t\t\t// we must generate a center vertex per face/segment\n\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( 0.5, 0.5 );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// save the index of the last center vertex\n\t\t\tconst centerIndexEnd = index;\n\n\t\t\t// now we generate the surrounding vertices, normals and uvs\n\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\n\n\t\t\t\tconst u = x / radialSegments;\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\n\n\t\t\t\tconst cosTheta = Math.cos( theta );\n\t\t\t\tconst sinTheta = Math.sin( theta );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * sinTheta;\n\t\t\t\tvertex.y = halfHeight * sign;\n\t\t\t\tvertex.z = radius * cosTheta;\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, sign, 0 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t// increase index\n\n\t\t\t\tindex ++;\n\n\t\t\t}\n\n\t\t\t// generate indices\n\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\n\n\t\t\t\tconst c = centerIndexStart + x;\n\t\t\t\tconst i = centerIndexEnd + x;\n\n\t\t\t\tif ( top === true ) {\n\n\t\t\t\t\t// face top\n\n\t\t\t\t\tindices.push( i, i + 1, c );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// face bottom\n\n\t\t\t\t\tindices.push( i + 1, i, c );\n\n\t\t\t\t}\n\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t\t// add a group to the geometry. this will ensure multi material support\n\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\n\n\t\t\t// calculate new start value for groups\n\n\t\t\tgroupStart += groupCount;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {CylinderGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new CylinderGeometry( data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a cone.\n *\n * ```js\n * const geometry = new THREE.ConeGeometry( 5, 20, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const cone = new THREE.Mesh(geometry, material );\n * scene.add( cone );\n * ```\n *\n * @augments CylinderGeometry\n */\nclass ConeGeometry extends CylinderGeometry {\n\n\t/**\n\t * Constructs a new cone geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the cone base.\n\t * @param {number} [height=1] - Height of the cone.\n\t * @param {number} [radialSegments=32] - Number of segmented faces around the circumference of the cone.\n\t * @param {number} [heightSegments=1] - Number of rows of faces along the height of the cone.\n\t * @param {boolean} [openEnded=false] - Whether the base of the cone is open or capped.\n\t * @param {boolean} [thetaStart=0] - Start angle for first segment, in radians.\n\t * @param {boolean} [thetaLength=Math.PI*2] - The central angle, often called theta, of the circular sector, in radians.\n\t * The default value results in a complete cone.\n\t */\n\tconstructor( radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\n\n\t\tthis.type = 'ConeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\theight: height,\n\t\t\tradialSegments: radialSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\topenEnded: openEnded,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {ConeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new ConeGeometry( data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A polyhedron is a solid in three dimensions with flat faces. This class\n * will take an array of vertices, project them onto a sphere, and then\n * divide them up to the desired level of detail.\n *\n * @augments BufferGeometry\n */\nclass PolyhedronGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new polyhedron geometry.\n\t *\n\t * @param {Array<number>} [vertices] - A flat array of vertices describing the base shape.\n\t * @param {Array<number>} [indices] - A flat array of indices describing the base shape.\n\t * @param {number} [radius=1] - The radius of the shape.\n\t * @param {number} [detail=0] - How many levels to subdivide the geometry. The more detail, the smoother the shape.\n\t */\n\tconstructor( vertices = [], indices = [], radius = 1, detail = 0 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PolyhedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tvertices: vertices,\n\t\t\tindices: indices,\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t\t// default buffer data\n\n\t\tconst vertexBuffer = [];\n\t\tconst uvBuffer = [];\n\n\t\t// the subdivision creates the vertex buffer data\n\n\t\tsubdivide( detail );\n\n\t\t// all vertices should lie on a conceptual sphere with a given radius\n\n\t\tapplyRadius( radius );\n\n\t\t// finally, create the uv data\n\n\t\tgenerateUVs();\n\n\t\t// build non-indexed geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\n\n\t\tif ( detail === 0 ) {\n\n\t\t\tthis.computeVertexNormals(); // flat normals\n\n\t\t} else {\n\n\t\t\tthis.normalizeNormals(); // smooth normals\n\n\t\t}\n\n\t\t// helper functions\n\n\t\tfunction subdivide( detail ) {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\t// iterate over all faces and apply a subdivision with the given detail value\n\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\n\n\t\t\t\t// get the vertices of the face\n\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\n\n\t\t\t\t// perform subdivision\n\n\t\t\t\tsubdivideFace( a, b, c, detail );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction subdivideFace( a, b, c, detail ) {\n\n\t\t\tconst cols = detail + 1;\n\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\n\n\t\t\tconst v = [];\n\n\t\t\t// construct all of the vertices for this subdivision\n\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\n\n\t\t\t\tv[ i ] = [];\n\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\n\n\t\t\t\tconst rows = cols - i;\n\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\n\n\t\t\t\t\tif ( j === 0 && i === cols ) {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// construct all of the faces\n\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\n\n\t\t\t\t\tconst k = Math.floor( j / 2 );\n\n\t\t\t\t\tif ( j % 2 === 0 ) {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction applyRadius( radius ) {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\n\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tconst vertex = new Vector3();\n\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\n\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\n\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\n\t\t\t\tuvBuffer.push( u, 1 - v );\n\n\t\t\t}\n\n\t\t\tcorrectUVs();\n\n\t\t\tcorrectSeam();\n\n\t\t}\n\n\t\tfunction correctSeam() {\n\n\t\t\t// handle case when face straddles the seam, see #3269\n\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\n\n\t\t\t\t// uv data of a single face\n\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\n\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\n\n\t\t\t\t// 0.9 is somewhat arbitrary\n\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\n\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction pushVertex( vertex ) {\n\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\n\n\t\t}\n\n\t\tfunction getVertexByIndex( index, vertex ) {\n\n\t\t\tconst stride = index * 3;\n\n\t\t\tvertex.x = vertices[ stride + 0 ];\n\t\t\tvertex.y = vertices[ stride + 1 ];\n\t\t\tvertex.z = vertices[ stride + 2 ];\n\n\t\t}\n\n\t\tfunction correctUVs() {\n\n\t\t\tconst a = new Vector3();\n\t\t\tconst b = new Vector3();\n\t\t\tconst c = new Vector3();\n\n\t\t\tconst centroid = new Vector3();\n\n\t\t\tconst uvA = new Vector2();\n\t\t\tconst uvB = new Vector2();\n\t\t\tconst uvC = new Vector2();\n\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\n\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\n\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\n\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\n\n\t\t\t\tconst azi = azimuth( centroid );\n\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\n\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\n\n\t\t\t}\n\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\n\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\n\n\t\tfunction azimuth( vector ) {\n\n\t\t\treturn Math.atan2( vector.z, - vector.x );\n\n\t\t}\n\n\n\t\t// Angle above the XZ plane.\n\n\t\tfunction inclination( vector ) {\n\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {PolyhedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new PolyhedronGeometry( data.vertices, data.indices, data.radius, data.details );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a dodecahedron.\n *\n * ```js\n * const geometry = new THREE.DodecahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const dodecahedron = new THREE.Mesh( geometry, material );\n * scene.add( dodecahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass DodecahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new dodecahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the dodecahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a dodecahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\t\tconst r = 1 / t;\n\n\t\tconst vertices = [\n\n\t\t\t// (±1, ±1, ±1)\n\t\t\t-1, -1, -1,\t-1, -1, 1,\n\t\t\t-1, 1, -1, -1, 1, 1,\n\t\t\t1, -1, -1, 1, -1, 1,\n\t\t\t1, 1, -1, 1, 1, 1,\n\n\t\t\t// (0, ±1/φ, ±φ)\n\t\t\t0, - r, - t, 0, - r, t,\n\t\t\t0, r, - t, 0, r, t,\n\n\t\t\t// (±1/φ, ±φ, 0)\n\t\t\t- r, - t, 0, - r, t, 0,\n\t\t\tr, - t, 0, r, t, 0,\n\n\t\t\t// (±φ, 0, ±1/φ)\n\t\t\t- t, 0, - r, t, 0, - r,\n\t\t\t- t, 0, r, t, 0, r\n\t\t];\n\n\t\tconst indices = [\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'DodecahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {DodecahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new DodecahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\nconst _v1$1 = /*@__PURE__*/ new Vector3();\nconst _normal = /*@__PURE__*/ new Vector3();\nconst _triangle = /*@__PURE__*/ new Triangle();\n\n/**\n * Can be used as a helper object to view the edges of a geometry.\n *\n * ```js\n * const geometry = new THREE.BoxGeometry();\n * const edges = new THREE.EdgesGeometry( geometry );\n * const line = new THREE.LineSegments( edges );\n * scene.add( line );\n * ```\n *\n * Note: It is not yet possible to serialize/deserialize instances of this class.\n *\n * @augments BufferGeometry\n */\nclass EdgesGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new edges geometry.\n\t *\n\t * @param {?BufferGeometry} [geometry=null] - The geometry.\n\t * @param {number} [thresholdAngle=1] - An edge is only rendered if the angle (in degrees)\n\t * between the face normals of the adjoining faces exceeds this value.\n\t */\n\tconstructor( geometry = null, thresholdAngle = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'EdgesGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry,\n\t\t\tthresholdAngle: thresholdAngle\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\tconst precisionPoints = 4;\n\t\t\tconst precision = Math.pow( 10, precisionPoints );\n\t\t\tconst thresholdDot = Math.cos( DEG2RAD * thresholdAngle );\n\n\t\t\tconst indexAttr = geometry.getIndex();\n\t\t\tconst positionAttr = geometry.getAttribute( 'position' );\n\t\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n\n\t\t\tconst indexArr = [ 0, 0, 0 ];\n\t\t\tconst vertKeys = [ 'a', 'b', 'c' ];\n\t\t\tconst hashes = new Array( 3 );\n\n\t\t\tconst edgeData = {};\n\t\t\tconst vertices = [];\n\t\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\n\n\t\t\t\tif ( indexAttr ) {\n\n\t\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\n\t\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\n\t\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tindexArr[ 0 ] = i;\n\t\t\t\t\tindexArr[ 1 ] = i + 1;\n\t\t\t\t\tindexArr[ 2 ] = i + 2;\n\n\t\t\t\t}\n\n\t\t\t\tconst { a, b, c } = _triangle;\n\t\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\n\t\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\n\t\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\n\t\t\t\t_triangle.getNormal( _normal );\n\n\t\t\t\t// create hashes for the edge from the vertices\n\t\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\n\t\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\n\t\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\n\n\t\t\t\t// skip degenerate triangles\n\t\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\t// iterate over every edge\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t// get the first and next vertex making up the edge\n\t\t\t\t\tconst jNext = ( j + 1 ) % 3;\n\t\t\t\t\tconst vecHash0 = hashes[ j ];\n\t\t\t\t\tconst vecHash1 = hashes[ jNext ];\n\t\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\n\t\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\n\n\t\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\n\t\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\n\n\t\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\n\n\t\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\n\t\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\n\t\t\t\t\t\tif ( _normal.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\n\n\t\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\n\t\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tedgeData[ reverseHash ] = null;\n\n\t\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\n\n\t\t\t\t\t\t// if we've already got an edge here then skip adding a new one\n\t\t\t\t\t\tedgeData[ hash ] = {\n\n\t\t\t\t\t\t\tindex0: indexArr[ j ],\n\t\t\t\t\t\t\tindex1: indexArr[ jNext ],\n\t\t\t\t\t\t\tnormal: _normal.clone(),\n\n\t\t\t\t\t\t};\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\n\t\t\tfor ( const key in edgeData ) {\n\n\t\t\t\tif ( edgeData[ key ] ) {\n\n\t\t\t\t\tconst { index0, index1 } = edgeData[ key ];\n\t\t\t\t\t_v0.fromBufferAttribute( positionAttr, index0 );\n\t\t\t\t\t_v1$1.fromBufferAttribute( positionAttr, index1 );\n\n\t\t\t\t\tvertices.push( _v0.x, _v0.y, _v0.z );\n\t\t\t\t\tvertices.push( _v1$1.x, _v1$1.y, _v1$1.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Defines an arbitrary 2d shape plane using paths with optional holes. It\n * can be used with {@link ExtrudeGeometry}, {@link ShapeGeometry}, to get\n * points, or to get triangulated faces.\n *\n * ```js\n * const heartShape = new THREE.Shape();\n *\n * heartShape.moveTo( 25, 25 );\n * heartShape.bezierCurveTo( 25, 25, 20, 0, 0, 0 );\n * heartShape.bezierCurveTo( - 30, 0, - 30, 35, - 30, 35 );\n * heartShape.bezierCurveTo( - 30, 55, - 10, 77, 25, 95 );\n * heartShape.bezierCurveTo( 60, 77, 80, 55, 80, 35 );\n * heartShape.bezierCurveTo( 80, 35, 80, 0, 50, 0 );\n * heartShape.bezierCurveTo( 35, 0, 25, 25, 25, 25 );\n *\n * const extrudeSettings = {\n * \tdepth: 8,\n * \tbevelEnabled: true,\n * \tbevelSegments: 2,\n * \tsteps: 2,\n * \tbevelSize: 1,\n * \tbevelThickness: 1\n * };\n *\n * const geometry = new THREE.ExtrudeGeometry( heartShape, extrudeSettings );\n * const mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial() );\n * ```\n *\n * @augments Path\n */\nclass Shape extends Path {\n\n\t/**\n\t * Constructs a new shape.\n\t *\n\t * @param {Array<Vector2>} [points] - An array of 2D points defining the shape.\n\t */\n\tconstructor( points ) {\n\n\t\tsuper( points );\n\n\t\t/**\n\t\t * The UUID of the shape.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.uuid = generateUUID();\n\n\t\tthis.type = 'Shape';\n\n\t\t/**\n\t\t * Defines the holes in the shape. Hole definitions must use the\n\t\t * opposite winding order (CW/CCW) than the outer shape.\n\t\t *\n\t\t * @type {Array<Path>}\n\t\t * @readonly\n\t\t */\n\t\tthis.holes = [];\n\n\t}\n\n\t/**\n\t * Returns an array representing each contour of the holes\n\t * as a list of 2D points.\n\t *\n\t * @param {number} divisions - The fineness of the result.\n\t * @return {Array<Array<Vector2>>} The holes as a series of 2D points.\n\t */\n\tgetPointsHoles( divisions ) {\n\n\t\tconst holesPts = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\n\n\t\t}\n\n\t\treturn holesPts;\n\n\t}\n\n\t// get points of shape and holes (keypoints based on segments parameter)\n\n\t/**\n\t * Returns an object that holds contour data for the shape and its holes as\n\t * arrays of 2D points.\n\t *\n\t * @param {number} divisions - The fineness of the result.\n\t * @return {{shape:Array<Vector2>,holes:Array<Array<Vector2>>}} An object with contour data.\n\t */\n\textractPoints( divisions ) {\n\n\t\treturn {\n\n\t\t\tshape: this.getPoints( divisions ),\n\t\t\tholes: this.getPointsHoles( divisions )\n\n\t\t};\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = source.holes[ i ];\n\n\t\t\tthis.holes.push( hole.clone() );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.uuid = this.uuid;\n\t\tdata.holes = [];\n\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = this.holes[ i ];\n\t\t\tdata.holes.push( hole.toJSON() );\n\n\t\t}\n\n\t\treturn data;\n\n\t}\n\n\tfromJSON( json ) {\n\n\t\tsuper.fromJSON( json );\n\n\t\tthis.uuid = json.uuid;\n\t\tthis.holes = [];\n\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\n\n\t\t\tconst hole = json.holes[ i ];\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * An implementation of the earcut polygon triangulation algorithm. The code\n * is a port of [mapbox/earcut]{@link https://github.com/mapbox/earcut mapbox/earcut} (v2.2.4).\n *\n * @hideconstructor\n */\nclass Earcut {\n\n\t/**\n\t * Triangulates the given shape definition by returning an array of triangles.\n\t *\n\t * @param {Array<number>} data - An array with 2D points.\n\t * @param {Array<number>} holeIndices - An array with indices defining holes.\n\t * @param {number} [dim=2] - The number of coordinates per vertex in the input array.\n\t * @return {Array<number>} An array representing the triangulated faces. Each face is defined by three consecutive numbers\n\t * representing vertex indices.\n\t */\n\tstatic triangulate( data, holeIndices, dim = 2 ) {\n\n\t\tconst hasHoles = holeIndices && holeIndices.length;\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\n\t\tconst triangles = [];\n\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\n\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\n\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\n\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n\t\tif ( data.length > 80 * dim ) {\n\n\t\t\tminX = maxX = data[ 0 ];\n\t\t\tminY = maxY = data[ 1 ];\n\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\n\n\t\t\t\tx = data[ i ];\n\t\t\t\ty = data[ i + 1 ];\n\t\t\t\tif ( x < minX ) minX = x;\n\t\t\t\tif ( y < minY ) minY = y;\n\t\t\t\tif ( x > maxX ) maxX = x;\n\t\t\t\tif ( y > maxY ) maxY = y;\n\n\t\t\t}\n\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\n\t\t\tinvSize = invSize !== 0 ? 32767 / invSize : 0;\n\n\t\t}\n\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize, 0 );\n\n\t\treturn triangles;\n\n\t}\n\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList( data, start, end, dim, clockwise ) {\n\n\tlet i, last;\n\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\n\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t} else {\n\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\n\n\t}\n\n\tif ( last && equals( last, last.next ) ) {\n\n\t\tremoveNode( last );\n\t\tlast = last.next;\n\n\t}\n\n\treturn last;\n\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints( start, end ) {\n\n\tif ( ! start ) return start;\n\tif ( ! end ) end = start;\n\n\tlet p = start,\n\t\tagain;\n\tdo {\n\n\t\tagain = false;\n\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\n\n\t\t\tremoveNode( p );\n\t\t\tp = end = p.prev;\n\t\t\tif ( p === p.next ) break;\n\t\t\tagain = true;\n\n\t\t} else {\n\n\t\t\tp = p.next;\n\n\t\t}\n\n\t} while ( again || p !== end );\n\n\treturn end;\n\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\n\n\tif ( ! ear ) return;\n\n\t// interlink polygon nodes in z-order\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\n\n\tlet stop = ear,\n\t\tprev, next;\n\n\t// iterate through ears, slicing them one by one\n\twhile ( ear.prev !== ear.next ) {\n\n\t\tprev = ear.prev;\n\t\tnext = ear.next;\n\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\n\n\t\t\t// cut off the triangle\n\t\t\ttriangles.push( prev.i / dim | 0 );\n\t\t\ttriangles.push( ear.i / dim | 0 );\n\t\t\ttriangles.push( next.i / dim | 0 );\n\n\t\t\tremoveNode( ear );\n\n\t\t\t// skipping the next vertex leads to less sliver triangles\n\t\t\tear = next.next;\n\t\t\tstop = next.next;\n\n\t\t\tcontinue;\n\n\t\t}\n\n\t\tear = next;\n\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\n\t\tif ( ear === stop ) {\n\n\t\t\t// try filtering points and slicing again\n\t\t\tif ( ! pass ) {\n\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\n\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\n\n\t\t\t} else if ( pass === 1 ) {\n\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\n\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\n\n\t\t\t} else if ( pass === 2 ) {\n\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\n\n\t\t\t}\n\n\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar( ear ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\t// now make sure we don't have other points inside the potential ear\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\tlet p = c.next;\n\twhile ( p !== a ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) &&\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.next;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction isEarHashed( ear, minX, minY, invSize ) {\n\n\tconst a = ear.prev,\n\t\tb = ear,\n\t\tc = ear.next;\n\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\n\n\tconst ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n\t// triangle bbox; min & max are calculated like this for speed\n\tconst x0 = ax < bx ? ( ax < cx ? ax : cx ) : ( bx < cx ? bx : cx ),\n\t\ty0 = ay < by ? ( ay < cy ? ay : cy ) : ( by < cy ? by : cy ),\n\t\tx1 = ax > bx ? ( ax > cx ? ax : cx ) : ( bx > cx ? bx : cx ),\n\t\ty1 = ay > by ? ( ay > cy ? ay : cy ) : ( by > cy ? by : cy );\n\n\t// z-order range for the current triangle bbox;\n\tconst minZ = zOrder( x0, y0, minX, minY, invSize ),\n\t\tmaxZ = zOrder( x1, y1, minX, minY, invSize );\n\n\tlet p = ear.prevZ,\n\t\tn = ear.nextZ;\n\n\t// look for points inside the triangle in both directions\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\t// look for remaining points in decreasing z-order\n\twhile ( p && p.z >= minZ ) {\n\n\t\tif ( p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, p.x, p.y ) && area( p.prev, p, p.next ) >= 0 ) return false;\n\t\tp = p.prevZ;\n\n\t}\n\n\t// look for remaining points in increasing z-order\n\twhile ( n && n.z <= maxZ ) {\n\n\t\tif ( n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n\t\t\tpointInTriangle( ax, ay, bx, by, cx, cy, n.x, n.y ) && area( n.prev, n, n.next ) >= 0 ) return false;\n\t\tn = n.nextZ;\n\n\t}\n\n\treturn true;\n\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections( start, triangles, dim ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tconst a = p.prev,\n\t\t\tb = p.next.next;\n\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\n\n\t\t\ttriangles.push( a.i / dim | 0 );\n\t\t\ttriangles.push( p.i / dim | 0 );\n\t\t\ttriangles.push( b.i / dim | 0 );\n\n\t\t\t// remove two nodes involved\n\t\t\tremoveNode( p );\n\t\t\tremoveNode( p.next );\n\n\t\t\tp = start = b;\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn filterPoints( p );\n\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\n\n\t// look for a valid diagonal that divides the polygon into two\n\tlet a = start;\n\tdo {\n\n\t\tlet b = a.next.next;\n\t\twhile ( b !== a.prev ) {\n\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\n\n\t\t\t\t// split the polygon in two by the diagonal\n\t\t\t\tlet c = splitPolygon( a, b );\n\n\t\t\t\t// filter colinear points around the cuts\n\t\t\t\ta = filterPoints( a, a.next );\n\t\t\t\tc = filterPoints( c, c.next );\n\n\t\t\t\t// run earcut on each half\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize, 0 );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tb = b.next;\n\n\t\t}\n\n\t\ta = a.next;\n\n\t} while ( a !== start );\n\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\n\n\tconst queue = [];\n\tlet i, len, start, end, list;\n\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\n\n\t\tstart = holeIndices[ i ] * dim;\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\n\t\tlist = linkedList( data, start, end, dim, false );\n\t\tif ( list === list.next ) list.steiner = true;\n\t\tqueue.push( getLeftmost( list ) );\n\n\t}\n\n\tqueue.sort( compareX );\n\n\t// process holes from left to right\n\tfor ( i = 0; i < queue.length; i ++ ) {\n\n\t\touterNode = eliminateHole( queue[ i ], outerNode );\n\n\t}\n\n\treturn outerNode;\n\n}\n\nfunction compareX( a, b ) {\n\n\treturn a.x - b.x;\n\n}\n\n// find a bridge between vertices that connects hole with an outer ring and link it\nfunction eliminateHole( hole, outerNode ) {\n\n\tconst bridge = findHoleBridge( hole, outerNode );\n\tif ( ! bridge ) {\n\n\t\treturn outerNode;\n\n\t}\n\n\tconst bridgeReverse = splitPolygon( bridge, hole );\n\n\t// filter collinear points around the cuts\n\tfilterPoints( bridgeReverse, bridgeReverse.next );\n\treturn filterPoints( bridge, bridge.next );\n\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge( hole, outerNode ) {\n\n\tlet p = outerNode,\n\t\tqx = - Infinity,\n\t\tm;\n\n\tconst hx = hole.x, hy = hole.y;\n\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\n\t// segment's endpoint with lesser x will be potential connection point\n\tdo {\n\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\n\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\n\t\t\tif ( x <= hx && x > qx ) {\n\n\t\t\t\tqx = x;\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\n\t\t\t\tif ( x === hx ) return m; // hole touches outer segment; pick leftmost endpoint\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== outerNode );\n\n\tif ( ! m ) return null;\n\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\n\t// if there are no points found, we have a valid connection;\n\t// otherwise choose the point of the minimum angle with the ray as connection point\n\n\tconst stop = m,\n\t\tmx = m.x,\n\t\tmy = m.y;\n\tlet tanMin = Infinity, tan;\n\n\tp = m;\n\n\tdo {\n\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\n\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\n\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\n\n\t\t\t\tm = p;\n\t\t\t\ttanMin = tan;\n\n\t\t\t}\n\n\t\t}\n\n\t\tp = p.next;\n\n\t} while ( p !== stop );\n\n\treturn m;\n\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector( m, p ) {\n\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\n\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve( start, minX, minY, invSize ) {\n\n\tlet p = start;\n\tdo {\n\n\t\tif ( p.z === 0 ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\n\t\tp.prevZ = p.prev;\n\t\tp.nextZ = p.next;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\tp.prevZ.nextZ = null;\n\tp.prevZ = null;\n\n\tsortLinked( p );\n\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked( list ) {\n\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\n\t\tinSize = 1;\n\n\tdo {\n\n\t\tp = list;\n\t\tlist = null;\n\t\ttail = null;\n\t\tnumMerges = 0;\n\n\t\twhile ( p ) {\n\n\t\t\tnumMerges ++;\n\t\t\tq = p;\n\t\t\tpSize = 0;\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\n\n\t\t\t\tpSize ++;\n\t\t\t\tq = q.nextZ;\n\t\t\t\tif ( ! q ) break;\n\n\t\t\t}\n\n\t\t\tqSize = inSize;\n\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\n\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\n\n\t\t\t\t\te = p;\n\t\t\t\t\tp = p.nextZ;\n\t\t\t\t\tpSize --;\n\n\t\t\t\t} else {\n\n\t\t\t\t\te = q;\n\t\t\t\t\tq = q.nextZ;\n\t\t\t\t\tqSize --;\n\n\t\t\t\t}\n\n\t\t\t\tif ( tail ) tail.nextZ = e;\n\t\t\t\telse list = e;\n\n\t\t\t\te.prevZ = tail;\n\t\t\t\ttail = e;\n\n\t\t\t}\n\n\t\t\tp = q;\n\n\t\t}\n\n\t\ttail.nextZ = null;\n\t\tinSize *= 2;\n\n\t} while ( numMerges > 1 );\n\n\treturn list;\n\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder( x, y, minX, minY, invSize ) {\n\n\t// coords are transformed into non-negative 15-bit integer range\n\tx = ( x - minX ) * invSize | 0;\n\ty = ( y - minY ) * invSize | 0;\n\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\n\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\n\n\treturn x | ( y << 1 );\n\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost( start ) {\n\n\tlet p = start,\n\t\tleftmost = start;\n\tdo {\n\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\n\t\tp = p.next;\n\n\t} while ( p !== start );\n\n\treturn leftmost;\n\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\n\n\treturn ( cx - px ) * ( ay - py ) >= ( ax - px ) * ( cy - py ) &&\n           ( ax - px ) * ( by - py ) >= ( bx - px ) * ( ay - py ) &&\n           ( bx - px ) * ( cy - py ) >= ( cx - px ) * ( by - py );\n\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal( a, b ) {\n\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // doesn't intersect other edges\n           ( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\n            ( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\n            equals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\n\n}\n\n// signed area of a triangle\nfunction area( p, q, r ) {\n\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\n\n}\n\n// check if two points are equal\nfunction equals( p1, p2 ) {\n\n\treturn p1.x === p2.x && p1.y === p2.y;\n\n}\n\n// check if two segments intersect\nfunction intersects( p1, q1, p2, q2 ) {\n\n\tconst o1 = sign( area( p1, q1, p2 ) );\n\tconst o2 = sign( area( p1, q1, q2 ) );\n\tconst o3 = sign( area( p2, q2, p1 ) );\n\tconst o4 = sign( area( p2, q2, q1 ) );\n\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\n\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n\treturn false;\n\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment( p, q, r ) {\n\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\n\n}\n\nfunction sign( num ) {\n\n\treturn num > 0 ? 1 : num < 0 ? -1 : 0;\n\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon( a, b ) {\n\n\tlet p = a;\n\tdo {\n\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n\t\t\tintersects( p, p.next, a, b ) ) return true;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn false;\n\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside( a, b ) {\n\n\treturn area( a.prev, a, a.next ) < 0 ?\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\n\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside( a, b ) {\n\n\tlet p = a,\n\t\tinside = false;\n\tconst px = ( a.x + b.x ) / 2,\n\t\tpy = ( a.y + b.y ) / 2;\n\tdo {\n\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\n\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\n\t\t\tinside = ! inside;\n\t\tp = p.next;\n\n\t} while ( p !== a );\n\n\treturn inside;\n\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon( a, b ) {\n\n\tconst a2 = new Node( a.i, a.x, a.y ),\n\t\tb2 = new Node( b.i, b.x, b.y ),\n\t\tan = a.next,\n\t\tbp = b.prev;\n\n\ta.next = b;\n\tb.prev = a;\n\n\ta2.next = an;\n\tan.prev = a2;\n\n\tb2.next = a2;\n\ta2.prev = b2;\n\n\tbp.next = b2;\n\tb2.prev = bp;\n\n\treturn b2;\n\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode( i, x, y, last ) {\n\n\tconst p = new Node( i, x, y );\n\n\tif ( ! last ) {\n\n\t\tp.prev = p;\n\t\tp.next = p;\n\n\t} else {\n\n\t\tp.next = last.next;\n\t\tp.prev = last;\n\t\tlast.next.prev = p;\n\t\tlast.next = p;\n\n\t}\n\n\treturn p;\n\n}\n\nfunction removeNode( p ) {\n\n\tp.next.prev = p.prev;\n\tp.prev.next = p.next;\n\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\n\n}\n\nfunction Node( i, x, y ) {\n\n\t// vertex index in coordinates array\n\tthis.i = i;\n\n\t// vertex coordinates\n\tthis.x = x;\n\tthis.y = y;\n\n\t// previous and next vertex nodes in a polygon ring\n\tthis.prev = null;\n\tthis.next = null;\n\n\t// z-order curve value\n\tthis.z = 0;\n\n\t// previous and next nodes in z-order\n\tthis.prevZ = null;\n\tthis.nextZ = null;\n\n\t// indicates whether this is a steiner point\n\tthis.steiner = false;\n\n}\n\nfunction signedArea( data, start, end, dim ) {\n\n\tlet sum = 0;\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\n\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\n\t\tj = i;\n\n\t}\n\n\treturn sum;\n\n}\n\n/**\n * A class containing utility functions for shapes.\n *\n * @hideconstructor\n */\nclass ShapeUtils {\n\n\t/**\n\t * Calculate area of a ( 2D ) contour polygon.\n\t *\n\t * @param {Array<Vector2>} contour - An array of 2D points.\n\t * @return {number} The area.\n\t */\n\tstatic area( contour ) {\n\n\t\tconst n = contour.length;\n\t\tlet a = 0.0;\n\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\n\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\n\n\t\t}\n\n\t\treturn a * 0.5;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given contour uses a clockwise winding order.\n\t *\n\t * @param {Array<Vector2>} pts - An array of 2D points defining a polygon.\n\t * @return {boolean} Whether the given contour uses a clockwise winding order or not.\n\t */\n\tstatic isClockWise( pts ) {\n\n\t\treturn ShapeUtils.area( pts ) < 0;\n\n\t}\n\n\t/**\n\t * Triangulates the given shape definition.\n\t *\n\t * @param {Array<Vector2>} contour - An array of 2D points defining the contour.\n\t * @param {Array<Array<Vector2>>} holes - An array that holds arrays of 2D points defining the holes.\n\t * @return {Array<Array<number>>} An array that holds for each face definition an array with three indices.\n\t */\n\tstatic triangulateShape( contour, holes ) {\n\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\n\t\tconst holeIndices = []; // array of hole indices\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\n\n\t\tremoveDupEndPts( contour );\n\t\taddContour( vertices, contour );\n\n\t\t//\n\n\t\tlet holeIndex = contour.length;\n\n\t\tholes.forEach( removeDupEndPts );\n\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\n\n\t\t\tholeIndices.push( holeIndex );\n\t\t\tholeIndex += holes[ i ].length;\n\t\t\taddContour( vertices, holes[ i ] );\n\n\t\t}\n\n\t\t//\n\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\n\n\t\t//\n\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\n\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\n\n\t\t}\n\n\t\treturn faces;\n\n\t}\n\n}\n\nfunction removeDupEndPts( points ) {\n\n\tconst l = points.length;\n\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\n\n\t\tpoints.pop();\n\n\t}\n\n}\n\nfunction addContour( vertices, contour ) {\n\n\tfor ( let i = 0; i < contour.length; i ++ ) {\n\n\t\tvertices.push( contour[ i ].x );\n\t\tvertices.push( contour[ i ].y );\n\n\t}\n\n}\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * parameters = {\n *\n *  curveSegments: <int>, // number of points on the curves\n *  steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too\n *  depth: <float>, // Depth to extrude the shape\n *\n *  bevelEnabled: <bool>, // turn on bevel\n *  bevelThickness: <float>, // how deep into the original shape bevel goes\n *  bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel\n *  bevelOffset: <float>, // how far from shape outline does bevel start\n *  bevelSegments: <int>, // number of bevel layers\n *\n *  extrudePath: <THREE.Curve> // curve to extrude shape along\n *\n *  UVGenerator: <Object> // object that provides UV generator functions\n *\n * }\n */\n\n\n/**\n * Creates extruded geometry from a path shape.\n *\n * ```js\n * const length = 12, width = 8;\n *\n * const shape = new THREE.Shape();\n * shape.moveTo( 0,0 );\n * shape.lineTo( 0, width );\n * shape.lineTo( length, width );\n * shape.lineTo( length, 0 );\n * shape.lineTo( 0, 0 );\n *\n * const geometry = new THREE.ExtrudeGeometry( shape );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const mesh = new THREE.Mesh( geometry, material ) ;\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass ExtrudeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new extrude geometry.\n\t *\n\t * @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.\n\t * @param {Object} [options={}] - The extrude settings.\n\t * @param {number} [options.curveSegments=12] - Number of points on the curves.\n\t * @param {number} [options.steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.\n\t * @param {number} [options.depth=1] - Depth to extrude the shape.\n\t * @param {boolean} [options.bevelEnabled=true] - Whether to beveling to the shape or not.\n\t * @param {number} [options.bevelThickness=0.2] - How deep into the original shape the bevel goes.\n\t * @param {number} [options.bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.\n\t * @param {number} [options.bevelOffset=0] - Distance from the shape outline that the bevel starts.\n\t * @param {number} [options.bevelSegments=3] - Number of bevel layers.\n\t * @param {Curve} [options.extrudePath=3] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.\n\t * @param {Object} [options.UVGenerator] - An object that provides UV generator functions for custom UV generation.\n\t */\n\tconstructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( -0.5, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), options = {} ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ExtrudeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\toptions: options\n\t\t};\n\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\n\n\t\tconst scope = this;\n\n\t\tconst verticesArray = [];\n\t\tconst uvArray = [];\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\t\t\taddShape( shape );\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\n\n\t\tthis.computeVertexNormals();\n\n\t\t// functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst placeholder = [];\n\n\t\t\t// options\n\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\n\t\t\tconst depth = options.depth !== undefined ? options.depth : 1;\n\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 0.2;\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 0.1;\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\n\n\t\t\tconst extrudePath = options.extrudePath;\n\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\n\n\t\t\t//\n\n\t\t\tlet extrudePts, extrudeByPath = false;\n\t\t\tlet splineTube, binormal, normal, position2;\n\n\t\t\tif ( extrudePath ) {\n\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\n\n\t\t\t\textrudeByPath = true;\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\n\n\t\t\t\t// SETUP TNB variables\n\n\t\t\t\t// TODO1 - have a .isClosed in spline?\n\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\n\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\n\n\t\t\t\tbinormal = new Vector3();\n\t\t\t\tnormal = new Vector3();\n\t\t\t\tposition2 = new Vector3();\n\n\t\t\t}\n\n\t\t\t// Safeguards if bevels are not enabled\n\n\t\t\tif ( ! bevelEnabled ) {\n\n\t\t\t\tbevelSegments = 0;\n\t\t\t\tbevelThickness = 0;\n\t\t\t\tbevelSize = 0;\n\t\t\t\tbevelOffset = 0;\n\n\t\t\t}\n\n\t\t\t// Variables initialization\n\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\n\n\t\t\tlet vertices = shapePoints.shape;\n\t\t\tconst holes = shapePoints.holes;\n\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\n\n\t\t\tif ( reverse ) {\n\n\t\t\t\tvertices = vertices.reverse();\n\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\n\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\n\n\t\t\t/* Vertices */\n\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\tvertices = vertices.concat( ahole );\n\n\t\t\t}\n\n\n\t\t\tfunction scalePt2( pt, vec, size ) {\n\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\n\n\t\t\t\treturn pt.clone().addScaledVector( vec, size );\n\n\t\t\t}\n\n\t\t\tconst vlen = vertices.length, flen = faces.length;\n\n\n\t\t\t// Find directions for point movement\n\n\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\n\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\n\t\t\t\t//   shifted by 1 unit (length of normalized vector) to the left\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\n\t\t\t\t//\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\n\t\t\t\t//  adjacent edges of inPt at a distance of 1 unit on the left side.\n\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\n\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\n\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\n\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\n\n\t\t\t\t// check for collinear edges\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not collinear\n\n\t\t\t\t\t// length of vectors for normalizing\n\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\n\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\n\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\n\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\n\n\t\t\t\t\t// scaling factor for v_prev to intersection point\n\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\n\n\t\t\t\t\t// vector from inPt to intersection point\n\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\n\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\n\t\t\t\t\t//  but prevent crazy spikes\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\n\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// handle special case of collinear edges\n\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\n\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\n\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\n\n\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\n\n\t\t\t\t\t\t\t\tdirection_eq = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( direction_eq ) {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\n\t\t\t\t\t\tv_trans_y = v_prev_x;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\n\t\t\t\t\t\tv_trans_x = v_prev_x;\n\t\t\t\t\t\tv_trans_y = v_prev_y;\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\n\n\t\t\t}\n\n\n\t\t\tconst contourMovements = [];\n\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t// console.log('i,j,k', i, j , k)\n\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\n\n\t\t\t}\n\n\t\t\tconst holesMovements = [];\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\n\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\tconst ahole = holes[ h ];\n\n\t\t\t\toneHoleMovements = [];\n\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\n\n\t\t\t\t\tif ( j === il ) j = 0;\n\t\t\t\t\tif ( k === il ) k = 0;\n\n\t\t\t\t\t//  (j)---(i)---(k)\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\n\n\t\t\t\t}\n\n\t\t\t\tholesMovements.push( oneHoleMovements );\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\n\n\t\t\t}\n\n\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\n\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\n\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\n\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst bs = bevelSize + bevelOffset;\n\n\t\t\t// Back facing vertices\n\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\tv( vert.x, vert.y, 0 );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\n\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\n\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Add stepped vertices...\n\t\t\t// Including front facing vertices\n\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\n\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\n\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\n\n\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\n\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\n\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\n\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\n\t\t\t// Add bevel segments planes\n\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\n\n\t\t\t\tconst t = b / bevelSegments;\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\n\n\t\t\t\t// contract shape\n\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t}\n\n\t\t\t\t// expand holes\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\n\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\n\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t/* Faces */\n\n\t\t\t// Top and bottom faces\n\n\t\t\tbuildLidFaces();\n\n\t\t\t// Sides faces\n\n\t\t\tbuildSideFaces();\n\n\n\t\t\t/////  Internal functions\n\n\t\t\tfunction buildLidFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\n\t\t\t\tif ( bevelEnabled ) {\n\n\t\t\t\t\tlet layer = 0; // steps + 1\n\t\t\t\t\tlet offset = vlen * layer;\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\n\t\t\t\t\toffset = vlen * layer;\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Bottom faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Top faces\n\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\n\n\t\t\t\t\t\tconst face = faces[ i ];\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\n\n\t\t\t}\n\n\t\t\t// Create faces for the z-sides of the shape\n\n\t\t\tfunction buildSideFaces() {\n\n\t\t\t\tconst start = verticesArray.length / 3;\n\t\t\t\tlet layeroffset = 0;\n\t\t\t\tsidewalls( contour, layeroffset );\n\t\t\t\tlayeroffset += contour.length;\n\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\n\n\t\t\t\t\tconst ahole = holes[ h ];\n\t\t\t\t\tsidewalls( ahole, layeroffset );\n\n\t\t\t\t\t//, true\n\t\t\t\t\tlayeroffset += ahole.length;\n\n\t\t\t\t}\n\n\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\n\n\n\t\t\t}\n\n\t\t\tfunction sidewalls( contour, layeroffset ) {\n\n\t\t\t\tlet i = contour.length;\n\n\t\t\t\twhile ( -- i >= 0 ) {\n\n\t\t\t\t\tconst j = i;\n\t\t\t\t\tlet k = i - 1;\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\n\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\n\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\n\n\t\t\t\t\t\tconst slen1 = vlen * s;\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\n\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\n\n\t\t\t\t\t\tf4( a, b, c, d );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tfunction v( x, y, z ) {\n\n\t\t\t\tplaceholder.push( x );\n\t\t\t\tplaceholder.push( y );\n\t\t\t\tplaceholder.push( z );\n\n\t\t\t}\n\n\n\t\t\tfunction f3( a, b, c ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\n\t\t\t}\n\n\t\t\tfunction f4( a, b, c, d ) {\n\n\t\t\t\taddVertex( a );\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( d );\n\n\t\t\t\taddVertex( b );\n\t\t\t\taddVertex( c );\n\t\t\t\taddVertex( d );\n\n\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\n\n\t\t\t\taddUV( uvs[ 0 ] );\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t\taddUV( uvs[ 1 ] );\n\t\t\t\taddUV( uvs[ 2 ] );\n\t\t\t\taddUV( uvs[ 3 ] );\n\n\t\t\t}\n\n\t\t\tfunction addVertex( index ) {\n\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\n\n\t\t\t}\n\n\n\t\t\tfunction addUV( vector2 ) {\n\n\t\t\t\tuvArray.push( vector2.x );\n\t\t\t\tuvArray.push( vector2.y );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\t\tconst options = this.parameters.options;\n\n\t\treturn toJSON$1( shapes, options, data );\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @param {Array<Shape>} shapes - An array of shapes.\n\t * @return {ExtrudeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\tconst extrudePath = data.options.extrudePath;\n\n\t\tif ( extrudePath !== undefined ) {\n\n\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\n\n\t\t}\n\n\t\treturn new ExtrudeGeometry( geometryShapes, data.options );\n\n\t}\n\n}\n\nconst WorldUVGenerator = {\n\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\n\t\treturn [\n\t\t\tnew Vector2( a_x, a_y ),\n\t\t\tnew Vector2( b_x, b_y ),\n\t\t\tnew Vector2( c_x, c_y )\n\t\t];\n\n\t},\n\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\n\n\t\tconst a_x = vertices[ indexA * 3 ];\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\n\t\tconst b_x = vertices[ indexB * 3 ];\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\n\t\tconst c_x = vertices[ indexC * 3 ];\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\n\t\tconst d_x = vertices[ indexD * 3 ];\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\n\n\t\tif ( Math.abs( a_y - b_y ) < Math.abs( a_x - b_x ) ) {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\n\t\t\t];\n\n\t\t} else {\n\n\t\t\treturn [\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\n\t\t\t];\n\n\t\t}\n\n\t}\n\n};\n\nfunction toJSON$1( shapes, options, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\tdata.options = Object.assign( {}, options );\n\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\n\n\treturn data;\n\n}\n\n/**\n * A geometry class for representing an icosahedron.\n *\n * ```js\n * const geometry = new THREE.IcosahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const icosahedron = new THREE.Mesh( geometry, material );\n * scene.add( icosahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass IcosahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new icosahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the icosahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a icosahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\n\n\t\tconst vertices = [\n\t\t\t-1, t, 0, \t1, t, 0, \t-1, - t, 0, \t1, - t, 0,\n\t\t\t0, -1, t, \t0, 1, t,\t0, -1, - t, \t0, 1, - t,\n\t\t\tt, 0, -1, \tt, 0, 1, \t- t, 0, -1, \t- t, 0, 1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'IcosahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {IcosahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new IcosahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an octahedron.\n *\n * ```js\n * const geometry = new THREE.OctahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const octahedron = new THREE.Mesh( geometry, material );\n * scene.add( octahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass OctahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new octahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the octahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a octahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 0, 0, \t-1, 0, 0,\t0, 1, 0,\n\t\t\t0, -1, 0, \t0, 0, 1,\t0, 0, -1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\n\t\t\t1, 3, 4,\t1, 4, 2\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'OctahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {OctahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new OctahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing a plane.\n *\n * ```js\n * const geometry = new THREE.PlaneGeometry( 1, 1 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );\n * const plane = new THREE.Mesh( geometry, material );\n * scene.add( plane );\n * ```\n *\n * @augments BufferGeometry\n */\nclass PlaneGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new plane geometry.\n\t *\n\t * @param {number} [width=1] - The width along the X axis.\n\t * @param {number} [height=1] - The height along the Y axis\n\t * @param {number} [widthSegments=1] - The number of segments along the X axis.\n\t * @param {number} [heightSegments=1] - The number of segments along the Y axis.\n\t */\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'PlaneGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments\n\t\t};\n\n\t\tconst width_half = width / 2;\n\t\tconst height_half = height / 2;\n\n\t\tconst gridX = Math.floor( widthSegments );\n\t\tconst gridY = Math.floor( heightSegments );\n\n\t\tconst gridX1 = gridX + 1;\n\t\tconst gridY1 = gridY + 1;\n\n\t\tconst segment_width = width / gridX;\n\t\tconst segment_height = height / gridY;\n\n\t\t//\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\n\n\t\t\tconst y = iy * segment_height - height_half;\n\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\n\n\t\t\t\tconst x = ix * segment_width - width_half;\n\n\t\t\t\tvertices.push( x, - y, 0 );\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\tuvs.push( ix / gridX );\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\n\n\t\t\t\tconst a = ix + gridX1 * iy;\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {PlaneGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new PlaneGeometry( data.width, data.height, data.widthSegments, data.heightSegments );\n\n\t}\n\n}\n\n/**\n * A class for generating a two-dimensional ring geometry.\n *\n * ```js\n * const geometry = new THREE.RingGeometry( 1, 5, 32 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00, side: THREE.DoubleSide } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass RingGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new ring geometry.\n\t *\n\t * @param {number} [innerRadius=0.5] - The inner radius of the ring.\n\t * @param {number} [outerRadius=1] - The outer radius of the ring.\n\t * @param {number} [thetaSegments=32] - Number of segments. A higher number means the ring will be more round. Minimum is `3`.\n\t * @param {number} [phiSegments=1] - Number of segments per ring segment. Minimum is `1`.\n\t * @param {number} [thetaStart=0] - Starting angle in radians.\n\t * @param {number} [thetaLength=Math.PI*2] - Central angle in radians.\n\t */\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'RingGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tinnerRadius: innerRadius,\n\t\t\touterRadius: outerRadius,\n\t\t\tthetaSegments: thetaSegments,\n\t\t\tphiSegments: phiSegments,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\tthetaSegments = Math.max( 3, thetaSegments );\n\t\tphiSegments = Math.max( 1, phiSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// some helper variables\n\n\t\tlet radius = innerRadius;\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\n\t\tconst vertex = new Vector3();\n\t\tconst uv = new Vector2();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\n\n\t\t\t\t// values are generate from the inside of the ring to the outside\n\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = radius * Math.cos( segment );\n\t\t\t\tvertex.y = radius * Math.sin( segment );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormals.push( 0, 0, 1 );\n\n\t\t\t\t// uv\n\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\n\n\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t}\n\n\t\t\t// increase the radius for next row of vertices\n\n\t\t\tradius += radiusStep;\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\n\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\n\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\n\n\t\t\t\tconst segment = i + thetaSegmentLevel;\n\n\t\t\t\tconst a = segment;\n\t\t\t\tconst b = segment + thetaSegments + 1;\n\t\t\t\tconst c = segment + thetaSegments + 2;\n\t\t\t\tconst d = segment + 1;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {RingGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new RingGeometry( data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * Creates an one-sided polygonal geometry from one or more path shapes.\n *\n * ```js\n * const arcShape = new THREE.Shape()\n *\t.moveTo( 5, 1 )\n *\t.absarc( 1, 1, 4, 0, Math.PI * 2, false );\n *\n * const geometry = new THREE.ShapeGeometry( arcShape );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00, side: THREE.DoubleSide } );\n * const mesh = new THREE.Mesh( geometry, material ) ;\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass ShapeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new shape geometry.\n\t *\n\t * @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.\n\t * @param {number} [curveSegments=12] - Number of segments per shape.\n\t */\n\tconstructor( shapes = new Shape( [ new Vector2( 0, 0.5 ), new Vector2( -0.5, -0.5 ), new Vector2( 0.5, -0.5 ) ] ), curveSegments = 12 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ShapeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tshapes: shapes,\n\t\t\tcurveSegments: curveSegments\n\t\t};\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tlet groupStart = 0;\n\t\tlet groupCount = 0;\n\n\t\t// allow single and array values for \"shapes\" parameter\n\n\t\tif ( Array.isArray( shapes ) === false ) {\n\n\t\t\taddShape( shapes );\n\n\t\t} else {\n\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\n\n\t\t\t\taddShape( shapes[ i ] );\n\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\n\n\t\t\t\tgroupStart += groupCount;\n\t\t\t\tgroupCount = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\n\t\t// helper functions\n\n\t\tfunction addShape( shape ) {\n\n\t\t\tconst indexOffset = vertices.length / 3;\n\t\t\tconst points = shape.extractPoints( curveSegments );\n\n\t\t\tlet shapeVertices = points.shape;\n\t\t\tconst shapeHoles = points.holes;\n\n\t\t\t// check direction of vertices\n\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\n\n\t\t\t\tshapeVertices = shapeVertices.reverse();\n\n\t\t\t}\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\n\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\n\n\t\t\t// join vertices of inner and outer paths to a single array\n\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\n\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\n\n\t\t\t}\n\n\t\t\t// vertices, normals, uvs\n\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\n\n\t\t\t\tconst vertex = shapeVertices[ i ];\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\n\t\t\t\tnormals.push( 0, 0, 1 );\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\n\n\t\t\t}\n\n\t\t\t// indices\n\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\n\n\t\t\t\tconst face = faces[ i ];\n\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\n\n\t\t\t\tindices.push( a, b, c );\n\t\t\t\tgroupCount += 3;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tconst shapes = this.parameters.shapes;\n\n\t\treturn toJSON( shapes, data );\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @param {Array<Shape>} shapes - An array of shapes.\n\t * @return {ShapeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data, shapes ) {\n\n\t\tconst geometryShapes = [];\n\n\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\n\n\t\t\tconst shape = shapes[ data.shapes[ j ] ];\n\n\t\t\tgeometryShapes.push( shape );\n\n\t\t}\n\n\t\treturn new ShapeGeometry( geometryShapes, data.curveSegments );\n\n\t}\n\n}\n\nfunction toJSON( shapes, data ) {\n\n\tdata.shapes = [];\n\n\tif ( Array.isArray( shapes ) ) {\n\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\n\n\t\t\tconst shape = shapes[ i ];\n\n\t\t\tdata.shapes.push( shape.uuid );\n\n\t\t}\n\n\t} else {\n\n\t\tdata.shapes.push( shapes.uuid );\n\n\t}\n\n\treturn data;\n\n}\n\n/**\n * A class for generating a sphere geometry.\n *\n * ```js\n * const geometry = new THREE.SphereGeometry( 15, 32, 16 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const sphere = new THREE.Mesh( geometry, material );\n * scene.add( sphere );\n * ```\n *\n * @augments BufferGeometry\n */\nclass SphereGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new sphere geometry.\n\t *\n\t * @param {number} [radius=1] - The sphere radius.\n\t * @param {number} [widthSegments=32] - The number of horizontal segments. Minimum value is `3`.\n\t * @param {number} [heightSegments=16] - The number of vertical segments. Minimum value is `2`.\n\t * @param {number} [phiStart=0] - The horizontal starting angle in radians.\n\t * @param {number} [phiLength=Math.PI*2] - The horizontal sweep angle size.\n\t * @param {number} [thetaStart=0] - The vertical starting angle in radians.\n\t * @param {number} [thetaLength=Math.PI] - The vertical sweep angle size.\n\t */\n\tconstructor( radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'SphereGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\twidthSegments: widthSegments,\n\t\t\theightSegments: heightSegments,\n\t\t\tphiStart: phiStart,\n\t\t\tphiLength: phiLength,\n\t\t\tthetaStart: thetaStart,\n\t\t\tthetaLength: thetaLength\n\t\t};\n\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\n\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\n\n\t\tlet index = 0;\n\t\tconst grid = [];\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\n\n\t\t\tconst verticesRow = [];\n\n\t\t\tconst v = iy / heightSegments;\n\n\t\t\t// special case for the poles\n\n\t\t\tlet uOffset = 0;\n\n\t\t\tif ( iy === 0 && thetaStart === 0 ) {\n\n\t\t\t\tuOffset = 0.5 / widthSegments;\n\n\t\t\t} else if ( iy === heightSegments && thetaEnd === Math.PI ) {\n\n\t\t\t\tuOffset = -0.5 / widthSegments;\n\n\t\t\t}\n\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\n\n\t\t\t\tconst u = ix / widthSegments;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.copy( vertex ).normalize();\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\n\n\t\t\t\tverticesRow.push( index ++ );\n\n\t\t\t}\n\n\t\t\tgrid.push( verticesRow );\n\n\t\t}\n\n\t\t// indices\n\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\n\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\n\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\n\t\t\t\tconst b = grid[ iy ][ ix ];\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\n\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {SphereGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new SphereGeometry( data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an tetrahedron.\n *\n * ```js\n * const geometry = new THREE.TetrahedronGeometry();\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const tetrahedron = new THREE.Mesh( geometry, material );\n * scene.add( tetrahedron );\n * ```\n *\n * @augments PolyhedronGeometry\n */\nclass TetrahedronGeometry extends PolyhedronGeometry {\n\n\t/**\n\t * Constructs a new tetrahedron geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the tetrahedron.\n\t * @param {number} [detail=0] - Setting this to a value greater than `0` adds vertices making it no longer a tetrahedron.\n\t */\n\tconstructor( radius = 1, detail = 0 ) {\n\n\t\tconst vertices = [\n\t\t\t1, 1, 1, \t-1, -1, 1, \t-1, 1, -1, \t1, -1, -1\n\t\t];\n\n\t\tconst indices = [\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\n\t\t];\n\n\t\tsuper( vertices, indices, radius, detail );\n\n\t\tthis.type = 'TetrahedronGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\tdetail: detail\n\t\t};\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TetrahedronGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TetrahedronGeometry( data.radius, data.detail );\n\n\t}\n\n}\n\n/**\n * A geometry class for representing an torus.\n *\n * ```js\n * const geometry = new THREE.TorusGeometry( 10, 3, 16, 100 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const torus = new THREE.Mesh( geometry, material );\n * scene.add( torus );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TorusGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new torus geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the torus, from the center of the torus to the center of the tube.\n\t * @param {number} [tube=0.4] - Radius of the tube. Must be smaller than `radius`.\n\t * @param {number} [radialSegments=12] - The number of radial segments.\n\t * @param {number} [tubularSegments=48] - The number of tubular segments.\n\t * @param {number} [arc=Math.PI*2] - Central angle in radians.\n\t */\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\tradialSegments: radialSegments,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tarc: arc\n\t\t};\n\n\t\tradialSegments = Math.floor( radialSegments );\n\t\ttubularSegments = Math.floor( tubularSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst center = new Vector3();\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tconst u = i / tubularSegments * arc;\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\n\t\t\t\tvertex.z = tube * Math.sin( v );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal\n\n\t\t\t\tcenter.x = radius * Math.cos( u );\n\t\t\t\tcenter.y = radius * Math.sin( u );\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TorusGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusGeometry( data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc );\n\n\t}\n\n}\n\n/**\n * Creates a torus knot, the particular shape of which is defined by a pair\n * of coprime integers, p and q. If p and q are not coprime, the result will\n * be a torus link.\n *\n * ```js\n * const geometry = new THREE.TorusKnotGeometry( 10, 3, 100, 16 );\n * const material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );\n * const torusKnot = new THREE.Mesh( geometry, material );\n * scene.add( torusKnot );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TorusKnotGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new torus knot geometry.\n\t *\n\t * @param {number} [radius=1] - Radius of the torus knot.\n\t * @param {number} [tube=0.4] - Radius of the tube.\n\t * @param {number} [tubularSegments=64] - The number of tubular segments.\n\t * @param {number} [radialSegments=8] - The number of radial segments.\n\t * @param {number} [p=2] - This value determines, how many times the geometry winds around its axis of rotational symmetry.\n\t * @param {number} [q=3] - This value determines, how many times the geometry winds around a circle in the interior of the torus.\n\t */\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TorusKnotGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tradius: radius,\n\t\t\ttube: tube,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradialSegments: radialSegments,\n\t\t\tp: p,\n\t\t\tq: q\n\t\t};\n\n\t\ttubularSegments = Math.floor( tubularSegments );\n\t\tradialSegments = Math.floor( radialSegments );\n\n\t\t// buffers\n\n\t\tconst indices = [];\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\n\t\tconst P1 = new Vector3();\n\t\tconst P2 = new Vector3();\n\n\t\tconst B = new Vector3();\n\t\tconst T = new Vector3();\n\t\tconst N = new Vector3();\n\n\t\t// generate vertices, normals and uvs\n\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\n\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segment\n\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\n\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\n\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\n\n\t\t\t// calculate orthonormal basis\n\n\t\t\tT.subVectors( P2, P1 );\n\t\t\tN.addVectors( P2, P1 );\n\t\t\tB.crossVectors( T, N );\n\t\t\tN.crossVectors( B, T );\n\n\t\t\t// normalize B, N. T can be ignored, we don't use it\n\n\t\t\tB.normalize();\n\t\t\tN.normalize();\n\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\n\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\t\t\t\tconst cx = - tube * Math.cos( v );\n\t\t\t\tconst cy = tube * Math.sin( v );\n\n\t\t\t\t// now calculate the final vertex position.\n\t\t\t\t// first we orient the extrusion with our basis vectors, then we add it to the current position on the curve\n\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\n\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// uv\n\n\t\t\t\tuvs.push( i / tubularSegments );\n\t\t\t\tuvs.push( j / radialSegments );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// generate indices\n\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t// indices\n\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t// faces\n\n\t\t\t\tindices.push( a, b, d );\n\t\t\t\tindices.push( b, c, d );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// this function calculates the current position on the torus curve\n\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\n\n\t\t\tconst cu = Math.cos( u );\n\t\t\tconst su = Math.sin( u );\n\t\t\tconst quOverP = q / p * u;\n\t\t\tconst cs = Math.cos( quOverP );\n\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TorusKnotGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\treturn new TorusKnotGeometry( data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q );\n\n\t}\n\n}\n\n/**\n * Creates a tube that extrudes along a 3D curve.\n *\n * ```js\n * class CustomSinCurve extends THREE.Curve {\n *\n * \tgetPoint( t, optionalTarget = new THREE.Vector3() ) {\n *\n * \t\tconst tx = t * 3 - 1.5;\n * \t\tconst ty = Math.sin( 2 * Math.PI * t );\n * \t\tconst tz = 0;\n *\n * \t\treturn optionalTarget.set( tx, ty, tz );\n * \t}\n *\n * }\n *\n * const path = new CustomSinCurve( 10 );\n * const geometry = new THREE.TubeGeometry( path, 20, 2, 8, false );\n * const material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );\n * const mesh = new THREE.Mesh( geometry, material );\n * scene.add( mesh );\n * ```\n *\n * @augments BufferGeometry\n */\nclass TubeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new tube geometry.\n\t *\n\t * @param {Curve} [path=QuadraticBezierCurve3] - A 3D curve defining the path of the tube.\n\t * @param {number} [tubularSegments=64] - The number of segments that make up the tube.\n\t * @param {number} [radius=1] -The radius of the tube.\n\t * @param {number} [radialSegments=8] - The number of segments that make up the cross-section.\n\t * @param {boolean} [closed=false] - Whether the tube is closed or not.\n\t */\n\tconstructor( path = new QuadraticBezierCurve3( new Vector3( -1, -1, 0 ), new Vector3( -1, 1, 0 ), new Vector3( 1, 1, 0 ) ), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'TubeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tpath: path,\n\t\t\ttubularSegments: tubularSegments,\n\t\t\tradius: radius,\n\t\t\tradialSegments: radialSegments,\n\t\t\tclosed: closed\n\t\t};\n\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\n\n\t\t// expose internals\n\n\t\tthis.tangents = frames.tangents;\n\t\tthis.normals = frames.normals;\n\t\tthis.binormals = frames.binormals;\n\n\t\t// helper variables\n\n\t\tconst vertex = new Vector3();\n\t\tconst normal = new Vector3();\n\t\tconst uv = new Vector2();\n\t\tlet P = new Vector3();\n\n\t\t// buffer\n\n\t\tconst vertices = [];\n\t\tconst normals = [];\n\t\tconst uvs = [];\n\t\tconst indices = [];\n\n\t\t// create buffer data\n\n\t\tgenerateBufferData();\n\n\t\t// build geometry\n\n\t\tthis.setIndex( indices );\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\n\n\t\t// functions\n\n\t\tfunction generateBufferData() {\n\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\n\n\t\t\t\tgenerateSegment( i );\n\n\t\t\t}\n\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\n\t\t\t// at the regular position on the given path\n\t\t\t//\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\n\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\n\n\t\t\t// uvs are generated in a separate function.\n\t\t\t// this makes it easy compute correct values for closed geometries\n\n\t\t\tgenerateUVs();\n\n\t\t\t// finally create faces\n\n\t\t\tgenerateIndices();\n\n\t\t}\n\n\t\tfunction generateSegment( i ) {\n\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\n\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\n\n\t\t\t// retrieve corresponding normal and binormal\n\n\t\t\tconst N = frames.normals[ i ];\n\t\t\tconst B = frames.binormals[ i ];\n\n\t\t\t// generate normals and vertices for the current segment\n\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\n\n\t\t\t\tconst sin = Math.sin( v );\n\t\t\t\tconst cos = - Math.cos( v );\n\n\t\t\t\t// normal\n\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\n\t\t\t\tnormal.normalize();\n\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\n\n\t\t\t\t// vertex\n\n\t\t\t\tvertex.x = P.x + radius * normal.x;\n\t\t\t\tvertex.y = P.y + radius * normal.y;\n\t\t\t\tvertex.z = P.z + radius * normal.z;\n\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateIndices() {\n\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\n\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\n\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\n\n\t\t\t\t\t// faces\n\n\t\t\t\t\tindices.push( a, b, d );\n\t\t\t\t\tindices.push( b, c, d );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction generateUVs() {\n\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\n\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\n\n\t\t\t\t\tuv.x = i / tubularSegments;\n\t\t\t\t\tuv.y = j / radialSegments;\n\n\t\t\t\t\tuvs.push( uv.x, uv.y );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.path = this.parameters.path.toJSON();\n\n\t\treturn data;\n\n\t}\n\n\t/**\n\t * Factory method for creating an instance of this class from the given\n\t * JSON object.\n\t *\n\t * @param {Object} data - A JSON object representing the serialized geometry.\n\t * @return {TubeGeometry} A new instance.\n\t */\n\tstatic fromJSON( data ) {\n\n\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\n\t\t// User defined curves or instances of CurvePath will not be deserialized.\n\t\treturn new TubeGeometry(\n\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\n\t\t\tdata.tubularSegments,\n\t\t\tdata.radius,\n\t\t\tdata.radialSegments,\n\t\t\tdata.closed\n\t\t);\n\n\t}\n\n}\n\n/**\n * Can be used as a helper object to visualize a geometry as a wireframe.\n *\n * ```js\n * const geometry = new THREE.SphereGeometry();\n *\n * const wireframe = new THREE.WireframeGeometry( geometry );\n *\n * const line = new THREE.LineSegments( wireframe );\n * line.material.depthWrite = false;\n * line.material.opacity = 0.25;\n * line.material.transparent = true;\n *\n * scene.add( line );\n * ```\n *\n * Note: It is not yet possible to serialize/deserialize instances of this class.\n *\n * @augments BufferGeometry\n */\nclass WireframeGeometry extends BufferGeometry {\n\n\t/**\n\t * Constructs a new wireframe geometry.\n\t *\n\t * @param {?BufferGeometry} [geometry=null] - The geometry.\n\t */\n\tconstructor( geometry = null ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'WireframeGeometry';\n\n\t\t/**\n\t\t * Holds the constructor parameters that have been\n\t\t * used to generate the geometry. Any modification\n\t\t * after instantiation does not change the geometry.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.parameters = {\n\t\t\tgeometry: geometry\n\t\t};\n\n\t\tif ( geometry !== null ) {\n\n\t\t\t// buffer\n\n\t\t\tconst vertices = [];\n\t\t\tconst edges = new Set();\n\n\t\t\t// helper variables\n\n\t\t\tconst start = new Vector3();\n\t\t\tconst end = new Vector3();\n\n\t\t\tif ( geometry.index !== null ) {\n\n\t\t\t\t// indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\t\t\t\tconst indices = geometry.index;\n\t\t\t\tlet groups = geometry.groups;\n\n\t\t\t\tif ( groups.length === 0 ) {\n\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\n\n\t\t\t\t}\n\n\t\t\t\t// create a data structure that contains all edges without duplicates\n\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\n\n\t\t\t\t\tconst group = groups[ o ];\n\n\t\t\t\t\tconst groupStart = group.start;\n\t\t\t\t\tconst groupCount = group.count;\n\n\t\t\t\t\tfor ( let i = groupStart, l = ( groupStart + groupCount ); i < l; i += 3 ) {\n\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t\tconst index1 = indices.getX( i + j );\n\t\t\t\t\t\t\tconst index2 = indices.getX( i + ( j + 1 ) % 3 );\n\n\t\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// non-indexed BufferGeometry\n\n\t\t\t\tconst position = geometry.attributes.position;\n\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\n\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\n\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\n\n\t\t\t\t\t\tconst index1 = 3 * i + j;\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\n\n\t\t\t\t\t\tstart.fromBufferAttribute( position, index1 );\n\t\t\t\t\t\tend.fromBufferAttribute( position, index2 );\n\n\t\t\t\t\t\tif ( isUniqueEdge( start, end, edges ) === true ) {\n\n\t\t\t\t\t\t\tvertices.push( start.x, start.y, start.z );\n\t\t\t\t\t\t\tvertices.push( end.x, end.y, end.z );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// build geometry\n\n\t\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\n\t\t}\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.parameters = Object.assign( {}, source.parameters );\n\n\t\treturn this;\n\n\t}\n\n}\n\nfunction isUniqueEdge( start, end, edges ) {\n\n\tconst hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n\tconst hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`; // coincident edge\n\n\tif ( edges.has( hash1 ) === true || edges.has( hash2 ) === true ) {\n\n\t\treturn false;\n\n\t} else {\n\n\t\tedges.add( hash1 );\n\t\tedges.add( hash2 );\n\t\treturn true;\n\n\t}\n\n}\n\nvar Geometries = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBoxGeometry: BoxGeometry,\n\tCapsuleGeometry: CapsuleGeometry,\n\tCircleGeometry: CircleGeometry,\n\tConeGeometry: ConeGeometry,\n\tCylinderGeometry: CylinderGeometry,\n\tDodecahedronGeometry: DodecahedronGeometry,\n\tEdgesGeometry: EdgesGeometry,\n\tExtrudeGeometry: ExtrudeGeometry,\n\tIcosahedronGeometry: IcosahedronGeometry,\n\tLatheGeometry: LatheGeometry,\n\tOctahedronGeometry: OctahedronGeometry,\n\tPlaneGeometry: PlaneGeometry,\n\tPolyhedronGeometry: PolyhedronGeometry,\n\tRingGeometry: RingGeometry,\n\tShapeGeometry: ShapeGeometry,\n\tSphereGeometry: SphereGeometry,\n\tTetrahedronGeometry: TetrahedronGeometry,\n\tTorusGeometry: TorusGeometry,\n\tTorusKnotGeometry: TorusKnotGeometry,\n\tTubeGeometry: TubeGeometry,\n\tWireframeGeometry: WireframeGeometry\n});\n\nclass ShadowMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isShadowMaterial = true;\n\n\t\tthis.type = 'ShadowMaterial';\n\n\t\tthis.color = new Color( 0x000000 );\n\t\tthis.transparent = true;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass RawShaderMaterial extends ShaderMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper( parameters );\n\n\t\tthis.isRawShaderMaterial = true;\n\n\t\tthis.type = 'RawShaderMaterial';\n\n\t}\n\n}\n\nclass MeshStandardMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshStandardMaterial = true;\n\n\t\tthis.type = 'MeshStandardMaterial';\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.roughness = 1.0;\n\t\tthis.metalness = 0.0;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.roughnessMap = null;\n\n\t\tthis.metalnessMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.envMapIntensity = 1.0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'STANDARD': '' };\n\n\t\tthis.color.copy( source.color );\n\t\tthis.roughness = source.roughness;\n\t\tthis.metalness = source.metalness;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.roughnessMap = source.roughnessMap;\n\n\t\tthis.metalnessMap = source.metalnessMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.envMapIntensity = source.envMapIntensity;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhysicalMaterial = true;\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.type = 'MeshPhysicalMaterial';\n\n\t\tthis.anisotropyRotation = 0;\n\t\tthis.anisotropyMap = null;\n\n\t\tthis.clearcoatMap = null;\n\t\tthis.clearcoatRoughness = 0.0;\n\t\tthis.clearcoatRoughnessMap = null;\n\t\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\n\t\tthis.clearcoatNormalMap = null;\n\n\t\tthis.ior = 1.5;\n\n\t\tObject.defineProperty( this, 'reflectivity', {\n\t\t\tget: function () {\n\n\t\t\t\treturn ( clamp( 2.5 * ( this.ior - 1 ) / ( this.ior + 1 ), 0, 1 ) );\n\n\t\t\t},\n\t\t\tset: function ( reflectivity ) {\n\n\t\t\t\tthis.ior = ( 1 + 0.4 * reflectivity ) / ( 1 - 0.4 * reflectivity );\n\n\t\t\t}\n\t\t} );\n\n\t\tthis.iridescenceMap = null;\n\t\tthis.iridescenceIOR = 1.3;\n\t\tthis.iridescenceThicknessRange = [ 100, 400 ];\n\t\tthis.iridescenceThicknessMap = null;\n\n\t\tthis.sheenColor = new Color( 0x000000 );\n\t\tthis.sheenColorMap = null;\n\t\tthis.sheenRoughness = 1.0;\n\t\tthis.sheenRoughnessMap = null;\n\n\t\tthis.transmissionMap = null;\n\n\t\tthis.thickness = 0;\n\t\tthis.thicknessMap = null;\n\t\tthis.attenuationDistance = Infinity;\n\t\tthis.attenuationColor = new Color( 1, 1, 1 );\n\n\t\tthis.specularIntensity = 1.0;\n\t\tthis.specularIntensityMap = null;\n\t\tthis.specularColor = new Color( 1, 1, 1 );\n\t\tthis.specularColorMap = null;\n\n\t\tthis._anisotropy = 0;\n\t\tthis._clearcoat = 0;\n\t\tthis._dispersion = 0;\n\t\tthis._iridescence = 0;\n\t\tthis._sheen = 0.0;\n\t\tthis._transmission = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tget anisotropy() {\n\n\t\treturn this._anisotropy;\n\n\t}\n\n\tset anisotropy( value ) {\n\n\t\tif ( this._anisotropy > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._anisotropy = value;\n\n\t}\n\n\tget clearcoat() {\n\n\t\treturn this._clearcoat;\n\n\t}\n\n\tset clearcoat( value ) {\n\n\t\tif ( this._clearcoat > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._clearcoat = value;\n\n\t}\n\n\tget iridescence() {\n\n\t\treturn this._iridescence;\n\n\t}\n\n\tset iridescence( value ) {\n\n\t\tif ( this._iridescence > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._iridescence = value;\n\n\t}\n\n\tget dispersion() {\n\n\t\treturn this._dispersion;\n\n\t}\n\n\tset dispersion( value ) {\n\n\t\tif ( this._dispersion > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._dispersion = value;\n\n\t}\n\n\tget sheen() {\n\n\t\treturn this._sheen;\n\n\t}\n\n\tset sheen( value ) {\n\n\t\tif ( this._sheen > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._sheen = value;\n\n\t}\n\n\tget transmission() {\n\n\t\treturn this._transmission;\n\n\t}\n\n\tset transmission( value ) {\n\n\t\tif ( this._transmission > 0 !== value > 0 ) {\n\n\t\t\tthis.version ++;\n\n\t\t}\n\n\t\tthis._transmission = value;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = {\n\n\t\t\t'STANDARD': '',\n\t\t\t'PHYSICAL': ''\n\n\t\t};\n\n\t\tthis.anisotropy = source.anisotropy;\n\t\tthis.anisotropyRotation = source.anisotropyRotation;\n\t\tthis.anisotropyMap = source.anisotropyMap;\n\n\t\tthis.clearcoat = source.clearcoat;\n\t\tthis.clearcoatMap = source.clearcoatMap;\n\t\tthis.clearcoatRoughness = source.clearcoatRoughness;\n\t\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n\t\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\n\t\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\n\n\t\tthis.dispersion = source.dispersion;\n\t\tthis.ior = source.ior;\n\n\t\tthis.iridescence = source.iridescence;\n\t\tthis.iridescenceMap = source.iridescenceMap;\n\t\tthis.iridescenceIOR = source.iridescenceIOR;\n\t\tthis.iridescenceThicknessRange = [ ...source.iridescenceThicknessRange ];\n\t\tthis.iridescenceThicknessMap = source.iridescenceThicknessMap;\n\n\t\tthis.sheen = source.sheen;\n\t\tthis.sheenColor.copy( source.sheenColor );\n\t\tthis.sheenColorMap = source.sheenColorMap;\n\t\tthis.sheenRoughness = source.sheenRoughness;\n\t\tthis.sheenRoughnessMap = source.sheenRoughnessMap;\n\n\t\tthis.transmission = source.transmission;\n\t\tthis.transmissionMap = source.transmissionMap;\n\n\t\tthis.thickness = source.thickness;\n\t\tthis.thicknessMap = source.thicknessMap;\n\t\tthis.attenuationDistance = source.attenuationDistance;\n\t\tthis.attenuationColor.copy( source.attenuationColor );\n\n\t\tthis.specularIntensity = source.specularIntensity;\n\t\tthis.specularIntensityMap = source.specularIntensityMap;\n\t\tthis.specularColor.copy( source.specularColor );\n\t\tthis.specularColorMap = source.specularColorMap;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshPhongMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshPhongMaterial = true;\n\n\t\tthis.type = 'MeshPhongMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\t\tthis.specular = new Color( 0x111111 );\n\t\tthis.shininess = 30;\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.specular.copy( source.specular );\n\t\tthis.shininess = source.shininess;\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshToonMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshToonMaterial = true;\n\n\t\tthis.defines = { 'TOON': '' };\n\n\t\tthis.type = 'MeshToonMaterial';\n\n\t\tthis.color = new Color( 0xffffff );\n\n\t\tthis.map = null;\n\t\tthis.gradientMap = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\t\tthis.gradientMap = source.gradientMap;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshNormalMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshNormalMaterial = true;\n\n\t\tthis.type = 'MeshNormalMaterial';\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshLambertMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshLambertMaterial = true;\n\n\t\tthis.type = 'MeshLambertMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.map = null;\n\n\t\tthis.lightMap = null;\n\t\tthis.lightMapIntensity = 1.0;\n\n\t\tthis.aoMap = null;\n\t\tthis.aoMapIntensity = 1.0;\n\n\t\tthis.emissive = new Color( 0x000000 );\n\t\tthis.emissiveIntensity = 1.0;\n\t\tthis.emissiveMap = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.specularMap = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.envMap = null;\n\t\tthis.envMapRotation = new Euler();\n\t\tthis.combine = MultiplyOperation;\n\t\tthis.reflectivity = 1;\n\t\tthis.refractionRatio = 0.98;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\t\tthis.wireframeLinecap = 'round';\n\t\tthis.wireframeLinejoin = 'round';\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.map = source.map;\n\n\t\tthis.lightMap = source.lightMap;\n\t\tthis.lightMapIntensity = source.lightMapIntensity;\n\n\t\tthis.aoMap = source.aoMap;\n\t\tthis.aoMapIntensity = source.aoMapIntensity;\n\n\t\tthis.emissive.copy( source.emissive );\n\t\tthis.emissiveMap = source.emissiveMap;\n\t\tthis.emissiveIntensity = source.emissiveIntensity;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.specularMap = source.specularMap;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.envMap = source.envMap;\n\t\tthis.envMapRotation.copy( source.envMapRotation );\n\t\tthis.combine = source.combine;\n\t\tthis.reflectivity = source.reflectivity;\n\t\tthis.refractionRatio = source.refractionRatio;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\t\tthis.wireframeLinecap = source.wireframeLinecap;\n\t\tthis.wireframeLinejoin = source.wireframeLinejoin;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDepthMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDepthMaterial = true;\n\n\t\tthis.type = 'MeshDepthMaterial';\n\n\t\tthis.depthPacking = BasicDepthPacking;\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.wireframe = false;\n\t\tthis.wireframeLinewidth = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.depthPacking = source.depthPacking;\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.wireframe = source.wireframe;\n\t\tthis.wireframeLinewidth = source.wireframeLinewidth;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshDistanceMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshDistanceMaterial = true;\n\n\t\tthis.type = 'MeshDistanceMaterial';\n\n\t\tthis.map = null;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.map = source.map;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass MeshMatcapMaterial extends Material {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isMeshMatcapMaterial = true;\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.type = 'MeshMatcapMaterial';\n\n\t\tthis.color = new Color( 0xffffff ); // diffuse\n\n\t\tthis.matcap = null;\n\n\t\tthis.map = null;\n\n\t\tthis.bumpMap = null;\n\t\tthis.bumpScale = 1;\n\n\t\tthis.normalMap = null;\n\t\tthis.normalMapType = TangentSpaceNormalMap;\n\t\tthis.normalScale = new Vector2( 1, 1 );\n\n\t\tthis.displacementMap = null;\n\t\tthis.displacementScale = 1;\n\t\tthis.displacementBias = 0;\n\n\t\tthis.alphaMap = null;\n\n\t\tthis.flatShading = false;\n\n\t\tthis.fog = true;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.defines = { 'MATCAP': '' };\n\n\t\tthis.color.copy( source.color );\n\n\t\tthis.matcap = source.matcap;\n\n\t\tthis.map = source.map;\n\n\t\tthis.bumpMap = source.bumpMap;\n\t\tthis.bumpScale = source.bumpScale;\n\n\t\tthis.normalMap = source.normalMap;\n\t\tthis.normalMapType = source.normalMapType;\n\t\tthis.normalScale.copy( source.normalScale );\n\n\t\tthis.displacementMap = source.displacementMap;\n\t\tthis.displacementScale = source.displacementScale;\n\t\tthis.displacementBias = source.displacementBias;\n\n\t\tthis.alphaMap = source.alphaMap;\n\n\t\tthis.flatShading = source.flatShading;\n\n\t\tthis.fog = source.fog;\n\n\t\treturn this;\n\n\t}\n\n}\n\nclass LineDashedMaterial extends LineBasicMaterial {\n\n\tconstructor( parameters ) {\n\n\t\tsuper();\n\n\t\tthis.isLineDashedMaterial = true;\n\t\tthis.type = 'LineDashedMaterial';\n\n\t\tthis.scale = 1;\n\t\tthis.dashSize = 3;\n\t\tthis.gapSize = 1;\n\n\t\tthis.setValues( parameters );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.scale = source.scale;\n\t\tthis.dashSize = source.dashSize;\n\t\tthis.gapSize = source.gapSize;\n\n\t\treturn this;\n\n\t}\n\n}\n\n// converts an array to a specific type\nfunction convertArray( array, type, forceClone ) {\n\n\tif ( ! array || // let 'undefined' and 'null' pass\n\t\t! forceClone && array.constructor === type ) return array;\n\n\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\n\n\t\treturn new type( array ); // create typed array\n\n\t}\n\n\treturn Array.prototype.slice.call( array ); // create Array\n\n}\n\nfunction isTypedArray( object ) {\n\n\treturn ArrayBuffer.isView( object ) &&\n\t\t! ( object instanceof DataView );\n\n}\n\n// returns an array by which times and values can be sorted\nfunction getKeyframeOrder( times ) {\n\n\tfunction compareTime( i, j ) {\n\n\t\treturn times[ i ] - times[ j ];\n\n\t}\n\n\tconst n = times.length;\n\tconst result = new Array( n );\n\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\n\n\tresult.sort( compareTime );\n\n\treturn result;\n\n}\n\n// uses the array previously returned by 'getKeyframeOrder' to sort data\nfunction sortedArray( values, stride, order ) {\n\n\tconst nValues = values.length;\n\tconst result = new values.constructor( nValues );\n\n\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\n\n\t\tconst srcOffset = order[ i ] * stride;\n\n\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\n\n\t\t}\n\n\t}\n\n\treturn result;\n\n}\n\n// function for parsing AOS keyframe formats\nfunction flattenJSON( jsonKeys, times, values, valuePropertyName ) {\n\n\tlet i = 1, key = jsonKeys[ 0 ];\n\n\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\n\n\t\tkey = jsonKeys[ i ++ ];\n\n\t}\n\n\tif ( key === undefined ) return; // no data\n\n\tlet value = key[ valuePropertyName ];\n\tif ( value === undefined ) return; // no data\n\n\tif ( Array.isArray( value ) ) {\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( ...value ); // push all elements\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else if ( value.toArray !== undefined ) {\n\n\t\t// ...assume THREE.Math-ish\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalue.toArray( values, values.length );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t} else {\n\n\t\t// otherwise push as-is\n\n\t\tdo {\n\n\t\t\tvalue = key[ valuePropertyName ];\n\n\t\t\tif ( value !== undefined ) {\n\n\t\t\t\ttimes.push( key.time );\n\t\t\t\tvalues.push( value );\n\n\t\t\t}\n\n\t\t\tkey = jsonKeys[ i ++ ];\n\n\t\t} while ( key !== undefined );\n\n\t}\n\n}\n\nfunction subclip( sourceClip, name, startFrame, endFrame, fps = 30 ) {\n\n\tconst clip = sourceClip.clone();\n\n\tclip.name = name;\n\n\tconst tracks = [];\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tconst track = clip.tracks[ i ];\n\t\tconst valueSize = track.getValueSize();\n\n\t\tconst times = [];\n\t\tconst values = [];\n\n\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\n\n\t\t\tconst frame = track.times[ j ] * fps;\n\n\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\n\n\t\t\ttimes.push( track.times[ j ] );\n\n\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\n\n\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( times.length === 0 ) continue;\n\n\t\ttrack.times = convertArray( times, track.times.constructor );\n\t\ttrack.values = convertArray( values, track.values.constructor );\n\n\t\ttracks.push( track );\n\n\t}\n\n\tclip.tracks = tracks;\n\n\t// find minimum .times value across all tracks in the trimmed clip\n\n\tlet minStartTime = Infinity;\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\n\n\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\n\n\t\t}\n\n\t}\n\n\t// shift all tracks such that clip begins at t=0\n\n\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\n\n\t\tclip.tracks[ i ].shift( -1 * minStartTime );\n\n\t}\n\n\tclip.resetDuration();\n\n\treturn clip;\n\n}\n\nfunction makeClipAdditive( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\n\n\tif ( fps <= 0 ) fps = 30;\n\n\tconst numTracks = referenceClip.tracks.length;\n\tconst referenceTime = referenceFrame / fps;\n\n\t// Make each track's values relative to the values at the reference frame\n\tfor ( let i = 0; i < numTracks; ++ i ) {\n\n\t\tconst referenceTrack = referenceClip.tracks[ i ];\n\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\n\n\t\t// Skip this track if it's non-numeric\n\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\n\n\t\t// Find the track in the target clip whose name and type matches the reference track\n\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\n\n\t\t\treturn track.name === referenceTrack.name\n\t\t\t\t&& track.ValueTypeName === referenceTrackType;\n\n\t\t} );\n\n\t\tif ( targetTrack === undefined ) continue;\n\n\t\tlet referenceOffset = 0;\n\t\tconst referenceValueSize = referenceTrack.getValueSize();\n\n\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\treferenceOffset = referenceValueSize / 3;\n\n\t\t}\n\n\t\tlet targetOffset = 0;\n\t\tconst targetValueSize = targetTrack.getValueSize();\n\n\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\n\n\t\t\ttargetOffset = targetValueSize / 3;\n\n\t\t}\n\n\t\tconst lastIndex = referenceTrack.times.length - 1;\n\t\tlet referenceValue;\n\n\t\t// Find the value to subtract out of the track\n\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\n\n\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\n\n\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\n\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\n\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\n\t\t\treferenceValue = referenceTrack.values.slice( startIndex, endIndex );\n\n\t\t} else {\n\n\t\t\t// Interpolate to the reference value\n\t\t\tconst interpolant = referenceTrack.createInterpolant();\n\t\t\tconst startIndex = referenceOffset;\n\t\t\tconst endIndex = referenceValueSize - referenceOffset;\n\t\t\tinterpolant.evaluate( referenceTime );\n\t\t\treferenceValue = interpolant.resultBuffer.slice( startIndex, endIndex );\n\n\t\t}\n\n\t\t// Conjugate the quaternion\n\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\n\t\t\treferenceQuat.toArray( referenceValue );\n\n\t\t}\n\n\t\t// Subtract the reference value from all of the track values\n\n\t\tconst numTimes = targetTrack.times.length;\n\t\tfor ( let j = 0; j < numTimes; ++ j ) {\n\n\t\t\tconst valueStart = j * targetValueSize + targetOffset;\n\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\n\n\t\t\t\t// Multiply the conjugate for quaternion track types\n\t\t\t\tQuaternion.multiplyQuaternionsFlat(\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart,\n\t\t\t\t\treferenceValue,\n\t\t\t\t\t0,\n\t\t\t\t\ttargetTrack.values,\n\t\t\t\t\tvalueStart\n\t\t\t\t);\n\n\t\t\t} else {\n\n\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\n\n\t\t\t\t// Subtract each value for all other numeric track types\n\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\n\n\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\ttargetClip.blendMode = AdditiveAnimationBlendMode;\n\n\treturn targetClip;\n\n}\n\nconst AnimationUtils = {\n\tconvertArray: convertArray,\n\tisTypedArray: isTypedArray,\n\tgetKeyframeOrder: getKeyframeOrder,\n\tsortedArray: sortedArray,\n\tflattenJSON: flattenJSON,\n\tsubclip: subclip,\n\tmakeClipAdditive: makeClipAdditive\n};\n\n/**\n * Abstract base class of interpolants over parametric samples.\n *\n * The parameter domain is one dimensional, typically the time or a path\n * along a curve defined by the data.\n *\n * The sample values can have any dimensionality and derived classes may\n * apply special interpretations to the data.\n *\n * This class provides the interval seek in a Template Method, deferring\n * the actual interpolation to derived classes.\n *\n * Time complexity is O(1) for linear access crossing at most two points\n * and O(log N) for random access, where N is the number of positions.\n *\n * References: {@link http://www.oodesign.com/template-method-pattern.html}\n *\n * @abstract\n */\nclass Interpolant {\n\n\t/**\n\t * Constructs a new interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\t/**\n\t\t * The parameter positions.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.parameterPositions = parameterPositions;\n\n\t\t/**\n\t\t * A cache index.\n\t\t *\n\t\t * @private\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis._cachedIndex = 0;\n\n\t\t/**\n\t\t * The result buffer.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.resultBuffer = resultBuffer !== undefined ? resultBuffer : new sampleValues.constructor( sampleSize );\n\n\t\t/**\n\t\t * The sample values.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.sampleValues = sampleValues;\n\n\t\t/**\n\t\t * The value size.\n\t\t *\n\t\t * @type {TypedArray}\n\t\t */\n\t\tthis.valueSize = sampleSize;\n\n\t\t/**\n\t\t * The interpolation settings.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.settings = null;\n\n\t\t/**\n\t\t * The default settings object.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.DefaultSettings_ = {};\n\n\t}\n\n\t/**\n\t * Evaluate the interpolant at position `t`.\n\t *\n\t * @param {number} t - The interpolation factor.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tevaluate( t ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet i1 = this._cachedIndex,\n\t\t\tt1 = pp[ i1 ],\n\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\tvalidate_interval: {\n\n\t\t\tseek: {\n\n\t\t\t\tlet right;\n\n\t\t\t\tlinear_scan: {\n\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\n\n\t\t\t\t\t\t\t\t// after end\n\n\t\t\t\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt0 = t1;\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\n\n\t\t\t\t\t\t\tif ( t < t1 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the right side of the index\n\t\t\t\t\t\tright = pp.length;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t//- slower code:\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\n\n\t\t\t\t\t\t// looping?\n\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\n\n\t\t\t\t\t\tif ( t < t1global ) {\n\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\n\t\t\t\t\t\t\tt0 = t1global;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// linear reverse scan\n\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\n\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\t\t\t\t// before start\n\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\n\n\t\t\t\t\t\t\tt1 = t0;\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\n\n\t\t\t\t\t\t\tif ( t >= t0 ) {\n\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\n\t\t\t\t\t\t\t\tbreak seek;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// prepare binary search on the left side of the index\n\t\t\t\t\t\tright = i1;\n\t\t\t\t\t\ti1 = 0;\n\t\t\t\t\t\tbreak linear_scan;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the interval is valid\n\n\t\t\t\t\tbreak validate_interval;\n\n\t\t\t\t} // linear scan\n\n\t\t\t\t// binary search\n\n\t\t\t\twhile ( i1 < right ) {\n\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\n\n\t\t\t\t\tif ( t < pp[ mid ] ) {\n\n\t\t\t\t\t\tright = mid;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ti1 = mid + 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tt1 = pp[ i1 ];\n\t\t\t\tt0 = pp[ i1 - 1 ];\n\n\t\t\t\t// check boundary cases, again\n\n\t\t\t\tif ( t0 === undefined ) {\n\n\t\t\t\t\tthis._cachedIndex = 0;\n\t\t\t\t\treturn this.copySampleValue_( 0 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( t1 === undefined ) {\n\n\t\t\t\t\ti1 = pp.length;\n\t\t\t\t\tthis._cachedIndex = i1;\n\t\t\t\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t\t\t\t}\n\n\t\t\t} // seek\n\n\t\t\tthis._cachedIndex = i1;\n\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\n\n\t\t} // validate_interval\n\n\t\treturn this.interpolate_( i1, t0, t, t1 );\n\n\t}\n\n\t/**\n\t * Returns the interpolation settings.\n\t *\n\t * @return {Object} The interpolation settings.\n\t */\n\tgetSettings_() {\n\n\t\treturn this.settings || this.DefaultSettings_;\n\n\t}\n\n\t/**\n\t * Copies a sample value to the result buffer.\n\t *\n\t * @param {number} index - An index into the sample value buffer.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tcopySampleValue_( index ) {\n\n\t\t// copies a sample value to the result buffer\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = index * stride;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] = values[ offset + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\t/**\n\t * Copies a sample value to the result buffer.\n\t *\n\t * @abstract\n\t * @param {number} i1 - An index into the sample value buffer.\n\t * @param {number} t0 - The previous interpolation factor.\n\t * @param {number} t - The current interpolation factor.\n\t * @param {number} t1 - The next interpolation factor.\n\t * @return {TypedArray} The result buffer.\n\t */\n\tinterpolate_( /* i1, t0, t, t1 */ ) {\n\n\t\tthrow new Error( 'call to abstract method' );\n\t\t// implementations shall return this.resultBuffer\n\n\t}\n\n\t/**\n\t * Optional method that is executed when the interval has changed.\n\t *\n\t * @param {number} i1 - An index into the sample value buffer.\n\t * @param {number} t0 - The previous interpolation factor.\n\t * @param {number} t - The current interpolation factor.\n\t */\n\tintervalChanged_( /* i1, t0, t1 */ ) {\n\n\t\t// empty\n\n\t}\n\n}\n\n/**\n * Fast and simple cubic spline interpolant.\n *\n * It was derived from a Hermitian construction setting the first derivative\n * at each sample position to the linear slope between neighboring positions\n * over their parameter interval.\n *\n * @augments Interpolant\n */\nclass CubicInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new cubic interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t\tthis._weightPrev = -0;\n\t\tthis._offsetPrev = -0;\n\t\tthis._weightNext = -0;\n\t\tthis._offsetNext = -0;\n\n\t\tthis.DefaultSettings_ = {\n\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\n\t\t};\n\n\t}\n\n\tintervalChanged_( i1, t0, t1 ) {\n\n\t\tconst pp = this.parameterPositions;\n\t\tlet iPrev = i1 - 2,\n\t\t\tiNext = i1 + 1,\n\n\t\t\ttPrev = pp[ iPrev ],\n\t\t\ttNext = pp[ iNext ];\n\n\t\tif ( tPrev === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingStart ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(t0) = 0\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = 2 * t0 - t1;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiPrev = pp.length - 2;\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\n\t\t\t\t\tiPrev = i1;\n\t\t\t\t\ttPrev = t1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tNext === undefined ) {\n\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\n\n\t\t\t\tcase ZeroSlopeEnding:\n\n\t\t\t\t\t// f'(tN) = 0\n\t\t\t\t\tiNext = i1;\n\t\t\t\t\ttNext = 2 * t1 - t0;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase WrapAroundEnding:\n\n\t\t\t\t\t// use the other end of the curve\n\t\t\t\t\tiNext = 1;\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault: // ZeroCurvatureEnding\n\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\n\t\t\t\t\tiNext = i1 - 1;\n\t\t\t\t\ttNext = t0;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\n\t\t\tstride = this.valueSize;\n\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\n\t\tthis._offsetPrev = iPrev * stride;\n\t\tthis._offsetNext = iNext * stride;\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\n\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tpp = p * p,\n\t\t\tppp = pp * p;\n\n\t\t// evaluate polynomials\n\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\n\t\tconst s0 = ( 1 + wP ) * ppp + ( -1.5 - 2 * wP ) * pp + ( -0.5 + wP ) * p + 1;\n\t\tconst s1 = ( -1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\n\t\tconst sN = wN * ppp - wN * pp;\n\n\t\t// combine data linearly\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tsP * values[ oP + i ] +\n\t\t\t\t\ts0 * values[ o0 + i ] +\n\t\t\t\t\ts1 * values[ o1 + i ] +\n\t\t\t\t\tsN * values[ oN + i ];\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A basic linear interpolant.\n *\n * @augments Interpolant\n */\nclass LinearInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new linear interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\toffset1 = i1 * stride,\n\t\t\toffset0 = offset1 - stride,\n\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\n\t\t\tweight0 = 1 - weight1;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tresult[ i ] =\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * Interpolant that evaluates to the sample value at the position preceding\n * the parameter.\n *\n * @augments Interpolant\n */\nclass DiscreteInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new discrete interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1 /*, t0, t, t1 */ ) {\n\n\t\treturn this.copySampleValue_( i1 - 1 );\n\n\t}\n\n}\n\nclass KeyframeTrack {\n\n\tconstructor( name, times, values, interpolation ) {\n\n\t\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\n\t\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\n\n\t\tthis.name = name;\n\n\t\tthis.times = convertArray( times, this.TimeBufferType );\n\t\tthis.values = convertArray( values, this.ValueBufferType );\n\n\t\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\n\n\t}\n\n\t// Serialization (in static context, because of constructor invocation\n\t// and automatic invocation of .toJSON):\n\n\tstatic toJSON( track ) {\n\n\t\tconst trackType = track.constructor;\n\n\t\tlet json;\n\n\t\t// derived classes can define a static toJSON method\n\t\tif ( trackType.toJSON !== this.toJSON ) {\n\n\t\t\tjson = trackType.toJSON( track );\n\n\t\t} else {\n\n\t\t\t// by default, we assume the data can be serialized as-is\n\t\t\tjson = {\n\n\t\t\t\t'name': track.name,\n\t\t\t\t'times': convertArray( track.times, Array ),\n\t\t\t\t'values': convertArray( track.values, Array )\n\n\t\t\t};\n\n\t\t\tconst interpolation = track.getInterpolation();\n\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\n\n\t\t\t\tjson.interpolation = interpolation;\n\n\t\t\t}\n\n\t\t}\n\n\t\tjson.type = track.ValueTypeName; // mandatory\n\n\t\treturn json;\n\n\t}\n\n\tInterpolantFactoryMethodDiscrete( result ) {\n\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tInterpolantFactoryMethodSmooth( result ) {\n\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n\tsetInterpolation( interpolation ) {\n\n\t\tlet factoryMethod;\n\n\t\tswitch ( interpolation ) {\n\n\t\t\tcase InterpolateDiscrete:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateLinear:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\n\n\t\t\t\tbreak;\n\n\t\t\tcase InterpolateSmooth:\n\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\n\n\t\t\t\tbreak;\n\n\t\t}\n\n\t\tif ( factoryMethod === undefined ) {\n\n\t\t\tconst message = 'unsupported interpolation for ' +\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\n\n\t\t\tif ( this.createInterpolant === undefined ) {\n\n\t\t\t\t// fall back to default, unless the default itself is messed up\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\n\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.createInterpolant = factoryMethod;\n\n\t\treturn this;\n\n\t}\n\n\tgetInterpolation() {\n\n\t\tswitch ( this.createInterpolant ) {\n\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\n\n\t\t\t\treturn InterpolateDiscrete;\n\n\t\t\tcase this.InterpolantFactoryMethodLinear:\n\n\t\t\t\treturn InterpolateLinear;\n\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\n\n\t\t\t\treturn InterpolateSmooth;\n\n\t\t}\n\n\t}\n\n\tgetValueSize() {\n\n\t\treturn this.values.length / this.times.length;\n\n\t}\n\n\t// move all keyframes either forwards or backwards in time\n\tshift( timeOffset ) {\n\n\t\tif ( timeOffset !== 0.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] += timeOffset;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n\tscale( timeScale ) {\n\n\t\tif ( timeScale !== 1.0 ) {\n\n\t\t\tconst times = this.times;\n\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\n\n\t\t\t\ttimes[ i ] *= timeScale;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n\ttrim( startTime, endTime ) {\n\n\t\tconst times = this.times,\n\t\t\tnKeys = times.length;\n\n\t\tlet from = 0,\n\t\t\tto = nKeys - 1;\n\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\n\n\t\t\t++ from;\n\n\t\t}\n\n\t\twhile ( to !== -1 && times[ to ] > endTime ) {\n\n\t\t\t-- to;\n\n\t\t}\n\n\t\t++ to; // inclusive -> exclusive bound\n\n\t\tif ( from !== 0 || to !== nKeys ) {\n\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\n\t\t\tif ( from >= to ) {\n\n\t\t\t\tto = Math.max( to, 1 );\n\t\t\t\tfrom = to - 1;\n\n\t\t\t}\n\n\t\t\tconst stride = this.getValueSize();\n\t\t\tthis.times = times.slice( from, to );\n\t\t\tthis.values = this.values.slice( from * stride, to * stride );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tconst valueSize = this.getValueSize();\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tconst times = this.times,\n\t\t\tvalues = this.values,\n\n\t\t\tnKeys = times.length;\n\n\t\tif ( nKeys === 0 ) {\n\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\n\t\t\tvalid = false;\n\n\t\t}\n\n\t\tlet prevTime = null;\n\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\n\n\t\t\tconst currTime = times[ i ];\n\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\n\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\n\t\t\t\tvalid = false;\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tprevTime = currTime;\n\n\t\t}\n\n\t\tif ( values !== undefined ) {\n\n\t\t\tif ( isTypedArray( values ) ) {\n\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\n\n\t\t\t\t\tconst value = values[ i ];\n\n\t\t\t\t\tif ( isNaN( value ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\n\t\t\t\t\t\tvalid = false;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\t// removes equivalent sequential keys as common in morph target sequences\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n\toptimize() {\n\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\n\t\tconst times = this.times.slice(),\n\t\t\tvalues = this.values.slice(),\n\t\t\tstride = this.getValueSize(),\n\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\n\n\t\t\tlastIndex = times.length - 1;\n\n\t\tlet writeIndex = 1;\n\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\n\n\t\t\tlet keep = false;\n\n\t\t\tconst time = times[ i ];\n\t\t\tconst timeNext = times[ i + 1 ];\n\n\t\t\t// remove adjacent keyframes scheduled at the same time\n\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== times[ 0 ] ) ) {\n\n\t\t\t\tif ( ! smoothInterpolation ) {\n\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\n\n\t\t\t\t\tconst offset = i * stride,\n\t\t\t\t\t\toffsetP = offset - stride,\n\t\t\t\t\t\toffsetN = offset + stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tconst value = values[ offset + j ];\n\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\n\n\t\t\t\t\t\t\tkeep = true;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tkeep = true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// in-place compaction\n\n\t\t\tif ( keep ) {\n\n\t\t\t\tif ( i !== writeIndex ) {\n\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\n\n\t\t\t\t\tconst readOffset = i * stride,\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\n\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\n\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t++ writeIndex;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// flush last keyframe (compaction looks ahead)\n\n\t\tif ( lastIndex > 0 ) {\n\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\n\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\n\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\n\n\t\t\t}\n\n\t\t\t++ writeIndex;\n\n\t\t}\n\n\t\tif ( writeIndex !== times.length ) {\n\n\t\t\tthis.times = times.slice( 0, writeIndex );\n\t\t\tthis.values = values.slice( 0, writeIndex * stride );\n\n\t\t} else {\n\n\t\t\tthis.times = times;\n\t\t\tthis.values = values;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst times = this.times.slice();\n\t\tconst values = this.values.slice();\n\n\t\tconst TypedKeyframeTrack = this.constructor;\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\n\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\n\t\ttrack.createInterpolant = this.createInterpolant;\n\n\t\treturn track;\n\n\t}\n\n}\n\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\n\n/**\n * A Track of Boolean keyframe values.\n */\nclass BooleanKeyframeTrack extends KeyframeTrack {\n\n\t// No interpolation parameter because only InterpolateDiscrete is valid.\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\nBooleanKeyframeTrack.prototype.ValueTypeName = 'bool';\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of keyframe values that represent color.\n */\nclass ColorKeyframeTrack extends KeyframeTrack {}\n\nColorKeyframeTrack.prototype.ValueTypeName = 'color';\n\n/**\n * A Track of numeric keyframe values.\n */\nclass NumberKeyframeTrack extends KeyframeTrack {}\n\nNumberKeyframeTrack.prototype.ValueTypeName = 'number';\n\n/**\n * Spherical linear unit quaternion interpolant.\n *\n * @augments Interpolant\n */\nclass QuaternionLinearInterpolant extends Interpolant {\n\n\t/**\n\t * Constructs a new SLERP interpolant.\n\t *\n\t * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.\n\t * @param {TypedArray} sampleValues - The sample values.\n\t * @param {number} sampleSize - The sample size\n\t * @param {TypedArray} [resultBuffer] - The result buffer.\n\t */\n\tconstructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\n\n\t\tsuper( parameterPositions, sampleValues, sampleSize, resultBuffer );\n\n\t}\n\n\tinterpolate_( i1, t0, t, t1 ) {\n\n\t\tconst result = this.resultBuffer,\n\t\t\tvalues = this.sampleValues,\n\t\t\tstride = this.valueSize,\n\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\n\n\t\tlet offset = i1 * stride;\n\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\n\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n}\n\n/**\n * A Track of quaternion keyframe values.\n */\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n\n\tInterpolantFactoryMethodLinear( result ) {\n\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\n\n\t}\n\n}\n\nQuaternionKeyframeTrack.prototype.ValueTypeName = 'quaternion';\n// ValueBufferType is inherited\n// DefaultInterpolation is inherited;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track that interpolates Strings\n */\nclass StringKeyframeTrack extends KeyframeTrack {\n\n\t// No interpolation parameter because only InterpolateDiscrete is valid.\n\tconstructor( name, times, values ) {\n\n\t\tsuper( name, times, values );\n\n\t}\n\n}\n\nStringKeyframeTrack.prototype.ValueTypeName = 'string';\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = undefined;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = undefined;\n\n/**\n * A Track of vectored keyframe values.\n */\nclass VectorKeyframeTrack extends KeyframeTrack {}\n\nVectorKeyframeTrack.prototype.ValueTypeName = 'vector';\n\nclass AnimationClip {\n\n\tconstructor( name = '', duration = -1, tracks = [], blendMode = NormalAnimationBlendMode ) {\n\n\t\tthis.name = name;\n\t\tthis.tracks = tracks;\n\t\tthis.duration = duration;\n\t\tthis.blendMode = blendMode;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// this means it should figure out its duration by scanning the tracks\n\t\tif ( this.duration < 0 ) {\n\n\t\t\tthis.resetDuration();\n\n\t\t}\n\n\t}\n\n\n\tstatic parse( json ) {\n\n\t\tconst tracks = [],\n\t\t\tjsonTracks = json.tracks,\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\n\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\n\n\t\t}\n\n\t\tconst clip = new this( json.name, json.duration, tracks, json.blendMode );\n\t\tclip.uuid = json.uuid;\n\n\t\treturn clip;\n\n\t}\n\n\tstatic toJSON( clip ) {\n\n\t\tconst tracks = [],\n\t\t\tclipTracks = clip.tracks;\n\n\t\tconst json = {\n\n\t\t\t'name': clip.name,\n\t\t\t'duration': clip.duration,\n\t\t\t'tracks': tracks,\n\t\t\t'uuid': clip.uuid,\n\t\t\t'blendMode': clip.blendMode\n\n\t\t};\n\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\n\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\n\n\t\t}\n\n\t\treturn json;\n\n\t}\n\n\tstatic CreateFromMorphTargetSequence( name, morphTargetSequence, fps, noLoop ) {\n\n\t\tconst numMorphTargets = morphTargetSequence.length;\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\n\n\t\t\tlet times = [];\n\t\t\tlet values = [];\n\n\t\t\ttimes.push(\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\n\t\t\t\ti,\n\t\t\t\t( i + 1 ) % numMorphTargets );\n\n\t\t\tvalues.push( 0, 1, 0 );\n\n\t\t\tconst order = getKeyframeOrder( times );\n\t\t\ttimes = sortedArray( times, 1, order );\n\t\t\tvalues = sortedArray( values, 1, order );\n\n\t\t\t// if there is a key at the first frame, duplicate it as the\n\t\t\t// last frame as well for perfect loop.\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\n\n\t\t\t\ttimes.push( numMorphTargets );\n\t\t\t\tvalues.push( values[ 0 ] );\n\n\t\t\t}\n\n\t\t\ttracks.push(\n\t\t\t\tnew NumberKeyframeTrack(\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\n\t\t\t\t\ttimes, values\n\t\t\t\t).scale( 1.0 / fps ) );\n\n\t\t}\n\n\t\treturn new this( name, -1, tracks );\n\n\t}\n\n\tstatic findByName( objectOrClipArray, name ) {\n\n\t\tlet clipArray = objectOrClipArray;\n\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\n\n\t\t\tconst o = objectOrClipArray;\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\n\n\t\t\tif ( clipArray[ i ].name === name ) {\n\n\t\t\t\treturn clipArray[ i ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\tstatic CreateClipsFromMorphTargetSequences( morphTargets, fps, noLoop ) {\n\n\t\tconst animationToMorphTargets = {};\n\n\t\t// tested with https://regex101.com/ on trick sequences\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\n\n\t\t// sort morph target names into animation groups based\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\n\n\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\tconst parts = morphTarget.name.match( pattern );\n\n\t\t\tif ( parts && parts.length > 1 ) {\n\n\t\t\t\tconst name = parts[ 1 ];\n\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\n\n\t\t\t\tif ( ! animationMorphTargets ) {\n\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\n\n\t\t\t\t}\n\n\t\t\t\tanimationMorphTargets.push( morphTarget );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst clips = [];\n\n\t\tfor ( const name in animationToMorphTargets ) {\n\n\t\t\tclips.push( this.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\n\n\t\t}\n\n\t\treturn clips;\n\n\t}\n\n\t// parse the animation.hierarchy format\n\tstatic parseAnimation( animation, bones ) {\n\n\t\tif ( ! animation ) {\n\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\n\n\t\t\t// only return track if there are actually keys.\n\t\t\tif ( animationKeys.length !== 0 ) {\n\n\t\t\t\tconst times = [];\n\t\t\t\tconst values = [];\n\n\t\t\t\tflattenJSON( animationKeys, times, values, propertyName );\n\n\t\t\t\t// empty keys are filtered out, so check again\n\t\t\t\tif ( times.length !== 0 ) {\n\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tconst tracks = [];\n\n\t\tconst clipName = animation.name || 'default';\n\t\tconst fps = animation.fps || 30;\n\t\tconst blendMode = animation.blendMode;\n\n\t\t// automatic length determination in AnimationClip.\n\t\tlet duration = animation.length || -1;\n\n\t\tconst hierarchyTracks = animation.hierarchy || [];\n\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\n\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\n\n\t\t\t// skip empty tracks\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\n\n\t\t\t// process morph targets\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\n\n\t\t\t\t// figure out all morph targets used in this track\n\t\t\t\tconst morphTargetNames = {};\n\n\t\t\t\tlet k;\n\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\n\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\n\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\n\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = -1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// create a track for each morph target with all zero\n\t\t\t\t// morphTargetInfluences except for the keys in which\n\t\t\t\t// the morphTarget is named.\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\n\n\t\t\t\t\tconst times = [];\n\t\t\t\t\tconst values = [];\n\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\n\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\n\n\t\t\t\t\t\ttimes.push( animationKey.time );\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\n\n\t\t\t\t}\n\n\t\t\t\tduration = morphTargetNames.length * fps;\n\n\t\t\t} else {\n\n\t\t\t\t// ...assume skeletal animation\n\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\n\t\t\t\t\tanimationKeys, 'pos', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\n\t\t\t\t\tanimationKeys, 'rot', tracks );\n\n\t\t\t\taddNonemptyTrack(\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\n\t\t\t\t\tanimationKeys, 'scl', tracks );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( tracks.length === 0 ) {\n\n\t\t\treturn null;\n\n\t\t}\n\n\t\tconst clip = new this( clipName, duration, tracks, blendMode );\n\n\t\treturn clip;\n\n\t}\n\n\tresetDuration() {\n\n\t\tconst tracks = this.tracks;\n\t\tlet duration = 0;\n\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\n\n\t\t\tconst track = this.tracks[ i ];\n\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\n\n\t\t}\n\n\t\tthis.duration = duration;\n\n\t\treturn this;\n\n\t}\n\n\ttrim() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tvalidate() {\n\n\t\tlet valid = true;\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tvalid = valid && this.tracks[ i ].validate();\n\n\t\t}\n\n\t\treturn valid;\n\n\t}\n\n\toptimize() {\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\tthis.tracks[ i ].optimize();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\tconst tracks = [];\n\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\n\n\t\t\ttracks.push( this.tracks[ i ].clone() );\n\n\t\t}\n\n\t\treturn new this.constructor( this.name, this.duration, tracks, this.blendMode );\n\n\t}\n\n\ttoJSON() {\n\n\t\treturn this.constructor.toJSON( this );\n\n\t}\n\n}\n\nfunction getTrackTypeForValueTypeName( typeName ) {\n\n\tswitch ( typeName.toLowerCase() ) {\n\n\t\tcase 'scalar':\n\t\tcase 'double':\n\t\tcase 'float':\n\t\tcase 'number':\n\t\tcase 'integer':\n\n\t\t\treturn NumberKeyframeTrack;\n\n\t\tcase 'vector':\n\t\tcase 'vector2':\n\t\tcase 'vector3':\n\t\tcase 'vector4':\n\n\t\t\treturn VectorKeyframeTrack;\n\n\t\tcase 'color':\n\n\t\t\treturn ColorKeyframeTrack;\n\n\t\tcase 'quaternion':\n\n\t\t\treturn QuaternionKeyframeTrack;\n\n\t\tcase 'bool':\n\t\tcase 'boolean':\n\n\t\t\treturn BooleanKeyframeTrack;\n\n\t\tcase 'string':\n\n\t\t\treturn StringKeyframeTrack;\n\n\t}\n\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\n\n}\n\nfunction parseKeyframeTrack( json ) {\n\n\tif ( json.type === undefined ) {\n\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\n\n\t}\n\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\n\n\tif ( json.times === undefined ) {\n\n\t\tconst times = [], values = [];\n\n\t\tflattenJSON( json.keys, times, values, 'value' );\n\n\t\tjson.times = times;\n\t\tjson.values = values;\n\n\t}\n\n\t// derived classes can define a static parse method\n\tif ( trackType.parse !== undefined ) {\n\n\t\treturn trackType.parse( json );\n\n\t} else {\n\n\t\t// by default, we assume a constructor compatible with the base\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\n\n\t}\n\n}\n\nconst Cache = {\n\n\tenabled: false,\n\n\tfiles: {},\n\n\tadd: function ( key, file ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\n\n\t\tthis.files[ key ] = file;\n\n\t},\n\n\tget: function ( key ) {\n\n\t\tif ( this.enabled === false ) return;\n\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\n\n\t\treturn this.files[ key ];\n\n\t},\n\n\tremove: function ( key ) {\n\n\t\tdelete this.files[ key ];\n\n\t},\n\n\tclear: function () {\n\n\t\tthis.files = {};\n\n\t}\n\n};\n\nclass LoadingManager {\n\n\tconstructor( onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tlet isLoading = false;\n\t\tlet itemsLoaded = 0;\n\t\tlet itemsTotal = 0;\n\t\tlet urlModifier = undefined;\n\t\tconst handlers = [];\n\n\t\t// Refer to #5689 for the reason why we don't set .onStart\n\t\t// in the constructor\n\n\t\tthis.onStart = undefined;\n\t\tthis.onLoad = onLoad;\n\t\tthis.onProgress = onProgress;\n\t\tthis.onError = onError;\n\n\t\tthis.itemStart = function ( url ) {\n\n\t\t\titemsTotal ++;\n\n\t\t\tif ( isLoading === false ) {\n\n\t\t\t\tif ( scope.onStart !== undefined ) {\n\n\t\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tisLoading = true;\n\n\t\t};\n\n\t\tthis.itemEnd = function ( url ) {\n\n\t\t\titemsLoaded ++;\n\n\t\t\tif ( scope.onProgress !== undefined ) {\n\n\t\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\n\n\t\t\t}\n\n\t\t\tif ( itemsLoaded === itemsTotal ) {\n\n\t\t\t\tisLoading = false;\n\n\t\t\t\tif ( scope.onLoad !== undefined ) {\n\n\t\t\t\t\tscope.onLoad();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.itemError = function ( url ) {\n\n\t\t\tif ( scope.onError !== undefined ) {\n\n\t\t\t\tscope.onError( url );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.resolveURL = function ( url ) {\n\n\t\t\tif ( urlModifier ) {\n\n\t\t\t\treturn urlModifier( url );\n\n\t\t\t}\n\n\t\t\treturn url;\n\n\t\t};\n\n\t\tthis.setURLModifier = function ( transform ) {\n\n\t\t\turlModifier = transform;\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.addHandler = function ( regex, loader ) {\n\n\t\t\thandlers.push( regex, loader );\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.removeHandler = function ( regex ) {\n\n\t\t\tconst index = handlers.indexOf( regex );\n\n\t\t\tif ( index !== -1 ) {\n\n\t\t\t\thandlers.splice( index, 2 );\n\n\t\t\t}\n\n\t\t\treturn this;\n\n\t\t};\n\n\t\tthis.getHandler = function ( file ) {\n\n\t\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\n\n\t\t\t\tconst regex = handlers[ i ];\n\t\t\t\tconst loader = handlers[ i + 1 ];\n\n\t\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\n\n\t\t\t\tif ( regex.test( file ) ) {\n\n\t\t\t\t\treturn loader;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn null;\n\n\t\t};\n\n\t}\n\n}\n\nconst DefaultLoadingManager = /*@__PURE__*/ new LoadingManager();\n\n/**\n * Abstract base class for loaders.\n *\n * @abstract\n */\nclass Loader {\n\n\t/**\n\t * Constructs a new loader.\n\t *\n\t * @param {LoadingManager} [manager] - The loading manager.\n\t */\n\tconstructor( manager ) {\n\n\t\t/**\n\t\t * The loading manager.\n\t\t *\n\t\t * @type {LoadingManager}\n\t\t * @default DefaultLoadingManager\n\t\t */\n\t\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\n\n\t\t/**\n\t\t * The crossOrigin string to implement CORS for loading the url from a\n\t\t * different domain that allows CORS.\n\t\t *\n\t\t * @type {string}\n\t\t * @default 'anonymous'\n\t\t */\n\t\tthis.crossOrigin = 'anonymous';\n\n\t\t/**\n\t\t * Whether the XMLHttpRequest uses credentials.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.withCredentials = false;\n\n\t\t/**\n\t\t * The base path from which the asset will be loaded.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.path = '';\n\n\t\t/**\n\t\t * The base path from which additional resources like textures will be loaded.\n\t\t *\n\t\t * @type {string}\n\t\t */\n\t\tthis.resourcePath = '';\n\n\t\t/**\n\t\t * The [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}\n\t\t * used in HTTP request.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.requestHeader = {};\n\n\t}\n\n\t/**\n\t * This method needs to be implemented by all concrete loaders. It holds the\n\t * logic for loading assets from the backend.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded.\n\t * @param {Function} onLoad - Executed when the loading process has been finished.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @param {onErrorCallback} onError - Executed when errors occur.\n\t */\n\tload( /* url, onLoad, onProgress, onError */ ) {}\n\n\t/**\n\t * A async version of {@link Loader#load}.\n\t *\n\t * @param {string} url - The path/URL of the file to be loaded.\n\t * @param {onProgressCallback} onProgress - Executed while the loading is in progress.\n\t * @return {Promise} A Promise that resolves when the asset has been loaded.\n\t */\n\tloadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\treturn new Promise( function ( resolve, reject ) {\n\n\t\t\tscope.load( url, resolve, onProgress, reject );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * This method needs to be implemented by all concrete loaders. It holds the\n\t * logic for parsing the asset into three.js entities.\n\t *\n\t * @param {any} data - The data to parse.\n\t */\n\tparse( /* data */ ) {}\n\n\t/**\n\t * Sets the `crossOrigin` String to implement CORS for loading the URL\n\t * from a different domain that allows CORS.\n\t *\n\t * @param {string} crossOrigin - The `crossOrigin` value.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetCrossOrigin( crossOrigin ) {\n\n\t\tthis.crossOrigin = crossOrigin;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Whether the XMLHttpRequest uses credentials such as cookies, authorization\n\t * headers or TLS client certificates, see [XMLHttpRequest.withCredentials]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials}.\n\t *\n\t * Note: This setting has no effect if you are loading files locally or from the same domain.\n\t *\n\t * @param {boolean} value - The `withCredentials` value.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetWithCredentials( value ) {\n\n\t\tthis.withCredentials = value;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the base path for the asset.\n\t *\n\t * @param {string} path - The base path.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetPath( path ) {\n\n\t\tthis.path = path;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the base path for dependent resources like textures.\n\t *\n\t * @param {string} resourcePath - The resource path.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetResourcePath( resourcePath ) {\n\n\t\tthis.resourcePath = resourcePath;\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given request header.\n\t *\n\t * @param {Object} requestHeader - A [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}\n\t * for configuring the HTTP request.\n\t * @return {Loader} A reference to this instance.\n\t */\n\tsetRequestHeader( requestHeader ) {\n\n\t\tthis.requestHeader = requestHeader;\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Callback for onProgress in loaders.\n *\n *\n * @callback onProgressCallback\n * @param {ProgressEvent} event - An instance of `ProgressEvent` that represents the current loading status.\n */\n\n/**\n * Callback for onError in loaders.\n *\n *\n * @callback onErrorCallback\n * @param {Error} error - The error which occurred during the loading process.\n */\n\n/**\n * The default material name that is used by loaders\n * when creating materials for loaded 3D objects.\n *\n * Note: Not all loaders might honor this setting.\n *\n * @static\n * @type {string}\n * @default '__DEFAULT'\n */\nLoader.DEFAULT_MATERIAL_NAME = '__DEFAULT';\n\nconst loading = {};\n\nclass HttpError extends Error {\n\n\tconstructor( message, response ) {\n\n\t\tsuper( message );\n\t\tthis.response = response;\n\n\t}\n\n}\n\nclass FileLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tthis.manager.itemStart( url );\n\n\t\t\tsetTimeout( () => {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\t// Check if request is duplicate\n\n\t\tif ( loading[ url ] !== undefined ) {\n\n\t\t\tloading[ url ].push( {\n\n\t\t\t\tonLoad: onLoad,\n\t\t\t\tonProgress: onProgress,\n\t\t\t\tonError: onError\n\n\t\t\t} );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// Initialise array for duplicate requests\n\t\tloading[ url ] = [];\n\n\t\tloading[ url ].push( {\n\t\t\tonLoad: onLoad,\n\t\t\tonProgress: onProgress,\n\t\t\tonError: onError,\n\t\t} );\n\n\t\t// create request\n\t\tconst req = new Request( url, {\n\t\t\theaders: new Headers( this.requestHeader ),\n\t\t\tcredentials: this.withCredentials ? 'include' : 'same-origin',\n\t\t\t// An abort controller could be added within a future PR\n\t\t} );\n\n\t\t// record states ( avoid data race )\n\t\tconst mimeType = this.mimeType;\n\t\tconst responseType = this.responseType;\n\n\t\t// start the fetch\n\t\tfetch( req )\n\t\t\t.then( response => {\n\n\t\t\t\tif ( response.status === 200 || response.status === 0 ) {\n\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\n\n\t\t\t\t\tif ( response.status === 0 ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// Workaround: Checking if response.body === undefined for Alipay browser #23548\n\n\t\t\t\t\tif ( typeof ReadableStream === 'undefined' || response.body === undefined || response.body.getReader === undefined ) {\n\n\t\t\t\t\t\treturn response;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\t// Nginx needs X-File-Size check\n\t\t\t\t\t// https://serverfault.com/questions/482875/why-does-nginx-remove-content-length-header-for-chunked-content\n\t\t\t\t\tconst contentLength = response.headers.get( 'X-File-Size' ) || response.headers.get( 'Content-Length' );\n\t\t\t\t\tconst total = contentLength ? parseInt( contentLength ) : 0;\n\t\t\t\t\tconst lengthComputable = total !== 0;\n\t\t\t\t\tlet loaded = 0;\n\n\t\t\t\t\t// periodically read data into the new stream tracking while download progress\n\t\t\t\t\tconst stream = new ReadableStream( {\n\t\t\t\t\t\tstart( controller ) {\n\n\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\tfunction readData() {\n\n\t\t\t\t\t\t\t\treader.read().then( ( { done, value } ) => {\n\n\t\t\t\t\t\t\t\t\tif ( done ) {\n\n\t\t\t\t\t\t\t\t\t\tcontroller.close();\n\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\tloaded += value.byteLength;\n\n\t\t\t\t\t\t\t\t\t\tconst event = new ProgressEvent( 'progress', { lengthComputable, loaded, total } );\n\t\t\t\t\t\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\t\t\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tcontroller.enqueue( value );\n\t\t\t\t\t\t\t\t\t\treadData();\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t}, ( e ) => {\n\n\t\t\t\t\t\t\t\t\tcontroller.error( e );\n\n\t\t\t\t\t\t\t\t} );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\treturn new Response( stream );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new HttpError( `fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( response => {\n\n\t\t\t\tswitch ( responseType ) {\n\n\t\t\t\t\tcase 'arraybuffer':\n\n\t\t\t\t\t\treturn response.arrayBuffer();\n\n\t\t\t\t\tcase 'blob':\n\n\t\t\t\t\t\treturn response.blob();\n\n\t\t\t\t\tcase 'document':\n\n\t\t\t\t\t\treturn response.text()\n\t\t\t\t\t\t\t.then( text => {\n\n\t\t\t\t\t\t\t\tconst parser = new DOMParser();\n\t\t\t\t\t\t\t\treturn parser.parseFromString( text, mimeType );\n\n\t\t\t\t\t\t\t} );\n\n\t\t\t\t\tcase 'json':\n\n\t\t\t\t\t\treturn response.json();\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( mimeType === undefined ) {\n\n\t\t\t\t\t\t\treturn response.text();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// sniff encoding\n\t\t\t\t\t\t\tconst re = /charset=\"?([^;\"\\s]*)\"?/i;\n\t\t\t\t\t\t\tconst exec = re.exec( mimeType );\n\t\t\t\t\t\t\tconst label = exec && exec[ 1 ] ? exec[ 1 ].toLowerCase() : undefined;\n\t\t\t\t\t\t\tconst decoder = new TextDecoder( label );\n\t\t\t\t\t\t\treturn response.arrayBuffer().then( ab => decoder.decode( ab ) );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.then( data => {\n\n\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\n\t\t\t\t// error response bodies as proper responses to requests.\n\t\t\t\tCache.add( url, data );\n\n\t\t\t\tconst callbacks = loading[ url ];\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( data );\n\n\t\t\t\t}\n\n\t\t\t} )\n\t\t\t.catch( err => {\n\n\t\t\t\t// Abort errors and other errors are handled the same\n\n\t\t\t\tconst callbacks = loading[ url ];\n\n\t\t\t\tif ( callbacks === undefined ) {\n\n\t\t\t\t\t// When onLoad was called and url was deleted in `loading`\n\t\t\t\t\tthis.manager.itemError( url );\n\t\t\t\t\tthrow err;\n\n\t\t\t\t}\n\n\t\t\t\tdelete loading[ url ];\n\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst callback = callbacks[ i ];\n\t\t\t\t\tif ( callback.onError ) callback.onError( err );\n\n\t\t\t\t}\n\n\t\t\t\tthis.manager.itemError( url );\n\n\t\t\t} )\n\t\t\t.finally( () => {\n\n\t\t\t\tthis.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\tthis.manager.itemStart( url );\n\n\t}\n\n\tsetResponseType( value ) {\n\n\t\tthis.responseType = value;\n\t\treturn this;\n\n\t}\n\n\tsetMimeType( value ) {\n\n\t\tthis.mimeType = value;\n\t\treturn this;\n\n\t}\n\n}\n\nclass AnimationLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst animations = [];\n\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\n\n\t\t\tanimations.push( clip );\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to block based textures loader (dds, pvr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass CompressedTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst images = [];\n\n\t\tconst texture = new CompressedTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( url[ i ], function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\timages[ i ] = {\n\t\t\t\t\twidth: texDatas.width,\n\t\t\t\t\theight: texDatas.height,\n\t\t\t\t\tformat: texDatas.format,\n\t\t\t\t\tmipmaps: texDatas.mipmaps\n\t\t\t\t};\n\n\t\t\t\tloaded += 1;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\n\n\t\t\t\t\ttexture.image = images;\n\t\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\tif ( Array.isArray( url ) ) {\n\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\n\n\t\t\t\tloadTexture( i );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// compressed cubemap texture stored in a single DDS file\n\n\t\t\tloader.load( url, function ( buffer ) {\n\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\n\n\t\t\t\tif ( texDatas.isCubemap ) {\n\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\n\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\n\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\n\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.image = images;\n\n\t\t\t\t} else {\n\n\t\t\t\t\ttexture.image.width = texDatas.width;\n\t\t\t\t\ttexture.image.height = texDatas.height;\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\n\n\t\t\t\t}\n\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\n\n\t\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t\t}\n\n\t\t\t\ttexture.format = texDatas.format;\n\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t}, onProgress, onError );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass ImageLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst image = createElementNS( 'img' );\n\n\t\tfunction onImageLoad() {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tCache.add( url, this );\n\n\t\t\tif ( onLoad ) onLoad( this );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction onImageError( event ) {\n\n\t\t\tremoveEventListeners();\n\n\t\t\tif ( onError ) onError( event );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t}\n\n\t\tfunction removeEventListeners() {\n\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\n\t\t\timage.removeEventListener( 'error', onImageError, false );\n\n\t\t}\n\n\t\timage.addEventListener( 'load', onImageLoad, false );\n\t\timage.addEventListener( 'error', onImageError, false );\n\n\t\tif ( url.slice( 0, 5 ) !== 'data:' ) {\n\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\n\n\t\t}\n\n\t\tscope.manager.itemStart( url );\n\n\t\timage.src = url;\n\n\t\treturn image;\n\n\t}\n\n}\n\nclass CubeTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( urls, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new CubeTexture();\n\t\ttexture.colorSpace = SRGBColorSpace;\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tlet loaded = 0;\n\n\t\tfunction loadTexture( i ) {\n\n\t\t\tloader.load( urls[ i ], function ( image ) {\n\n\t\t\t\ttexture.images[ i ] = image;\n\n\t\t\t\tloaded ++;\n\n\t\t\t\tif ( loaded === 6 ) {\n\n\t\t\t\t\ttexture.needsUpdate = true;\n\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\n\n\t\t\t\t}\n\n\t\t\t}, undefined, onError );\n\n\t\t}\n\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\n\n\t\t\tloadTexture( i );\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\n *\n * Sub classes have to implement the parse() method which will be used in load().\n */\n\nclass DataTextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst texture = new DataTexture();\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setPath( this.path );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\tlet texData;\n\n\t\t\ttry {\n\n\t\t\t\ttexData = scope.parse( buffer );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) {\n\n\t\t\t\t\tonError( error );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( error );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( texData.image !== undefined ) {\n\n\t\t\t\ttexture.image = texData.image;\n\n\t\t\t} else if ( texData.data !== undefined ) {\n\n\t\t\t\ttexture.image.width = texData.width;\n\t\t\t\ttexture.image.height = texData.height;\n\t\t\t\ttexture.image.data = texData.data;\n\n\t\t\t}\n\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\n\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\n\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\n\n\t\t\tif ( texData.colorSpace !== undefined ) {\n\n\t\t\t\ttexture.colorSpace = texData.colorSpace;\n\n\t\t\t}\n\n\t\t\tif ( texData.flipY !== undefined ) {\n\n\t\t\t\ttexture.flipY = texData.flipY;\n\n\t\t\t}\n\n\t\t\tif ( texData.format !== undefined ) {\n\n\t\t\t\ttexture.format = texData.format;\n\n\t\t\t}\n\n\t\t\tif ( texData.type !== undefined ) {\n\n\t\t\t\ttexture.type = texData.type;\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmaps !== undefined ) {\n\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\n\n\t\t\t}\n\n\t\t\tif ( texData.mipmapCount === 1 ) {\n\n\t\t\t\ttexture.minFilter = LinearFilter;\n\n\t\t\t}\n\n\t\t\tif ( texData.generateMipmaps !== undefined ) {\n\n\t\t\t\ttexture.generateMipmaps = texData.generateMipmaps;\n\n\t\t\t}\n\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad ) onLoad( texture, texData );\n\n\t\t}, onProgress, onError );\n\n\n\t\treturn texture;\n\n\t}\n\n}\n\nclass TextureLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst texture = new Texture();\n\n\t\tconst loader = new ImageLoader( this.manager );\n\t\tloader.setCrossOrigin( this.crossOrigin );\n\t\tloader.setPath( this.path );\n\n\t\tloader.load( url, function ( image ) {\n\n\t\t\ttexture.image = image;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\tif ( onLoad !== undefined ) {\n\n\t\t\t\tonLoad( texture );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\treturn texture;\n\n\t}\n\n}\n\n/**\n * Abstract base class for lights - all other light types inherit the\n * properties and methods described here.\n *\n * @abstract\n * @augments Object3D\n */\nclass Light extends Object3D {\n\n\t/**\n\t * Constructs a new light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity = 1 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLight = true;\n\n\t\tthis.type = 'Light';\n\n\t\t/**\n\t\t * The light's color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color( color );\n\n\t\t/**\n\t\t * The light's intensity.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.intensity = intensity;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\t// Empty here in base class; some subclasses override.\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.color.copy( source.color );\n\t\tthis.intensity = source.intensity;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.color = this.color.getHex();\n\t\tdata.object.intensity = this.intensity;\n\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\n\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\n\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\n\t\tif ( this.target !== undefined ) data.object.target = this.target.uuid;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * A light source positioned directly above the scene, with color fading from\n * the sky color to the ground color.\n *\n * This light cannot be used to cast shadows.\n *\n * ```js\n * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass HemisphereLight extends Light {\n\n\t/**\n\t * Constructs a new hemisphere light.\n\t *\n\t * @param {(number|Color|string)} [skyColor=0xffffff] - The light's sky color.\n\t * @param {(number|Color|string)} [groundColor=0xffffff] - The light's ground color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( skyColor, groundColor, intensity ) {\n\n\t\tsuper( skyColor, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isHemisphereLight = true;\n\n\t\tthis.type = 'HemisphereLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The light's ground color.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.groundColor = new Color( groundColor );\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.groundColor.copy( source.groundColor );\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix$1 = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld$1 = /*@__PURE__*/ new Vector3();\nconst _lookTarget$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * Abstract base class for light shadow classes. These classes\n * represent the shadow configuration for different ligth types.\n *\n * @abstract\n */\nclass LightShadow {\n\n\t/**\n\t * Constructs a new light shadow.\n\t *\n\t * @param {Camera} camera - The light's view of the world.\n\t */\n\tconstructor( camera ) {\n\n\t\t/**\n\t\t * The light's view of the world.\n\t\t *\n\t\t * @type {Camera}\n\t\t */\n\t\tthis.camera = camera;\n\n\t\t/**\n\t\t * The intensity of the shadow. The default is `1`.\n\t\t * Valid values are in the range `[0, 1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.intensity = 1;\n\n\t\t/**\n\t\t * Shadow map bias, how much to add or subtract from the normalized depth\n\t\t * when deciding whether a surface is in shadow.\n\t\t *\n\t\t * The default is `0`. Very tiny adjustments here (in the order of `0.0001`)\n\t\t * may help reduce artifacts in shadows.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.bias = 0;\n\n\t\t/**\n\t\t * Defines how much the position used to query the shadow map is offset along\n\t\t * the object normal. The default is `0`. Increasing this value can be used to\n\t\t * reduce shadow acne especially in large scenes where light shines onto\n\t\t * geometry at a shallow angle. The cost is that shadows may appear distorted.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.normalBias = 0;\n\n\t\t/**\n\t\t * Setting this to values greater than 1 will blur the edges of the shadow.\n\t\t * High values will cause unwanted banding effects in the shadows - a greater\n\t\t * map size will allow for a higher value to be used here before these effects\n\t\t * become visible.\n\t\t *\n\t\t * The property has no effect when the shadow map type is `PCFSoftShadowMap` and\n\t\t * and it is recommended to increase softness by decreasing the shadow map size instead.\n\t\t *\n\t\t * The property has no effect when the shadow map type is `BasicShadowMap`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = 1;\n\n\t\t/**\n\t\t * The amount of samples to use when blurring a VSM shadow map.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 8\n\t\t */\n\t\tthis.blurSamples = 8;\n\n\t\t/**\n\t\t * Defines the width and height of the shadow map. Higher values give better quality\n\t\t * shadows at the cost of computation time. Values must be powers of two.\n\t\t *\n\t\t * @type {Vector2}\n\t\t * @default (512,512)\n\t\t */\n\t\tthis.mapSize = new Vector2( 512, 512 );\n\n\t\t/**\n\t\t * The depth map generated using the internal camera; a location beyond a\n\t\t * pixel's depth is in shadow. Computed internally during rendering.\n\t\t *\n\t\t * @type {?RenderTarget}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * The distribution map generated using the internal camera; an occlusion is\n\t\t * calculated based on the distribution of depths. Computed internally during\n\t\t * rendering.\n\t\t *\n\t\t * @type {?RenderTarget}\n\t\t * @default null\n\t\t */\n\t\tthis.mapPass = null;\n\n\t\t/**\n\t\t * Model to shadow camera space, to compute location and depth in shadow map.\n\t\t * This is computed internally during rendering.\n\t\t *\n\t\t * @type {Matrix4}\n\t\t */\n\t\tthis.matrix = new Matrix4();\n\n\t\t/**\n\t\t * Enables automatic updates of the light's shadow. If you do not require dynamic\n\t\t * lighting / shadows, you may set this to `false`.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.autoUpdate = true;\n\n\t\t/**\n\t\t * When set to `true`, shadow maps will be updated in the next `render` call.\n\t\t * If you have set {@link LightShadow#autoUpdate} to `false`, you will need to\n\t\t * set this property to `true` and then make a render call to update the light's shadow.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.needsUpdate = false;\n\n\t\tthis._frustum = new Frustum();\n\t\tthis._frameExtents = new Vector2( 1, 1 );\n\n\t\tthis._viewportCount = 1;\n\n\t\tthis._viewports = [\n\n\t\t\tnew Vector4( 0, 0, 1, 1 )\n\n\t\t];\n\n\t}\n\n\t/**\n\t * Used internally by the renderer to get the number of viewports that need\n\t * to be rendered for this shadow.\n\t *\n\t * @return {number} The viewport count.\n\t */\n\tgetViewportCount() {\n\n\t\treturn this._viewportCount;\n\n\t}\n\n\t/**\n\t * Gets the shadow cameras frustum. Used internally by the renderer to cull objects.\n\t *\n\t * @return {Frustum} The shadow camera frustum.\n\t */\n\tgetFrustum() {\n\n\t\treturn this._frustum;\n\n\t}\n\n\t/**\n\t * Update the matrices for the camera and shadow, used internally by the renderer.\n\t *\n\t * @param {Light} light - The light for which the shadow is being rendered.\n\t */\n\tupdateMatrices( light ) {\n\n\t\tconst shadowCamera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\t_lightPositionWorld$1.setFromMatrixPosition( light.matrixWorld );\n\t\tshadowCamera.position.copy( _lightPositionWorld$1 );\n\n\t\t_lookTarget$1.setFromMatrixPosition( light.target.matrixWorld );\n\t\tshadowCamera.lookAt( _lookTarget$1 );\n\t\tshadowCamera.updateMatrixWorld();\n\n\t\t_projScreenMatrix$1.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix$1 );\n\n\t\tshadowMatrix.set(\n\t\t\t0.5, 0.0, 0.0, 0.5,\n\t\t\t0.0, 0.5, 0.0, 0.5,\n\t\t\t0.0, 0.0, 0.5, 0.5,\n\t\t\t0.0, 0.0, 0.0, 1.0\n\t\t);\n\n\t\tshadowMatrix.multiply( _projScreenMatrix$1 );\n\n\t}\n\n\t/**\n\t * Returns a viewport definition for the given viewport index.\n\t *\n\t * @param {number} viewportIndex - The viewport index.\n\t * @return {Vector4} The viewport.\n\t */\n\tgetViewport( viewportIndex ) {\n\n\t\treturn this._viewports[ viewportIndex ];\n\n\t}\n\n\t/**\n\t * Returns the frame extends.\n\t *\n\t * @return {Vector2} The frame extends.\n\t */\n\tgetFrameExtents() {\n\n\t\treturn this._frameExtents;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tif ( this.map ) {\n\n\t\t\tthis.map.dispose();\n\n\t\t}\n\n\t\tif ( this.mapPass ) {\n\n\t\t\tthis.mapPass.dispose();\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Copies the values of the given light shadow instance to this instance.\n\t *\n\t * @param {LightShadow} source - The light shadow to copy.\n\t * @return {LightShadow} A reference to this light shadow instance.\n\t */\n\tcopy( source ) {\n\n\t\tthis.camera = source.camera.clone();\n\n\t\tthis.intensity = source.intensity;\n\n\t\tthis.bias = source.bias;\n\t\tthis.radius = source.radius;\n\n\t\tthis.mapSize.copy( source.mapSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new light shadow instance with copied values from this instance.\n\t *\n\t * @return {LightShadow} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Serializes the light shadow into JSON.\n\t *\n\t * @return {Object} A JSON object representing the serialized light shadow.\n\t * @see {@link ObjectLoader#parse}\n\t */\n\ttoJSON() {\n\n\t\tconst object = {};\n\n\t\tif ( this.intensity !== 1 ) object.intensity = this.intensity;\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\n\n\t\tobject.camera = this.camera.toJSON( false ).object;\n\t\tdelete object.camera.matrix;\n\n\t\treturn object;\n\n\t}\n\n}\n\n/**\n * Represents the shadow configuration of directional lights.\n *\n * @augments LightShadow\n */\nclass SpotLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new spot light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 50, 1, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpotLightShadow = true;\n\n\t\t/**\n\t\t * Used to focus the shadow camera. The camera's field of view is set as a\n\t\t * percentage of the spotlight's field-of-view. Range is `[0, 1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.focus = 1;\n\n\t}\n\n\tupdateMatrices( light ) {\n\n\t\tconst camera = this.camera;\n\n\t\tconst fov = RAD2DEG * 2 * light.angle * this.focus;\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\n\n\t\t\tcamera.fov = fov;\n\t\t\tcamera.aspect = aspect;\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\tsuper.updateMatrices( light );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.focus = source.focus;\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This light gets emitted from a single point in one direction, along a cone\n * that increases in size the further from the light it gets.\n *\n * This light can cast shadows - see the {@link SpotLightShadow} for details.\n *\n * ```js\n * // white spotlight shining from the side, modulated by a texture\n * const spotLight = new THREE.SpotLight( 0xffffff );\n * spotLight.position.set( 100, 1000, 100 );\n * spotLight.map = new THREE.TextureLoader().load( url );\n *\n * spotLight.castShadow = true;\n * spotLight.shadow.mapSize.width = 1024;\n * spotLight.shadow.mapSize.height = 1024;\n * spotLight.shadow.camera.near = 500;\n * spotLight.shadow.camera.far = 4000;\n * spotLight.shadow.camera.fov = 30;s\n * ```\n *\n * @augments Light\n */\nclass SpotLight extends Light {\n\n\t/**\n\t * Constructs a new spot light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).\n\t * @param {number} [distance=0] - Maximum range of the light. `0` means no limit.\n\t * @param {number} [angle=Math.PI/3] - Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.\n\t * @param {number} [penumbra=0] - Percent of the spotlight cone that is attenuated due to penumbra. Value range is `[0,1]`.\n\t * @param {number} [decay=2] - The amount the light dims along the distance of the light.\n\t */\n\tconstructor( color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSpotLight = true;\n\n\t\tthis.type = 'SpotLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The spot light points from its position to the\n\t\t * target's position.\n\t\t *\n\t\t * For the target's position to be changed to anything other\n\t\t * than the default, it must be added to the scene.\n\t\t *\n\t\t * It is also possible to set the target to be another 3D object\n\t\t * in the scene. The light will now track the target object.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.target = new Object3D();\n\n\t\t/**\n\t\t * Maximum range of the light. `0` means no limit.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.distance = distance;\n\n\t\t/**\n\t\t * Maximum angle of light dispersion from its direction whose upper bound is `Math.PI/2`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default Math.PI/3\n\t\t */\n\t\tthis.angle = angle;\n\n\t\t/**\n\t\t * Percent of the spotlight cone that is attenuated due to penumbra.\n\t\t * Value range is `[0,1]`.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.penumbra = penumbra;\n\n\t\t/**\n\t\t * The amount the light dims along the distance of the light. In context of\n\t\t * physically-correct rendering the default value should not be changed.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2\n\t\t */\n\t\tthis.decay = decay;\n\n\t\t/**\n\t\t * A texture used to modulate the color of the light. The spot light\n\t\t * color is mixed with the RGB value of this texture, with a ratio\n\t\t * corresponding to its alpha value. The cookie-like masking effect is\n\t\t * reproduced using pixel values (0, 0, 0, 1-cookie_value).\n\t\t *\n\t\t * *Warning*: This property is disabled if {@link Object3D#castShadow} is set to `false`.\n\t\t *\n\t\t * @type {?Texture}\n\t\t * @default null\n\t\t */\n\t\tthis.map = null;\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {SpotLightShadow}\n\t\t */\n\t\tthis.shadow = new SpotLightShadow();\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t *  Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// by convention for a spotlight, luminous power (lm) = π * luminous intensity (cd)\n\t\treturn this.intensity * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / Math.PI;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.angle = source.angle;\n\t\tthis.penumbra = source.penumbra;\n\t\tthis.decay = source.decay;\n\n\t\tthis.target = source.target.clone();\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _projScreenMatrix = /*@__PURE__*/ new Matrix4();\nconst _lightPositionWorld = /*@__PURE__*/ new Vector3();\nconst _lookTarget = /*@__PURE__*/ new Vector3();\n\n/**\n * Represents the shadow configuration of point lights.\n *\n * @augments LightShadow\n */\nclass PointLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new point light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new PerspectiveCamera( 90, 1, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointLightShadow = true;\n\n\t\tthis._frameExtents = new Vector2( 4, 2 );\n\n\t\tthis._viewportCount = 6;\n\n\t\tthis._viewports = [\n\t\t\t// These viewports map a cube-map onto a 2D texture with the\n\t\t\t// following orientation:\n\t\t\t//\n\t\t\t//  xzXZ\n\t\t\t//   y Y\n\t\t\t//\n\t\t\t// X - Positive x direction\n\t\t\t// x - Negative x direction\n\t\t\t// Y - Positive y direction\n\t\t\t// y - Negative y direction\n\t\t\t// Z - Positive z direction\n\t\t\t// z - Negative z direction\n\n\t\t\t// positive X\n\t\t\tnew Vector4( 2, 1, 1, 1 ),\n\t\t\t// negative X\n\t\t\tnew Vector4( 0, 1, 1, 1 ),\n\t\t\t// positive Z\n\t\t\tnew Vector4( 3, 1, 1, 1 ),\n\t\t\t// negative Z\n\t\t\tnew Vector4( 1, 1, 1, 1 ),\n\t\t\t// positive Y\n\t\t\tnew Vector4( 3, 0, 1, 1 ),\n\t\t\t// negative Y\n\t\t\tnew Vector4( 1, 0, 1, 1 )\n\t\t];\n\n\t\tthis._cubeDirections = [\n\t\t\tnew Vector3( 1, 0, 0 ), new Vector3( -1, 0, 0 ), new Vector3( 0, 0, 1 ),\n\t\t\tnew Vector3( 0, 0, -1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, -1, 0 )\n\t\t];\n\n\t\tthis._cubeUps = [\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\n\t\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, -1 )\n\t\t];\n\n\t}\n\n\t/**\n\t * Update the matrices for the camera and shadow, used internally by the renderer.\n\t *\n\t * @param {Light} light - The light for which the shadow is being rendered.\n\t * @param {number} [viewportIndex=0] - The viewport index.\n\t */\n\tupdateMatrices( light, viewportIndex = 0 ) {\n\n\t\tconst camera = this.camera;\n\t\tconst shadowMatrix = this.matrix;\n\n\t\tconst far = light.distance || camera.far;\n\n\t\tif ( far !== camera.far ) {\n\n\t\t\tcamera.far = far;\n\t\t\tcamera.updateProjectionMatrix();\n\n\t\t}\n\n\t\t_lightPositionWorld.setFromMatrixPosition( light.matrixWorld );\n\t\tcamera.position.copy( _lightPositionWorld );\n\n\t\t_lookTarget.copy( camera.position );\n\t\t_lookTarget.add( this._cubeDirections[ viewportIndex ] );\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\n\t\tcamera.lookAt( _lookTarget );\n\t\tcamera.updateMatrixWorld();\n\n\t\tshadowMatrix.makeTranslation( - _lightPositionWorld.x, - _lightPositionWorld.y, - _lightPositionWorld.z );\n\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\tthis._frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t}\n\n}\n\n/**\n * A light that gets emitted from a single point in all directions. A common\n * use case for this is to replicate the light emitted from a bare\n * lightbulb.\n *\n * This light can cast shadows - see the {@link PointLightShadow} for details.\n *\n * ```js\n * const light = new THREE.PointLight( 0xff0000, 1, 100 );\n * light.position.set( 50, 50, 50 );\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass PointLight extends Light {\n\n\t/**\n\t * Constructs a new point light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).\n\t * @param {number} [distance=0] - Maximum range of the light. `0` means no limit.\n\t * @param {number} [decay=2] - The amount the light dims along the distance of the light.\n\t */\n\tconstructor( color, intensity, distance = 0, decay = 2 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isPointLight = true;\n\n\t\tthis.type = 'PointLight';\n\n\t\t/**\n\t\t * When distance is zero, light will attenuate according to inverse-square\n\t\t * law to infinite distance. When distance is non-zero, light will attenuate\n\t\t * according to inverse-square law until near the distance cutoff, where it\n\t\t * will then attenuate quickly and smoothly to 0. Inherently, cutoffs are not\n\t\t * physically correct.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.distance = distance;\n\n\t\t/**\n\t\t * The amount the light dims along the distance of the light. In context of\n\t\t * physically-correct rendering the default value should not be changed.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2\n\t\t */\n\t\tthis.decay = decay;\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {PointLightShadow}\n\t\t */\n\t\tthis.shadow = new PointLightShadow();\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in candela)\n\t\t// for an isotropic light source, luminous power (lm) = 4 π luminous intensity (cd)\n\t\treturn this.intensity * 4 * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in candela) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( 4 * Math.PI );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.distance = source.distance;\n\t\tthis.decay = source.decay;\n\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.\n *\n * In this projection mode, an object's size in the rendered image stays\n * constant regardless of its distance from the camera. This can be useful\n * for rendering 2D scenes and UI elements, amongst other things.\n *\n * ```js\n * const camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );\n * scene.add( camera );\n * ```\n *\n * @augments Camera\n */\nclass OrthographicCamera extends Camera {\n\n\t/**\n\t * Constructs a new orthographic camera.\n\t *\n\t * @param {number} [left=-1] - The left plane of the camera's frustum.\n\t * @param {number} [right=1] - The right plane of the camera's frustum.\n\t * @param {number} [top=1] - The top plane of the camera's frustum.\n\t * @param {number} [bottom=-1] - The bottom plane of the camera's frustum.\n\t * @param {number} [near=0.1] - The camera's near plane.\n\t * @param {number} [far=2000] - The camera's far plane.\n\t */\n\tconstructor( left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2000 ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isOrthographicCamera = true;\n\n\t\tthis.type = 'OrthographicCamera';\n\n\t\t/**\n\t\t * The zoom factor of the camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.zoom = 1;\n\n\t\t/**\n\t\t * Represents the frustum window specification. This property should not be edited\n\t\t * directly but via {@link PerspectiveCamera#setViewOffset} and {@link PerspectiveCamera#clearViewOffset}.\n\t\t *\n\t\t * @type {?Object}\n\t\t * @default null\n\t\t */\n\t\tthis.view = null;\n\n\t\t/**\n\t\t * The left plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.left = left;\n\n\t\t/**\n\t\t * The right plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.right = right;\n\n\t\t/**\n\t\t * The top plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.top = top;\n\n\t\t/**\n\t\t * The bottom plane of the camera's frustum.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.bottom = bottom;\n\n\t\t/**\n\t\t * The camera's near plane. The valid range is greater than `0`\n\t\t * and less than the current value of {@link OrthographicCamera#far}.\n\t\t *\n\t\t * Note that, unlike for the {@link PerspectiveCamera}, `0` is a\n\t\t * valid value for an orthographic camera's near plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.1\n\t\t */\n\t\tthis.near = near;\n\n\t\t/**\n\t\t * The camera's far plane. Must be greater than the\n\t\t * current value of {@link OrthographicCamera#near}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 2000\n\t\t */\n\t\tthis.far = far;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.left = source.left;\n\t\tthis.right = source.right;\n\t\tthis.top = source.top;\n\t\tthis.bottom = source.bottom;\n\t\tthis.near = source.near;\n\t\tthis.far = source.far;\n\n\t\tthis.zoom = source.zoom;\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\n\t * multi-monitor/multi-machine setups.\n\t *\n\t * @param {number} fullWidth - The full width of multiview setup.\n\t * @param {number} fullHeight - The full height of multiview setup.\n\t * @param {number} x - The horizontal offset of the subcamera.\n\t * @param {number} y - The vertical offset of the subcamera.\n\t * @param {number} width - The width of subcamera.\n\t * @param {number} height - The height of subcamera.\n\t * @see {@link PerspectiveCamera#setViewOffset}\n\t */\n\tsetViewOffset( fullWidth, fullHeight, x, y, width, height ) {\n\n\t\tif ( this.view === null ) {\n\n\t\t\tthis.view = {\n\t\t\t\tenabled: true,\n\t\t\t\tfullWidth: 1,\n\t\t\t\tfullHeight: 1,\n\t\t\t\toffsetX: 0,\n\t\t\t\toffsetY: 0,\n\t\t\t\twidth: 1,\n\t\t\t\theight: 1\n\t\t\t};\n\n\t\t}\n\n\t\tthis.view.enabled = true;\n\t\tthis.view.fullWidth = fullWidth;\n\t\tthis.view.fullHeight = fullHeight;\n\t\tthis.view.offsetX = x;\n\t\tthis.view.offsetY = y;\n\t\tthis.view.width = width;\n\t\tthis.view.height = height;\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Removes the view offset from the projection matrix.\n\t */\n\tclearViewOffset() {\n\n\t\tif ( this.view !== null ) {\n\n\t\t\tthis.view.enabled = false;\n\n\t\t}\n\n\t\tthis.updateProjectionMatrix();\n\n\t}\n\n\t/**\n\t * Updates the camera's projection matrix. Must be called after any change of\n\t * camera properties.\n\t */\n\tupdateProjectionMatrix() {\n\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\n\t\tconst cx = ( this.right + this.left ) / 2;\n\t\tconst cy = ( this.top + this.bottom ) / 2;\n\n\t\tlet left = cx - dx;\n\t\tlet right = cx + dx;\n\t\tlet top = cy + dy;\n\t\tlet bottom = cy - dy;\n\n\t\tif ( this.view !== null && this.view.enabled ) {\n\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\n\n\t\t\tleft += scaleW * this.view.offsetX;\n\t\t\tright = left + scaleW * this.view.width;\n\t\t\ttop -= scaleH * this.view.offsetY;\n\t\t\tbottom = top - scaleH * this.view.height;\n\n\t\t}\n\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far, this.coordinateSystem );\n\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.zoom = this.zoom;\n\t\tdata.object.left = this.left;\n\t\tdata.object.right = this.right;\n\t\tdata.object.top = this.top;\n\t\tdata.object.bottom = this.bottom;\n\t\tdata.object.near = this.near;\n\t\tdata.object.far = this.far;\n\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents the shadow configuration of directional lights.\n *\n * @augments LightShadow\n */\nclass DirectionalLightShadow extends LightShadow {\n\n\t/**\n\t * Constructs a new directional light shadow.\n\t */\n\tconstructor() {\n\n\t\tsuper( new OrthographicCamera( -5, 5, 5, -5, 0.5, 500 ) );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDirectionalLightShadow = true;\n\n\t}\n\n}\n\n/**\n * A light that gets emitted in a specific direction. This light will behave\n * as though it is infinitely far away and the rays produced from it are all\n * parallel. The common use case for this is to simulate daylight; the sun is\n * far enough away that its position can be considered to be infinite, and\n * all light rays coming from it are parallel.\n *\n * A common point of confusion for directional lights is that setting the\n * rotation has no effect. This is because three.js's DirectionalLight is the\n * equivalent to what is often called a 'Target Direct Light' in other\n * applications.\n *\n * This means that its direction is calculated as pointing from the light's\n * {@link Object3D#position} to the {@link DirectionalLight#target} position\n * (as opposed to a 'Free Direct Light' that just has a rotation\n * component).\n *\n * This light can cast shadows - see the {@link DirectionalLightShadow} for details.\n *\n * ```js\n * // White directional light at half intensity shining from the top.\n * const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );\n * scene.add( directionalLight );\n * ```\n *\n * @augments Light\n */\nclass DirectionalLight extends Light {\n\n\t/**\n\t * Constructs a new directional light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isDirectionalLight = true;\n\n\t\tthis.type = 'DirectionalLight';\n\n\t\tthis.position.copy( Object3D.DEFAULT_UP );\n\t\tthis.updateMatrix();\n\n\t\t/**\n\t\t * The directional light points from its position to the\n\t\t * target's position.\n\t\t *\n\t\t * For the target's position to be changed to anything other\n\t\t * than the default, it must be added to the scene.\n\t\t *\n\t\t * It is also possible to set the target to be another 3D object\n\t\t * in the scene. The light will now track the target object.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.target = new Object3D();\n\n\t\t/**\n\t\t * This property holds the light's shadow configuration.\n\t\t *\n\t\t * @type {DirectionalLightShadow}\n\t\t */\n\t\tthis.shadow = new DirectionalLightShadow();\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shadow.dispose();\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.target = source.target.clone();\n\t\tthis.shadow = source.shadow.clone();\n\n\t\treturn this;\n\n\t}\n\n}\n\n/**\n * This light globally illuminates all objects in the scene equally.\n *\n * It cannot be used to cast shadows as it does not have a direction.\n *\n * ```js\n * const light = new THREE.AmbientLight( 0x404040 ); // soft white light\n * scene.add( light );\n * ```\n *\n * @augments Light\n */\nclass AmbientLight extends Light {\n\n\t/**\n\t * Constructs a new ambient light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( color, intensity ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isAmbientLight = true;\n\n\t\tthis.type = 'AmbientLight';\n\n\t}\n\n}\n\n/**\n * This class emits light uniformly across the face a rectangular plane.\n * This light type can be used to simulate light sources such as bright\n * windows or strip lighting.\n *\n * Important Notes:\n *\n * - There is no shadow support.\n * - Only PBR materials are supported.\n * - You have to include `RectAreaLightUniformsLib` (`WebGLRenderer`) or `RectAreaLightTexturesLib` (`WebGPURenderer`)\n * into your app and init the uniforms/textures.\n *\n * ```js\n * RectAreaLightUniformsLib.init(); // only relevant for WebGLRenderer\n * THREE.RectAreaLightNode.setLTC( RectAreaLightTexturesLib.init() ); //  only relevant for WebGPURenderer\n *\n * const intensity = 1; const width = 10; const height = 10;\n * const rectLight = new THREE.RectAreaLight( 0xffffff, intensity, width, height );\n * rectLight.position.set( 5, 5, 0 );\n * rectLight.lookAt( 0, 0, 0 );\n * scene.add( rectLight )\n * ```\n *\n * @augments Light\n */\nclass RectAreaLight extends Light {\n\n\t/**\n\t * Constructs a new area light.\n\t *\n\t * @param {(number|Color|string)} [color=0xffffff] - The light's color.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t * @param {number} [width=10] - The width of the light.\n\t * @param {number} [height=10] - The height of the light.\n\t */\n\tconstructor( color, intensity, width = 10, height = 10 ) {\n\n\t\tsuper( color, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isRectAreaLight = true;\n\n\t\tthis.type = 'RectAreaLight';\n\n\t\t/**\n\t\t * The width of the light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.width = width;\n\n\t\t/**\n\t\t * The height of the light.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 10\n\t\t */\n\t\tthis.height = height;\n\n\t}\n\n\t/**\n\t * The light's power. Power is the luminous power of the light measured in lumens (lm).\n\t * Changing the power will also change the light's intensity.\n\t *\n\t * @type {number}\n\t */\n\tget power() {\n\n\t\t// compute the light's luminous power (in lumens) from its intensity (in nits)\n\t\treturn this.intensity * this.width * this.height * Math.PI;\n\n\t}\n\n\tset power( power ) {\n\n\t\t// set the light's intensity (in nits) from the desired luminous power (in lumens)\n\t\tthis.intensity = power / ( this.width * this.height * Math.PI );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.width = source.width;\n\t\tthis.height = source.height;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.width = this.width;\n\t\tdata.object.height = this.height;\n\n\t\treturn data;\n\n\t}\n\n}\n\n/**\n * Represents a third-order spherical harmonics (SH). Light probes use this class\n * to encode lighting information.\n *\n * - Primary reference: {@link https://graphics.stanford.edu/papers/envmap/envmap.pdf}\n * - Secondary reference: {@link https://www.ppsloan.org/publications/StupidSH36.pdf}\n */\nclass SphericalHarmonics3 {\n\n\t/**\n\t * Constructs a new spherical harmonics.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSphericalHarmonics3 = true;\n\n\t\t/**\n\t\t * An array holding the (9) SH coefficients.\n\t\t *\n\t\t * @type {Array<Vector3>}\n\t\t */\n\t\tthis.coefficients = [];\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients.push( new Vector3() );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the given SH coefficients to this instance by copying\n\t * the values.\n\t *\n\t * @param {Array<Vector3>} coefficients - The SH coefficients.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tset( coefficients ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets all SH coefficients to `0`.\n\t *\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tzero() {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the radiance in the direction of the given normal.\n\t *\n\t * @param {Vector3} normal - The normal vector (assumed to be unit length)\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The radiance.\n\t */\n\tgetAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Returns the irradiance (radiance convolved with cosine lobe) in the\n\t * direction of the given normal.\n\t *\n\t * @param {Vector3} normal - The normal vector (assumed to be unit length)\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The irradiance.\n\t */\n\tgetIrradianceAt( normal, target ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\tconst coeff = this.coefficients;\n\n\t\t// band 0\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\n\n\t\t// band 1\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\n\n\t\t// band 2\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\n\n\t\treturn target;\n\n\t}\n\n\t/**\n\t * Adds the given SH to this instance.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to add.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tadd( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * A convenience method for performing {@link SphericalHarmonics3#add} and\n\t * {@link SphericalHarmonics3#scale} at once.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to add.\n\t * @param {number} s - The scale factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\taddScaledSH( sh, s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Scales this SH by the given scale factor.\n\t *\n\t * @param {number} s - The scale factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tscale( s ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Linear interpolates between the given SH and this instance by the given\n\t * alpha factor.\n\t *\n\t * @param {SphericalHarmonics3} sh - The SH to interpolate with.\n\t * @param {number} alpha - The alpha factor.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tlerp( sh, alpha ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this spherical harmonics is equal with the given one.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics to test for equality.\n\t * @return {boolean} Whether this spherical harmonics is equal with the given one.\n\t */\n\tequals( sh ) {\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\t/**\n\t * Copies the values of the given spherical harmonics to this instance.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics to copy.\n\t * @return {SphericalHarmonics3} A reference to this spherical harmonics.\n\t */\n\tcopy( sh ) {\n\n\t\treturn this.set( sh.coefficients );\n\n\t}\n\n\t/**\n\t * Returns a new spherical harmonics with copied values from this instance.\n\t *\n\t * @return {SphericalHarmonics3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Sets the SH coefficients of this instance from the given array.\n\t *\n\t * @param {Array<number>} array - An array holding the SH coefficients.\n\t * @param {number} [offset=0] - The array offset where to start copying.\n\t * @return {SphericalHarmonics3} A clone of this instance.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns an array with the SH coefficients, or copies them into the provided\n\t * array. The coefficients are represented as numbers.\n\t *\n\t * @param {Array<number>} [array=[]] - The target array.\n\t * @param {number} [offset=0] - The array offset where to start copying.\n\t * @return {Array<number>} An array with flat SH coefficients.\n\t */\n\ttoArray( array = [], offset = 0 ) {\n\n\t\tconst coefficients = this.coefficients;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) {\n\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\n\n\t\t}\n\n\t\treturn array;\n\n\t}\n\n\t/**\n\t * Computes the SH basis for the given normal vector.\n\t *\n\t * @param {Vector3} normal - The normal.\n\t * @param {Array<number>} shBasis - The target array holding the SH basis.\n\t */\n\tstatic getBasisAt( normal, shBasis ) {\n\n\t\t// normal is assumed to be unit length\n\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\n\n\t\t// band 0\n\t\tshBasis[ 0 ] = 0.282095;\n\n\t\t// band 1\n\t\tshBasis[ 1 ] = 0.488603 * y;\n\t\tshBasis[ 2 ] = 0.488603 * z;\n\t\tshBasis[ 3 ] = 0.488603 * x;\n\n\t\t// band 2\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\n\n\t}\n\n}\n\n/**\n * Light probes are an alternative way of adding light to a 3D scene. Unlike\n * classical light sources (e.g. directional, point or spot lights), light\n * probes do not emit light. Instead they store information about light\n * passing through 3D space. During rendering, the light that hits a 3D\n * object is approximated by using the data from the light probe.\n *\n * Light probes are usually created from (radiance) environment maps. The\n * class {@link LightProbeGenerator} can be used to create light probes from\n * cube textures or render targets. However, light estimation data could also\n * be provided in other forms e.g. by WebXR. This enables the rendering of\n * augmented reality content that reacts to real world lighting.\n *\n * The current probe implementation in three.js supports so-called diffuse\n * light probes. This type of light probe is functionally equivalent to an\n * irradiance environment map.\n *\n * @augments Light\n */\nclass LightProbe extends Light {\n\n\t/**\n\t * Constructs a new light probe.\n\t *\n\t * @param {SphericalHarmonics3} sh - The spherical harmonics which represents encoded lighting information.\n\t * @param {number} [intensity=1] - The light's strength/intensity.\n\t */\n\tconstructor( sh = new SphericalHarmonics3(), intensity = 1 ) {\n\n\t\tsuper( undefined, intensity );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isLightProbe = true;\n\n\t\t/**\n\t\t * A light probe uses spherical harmonics to encode lighting information.\n\t\t *\n\t\t * @type {SphericalHarmonics3}\n\t\t */\n\t\tthis.sh = sh;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.sh.copy( source.sh );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Deserializes the light prove from the given JSON.\n\t *\n\t * @param {Object} json - The JSON holding the serialized light probe.\n\t * @return {LightProbe} A reference to this light probe.\n\t */\n\tfromJSON( json ) {\n\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\n\t\tthis.sh.fromArray( json.sh );\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON( meta ) {\n\n\t\tconst data = super.toJSON( meta );\n\n\t\tdata.object.sh = this.sh.toArray();\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass MaterialLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\t\tthis.textures = {};\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst textures = this.textures;\n\n\t\tfunction getTexture( name ) {\n\n\t\t\tif ( textures[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\n\n\t\t\t}\n\n\t\t\treturn textures[ name ];\n\n\t\t}\n\n\t\tconst material = this.createMaterialFromType( json.type );\n\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\n\t\tif ( json.name !== undefined ) material.name = json.name;\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\n\t\tif ( json.sheen !== undefined ) material.sheen = json.sheen;\n\t\tif ( json.sheenColor !== undefined ) material.sheenColor = new Color().setHex( json.sheenColor );\n\t\tif ( json.sheenRoughness !== undefined ) material.sheenRoughness = json.sheenRoughness;\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\n\t\tif ( json.specularIntensity !== undefined ) material.specularIntensity = json.specularIntensity;\n\t\tif ( json.specularColor !== undefined && material.specularColor !== undefined ) material.specularColor.setHex( json.specularColor );\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\n\t\tif ( json.dispersion !== undefined ) material.dispersion = json.dispersion;\n\t\tif ( json.iridescence !== undefined ) material.iridescence = json.iridescence;\n\t\tif ( json.iridescenceIOR !== undefined ) material.iridescenceIOR = json.iridescenceIOR;\n\t\tif ( json.iridescenceThicknessRange !== undefined ) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\n\t\tif ( json.thickness !== undefined ) material.thickness = json.thickness;\n\t\tif ( json.attenuationDistance !== undefined ) material.attenuationDistance = json.attenuationDistance;\n\t\tif ( json.attenuationColor !== undefined && material.attenuationColor !== undefined ) material.attenuationColor.setHex( json.attenuationColor );\n\t\tif ( json.anisotropy !== undefined ) material.anisotropy = json.anisotropy;\n\t\tif ( json.anisotropyRotation !== undefined ) material.anisotropyRotation = json.anisotropyRotation;\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\n\t\tif ( json.side !== undefined ) material.side = json.side;\n\t\tif ( json.shadowSide !== undefined ) material.shadowSide = json.shadowSide;\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\n\t\tif ( json.alphaHash !== undefined ) material.alphaHash = json.alphaHash;\n\t\tif ( json.depthFunc !== undefined ) material.depthFunc = json.depthFunc;\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\n\t\tif ( json.blendSrc !== undefined ) material.blendSrc = json.blendSrc;\n\t\tif ( json.blendDst !== undefined ) material.blendDst = json.blendDst;\n\t\tif ( json.blendEquation !== undefined ) material.blendEquation = json.blendEquation;\n\t\tif ( json.blendSrcAlpha !== undefined ) material.blendSrcAlpha = json.blendSrcAlpha;\n\t\tif ( json.blendDstAlpha !== undefined ) material.blendDstAlpha = json.blendDstAlpha;\n\t\tif ( json.blendEquationAlpha !== undefined ) material.blendEquationAlpha = json.blendEquationAlpha;\n\t\tif ( json.blendColor !== undefined && material.blendColor !== undefined ) material.blendColor.setHex( json.blendColor );\n\t\tif ( json.blendAlpha !== undefined ) material.blendAlpha = json.blendAlpha;\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\n\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\n\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\n\n\t\tif ( json.linewidth !== undefined ) material.linewidth = json.linewidth;\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\n\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\n\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\n\n\t\tif ( json.alphaToCoverage !== undefined ) material.alphaToCoverage = json.alphaToCoverage;\n\t\tif ( json.premultipliedAlpha !== undefined ) material.premultipliedAlpha = json.premultipliedAlpha;\n\t\tif ( json.forceSinglePass !== undefined ) material.forceSinglePass = json.forceSinglePass;\n\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\n\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\n\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\n\n\t\tif ( json.vertexColors !== undefined ) {\n\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\n\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\n\n\t\t\t} else {\n\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Shader Material\n\n\t\tif ( json.uniforms !== undefined ) {\n\n\t\t\tfor ( const name in json.uniforms ) {\n\n\t\t\t\tconst uniform = json.uniforms[ name ];\n\n\t\t\t\tmaterial.uniforms[ name ] = {};\n\n\t\t\t\tswitch ( uniform.type ) {\n\n\t\t\t\t\tcase 't':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'c':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v2':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'v4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm3':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'm4':\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\n\t\tif ( json.glslVersion !== undefined ) material.glslVersion = json.glslVersion;\n\n\t\tif ( json.extensions !== undefined ) {\n\n\t\t\tfor ( const key in json.extensions ) {\n\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json.lights !== undefined ) material.lights = json.lights;\n\t\tif ( json.clipping !== undefined ) material.clipping = json.clipping;\n\n\t\t// for PointsMaterial\n\n\t\tif ( json.size !== undefined ) material.size = json.size;\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\n\n\t\t// maps\n\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\n\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\n\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\n\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\n\t\tif ( json.normalScale !== undefined ) {\n\n\t\t\tlet normalScale = json.normalScale;\n\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\n\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\n\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\n\n\t\t\t}\n\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\n\n\t\t}\n\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\n\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\n\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\n\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\n\t\tif ( json.specularIntensityMap !== undefined ) material.specularIntensityMap = getTexture( json.specularIntensityMap );\n\t\tif ( json.specularColorMap !== undefined ) material.specularColorMap = getTexture( json.specularColorMap );\n\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\n\t\tif ( json.envMapRotation !== undefined ) material.envMapRotation.fromArray( json.envMapRotation );\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\n\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\n\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\n\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\n\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\n\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\n\n\t\tif ( json.iridescenceMap !== undefined ) material.iridescenceMap = getTexture( json.iridescenceMap );\n\t\tif ( json.iridescenceThicknessMap !== undefined ) material.iridescenceThicknessMap = getTexture( json.iridescenceThicknessMap );\n\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\n\t\tif ( json.thicknessMap !== undefined ) material.thicknessMap = getTexture( json.thicknessMap );\n\n\t\tif ( json.anisotropyMap !== undefined ) material.anisotropyMap = getTexture( json.anisotropyMap );\n\n\t\tif ( json.sheenColorMap !== undefined ) material.sheenColorMap = getTexture( json.sheenColorMap );\n\t\tif ( json.sheenRoughnessMap !== undefined ) material.sheenRoughnessMap = getTexture( json.sheenRoughnessMap );\n\n\t\treturn material;\n\n\t}\n\n\tsetTextures( value ) {\n\n\t\tthis.textures = value;\n\t\treturn this;\n\n\t}\n\n\tcreateMaterialFromType( type ) {\n\n\t\treturn MaterialLoader.createMaterialFromType( type );\n\n\t}\n\n\tstatic createMaterialFromType( type ) {\n\n\t\tconst materialLib = {\n\t\t\tShadowMaterial,\n\t\t\tSpriteMaterial,\n\t\t\tRawShaderMaterial,\n\t\t\tShaderMaterial,\n\t\t\tPointsMaterial,\n\t\t\tMeshPhysicalMaterial,\n\t\t\tMeshStandardMaterial,\n\t\t\tMeshPhongMaterial,\n\t\t\tMeshToonMaterial,\n\t\t\tMeshNormalMaterial,\n\t\t\tMeshLambertMaterial,\n\t\t\tMeshDepthMaterial,\n\t\t\tMeshDistanceMaterial,\n\t\t\tMeshBasicMaterial,\n\t\t\tMeshMatcapMaterial,\n\t\t\tLineDashedMaterial,\n\t\t\tLineBasicMaterial,\n\t\t\tMaterial\n\t\t};\n\n\t\treturn new materialLib[ type ]();\n\n\t}\n\n}\n\nclass LoaderUtils {\n\n\tstatic decodeText( array ) { // @deprecated, r165\n\n\t\tconsole.warn( 'THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead.' );\n\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\n\n\t\t\treturn new TextDecoder().decode( array );\n\n\t\t}\n\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\n\n\t\tlet s = '';\n\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\n\n\t\t\t// Implicitly assumes little-endian.\n\t\t\ts += String.fromCharCode( array[ i ] );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\t// merges multi-byte utf-8 characters.\n\n\t\t\treturn decodeURIComponent( escape( s ) );\n\n\t\t} catch ( e ) { // see #16358\n\n\t\t\treturn s;\n\n\t\t}\n\n\t}\n\n\tstatic extractUrlBase( url ) {\n\n\t\tconst index = url.lastIndexOf( '/' );\n\n\t\tif ( index === -1 ) return './';\n\n\t\treturn url.slice( 0, index + 1 );\n\n\t}\n\n\tstatic resolveURL( url, path ) {\n\n\t\t// Invalid URL\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\n\n\t\t// Host Relative URL\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\n\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\n\n\t\t}\n\n\t\t// Absolute URL http://,https://,//\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\n\n\t\t// Data URI\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\n\n\t\t// Blob URL\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\n\n\t\t// Relative URL\n\t\treturn path + url;\n\n\t}\n\n}\n\nclass InstancedBufferGeometry extends BufferGeometry {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isInstancedBufferGeometry = true;\n\n\t\tthis.type = 'InstancedBufferGeometry';\n\t\tthis.instanceCount = Infinity;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.instanceCount = source.instanceCount;\n\n\t\treturn this;\n\n\t}\n\n\ttoJSON() {\n\n\t\tconst data = super.toJSON();\n\n\t\tdata.instanceCount = this.instanceCount;\n\n\t\tdata.isInstancedBufferGeometry = true;\n\n\t\treturn data;\n\n\t}\n\n}\n\nclass BufferGeometryLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( scope.manager );\n\t\tloader.setPath( scope.path );\n\t\tloader.setRequestHeader( scope.requestHeader );\n\t\tloader.setWithCredentials( scope.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\ttry {\n\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\tif ( onError ) {\n\n\t\t\t\t\tonError( e );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconsole.error( e );\n\n\t\t\t\t}\n\n\t\t\t\tscope.manager.itemError( url );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tparse( json ) {\n\n\t\tconst interleavedBufferMap = {};\n\t\tconst arrayBufferMap = {};\n\n\t\tfunction getInterleavedBuffer( json, uuid ) {\n\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\n\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\n\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\n\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\n\t\t\tib.uuid = interleavedBuffer.uuid;\n\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\n\n\t\t\treturn ib;\n\n\t\t}\n\n\t\tfunction getArrayBuffer( json, uuid ) {\n\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\n\n\t\t\tconst arrayBuffers = json.arrayBuffers;\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\n\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\n\n\t\t\tarrayBufferMap[ uuid ] = ab;\n\n\t\t\treturn ab;\n\n\t\t}\n\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n\n\t\tconst index = json.data.index;\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\n\n\t\t}\n\n\t\tconst attributes = json.data.attributes;\n\n\t\tfor ( const key in attributes ) {\n\n\t\t\tconst attribute = attributes[ key ];\n\t\t\tlet bufferAttribute;\n\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t} else {\n\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t}\n\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\tif ( attribute.usage !== undefined ) bufferAttribute.setUsage( attribute.usage );\n\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\n\n\t\t}\n\n\t\tconst morphAttributes = json.data.morphAttributes;\n\n\t\tif ( morphAttributes ) {\n\n\t\t\tfor ( const key in morphAttributes ) {\n\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attribute = attributeArray[ i ];\n\t\t\t\t\tlet bufferAttribute;\n\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\n\t\t\t\t\tarray.push( bufferAttribute );\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\n\n\t\tif ( morphTargetsRelative ) {\n\n\t\t\tgeometry.morphTargetsRelative = true;\n\n\t\t}\n\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n\n\t\tif ( groups !== undefined ) {\n\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\n\n\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst boundingSphere = json.data.boundingSphere;\n\n\t\tif ( boundingSphere !== undefined ) {\n\n\t\t\tconst center = new Vector3();\n\n\t\t\tif ( boundingSphere.center !== undefined ) {\n\n\t\t\t\tcenter.fromArray( boundingSphere.center );\n\n\t\t\t}\n\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\n\n\t\t}\n\n\t\tif ( json.name ) geometry.name = json.name;\n\t\tif ( json.userData ) geometry.userData = json.userData;\n\n\t\treturn geometry;\n\n\t}\n\n}\n\nclass ObjectLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( text ) {\n\n\t\t\tlet json = null;\n\n\t\t\ttry {\n\n\t\t\t\tjson = JSON.parse( text );\n\n\t\t\t} catch ( error ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( error );\n\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst metadata = json.metadata;\n\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\t\tif ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\\'t load ' + url ) );\n\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tscope.parse( json, onLoad );\n\n\t\t}, onProgress, onError );\n\n\t}\n\n\tasync loadAsync( url, onProgress ) {\n\n\t\tconst scope = this;\n\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\n\t\tthis.resourcePath = this.resourcePath || path;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\n\t\tconst text = await loader.loadAsync( url, onProgress );\n\n\t\tconst json = JSON.parse( text );\n\n\t\tconst metadata = json.metadata;\n\n\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\n\n\t\t\tthrow new Error( 'THREE.ObjectLoader: Can\\'t load ' + url );\n\n\t\t}\n\n\t\treturn await scope.parseAsync( json );\n\n\t}\n\n\tparse( json, onLoad ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = this.parseImages( json.images, function () {\n\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\n\n\t\t} );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\t//\n\n\t\tif ( onLoad !== undefined ) {\n\n\t\t\tlet hasImages = false;\n\n\t\t\tfor ( const uuid in images ) {\n\n\t\t\t\tif ( images[ uuid ].data instanceof HTMLImageElement ) {\n\n\t\t\t\t\thasImages = true;\n\t\t\t\t\tbreak;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( hasImages === false ) onLoad( object );\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tasync parseAsync( json ) {\n\n\t\tconst animations = this.parseAnimations( json.animations );\n\t\tconst shapes = this.parseShapes( json.shapes );\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\n\n\t\tconst images = await this.parseImagesAsync( json.images );\n\n\t\tconst textures = this.parseTextures( json.textures, images );\n\t\tconst materials = this.parseMaterials( json.materials, textures );\n\n\t\tconst object = this.parseObject( json.object, geometries, materials, textures, animations );\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\n\n\t\tthis.bindSkeletons( object, skeletons );\n\t\tthis.bindLightTargets( object );\n\n\t\treturn object;\n\n\t}\n\n\tparseShapes( json ) {\n\n\t\tconst shapes = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\n\n\t\t\t\tshapes[ shape.uuid ] = shape;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn shapes;\n\n\t}\n\n\tparseSkeletons( json, object ) {\n\n\t\tconst skeletons = {};\n\t\tconst bones = {};\n\n\t\t// generate bone lookup table\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\n\n\t\t} );\n\n\t\t// create skeletons\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\n\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn skeletons;\n\n\t}\n\n\tparseGeometries( json, shapes ) {\n\n\t\tconst geometries = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tlet geometry;\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tswitch ( data.type ) {\n\n\t\t\t\t\tcase 'BufferGeometry':\n\t\t\t\t\tcase 'InstancedBufferGeometry':\n\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tdefault:\n\n\t\t\t\t\t\tif ( data.type in Geometries ) {\n\n\t\t\t\t\t\t\tgeometry = Geometries[ data.type ].fromJSON( data, shapes );\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tconsole.warn( `THREE.ObjectLoader: Unsupported geometry type \"${ data.type }\"` );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tgeometry.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\n\t\t\t\tif ( data.userData !== undefined ) geometry.userData = data.userData;\n\n\t\t\t\tgeometries[ data.uuid ] = geometry;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn geometries;\n\n\t}\n\n\tparseMaterials( json, textures ) {\n\n\t\tconst cache = {}; // MultiMaterial\n\t\tconst materials = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tconst loader = new MaterialLoader();\n\t\t\tloader.setTextures( textures );\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\n\n\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn materials;\n\n\t}\n\n\tparseAnimations( json ) {\n\n\t\tconst animations = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tconst clip = AnimationClip.parse( data );\n\n\t\t\t\tanimations[ clip.uuid ] = clip;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn animations;\n\n\t}\n\n\tparseImages( json, onLoad ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tfunction loadImage( url ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\treturn loader.load( url, function () {\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, undefined, function () {\n\n\t\t\t\tscope.manager.itemError( url );\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t} );\n\n\t\t}\n\n\t\tfunction deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn loadImage( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tconst manager = new LoadingManager( onLoad );\n\n\t\t\tloader = new ImageLoader( manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tasync parseImagesAsync( json ) {\n\n\t\tconst scope = this;\n\t\tconst images = {};\n\n\t\tlet loader;\n\n\t\tasync function deserializeImage( image ) {\n\n\t\t\tif ( typeof image === 'string' ) {\n\n\t\t\t\tconst url = image;\n\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\n\n\t\t\t\treturn await loader.loadAsync( path );\n\n\t\t\t} else {\n\n\t\t\t\tif ( image.data ) {\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\n\t\t\t\t\t\twidth: image.width,\n\t\t\t\t\t\theight: image.height\n\t\t\t\t\t};\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( json !== undefined && json.length > 0 ) {\n\n\t\t\tloader = new ImageLoader( this.manager );\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\n\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\n\n\t\t\t\tconst image = json[ i ];\n\t\t\t\tconst url = image.url;\n\n\t\t\t\tif ( Array.isArray( url ) ) {\n\n\t\t\t\t\t// load array of images e.g CubeTexture\n\n\t\t\t\t\tconst imageArray = [];\n\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\n\n\t\t\t\t\t\tconst currentUrl = url[ j ];\n\n\t\t\t\t\t\tconst deserializedImage = await deserializeImage( currentUrl );\n\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\n\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\n\n\t\t\t\t\t\t\t\timageArray.push( deserializedImage );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\n\n\t\t\t\t\t\t\t\timageArray.push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\timages[ image.uuid ] = new Source( imageArray );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// load single image\n\n\t\t\t\t\tconst deserializedImage = await deserializeImage( image.url );\n\t\t\t\t\timages[ image.uuid ] = new Source( deserializedImage );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn images;\n\n\t}\n\n\tparseTextures( json, images ) {\n\n\t\tfunction parseConstant( value, type ) {\n\n\t\t\tif ( typeof value === 'number' ) return value;\n\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\n\n\t\t\treturn type[ value ];\n\n\t\t}\n\n\t\tconst textures = {};\n\n\t\tif ( json !== undefined ) {\n\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\n\n\t\t\t\tconst data = json[ i ];\n\n\t\t\t\tif ( data.image === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\n\n\t\t\t\t}\n\n\t\t\t\tif ( images[ data.image ] === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\n\n\t\t\t\t}\n\n\t\t\t\tconst source = images[ data.image ];\n\t\t\t\tconst image = source.data;\n\n\t\t\t\tlet texture;\n\n\t\t\t\tif ( Array.isArray( image ) ) {\n\n\t\t\t\t\ttexture = new CubeTexture();\n\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( image && image.data ) {\n\n\t\t\t\t\t\ttexture = new DataTexture();\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\ttexture = new Texture();\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\n\n\t\t\t\t}\n\n\t\t\t\ttexture.source = source;\n\n\t\t\t\ttexture.uuid = data.uuid;\n\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\n\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\n\t\t\t\tif ( data.channel !== undefined ) texture.channel = data.channel;\n\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\n\n\t\t\t\tif ( data.wrap !== undefined ) {\n\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\n\t\t\t\tif ( data.internalFormat !== undefined ) texture.internalFormat = data.internalFormat;\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\n\t\t\t\tif ( data.colorSpace !== undefined ) texture.colorSpace = data.colorSpace;\n\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\n\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\n\n\t\t\t\tif ( data.generateMipmaps !== undefined ) texture.generateMipmaps = data.generateMipmaps;\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\n\t\t\t\tif ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;\n\n\t\t\t\tif ( data.userData !== undefined ) texture.userData = data.userData;\n\n\t\t\t\ttextures[ data.uuid ] = texture;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn textures;\n\n\t}\n\n\tparseObject( data, geometries, materials, textures, animations ) {\n\n\t\tlet object;\n\n\t\tfunction getGeometry( name ) {\n\n\t\t\tif ( geometries[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\n\n\t\t\t}\n\n\t\t\treturn geometries[ name ];\n\n\t\t}\n\n\t\tfunction getMaterial( name ) {\n\n\t\t\tif ( name === undefined ) return undefined;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\n\t\t\t\tconst array = [];\n\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst uuid = name[ i ];\n\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\n\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tarray.push( materials[ uuid ] );\n\n\t\t\t\t}\n\n\t\t\t\treturn array;\n\n\t\t\t}\n\n\t\t\tif ( materials[ name ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\n\n\t\t\t}\n\n\t\t\treturn materials[ name ];\n\n\t\t}\n\n\t\tfunction getTexture( uuid ) {\n\n\t\t\tif ( textures[ uuid ] === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined texture', uuid );\n\n\t\t\t}\n\n\t\t\treturn textures[ uuid ];\n\n\t\t}\n\n\t\tlet geometry, material;\n\n\t\tswitch ( data.type ) {\n\n\t\t\tcase 'Scene':\n\n\t\t\t\tobject = new Scene();\n\n\t\t\t\tif ( data.background !== undefined ) {\n\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\n\n\t\t\t\t\t\tobject.background = new Color( data.background );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tobject.background = getTexture( data.background );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.environment !== undefined ) {\n\n\t\t\t\t\tobject.environment = getTexture( data.environment );\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.fog !== undefined ) {\n\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\n\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\n\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\n\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( data.fog.name !== '' ) {\n\n\t\t\t\t\t\tobject.fog.name = data.fog.name;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( data.backgroundBlurriness !== undefined ) object.backgroundBlurriness = data.backgroundBlurriness;\n\t\t\t\tif ( data.backgroundIntensity !== undefined ) object.backgroundIntensity = data.backgroundIntensity;\n\t\t\t\tif ( data.backgroundRotation !== undefined ) object.backgroundRotation.fromArray( data.backgroundRotation );\n\n\t\t\t\tif ( data.environmentIntensity !== undefined ) object.environmentIntensity = data.environmentIntensity;\n\t\t\t\tif ( data.environmentRotation !== undefined ) object.environmentRotation.fromArray( data.environmentRotation );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PerspectiveCamera':\n\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\n\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'OrthographicCamera':\n\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\n\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'AmbientLight':\n\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'DirectionalLight':\n\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointLight':\n\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'RectAreaLight':\n\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SpotLight':\n\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\n\t\t\t\tobject.target = data.target || '';\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HemisphereLight':\n\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LightProbe':\n\n\t\t\t\tobject = new LightProbe().fromJSON( data );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'SkinnedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t \tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\n\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Mesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new Mesh( geometry, material );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'InstancedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\t\t\t\tconst count = data.count;\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\n\t\t\t\tconst instanceColor = data.instanceColor;\n\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\n\t\t\t\tobject.instanceMatrix = new InstancedBufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\n\t\t\t\tif ( instanceColor !== undefined ) object.instanceColor = new InstancedBufferAttribute( new Float32Array( instanceColor.array ), instanceColor.itemSize );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'BatchedMesh':\n\n\t\t\t\tgeometry = getGeometry( data.geometry );\n\t\t\t\tmaterial = getMaterial( data.material );\n\n\t\t\t\tobject = new BatchedMesh( data.maxInstanceCount, data.maxVertexCount, data.maxIndexCount, material );\n\t\t\t\tobject.geometry = geometry;\n\t\t\t\tobject.perObjectFrustumCulled = data.perObjectFrustumCulled;\n\t\t\t\tobject.sortObjects = data.sortObjects;\n\n\t\t\t\tobject._drawRanges = data.drawRanges;\n\t\t\t\tobject._reservedRanges = data.reservedRanges;\n\n\t\t\t\tobject._visibility = data.visibility;\n\t\t\t\tobject._active = data.active;\n\t\t\t\tobject._bounds = data.bounds.map( bound => {\n\n\t\t\t\t\tconst box = new Box3();\n\t\t\t\t\tbox.min.fromArray( bound.boxMin );\n\t\t\t\t\tbox.max.fromArray( bound.boxMax );\n\n\t\t\t\t\tconst sphere = new Sphere();\n\t\t\t\t\tsphere.radius = bound.sphereRadius;\n\t\t\t\t\tsphere.center.fromArray( bound.sphereCenter );\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tboxInitialized: bound.boxInitialized,\n\t\t\t\t\t\tbox: box,\n\n\t\t\t\t\t\tsphereInitialized: bound.sphereInitialized,\n\t\t\t\t\t\tsphere: sphere\n\t\t\t\t\t};\n\n\t\t\t\t} );\n\n\t\t\t\tobject._maxInstanceCount = data.maxInstanceCount;\n\t\t\t\tobject._maxVertexCount = data.maxVertexCount;\n\t\t\t\tobject._maxIndexCount = data.maxIndexCount;\n\n\t\t\t\tobject._geometryInitialized = data.geometryInitialized;\n\t\t\t\tobject._geometryCount = data.geometryCount;\n\n\t\t\t\tobject._matricesTexture = getTexture( data.matricesTexture.uuid );\n\t\t\t\tif ( data.colorsTexture !== undefined ) object._colorsTexture = getTexture( data.colorsTexture.uuid );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LOD':\n\n\t\t\t\tobject = new LOD();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Line':\n\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineLoop':\n\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'LineSegments':\n\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'PointCloud':\n\t\t\tcase 'Points':\n\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Sprite':\n\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Group':\n\n\t\t\t\tobject = new Group();\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'Bone':\n\n\t\t\t\tobject = new Bone();\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\n\t\t\t\tobject = new Object3D();\n\n\t\t}\n\n\t\tobject.uuid = data.uuid;\n\n\t\tif ( data.name !== undefined ) object.name = data.name;\n\n\t\tif ( data.matrix !== undefined ) {\n\n\t\t\tobject.matrix.fromArray( data.matrix );\n\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\n\n\t\t} else {\n\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\n\n\t\t}\n\n\t\tif ( data.up !== undefined ) object.up.fromArray( data.up );\n\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\n\n\t\tif ( data.shadow ) {\n\n\t\t\tif ( data.shadow.intensity !== undefined ) object.shadow.intensity = data.shadow.intensity;\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\n\n\t\t}\n\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\n\n\t\tif ( data.children !== undefined ) {\n\n\t\t\tconst children = data.children;\n\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, textures, animations ) );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.animations !== undefined ) {\n\n\t\t\tconst objectAnimations = data.animations;\n\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\n\n\t\t\t\tconst uuid = objectAnimations[ i ];\n\n\t\t\t\tobject.animations.push( animations[ uuid ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( data.type === 'LOD' ) {\n\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\n\n\t\t\tconst levels = data.levels;\n\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\n\n\t\t\t\tconst level = levels[ l ];\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\n\n\t\t\t\tif ( child !== undefined ) {\n\n\t\t\t\t\tobject.addLevel( child, level.distance, level.hysteresis );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn object;\n\n\t}\n\n\tbindSkeletons( object, skeletons ) {\n\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\n\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\n\n\t\t\t\tif ( skeleton === undefined ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\tbindLightTargets( object ) {\n\n\t\tobject.traverse( function ( child ) {\n\n\t\t\tif ( child.isDirectionalLight || child.isSpotLight ) {\n\n\t\t\t\tconst uuid = child.target;\n\n\t\t\t\tconst target = object.getObjectByProperty( 'uuid', uuid );\n\n\t\t\t\tif ( target !== undefined ) {\n\n\t\t\t\t\tchild.target = target;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tchild.target = new Object3D();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n}\n\nconst TEXTURE_MAPPING = {\n\tUVMapping: UVMapping,\n\tCubeReflectionMapping: CubeReflectionMapping,\n\tCubeRefractionMapping: CubeRefractionMapping,\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\n\tCubeUVReflectionMapping: CubeUVReflectionMapping\n};\n\nconst TEXTURE_WRAPPING = {\n\tRepeatWrapping: RepeatWrapping,\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\n};\n\nconst TEXTURE_FILTER = {\n\tNearestFilter: NearestFilter,\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\n\tLinearFilter: LinearFilter,\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\n};\n\nclass ImageBitmapLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t\tthis.isImageBitmapLoader = true;\n\n\t\tif ( typeof createImageBitmap === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\n\n\t\t}\n\n\t\tif ( typeof fetch === 'undefined' ) {\n\n\t\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\n\n\t\t}\n\n\t\tthis.options = { premultiplyAlpha: 'none' };\n\n\t}\n\n\tsetOptions( options ) {\n\n\t\tthis.options = options;\n\n\t\treturn this;\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tif ( url === undefined ) url = '';\n\n\t\tif ( this.path !== undefined ) url = this.path + url;\n\n\t\turl = this.manager.resolveURL( url );\n\n\t\tconst scope = this;\n\n\t\tconst cached = Cache.get( url );\n\n\t\tif ( cached !== undefined ) {\n\n\t\t\tscope.manager.itemStart( url );\n\n\t\t\t// If cached is a promise, wait for it to resolve\n\t\t\tif ( cached.then ) {\n\n\t\t\t\tcached.then( imageBitmap => {\n\n\t\t\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t\t} ).catch( e => {\n\n\t\t\t\t\tif ( onError ) onError( e );\n\n\t\t\t\t} );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t// If cached is not a promise (i.e., it's already an imageBitmap)\n\t\t\tsetTimeout( function () {\n\n\t\t\t\tif ( onLoad ) onLoad( cached );\n\n\t\t\t\tscope.manager.itemEnd( url );\n\n\t\t\t}, 0 );\n\n\t\t\treturn cached;\n\n\t\t}\n\n\t\tconst fetchOptions = {};\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\n\t\tfetchOptions.headers = this.requestHeader;\n\n\t\tconst promise = fetch( url, fetchOptions ).then( function ( res ) {\n\n\t\t\treturn res.blob();\n\n\t\t} ).then( function ( blob ) {\n\n\t\t\treturn createImageBitmap( blob, Object.assign( scope.options, { colorSpaceConversion: 'none' } ) );\n\n\t\t} ).then( function ( imageBitmap ) {\n\n\t\t\tCache.add( url, imageBitmap );\n\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\n\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t\treturn imageBitmap;\n\n\t\t} ).catch( function ( e ) {\n\n\t\t\tif ( onError ) onError( e );\n\n\t\t\tCache.remove( url );\n\n\t\t\tscope.manager.itemError( url );\n\t\t\tscope.manager.itemEnd( url );\n\n\t\t} );\n\n\t\tCache.add( url, promise );\n\t\tscope.manager.itemStart( url );\n\n\t}\n\n}\n\nlet _context;\n\n/**\n * Manages the global audio context in the engine.\n *\n * @hideconstructor\n */\nclass AudioContext {\n\n\t/**\n\t * Returns the global native audio context.\n\t *\n\t * @return {AudioContext} The native audio context.\n\t */\n\tstatic getContext() {\n\n\t\tif ( _context === undefined ) {\n\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\n\n\t\t}\n\n\t\treturn _context;\n\n\t}\n\n\t/**\n\t * Allows to set the global native audio context from outside.\n\t *\n\t * @param {AudioContext} value - The native context to set.\n\t */\n\tstatic setContext( value ) {\n\n\t\t_context = value;\n\n\t}\n\n}\n\nclass AudioLoader extends Loader {\n\n\tconstructor( manager ) {\n\n\t\tsuper( manager );\n\n\t}\n\n\tload( url, onLoad, onProgress, onError ) {\n\n\t\tconst scope = this;\n\n\t\tconst loader = new FileLoader( this.manager );\n\t\tloader.setResponseType( 'arraybuffer' );\n\t\tloader.setPath( this.path );\n\t\tloader.setRequestHeader( this.requestHeader );\n\t\tloader.setWithCredentials( this.withCredentials );\n\t\tloader.load( url, function ( buffer ) {\n\n\t\t\ttry {\n\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\n\n\t\t\t\tconst context = AudioContext.getContext();\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\n\n\t\t\t\t\tonLoad( audioBuffer );\n\n\t\t\t\t} ).catch( handleError );\n\n\t\t\t} catch ( e ) {\n\n\t\t\t\thandleError( e );\n\n\t\t\t}\n\n\t\t}, onProgress, onError );\n\n\t\tfunction handleError( e ) {\n\n\t\t\tif ( onError ) {\n\n\t\t\t\tonError( e );\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( e );\n\n\t\t\t}\n\n\t\t\tscope.manager.itemError( url );\n\n\t\t}\n\n\t}\n\n}\n\nconst _eyeRight = /*@__PURE__*/ new Matrix4();\nconst _eyeLeft = /*@__PURE__*/ new Matrix4();\nconst _projectionMatrix = /*@__PURE__*/ new Matrix4();\n\n/**\n * A special type of camera that uses two perspective cameras with\n * stereoscopic projection. Can be used for rendering stereo effects\n * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or\n * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.\n */\nclass StereoCamera {\n\n\t/**\n\t * Constructs a new stereo camera.\n\t */\n\tconstructor() {\n\n\t\t/**\n\t\t * The type property is used for detecting the object type\n\t\t * in context of serialization/deserialization.\n\t\t *\n\t\t * @type {string}\n\t\t * @readonly\n\t\t */\n\t\tthis.type = 'StereoCamera';\n\n\t\t/**\n\t\t * The aspect.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.aspect = 1;\n\n\t\t/**\n\t\t * The eye separation which represents the distance\n\t\t * between the left and right camera.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0.064\n\t\t */\n\t\tthis.eyeSep = 0.064;\n\n\t\t/**\n\t\t * The camera representing the left eye. This is added to layer `1` so objects to be\n\t\t * rendered by the left camera must also be added to this layer.\n\t\t *\n\t\t * @type {PerspectiveCamera}\n\t\t */\n\t\tthis.cameraL = new PerspectiveCamera();\n\t\tthis.cameraL.layers.enable( 1 );\n\t\tthis.cameraL.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The camera representing the right eye. This is added to layer `2` so objects to be\n\t\t * rendered by the right camera must also be added to this layer.\n\t\t *\n\t\t * @type {PerspectiveCamera}\n\t\t */\n\t\tthis.cameraR = new PerspectiveCamera();\n\t\tthis.cameraR.layers.enable( 2 );\n\t\tthis.cameraR.matrixAutoUpdate = false;\n\n\t\tthis._cache = {\n\t\t\tfocus: null,\n\t\t\tfov: null,\n\t\t\taspect: null,\n\t\t\tnear: null,\n\t\t\tfar: null,\n\t\t\tzoom: null,\n\t\t\teyeSep: null\n\t\t};\n\n\t}\n\n\t/**\n\t * Updates the stereo camera based on the given perspective camera.\n\t *\n\t * @param {PerspectiveCamera} camera - The perspective camera.\n\t */\n\tupdate( camera ) {\n\n\t\tconst cache = this._cache;\n\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tcache.focus = camera.focus;\n\t\t\tcache.fov = camera.fov;\n\t\t\tcache.aspect = camera.aspect * this.aspect;\n\t\t\tcache.near = camera.near;\n\t\t\tcache.far = camera.far;\n\t\t\tcache.zoom = camera.zoom;\n\t\t\tcache.eyeSep = this.eyeSep;\n\n\t\t\t// Off-axis stereoscopic effect based on\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\n\n\t\t\t_projectionMatrix.copy( camera.projectionMatrix );\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n\t\t\tconst ymax = ( cache.near * Math.tan( DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\n\t\t\tlet xmin, xmax;\n\n\t\t\t// translate xOffset\n\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\n\n\t\t\t// for left eye\n\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraL.projectionMatrix.copy( _projectionMatrix );\n\n\t\t\t// for right eye\n\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\n\n\t\t\t_projectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\n\t\t\t_projectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\n\n\t\t\tthis.cameraR.projectionMatrix.copy( _projectionMatrix );\n\n\t\t}\n\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\n\n\t}\n\n}\n\n/**\n * This type of camera can be used in order to efficiently render a scene with a\n * predefined set of cameras. This is an important performance aspect for\n * rendering VR scenes.\n *\n * An instance of `ArrayCamera` always has an array of sub cameras. It's mandatory\n * to define for each sub camera the `viewport` property which determines the\n * part of the viewport that is rendered with this camera.\n *\n * @augments PerspectiveCamera\n */\nclass ArrayCamera extends PerspectiveCamera {\n\n\t/**\n\t * Constructs a new array camera.\n\t *\n\t * @param {Array<PerspectiveCamera>} [array=[]] - An array of perspective sub cameras.\n\t */\n\tconstructor( array = [] ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isArrayCamera = true;\n\n\t\t/**\n\t\t * An array of perspective sub cameras.\n\t\t *\n\t\t * @type {Array<PerspectiveCamera>}\n\t\t */\n\t\tthis.cameras = array;\n\t\tthis.index = 0;\n\n\t}\n\n}\n\nclass Clock {\n\n\tconstructor( autoStart = true ) {\n\n\t\tthis.autoStart = autoStart;\n\n\t\tthis.startTime = 0;\n\t\tthis.oldTime = 0;\n\t\tthis.elapsedTime = 0;\n\n\t\tthis.running = false;\n\n\t}\n\n\tstart() {\n\n\t\tthis.startTime = now();\n\n\t\tthis.oldTime = this.startTime;\n\t\tthis.elapsedTime = 0;\n\t\tthis.running = true;\n\n\t}\n\n\tstop() {\n\n\t\tthis.getElapsedTime();\n\t\tthis.running = false;\n\t\tthis.autoStart = false;\n\n\t}\n\n\tgetElapsedTime() {\n\n\t\tthis.getDelta();\n\t\treturn this.elapsedTime;\n\n\t}\n\n\tgetDelta() {\n\n\t\tlet diff = 0;\n\n\t\tif ( this.autoStart && ! this.running ) {\n\n\t\t\tthis.start();\n\t\t\treturn 0;\n\n\t\t}\n\n\t\tif ( this.running ) {\n\n\t\t\tconst newTime = now();\n\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\n\t\t\tthis.oldTime = newTime;\n\n\t\t\tthis.elapsedTime += diff;\n\n\t\t}\n\n\t\treturn diff;\n\n\t}\n\n}\n\nfunction now() {\n\n\treturn performance.now();\n\n}\n\nconst _position$1 = /*@__PURE__*/ new Vector3();\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\nconst _scale$1 = /*@__PURE__*/ new Vector3();\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\n\n/**\n * The class represents a virtual listener of the all positional and non-positional audio effects\n * in the scene. A three.js application usually creates a single listener. It is a mandatory\n * constructor parameter for audios entities like {@link Audio} and {@link PositionalAudio}.\n *\n * In most cases, the listener object is a child of the camera. So the 3D transformation of the\n * camera represents the 3D transformation of the listener.\n *\n * @augments Object3D\n */\nclass AudioListener extends Object3D {\n\n\t/**\n\t * Constructs a new audio listener.\n\t */\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.type = 'AudioListener';\n\n\t\t/**\n\t\t * The native audio context.\n\t\t *\n\t\t * @type {AudioContext}\n\t\t * @readonly\n\t\t */\n\t\tthis.context = AudioContext.getContext();\n\n\t\t/**\n\t\t * The gain node used for volume control.\n\t\t *\n\t\t * @type {GainNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( this.context.destination );\n\n\t\t/**\n\t\t * An optional filter.\n\t\t *\n\t\t * Defined via {@AudioListener#setFilter}.\n\t\t *\n\t\t * @type {?AudioNode}\n\t\t * @default null\n\t\t * @readonly\n\t\t */\n\t\tthis.filter = null;\n\n\t\t/**\n\t\t * Time delta values required for `linearRampToValueAtTime()` usage.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t * @readonly\n\t\t */\n\t\tthis.timeDelta = 0;\n\n\t\t// private\n\n\t\tthis._clock = new Clock();\n\n\t}\n\n\t/**\n\t * Returns the listener's input node.\n\t *\n\t * This method is used by other audio nodes to connect to this listener.\n\t *\n\t * @return {GainNode} The input node.\n\t */\n\tgetInput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\t/**\n\t * Removes the current filter from this listener.\n\t *\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tremoveFilter() {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\t\t\tthis.gain.connect( this.context.destination );\n\t\t\tthis.filter = null;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current set filter.\n\t *\n\t * @return {AudioNode} The filter.\n\t */\n\tgetFilter() {\n\n\t\treturn this.filter;\n\n\t}\n\n\t/**\n\t * Sets the given filter to this listener.\n\t *\n\t * @param {AudioNode} value - The filter to set.\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tsetFilter( value ) {\n\n\t\tif ( this.filter !== null ) {\n\n\t\t\tthis.gain.disconnect( this.filter );\n\t\t\tthis.filter.disconnect( this.context.destination );\n\n\t\t} else {\n\n\t\t\tthis.gain.disconnect( this.context.destination );\n\n\t\t}\n\n\t\tthis.filter = value;\n\t\tthis.gain.connect( this.filter );\n\t\tthis.filter.connect( this.context.destination );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the applications master volume.\n\t *\n\t * @return {number} The master volume.\n\t */\n\tgetMasterVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\t/**\n\t * Sets the applications master volume. This volume setting affects\n\t * all audio nodes in the scene.\n\t *\n\t * @param {number} value - The master volume to set.\n\t * @return {AudioListener} A reference to this listener.\n\t */\n\tsetMasterVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tconst listener = this.context.listener;\n\t\tconst up = this.up;\n\n\t\tthis.timeDelta = this._clock.getDelta();\n\n\t\tthis.matrixWorld.decompose( _position$1, _quaternion$1, _scale$1 );\n\n\t\t_orientation$1.set( 0, 0, -1 ).applyQuaternion( _quaternion$1 );\n\n\t\tif ( listener.positionX ) {\n\n\t\t\t// code path for Chrome (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\n\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$1.x, endTime );\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$1.y, endTime );\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$1.z, endTime );\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation$1.x, endTime );\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation$1.y, endTime );\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation$1.z, endTime );\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\n\n\t\t} else {\n\n\t\t\tlistener.setPosition( _position$1.x, _position$1.y, _position$1.z );\n\t\t\tlistener.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * Represents a non-positional ( global ) audio object.\n *\n * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create a global audio source\n * const sound = new THREE.Audio( listener );\n *\n * // load a sound and set it as the Audio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setLoop( true );\n * \tsound.setVolume( 0.5 );\n * \tsound.play();\n * });\n * ```\n *\n * @augments Object3D\n */\nclass Audio extends Object3D {\n\n\t/**\n\t * Constructs a new audio.\n\t *\n\t * @param {AudioListener} listener - The global audio listener.\n\t */\n\tconstructor( listener ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'Audio';\n\n\t\t/**\n\t\t * The global audio listener.\n\t\t *\n\t\t * @type {AudioListener}\n\t\t * @readonly\n\t\t */\n\t\tthis.listener = listener;\n\n\t\t/**\n\t\t * The audio context.\n\t\t *\n\t\t * @type {AudioContext}\n\t\t * @readonly\n\t\t */\n\t\tthis.context = listener.context;\n\n\t\t/**\n\t\t * The gain node used for volume control.\n\t\t *\n\t\t * @type {GainNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.gain = this.context.createGain();\n\t\tthis.gain.connect( listener.getInput() );\n\n\t\t/**\n\t\t * Whether to start playback automatically or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t */\n\t\tthis.autoplay = false;\n\n\t\t/**\n\t\t * A reference to an audio buffer.\n\t\t *\n\t\t * Defined via {@link Audio#setBuffer}.\n\t\t *\n\t\t * @type {?AudioBuffer}\n\t\t * @default null\n\t\t * @readonly\n\t\t */\n\t\tthis.buffer = null;\n\n\t\t/**\n\t\t * Modify pitch, measured in cents. +/- 100 is a semitone.\n\t\t * +/- 1200 is an octave.\n\t\t *\n\t\t * Defined via {@link Audio#setDetune}.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t * @readonly\n\t\t */\n\t\tthis.detune = 0;\n\n\t\t/**\n\t\t * Whether the audio should loop or not.\n\t\t *\n\t\t * Defined via {@link Audio#setLoop}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default false\n\t\t * @readonly\n\t\t */\n\t\tthis.loop = false;\n\n\t\t/**\n\t\t * Defines where in the audio buffer the replay should\n\t\t * start, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.loopStart = 0;\n\n\t\t/**\n\t\t * Defines where in the audio buffer the replay should\n\t\t * stop, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.loopEnd = 0;\n\n\t\t/**\n\t\t * An offset to the time within the audio buffer the playback\n\t\t * should begin, in seconds.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.offset = 0;\n\n\t\t/**\n\t\t * Overrides the default duration of the audio.\n\t\t *\n\t\t * @type {undefined|number}\n\t\t * @default undefined\n\t\t */\n\t\tthis.duration = undefined;\n\n\t\t/**\n\t\t * The playback speed.\n\t\t *\n\t\t * Defined via {@link Audio#setPlaybackRate}.\n\t\t *\n\t\t * @type {number}\n\t\t * @readonly\n\t\t * @default 1\n\t\t */\n\t\tthis.playbackRate = 1;\n\n\t\t/**\n\t\t * Indicates whether the audio is playing or not.\n\t\t *\n\t\t * This flag will be automatically set when using {@link Audio#play},\n\t\t * {@link Audio#pause}, {@link Audio#stop}.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default false\n\t\t */\n\t\tthis.isPlaying = false;\n\n\t\t/**\n\t\t * Indicates whether the audio playback can be controlled\n\t\t * with method like {@link Audio#play} or {@link Audio#pause}.\n\t\t *\n\t\t * This flag will be automatically set when audio sources are\n\t\t * defined.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.hasPlaybackControl = true;\n\n\t\t/**\n\t\t * Holds a reference to the current audio source.\n\t\t *\n\t\t * The property is automatically by one of the `set*()` methods.\n\t\t *\n\t\t * @type {?AudioNode}\n\t\t * @readonly\n\t\t * @default null\n\t\t */\n\t\tthis.source = null;\n\n\t\t/**\n\t\t * Defines the source type.\n\t\t *\n\t\t * The property is automatically by one of the `set*()` methods.\n\t\t *\n\t\t * @type {('empty'|'audioNode'|'mediaNode'|'mediaStreamNode'|'buffer')}\n\t\t * @readonly\n\t\t * @default 'empty'\n\t\t */\n\t\tthis.sourceType = 'empty';\n\n\t\tthis._startedAt = 0;\n\t\tthis._progress = 0;\n\t\tthis._connected = false;\n\n\t\t/**\n\t\t * Can be used to apply a variety of low-order filters to create\n\t\t * more complex sound effects e.g. via `BiquadFilterNode`.\n\t\t *\n\t\t * The property is automatically set by {@link Audio#setFilters}.\n\t\t *\n\t\t * @type {Array<AudioNode>}\n\t\t * @readonly\n\t\t */\n\t\tthis.filters = [];\n\n\t}\n\n\t/**\n\t * Returns the output audio node.\n\t *\n\t * @return {GainNode} The output node.\n\t */\n\tgetOutput() {\n\n\t\treturn this.gain;\n\n\t}\n\n\t/**\n\t * Sets the given audio node as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `audioNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {AudioNode} audioNode - The audio node like an instance of `OscillatorNode`.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetNodeSource( audioNode ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'audioNode';\n\t\tthis.source = audioNode;\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given media element as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `mediaNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {HTMLMediaElement} mediaElement - The media element.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetMediaElementSource( mediaElement ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaNode';\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given media stream as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `mediaStreamNode` and {@link Audio#hasPlaybackControl} to `false`.\n\t *\n\t * @param {MediaStream} mediaStream - The media stream.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetMediaStreamSource( mediaStream ) {\n\n\t\tthis.hasPlaybackControl = false;\n\t\tthis.sourceType = 'mediaStreamNode';\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\n\t\tthis.connect();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the given audio buffer as the source of this instance.\n\t *\n\t * {@link Audio#sourceType} is set to `buffer` and {@link Audio#hasPlaybackControl} to `true`.\n\t *\n\t * @param {AudioBuffer} audioBuffer - The audio buffer.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetBuffer( audioBuffer ) {\n\n\t\tthis.buffer = audioBuffer;\n\t\tthis.sourceType = 'buffer';\n\n\t\tif ( this.autoplay ) this.play();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Starts the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [delay=0] - The delay, in seconds, at which the audio should start playing.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tplay( delay = 0 ) {\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._startedAt = this.context.currentTime + delay;\n\n\t\tconst source = this.context.createBufferSource();\n\t\tsource.buffer = this.buffer;\n\t\tsource.loop = this.loop;\n\t\tsource.loopStart = this.loopStart;\n\t\tsource.loopEnd = this.loopEnd;\n\t\tsource.onended = this.onEnded.bind( this );\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\n\n\t\tthis.isPlaying = true;\n\n\t\tthis.source = source;\n\n\t\tthis.setDetune( this.detune );\n\t\tthis.setPlaybackRate( this.playbackRate );\n\n\t\treturn this.connect();\n\n\t}\n\n\t/**\n\t * Pauses the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tpause() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\t// update current progress\n\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\n\n\t\t\tif ( this.loop === true ) {\n\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\n\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\n\n\t\t\t}\n\n\t\t\tthis.source.stop();\n\t\t\tthis.source.onended = null;\n\n\t\t\tthis.isPlaying = false;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Stops the playback of the audio.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [delay=0] - The delay, in seconds, at which the audio should stop playing.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tstop( delay = 0 ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis._progress = 0;\n\n\t\tif ( this.source !== null ) {\n\n\t\t\tthis.source.stop( this.context.currentTime + delay );\n\t\t\tthis.source.onended = null;\n\n\t\t}\n\n\t\tthis.isPlaying = false;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Connects to the audio source. This is used internally on\n\t * initialisation and when setting / removing filters.\n\t *\n\t * @return {Audio} A reference to this instance.\n\t */\n\tconnect() {\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.connect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.connect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Disconnects to the audio source. This is used internally on\n\t * initialisation and when setting / removing filters.\n\t *\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tdisconnect() {\n\n\t\tif ( this._connected === false ) {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( this.filters.length > 0 ) {\n\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\n\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\n\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\n\n\t\t\t}\n\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\n\n\t\t} else {\n\n\t\t\tthis.source.disconnect( this.getOutput() );\n\n\t\t}\n\n\t\tthis._connected = false;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current set filters.\n\t *\n\t * @return {Array<AudioNode>} The list of filters.\n\t */\n\tgetFilters() {\n\n\t\treturn this.filters;\n\n\t}\n\n\t/**\n\t * Sets an array of filters and connects them with the audio source.\n\t *\n\t * @param {Array<AudioNode>} [value] - A list of filters.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetFilters( value ) {\n\n\t\tif ( ! value ) value = [];\n\n\t\tif ( this._connected === true ) {\n\n\t\t\tthis.disconnect();\n\t\t\tthis.filters = value.slice();\n\t\t\tthis.connect();\n\n\t\t} else {\n\n\t\t\tthis.filters = value.slice();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Defines the detuning of oscillation in cents.\n\t *\n\t * @param {number} value - The detuning of oscillation in cents.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetDetune( value ) {\n\n\t\tthis.detune = value;\n\n\t\tif ( this.isPlaying === true && this.source.detune !== undefined ) {\n\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the detuning of oscillation in cents.\n\t *\n\t * @return {number} The detuning of oscillation in cents.\n\t */\n\tgetDetune() {\n\n\t\treturn this.detune;\n\n\t}\n\n\t/**\n\t * Returns the first filter in the list of filters.\n\t *\n\t * @return {AudioNode|undefined} The first filter in the list of filters.\n\t */\n\tgetFilter() {\n\n\t\treturn this.getFilters()[ 0 ];\n\n\t}\n\n\t/**\n\t * Applies a single filter node to the audio.\n\t *\n\t * @param {AudioNode} [filter] - The filter to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetFilter( filter ) {\n\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\n\n\t}\n\n\t/**\n\t * Sets the playback rate.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {number} [value] - The playback rate to set.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tsetPlaybackRate( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.playbackRate = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current playback rate.\n\n\t * @return {number} The playback rate.\n\t */\n\tgetPlaybackRate() {\n\n\t\treturn this.playbackRate;\n\n\t}\n\n\t/**\n\t * Automatically called when playback finished.\n\t */\n\tonEnded() {\n\n\t\tthis.isPlaying = false;\n\t\tthis._progress = 0;\n\n\t}\n\n\t/**\n\t * Returns the loop flag.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @return {boolean} Whether the audio should loop or not.\n\t */\n\tgetLoop() {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn this.loop;\n\n\t}\n\n\t/**\n\t * Sets the loop flag.\n\t *\n\t * Can only be used with compatible audio sources that allow playback control.\n\t *\n\t * @param {boolean} value - Whether the audio should loop or not.\n\t * @return {Audio|undefined} A reference to this instance.\n\t */\n\tsetLoop( value ) {\n\n\t\tif ( this.hasPlaybackControl === false ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tthis.loop = value;\n\n\t\tif ( this.isPlaying === true ) {\n\n\t\t\tthis.source.loop = this.loop;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the loop start value which defines where in the audio buffer the replay should\n\t * start, in seconds.\n\t *\n\t * @param {number} value - The loop start value.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetLoopStart( value ) {\n\n\t\tthis.loopStart = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the loop end value which defines where in the audio buffer the replay should\n\t * stop, in seconds.\n\t *\n\t * @param {number} value - The loop end value.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetLoopEnd( value ) {\n\n\t\tthis.loopEnd = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the volume.\n\t *\n\t * @return {number} The volume.\n\t */\n\tgetVolume() {\n\n\t\treturn this.gain.gain.value;\n\n\t}\n\n\t/**\n\t * Sets the volume.\n\t *\n\t * @param {number} value - The volume to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetVolume( value ) {\n\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tif ( source.sourceType !== 'buffer' ) {\n\n\t\t\tconsole.warn( 'THREE.Audio: Audio source type cannot be copied.' );\n\n\t\t\treturn this;\n\n\t\t}\n\n\t\tthis.autoplay = source.autoplay;\n\n\t\tthis.buffer = source.buffer;\n\t\tthis.detune = source.detune;\n\t\tthis.loop = source.loop;\n\t\tthis.loopStart = source.loopStart;\n\t\tthis.loopEnd = source.loopEnd;\n\t\tthis.offset = source.offset;\n\t\tthis.duration = source.duration;\n\t\tthis.playbackRate = source.playbackRate;\n\t\tthis.hasPlaybackControl = source.hasPlaybackControl;\n\t\tthis.sourceType = source.sourceType;\n\n\t\tthis.filters = source.filters.slice();\n\n\t\treturn this;\n\n\t}\n\n\tclone( recursive ) {\n\n\t\treturn new this.constructor( this.listener ).copy( this, recursive );\n\n\t}\n\n}\n\nconst _position = /*@__PURE__*/ new Vector3();\nconst _quaternion = /*@__PURE__*/ new Quaternion();\nconst _scale = /*@__PURE__*/ new Vector3();\nconst _orientation = /*@__PURE__*/ new Vector3();\n\n/**\n * Represents a positional audio object.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create the PositionalAudio object (passing in the listener)\n * const sound = new THREE.PositionalAudio( listener );\n *\n * // load a sound and set it as the PositionalAudio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/song.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setRefDistance( 20 );\n * \tsound.play();\n * });\n *\n * // create an object for the sound to play from\n * const sphere = new THREE.SphereGeometry( 20, 32, 16 );\n * const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );\n * const mesh = new THREE.Mesh( sphere, material );\n * scene.add( mesh );\n *\n * // finally add the sound to the mesh\n * mesh.add( sound );\n *\n * @augments Audio\n */\nclass PositionalAudio extends Audio {\n\n\t/**\n\t * Constructs a positional audio.\n\t *\n\t * @param {AudioListener} listener - The global audio listener.\n\t */\n\tconstructor( listener ) {\n\n\t\tsuper( listener );\n\n\t\t/**\n\t\t * The panner node represents the location, direction, and behavior of an audio\n\t\t * source in 3D space.\n\t\t *\n\t\t * @type {PannerNode}\n\t\t * @readonly\n\t\t */\n\t\tthis.panner = this.context.createPanner();\n\t\tthis.panner.panningModel = 'HRTF';\n\t\tthis.panner.connect( this.gain );\n\n\t}\n\n\tconnect() {\n\n\t\tsuper.connect();\n\n\t\tthis.panner.connect( this.gain );\n\n\t\treturn this;\n\n\t}\n\n\tdisconnect() {\n\n\t\tsuper.disconnect();\n\n\t\tthis.panner.disconnect( this.gain );\n\n\t\treturn this;\n\n\t}\n\n\tgetOutput() {\n\n\t\treturn this.panner;\n\n\t}\n\n\t/**\n\t * Returns the current reference distance.\n\t *\n\t * @return {number} The reference distance.\n\t */\n\tgetRefDistance() {\n\n\t\treturn this.panner.refDistance;\n\n\t}\n\n\t/**\n\t * Defines the reference distance for reducing volume as the audio source moves\n\t * further from the listener – i.e. the distance at which the volume reduction\n\t * starts taking effect.\n\t *\n\t * @param {number} value - The reference distance to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetRefDistance( value ) {\n\n\t\tthis.panner.refDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current rolloff factor.\n\t *\n\t * @return {number} The rolloff factor.\n\t */\n\tgetRolloffFactor() {\n\n\t\treturn this.panner.rolloffFactor;\n\n\t}\n\n\t/**\n\t * Defines how quickly the volume is reduced as the source moves away from the listener.\n\t *\n\t * @param {number} value - The rolloff factor.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetRolloffFactor( value ) {\n\n\t\tthis.panner.rolloffFactor = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current distance model.\n\t *\n\t * @return {('linear'|'inverse'|'exponential')} The distance model.\n\t */\n\tgetDistanceModel() {\n\n\t\treturn this.panner.distanceModel;\n\n\t}\n\n\t/**\n\t * Defines which algorithm to use to reduce the volume of the audio source\n\t * as it moves away from the listener.\n\t *\n\t * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}\n\t * for more details.\n\t *\n\t * @param {('linear'|'inverse'|'exponential')} value - The distance model to set.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetDistanceModel( value ) {\n\n\t\tthis.panner.distanceModel = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the current max distance.\n\t *\n\t * @return {number} The max distance.\n\t */\n\tgetMaxDistance() {\n\n\t\treturn this.panner.maxDistance;\n\n\t}\n\n\t/**\n\t * Defines the maximum distance between the audio source and the listener,\n\t * after which the volume is not reduced any further.\n\t *\n\t * This value is used only by the `linear` distance model.\n\t *\n\t * @param {number} value - The max distance.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetMaxDistance( value ) {\n\n\t\tthis.panner.maxDistance = value;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the directional cone in which the audio can be listened.\n\t *\n\t * @param {number} coneInnerAngle - An angle, in degrees, of a cone inside of which there will be no volume reduction.\n\t * @param {number} coneOuterAngle - An angle, in degrees, of a cone outside of which the volume will be reduced by a constant value, defined by the `coneOuterGain` parameter.\n\t * @param {number} coneOuterGain - The amount of volume reduction outside the cone defined by the `coneOuterAngle`. When set to `0`, no sound can be heard.\n\t * @return {Audio} A reference to this instance.\n\t */\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\n\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\n\t\tthis.panner.coneOuterGain = coneOuterGain;\n\n\t\treturn this;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\n\n\t\tthis.matrixWorld.decompose( _position, _quaternion, _scale );\n\n\t\t_orientation.set( 0, 0, 1 ).applyQuaternion( _quaternion );\n\n\t\tconst panner = this.panner;\n\n\t\tif ( panner.positionX ) {\n\n\t\t\t// code path for Chrome and Firefox (see #14393)\n\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\n\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position.x, endTime );\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position.y, endTime );\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position.z, endTime );\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation.x, endTime );\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation.y, endTime );\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation.z, endTime );\n\n\t\t} else {\n\n\t\t\tpanner.setPosition( _position.x, _position.y, _position.z );\n\t\t\tpanner.setOrientation( _orientation.x, _orientation.y, _orientation.z );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * This class can be used to analyse audio data.\n *\n * ```js\n * // create an AudioListener and add it to the camera\n * const listener = new THREE.AudioListener();\n * camera.add( listener );\n *\n * // create an Audio source\n * const sound = new THREE.Audio( listener );\n *\n * // load a sound and set it as the Audio object's buffer\n * const audioLoader = new THREE.AudioLoader();\n * audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {\n * \tsound.setBuffer( buffer );\n * \tsound.setLoop(true);\n * \tsound.setVolume(0.5);\n * \tsound.play();\n * });\n *\n * // create an AudioAnalyser, passing in the sound and desired fftSize\n * const analyser = new THREE.AudioAnalyser( sound, 32 );\n *\n * // get the average frequency of the sound\n * const data = analyser.getAverageFrequency();\n * ```\n */\nclass AudioAnalyser {\n\n\t/**\n\t * Constructs a new audio analyzer.\n\t *\n\t * @param {Audio} audio - The audio to analyze.\n\t * @param {Audio} [fftSize=2048] - The window size in samples that is used when performing a Fast Fourier Transform (FFT) to get frequency domain data.\n\t */\n\tconstructor( audio, fftSize = 2048 ) {\n\n\t\t/**\n\t\t * The global audio listener.\n\t\t *\n\t\t * @type {AnalyserNode}\n\t\t */\n\t\tthis.analyser = audio.context.createAnalyser();\n\t\tthis.analyser.fftSize = fftSize;\n\n\t\t/**\n\t\t * Holds the analyzed data.\n\t\t *\n\t\t * @type {Uint8Array}\n\t\t */\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\n\n\t\taudio.getOutput().connect( this.analyser );\n\n\t}\n\n\t/**\n\t * Returns an array with frequency data of the audio.\n\t *\n\t * Each item in the array represents the decibel value for a specific frequency.\n\t * The frequencies are spread linearly from 0 to 1/2 of the sample rate.\n\t * For example, for 48000 sample rate, the last item of the array will represent\n\t * the decibel value for 24000 Hz.\n\t *\n\t * @return {Uint8Array} The frequency data.\n\t */\n\tgetFrequencyData() {\n\n\t\tthis.analyser.getByteFrequencyData( this.data );\n\n\t\treturn this.data;\n\n\t}\n\n\t/**\n\t * Returns the average of the frequencies returned by {@link AudioAnalyser#getFrequencyData}.\n\t *\n\t * @return {number} The average frequency.\n\t */\n\tgetAverageFrequency() {\n\n\t\tlet value = 0;\n\t\tconst data = this.getFrequencyData();\n\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\n\n\t\t\tvalue += data[ i ];\n\n\t\t}\n\n\t\treturn value / data.length;\n\n\t}\n\n}\n\nclass PropertyMixer {\n\n\tconstructor( binding, typeName, valueSize ) {\n\n\t\tthis.binding = binding;\n\t\tthis.valueSize = valueSize;\n\n\t\tlet mixFunction,\n\t\t\tmixFunctionAdditive,\n\t\t\tsetIdentity;\n\n\t\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\n\t\t//\n\t\t// interpolators can use .buffer as their .result\n\t\t// the data then goes to 'incoming'\n\t\t//\n\t\t// 'accu0' and 'accu1' are used frame-interleaved for\n\t\t// the cumulative result and are compared to detect\n\t\t// changes\n\t\t//\n\t\t// 'orig' stores the original state of the property\n\t\t//\n\t\t// 'add' is used for additive cumulative results\n\t\t//\n\t\t// 'work' is optional and is only present for quaternion types. It is used\n\t\t// to store intermediate quaternion multiplication results\n\n\t\tswitch ( typeName ) {\n\n\t\t\tcase 'quaternion':\n\t\t\t\tmixFunction = this._slerp;\n\t\t\t\tmixFunctionAdditive = this._slerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\n\t\t\t\tthis._workIndex = 5;\n\t\t\t\tbreak;\n\n\t\t\tcase 'string':\n\t\t\tcase 'bool':\n\t\t\t\tmixFunction = this._select;\n\n\t\t\t\t// Use the regular mix function and for additive on these types,\n\t\t\t\t// additive is not relevant for non-numeric types\n\t\t\t\tmixFunctionAdditive = this._select;\n\n\t\t\t\tsetIdentity = this._setAdditiveIdentityOther;\n\n\t\t\t\tthis.buffer = new Array( valueSize * 5 );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tmixFunction = this._lerp;\n\t\t\t\tmixFunctionAdditive = this._lerpAdditive;\n\t\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\n\n\t\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\n\n\t\t}\n\n\t\tthis._mixBufferRegion = mixFunction;\n\t\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\n\t\tthis._setIdentity = setIdentity;\n\t\tthis._origIndex = 3;\n\t\tthis._addIndex = 4;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tthis.useCount = 0;\n\t\tthis.referenceCount = 0;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'accu<i>'\n\taccumulate( accuIndex, weight ) {\n\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\n\t\t// the weight and shouldn't have made the call in the first place\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = accuIndex * stride + stride;\n\n\t\tlet currentWeight = this.cumulativeWeight;\n\n\t\tif ( currentWeight === 0 ) {\n\n\t\t\t// accuN := incoming * weight\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\n\n\t\t\t}\n\n\t\t\tcurrentWeight = weight;\n\n\t\t} else {\n\n\t\t\t// accuN := accuN + incoming * weight\n\n\t\t\tcurrentWeight += weight;\n\t\t\tconst mix = weight / currentWeight;\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\n\n\t\t}\n\n\t\tthis.cumulativeWeight = currentWeight;\n\n\t}\n\n\t// accumulate data in the 'incoming' region into 'add'\n\taccumulateAdditive( weight ) {\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\t\t\toffset = stride * this._addIndex;\n\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\n\n\t\t\t// add = identity\n\n\t\t\tthis._setIdentity();\n\n\t\t}\n\n\t\t// add := add + incoming * weight\n\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\n\t\tthis.cumulativeWeightAdditive += weight;\n\n\t}\n\n\t// apply the state of 'accu<i>' to the binding when accus differ\n\tapply( accuIndex ) {\n\n\t\tconst stride = this.valueSize,\n\t\t\tbuffer = this.buffer,\n\t\t\toffset = accuIndex * stride + stride,\n\n\t\t\tweight = this.cumulativeWeight,\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\n\n\t\t\tbinding = this.binding;\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t\tif ( weight < 1 ) {\n\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\n\n\t\t\tconst originalValueOffset = stride * this._origIndex;\n\n\t\t\tthis._mixBufferRegion(\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\n\n\t\t}\n\n\t\tif ( weightAdditive > 0 ) {\n\n\t\t\t// accuN := accuN + additive accuN\n\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\n\n\t\t}\n\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\n\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\n\n\t\t\t\t// value has changed -> update scene graph\n\n\t\t\t\tbinding.setValue( buffer, offset );\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remember the state of the bound property and copy it to both accus\n\tsaveOriginalState() {\n\n\t\tconst binding = this.binding;\n\n\t\tconst buffer = this.buffer,\n\t\t\tstride = this.valueSize,\n\n\t\t\toriginalValueOffset = stride * this._origIndex;\n\n\t\tbinding.getValue( buffer, originalValueOffset );\n\n\t\t// accu[0..1] := orig -- initially detect changes against the original\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\n\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\n\n\t\t}\n\n\t\t// Add to identity for additive\n\t\tthis._setIdentity();\n\n\t\tthis.cumulativeWeight = 0;\n\t\tthis.cumulativeWeightAdditive = 0;\n\n\t}\n\n\t// apply the state previously taken via 'saveOriginalState' to the binding\n\trestoreOriginalState() {\n\n\t\tconst originalValueOffset = this.valueSize * 3;\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\n\n\t}\n\n\t_setAdditiveIdentityNumeric() {\n\n\t\tconst startIndex = this._addIndex * this.valueSize;\n\t\tconst endIndex = startIndex + this.valueSize;\n\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\n\n\t\t\tthis.buffer[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\t_setAdditiveIdentityQuaternion() {\n\n\t\tthis._setAdditiveIdentityNumeric();\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\n\n\t}\n\n\t_setAdditiveIdentityOther() {\n\n\t\tconst startIndex = this._origIndex * this.valueSize;\n\t\tconst targetIndex = this._addIndex * this.valueSize;\n\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\n\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\n\n\t\t}\n\n\t}\n\n\n\t// mix functions\n\n\t_select( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tif ( t >= 0.5 ) {\n\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_slerp( buffer, dstOffset, srcOffset, t ) {\n\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\n\n\t}\n\n\t_slerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst workOffset = this._workIndex * stride;\n\n\t\t// Store result in intermediate buffer offset\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\n\n\t\t// Slerp to the intermediate result\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\n\n\t}\n\n\t_lerp( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tconst s = 1 - t;\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n\t_lerpAdditive( buffer, dstOffset, srcOffset, t, stride ) {\n\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\n\n\t\t\tconst j = dstOffset + i;\n\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\n\n\t\t}\n\n\t}\n\n}\n\n// Characters [].:/ are reserved for track binding syntax.\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\n\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\n// only latin characters, and the unicode \\p{L} is not yet supported. So\n// instead, we exclude reserved characters and match everything else.\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\n\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\n// be matched to parse the rest of the track name.\nconst _directoryRe = /*@__PURE__*/ /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\n\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\nconst _nodeRe = /*@__PURE__*/ /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\n\n// Object on target node, and accessor. May not contain reserved\n// characters. Accessor may contain any character except closing bracket.\nconst _objectRe = /*@__PURE__*/ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\n\n// Property and accessor. May not contain reserved characters. Accessor may\n// contain any non-bracket characters.\nconst _propertyRe = /*@__PURE__*/ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\n\nconst _trackRe = new RegExp( ''\n\t+ '^'\n\t+ _directoryRe\n\t+ _nodeRe\n\t+ _objectRe\n\t+ _propertyRe\n\t+ '$'\n);\n\nconst _supportedObjectNames = [ 'material', 'materials', 'bones', 'map' ];\n\nclass Composite {\n\n\tconstructor( targetGroup, path, optionalParsedPath ) {\n\n\t\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis._targetGroup = targetGroup;\n\t\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\n\n\t}\n\n\tgetValue( array, offset ) {\n\n\t\tthis.bind(); // bind all binding\n\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\n\t\t\tbinding = this._bindings[ firstValidIndex ];\n\n\t\t// and only call .getValue on the first\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\n\n\t}\n\n\tsetValue( array, offset ) {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].setValue( array, offset );\n\n\t\t}\n\n\t}\n\n\tbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].bind();\n\n\t\t}\n\n\t}\n\n\tunbind() {\n\n\t\tconst bindings = this._bindings;\n\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tbindings[ i ].unbind();\n\n\t\t}\n\n\t}\n\n}\n\n// Note: This class uses a State pattern on a per-method basis:\n// 'bind' sets 'this.getValue' / 'setValue' and shadows the\n// prototype version of these methods with one that represents\n// the bound state. When the property is not found, the methods\n// become no-ops.\nclass PropertyBinding {\n\n\tconstructor( rootNode, path, parsedPath ) {\n\n\t\tthis.path = path;\n\t\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\n\n\t\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName );\n\n\t\tthis.rootNode = rootNode;\n\n\t\t// initial state of these methods that calls 'bind'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n\n\tstatic create( root, path, parsedPath ) {\n\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\n\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\n\n\t\t} else {\n\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Replaces spaces with underscores and removes unsupported characters from\n\t * node names, to ensure compatibility with parseTrackName().\n\t *\n\t * @param {string} name Node name to be sanitized.\n\t * @return {string}\n\t */\n\tstatic sanitizeNodeName( name ) {\n\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\n\n\t}\n\n\tstatic parseTrackName( trackName ) {\n\n\t\tconst matches = _trackRe.exec( trackName );\n\n\t\tif ( matches === null ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\n\n\t\t}\n\n\t\tconst results = {\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\n\t\t\tnodeName: matches[ 2 ],\n\t\t\tobjectName: matches[ 3 ],\n\t\t\tobjectIndex: matches[ 4 ],\n\t\t\tpropertyName: matches[ 5 ], // required\n\t\t\tpropertyIndex: matches[ 6 ]\n\t\t};\n\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\n\n\t\tif ( lastDot !== undefined && lastDot !== -1 ) {\n\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\n\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\n\t\t\t// include '.' characters).\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== -1 ) {\n\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\n\t\t\t\tresults.objectName = objectName;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\n\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\n\n\t\t}\n\n\t\treturn results;\n\n\t}\n\n\tstatic findNode( root, nodeName ) {\n\n\t\tif ( nodeName === undefined || nodeName === '' || nodeName === '.' || nodeName === -1 || nodeName === root.name || nodeName === root.uuid ) {\n\n\t\t\treturn root;\n\n\t\t}\n\n\t\t// search into skeleton bones.\n\t\tif ( root.skeleton ) {\n\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\n\n\t\t\tif ( bone !== undefined ) {\n\n\t\t\t\treturn bone;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// search into node subtree.\n\t\tif ( root.children ) {\n\n\t\t\tconst searchNodeSubtree = function ( children ) {\n\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\n\n\t\t\t\t\tconst childNode = children[ i ];\n\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\n\n\t\t\t\t\t\treturn childNode;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\n\n\t\t\t\t\tif ( result ) return result;\n\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\n\t\t\t};\n\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\n\n\t\t\tif ( subTreeNode ) {\n\n\t\t\t\treturn subTreeNode;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// these are used to \"bind\" a nonexistent property\n\t_getValue_unavailable() {}\n\t_setValue_unavailable() {}\n\n\t// Getters\n\n\t_getValue_direct( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.targetObject[ this.propertyName ];\n\n\t}\n\n\t_getValue_array( buffer, offset ) {\n\n\t\tconst source = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\n\n\t\t\tbuffer[ offset ++ ] = source[ i ];\n\n\t\t}\n\n\t}\n\n\t_getValue_arrayElement( buffer, offset ) {\n\n\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\n\n\t}\n\n\t_getValue_toArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.toArray( buffer, offset );\n\n\t}\n\n\t// Direct\n\n\t_setValue_direct( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_direct_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// EntireArray\n\n\t_setValue_array( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t}\n\n\t_setValue_array_setNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tconst dest = this.resolvedProperty;\n\n\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\n\n\t\t\tdest[ i ] = buffer[ offset ++ ];\n\n\t\t}\n\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// ArrayElement\n\n\t_setValue_arrayElement( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\n\t}\n\n\t_setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t// HasToFromArray\n\n\t_setValue_fromArray( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\n\t}\n\n\t_setValue_fromArray_setNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.needsUpdate = true;\n\n\t}\n\n\t_setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\n\n\t\tthis.resolvedProperty.fromArray( buffer, offset );\n\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\n\n\t}\n\n\t_getValue_unbound( targetArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.getValue( targetArray, offset );\n\n\t}\n\n\t_setValue_unbound( sourceArray, offset ) {\n\n\t\tthis.bind();\n\t\tthis.setValue( sourceArray, offset );\n\n\t}\n\n\t// create getter / setter pair for a property in the scene graph\n\tbind() {\n\n\t\tlet targetObject = this.node;\n\t\tconst parsedPath = this.parsedPath;\n\n\t\tconst objectName = parsedPath.objectName;\n\t\tconst propertyName = parsedPath.propertyName;\n\t\tlet propertyIndex = parsedPath.propertyIndex;\n\n\t\tif ( ! targetObject ) {\n\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName );\n\n\t\t\tthis.node = targetObject;\n\n\t\t}\n\n\t\t// set fail state so we can just 'return' on error\n\t\tthis.getValue = this._getValue_unavailable;\n\t\tthis.setValue = this._setValue_unavailable;\n\n\t\t// ensure there is a value node\n\t\tif ( ! targetObject ) {\n\n\t\t\tconsole.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( objectName ) {\n\n\t\t\tlet objectIndex = parsedPath.objectIndex;\n\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\n\t\t\tswitch ( objectName ) {\n\n\t\t\t\tcase 'materials':\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.materials;\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'bones':\n\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\n\t\t\t\t\t// and convert the integer string to a true integer.\n\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\n\n\t\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\n\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\n\n\t\t\t\t\t\t\tobjectIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'map':\n\n\t\t\t\t\tif ( 'map' in targetObject ) {\n\n\t\t\t\t\t\ttargetObject = targetObject.map;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! targetObject.material.map ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject.material.map;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\n\n\t\t\t}\n\n\n\t\t\tif ( objectIndex !== undefined ) {\n\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\n\n\t\t\t}\n\n\t\t}\n\n\t\t// resolve property\n\t\tconst nodeProperty = targetObject[ propertyName ];\n\n\t\tif ( nodeProperty === undefined ) {\n\n\t\t\tconst nodeName = parsedPath.nodeName;\n\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\n\t\t\treturn;\n\n\t\t}\n\n\t\t// determine versioning scheme\n\t\tlet versioning = this.Versioning.None;\n\n\t\tthis.targetObject = targetObject;\n\n\t\tif ( targetObject.isMaterial === true ) {\n\n\t\t\tversioning = this.Versioning.NeedsUpdate;\n\n\t\t} else if ( targetObject.isObject3D === true ) {\n\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\n\n\t\t}\n\n\t\t// determine how the property gets bound\n\t\tlet bindingType = this.BindingType.Direct;\n\n\t\tif ( propertyIndex !== undefined ) {\n\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\n\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\n\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\n\n\t\t\t\t// support resolving morphTarget names into indices.\n\t\t\t\tif ( ! targetObject.geometry ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\n\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\n\n\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tbindingType = this.BindingType.ArrayElement;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\t\t\tthis.propertyIndex = propertyIndex;\n\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\n\n\t\t\t// must use copy for Object3D.Euler/Quaternion\n\n\t\t\tbindingType = this.BindingType.HasFromToArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\n\n\t\t\tbindingType = this.BindingType.EntireArray;\n\n\t\t\tthis.resolvedProperty = nodeProperty;\n\n\t\t} else {\n\n\t\t\tthis.propertyName = propertyName;\n\n\t\t}\n\n\t\t// select getter / setter\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\n\n\t}\n\n\tunbind() {\n\n\t\tthis.node = null;\n\n\t\t// back to the prototype version of getValue / setValue\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\n\t\tthis.getValue = this._getValue_unbound;\n\t\tthis.setValue = this._setValue_unbound;\n\n\t}\n\n}\n\nPropertyBinding.Composite = Composite;\n\nPropertyBinding.prototype.BindingType = {\n\tDirect: 0,\n\tEntireArray: 1,\n\tArrayElement: 2,\n\tHasFromToArray: 3\n};\n\nPropertyBinding.prototype.Versioning = {\n\tNone: 0,\n\tNeedsUpdate: 1,\n\tMatrixWorldNeedsUpdate: 2\n};\n\nPropertyBinding.prototype.GetterByBindingType = [\n\n\tPropertyBinding.prototype._getValue_direct,\n\tPropertyBinding.prototype._getValue_array,\n\tPropertyBinding.prototype._getValue_arrayElement,\n\tPropertyBinding.prototype._getValue_toArray,\n\n];\n\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n\n\t[\n\t\t// Direct\n\t\tPropertyBinding.prototype._setValue_direct,\n\t\tPropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// EntireArray\n\n\t\tPropertyBinding.prototype._setValue_array,\n\t\tPropertyBinding.prototype._setValue_array_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// ArrayElement\n\t\tPropertyBinding.prototype._setValue_arrayElement,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate,\n\n\t], [\n\n\t\t// HasToFromArray\n\t\tPropertyBinding.prototype._setValue_fromArray,\n\t\tPropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n\t\tPropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate,\n\n\t]\n\n];\n\n/**\n *\n * A group of objects that receives a shared animation state.\n *\n * Usage:\n *\n *  - Add objects you would otherwise pass as 'root' to the\n *    constructor or the .clipAction method of AnimationMixer.\n *\n *  - Instead pass this object as 'root'.\n *\n *  - You can also add and remove objects later when the mixer\n *    is running.\n *\n * Note:\n *\n *    Objects of this class appear as one object to the mixer,\n *    so cache control of the individual objects must be done\n *    on the group.\n *\n * Limitation:\n *\n *  - The animated properties must be compatible among the\n *    all objects in the group.\n *\n *  - A single property can either be controlled through a\n *    target group or directly, but not both.\n */\n\nclass AnimationObjectGroup {\n\n\tconstructor() {\n\n\t\tthis.isAnimationObjectGroup = true;\n\n\t\tthis.uuid = generateUUID();\n\n\t\t// cached objects followed by the active ones\n\t\tthis._objects = Array.prototype.slice.call( arguments );\n\n\t\tthis.nCachedObjects_ = 0; // threshold\n\t\t// note: read by PropertyBinding.Composite\n\n\t\tconst indices = {};\n\t\tthis._indicesByUUID = indices; // for bookkeeping\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tindices[ arguments[ i ].uuid ] = i;\n\n\t\t}\n\n\t\tthis._paths = []; // inside: string\n\t\tthis._parsedPaths = []; // inside: { we don't care, here }\n\t\tthis._bindings = []; // inside: Array< PropertyBinding >\n\t\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tobjects: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._objects.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn this.total - scope.nCachedObjects_;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tget bindingsPerObject() {\n\n\t\t\t\treturn scope._bindings.length;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tadd() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tpaths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet knownObject = undefined,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid;\n\t\t\tlet index = indicesByUUID[ uuid ];\n\n\t\t\tif ( index === undefined ) {\n\n\t\t\t\t// unknown object -> add it to the ACTIVE region\n\n\t\t\t\tindex = nObjects ++;\n\t\t\t\tindicesByUUID[ uuid ] = index;\n\t\t\t\tobjects.push( object );\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\n\n\t\t\t\t}\n\n\t\t\t} else if ( index < nCachedObjects ) {\n\n\t\t\t\tknownObject = objects[ index ];\n\n\t\t\t\t// move existing object to the ACTIVE region\n\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\n\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\n\t\t\t\tobjects[ firstActiveIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\n\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\n\t\t\t\t\tif ( binding === undefined ) {\n\n\t\t\t\t\t\t// since we do not bother to create new bindings\n\t\t\t\t\t\t// for objects that are cached, the binding may\n\t\t\t\t\t\t// or may not exist\n\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\n\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\n\n\t\t\t} // else the object is already where we want it to be\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\tremove() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\n\n\t\t\t\t// move existing object into the CACHED region\n\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\n\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\n\t\t\t\tobjects[ index ] = firstActiveObject;\n\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\n\t\t\t\tobjects[ lastCachedIndex ] = object;\n\n\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\n\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// remove & forget\n\tuncache() {\n\n\t\tconst objects = this._objects,\n\t\t\tindicesByUUID = this._indicesByUUID,\n\t\t\tbindings = this._bindings,\n\t\t\tnBindings = bindings.length;\n\n\t\tlet nCachedObjects = this.nCachedObjects_,\n\t\t\tnObjects = objects.length;\n\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\n\n\t\t\tconst object = arguments[ i ],\n\t\t\t\tuuid = object.uuid,\n\t\t\t\tindex = indicesByUUID[ uuid ];\n\n\t\t\tif ( index !== undefined ) {\n\n\t\t\t\tdelete indicesByUUID[ uuid ];\n\n\t\t\t\tif ( index < nCachedObjects ) {\n\n\t\t\t\t\t// object is cached, shrink the CACHED region\n\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\n\t\t\t\t\t\tlastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\t// last cached object takes this object's place\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\n\n\t\t\t\t\t// last object goes to the activated slot and pop\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// object is active, just swap with the last and pop\n\n\t\t\t\t\tconst lastIndex = -- nObjects,\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\n\n\t\t\t\t\tif ( lastIndex > 0 ) {\n\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tobjects[ index ] = lastObject;\n\t\t\t\t\tobjects.pop();\n\n\t\t\t\t\t// accounting is done, now do the same for all bindings\n\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\n\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\n\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\n\t\t\t\t\t\tbindingsForPath.pop();\n\n\t\t\t\t\t}\n\n\t\t\t\t} // cached or active\n\n\t\t\t} // if object is known\n\n\t\t} // for arguments\n\n\t\tthis.nCachedObjects_ = nCachedObjects;\n\n\t}\n\n\t// Internal interface used by befriended PropertyBinding.Composite:\n\n\tsubscribe_( path, parsedPath ) {\n\n\t\t// returns an array of bindings for the given path that is changed\n\t\t// according to the contained objects in the group\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\n\t\tlet index = indicesByPath[ path ];\n\t\tconst bindings = this._bindings;\n\n\t\tif ( index !== undefined ) return bindings[ index ];\n\n\t\tconst paths = this._paths,\n\t\t\tparsedPaths = this._parsedPaths,\n\t\t\tobjects = this._objects,\n\t\t\tnObjects = objects.length,\n\t\t\tnCachedObjects = this.nCachedObjects_,\n\t\t\tbindingsForPath = new Array( nObjects );\n\n\t\tindex = bindings.length;\n\n\t\tindicesByPath[ path ] = index;\n\n\t\tpaths.push( path );\n\t\tparsedPaths.push( parsedPath );\n\t\tbindings.push( bindingsForPath );\n\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\n\n\t\t\tconst object = objects[ i ];\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\n\n\t\t}\n\n\t\treturn bindingsForPath;\n\n\t}\n\n\tunsubscribe_( path ) {\n\n\t\t// tells the group to forget about a property path and no longer\n\t\t// update the array previously obtained with 'subscribe_'\n\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\n\t\t\tindex = indicesByPath[ path ];\n\n\t\tif ( index !== undefined ) {\n\n\t\t\tconst paths = this._paths,\n\t\t\t\tparsedPaths = this._parsedPaths,\n\t\t\t\tbindings = this._bindings,\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\n\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\n\n\t\t\tbindings[ index ] = lastBindings;\n\t\t\tbindings.pop();\n\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\n\t\t\tparsedPaths.pop();\n\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\n\t\t\tpaths.pop();\n\n\t\t}\n\n\t}\n\n}\n\nclass AnimationAction {\n\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\n\n\t\tthis._mixer = mixer;\n\t\tthis._clip = clip;\n\t\tthis._localRoot = localRoot;\n\t\tthis.blendMode = blendMode;\n\n\t\tconst tracks = clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tinterpolants = new Array( nTracks );\n\n\t\tconst interpolantSettings = {\n\t\t\tendingStart: ZeroCurvatureEnding,\n\t\t\tendingEnd: ZeroCurvatureEnding\n\t\t};\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\n\t\t\tinterpolants[ i ] = interpolant;\n\t\t\tinterpolant.settings = interpolantSettings;\n\n\t\t}\n\n\t\tthis._interpolantSettings = interpolantSettings;\n\n\t\tthis._interpolants = interpolants; // bound by the mixer\n\n\t\t// inside: PropertyMixer (managed by the mixer)\n\t\tthis._propertyBindings = new Array( nTracks );\n\n\t\tthis._cacheIndex = null; // for the memory manager\n\t\tthis._byClipCacheIndex = null; // for the memory manager\n\n\t\tthis._timeScaleInterpolant = null;\n\t\tthis._weightInterpolant = null;\n\n\t\tthis.loop = LoopRepeat;\n\t\tthis._loopCount = -1;\n\n\t\t// global mixer time when the action is to be started\n\t\t// it's set back to 'null' upon start of the action\n\t\tthis._startTime = null;\n\n\t\t// scaled local time of the action\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\n\t\tthis.time = 0;\n\n\t\tthis.timeScale = 1;\n\t\tthis._effectiveTimeScale = 1;\n\n\t\tthis.weight = 1;\n\t\tthis._effectiveWeight = 1;\n\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\n\n\t\tthis.paused = false; // true -> zero effective time scale\n\t\tthis.enabled = true; // false -> zero effective weight\n\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\n\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\n\n\t}\n\n\t// State & Scheduling\n\n\tplay() {\n\n\t\tthis._mixer._activateAction( this );\n\n\t\treturn this;\n\n\t}\n\n\tstop() {\n\n\t\tthis._mixer._deactivateAction( this );\n\n\t\treturn this.reset();\n\n\t}\n\n\treset() {\n\n\t\tthis.paused = false;\n\t\tthis.enabled = true;\n\n\t\tthis.time = 0; // restart clip\n\t\tthis._loopCount = -1;// forget previous loops\n\t\tthis._startTime = null;// forget scheduling\n\n\t\treturn this.stopFading().stopWarping();\n\n\t}\n\n\tisRunning() {\n\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\n\n\t}\n\n\t// return true when play has been called\n\tisScheduled() {\n\n\t\treturn this._mixer._isActiveAction( this );\n\n\t}\n\n\tstartAt( time ) {\n\n\t\tthis._startTime = time;\n\n\t\treturn this;\n\n\t}\n\n\tsetLoop( mode, repetitions ) {\n\n\t\tthis.loop = mode;\n\t\tthis.repetitions = repetitions;\n\n\t\treturn this;\n\n\t}\n\n\t// Weight\n\n\t// set the weight stopping any scheduled fading\n\t// although .enabled = false yields an effective weight of zero, this\n\t// method does *not* change .enabled, because it would be confusing\n\tsetEffectiveWeight( weight ) {\n\n\t\tthis.weight = weight;\n\n\t\t// note: same logic as when updated at runtime\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\n\n\t\treturn this.stopFading();\n\n\t}\n\n\t// return the weight considering fading and .enabled\n\tgetEffectiveWeight() {\n\n\t\treturn this._effectiveWeight;\n\n\t}\n\n\tfadeIn( duration ) {\n\n\t\treturn this._scheduleFading( duration, 0, 1 );\n\n\t}\n\n\tfadeOut( duration ) {\n\n\t\treturn this._scheduleFading( duration, 1, 0 );\n\n\t}\n\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\n\n\t\tfadeOutAction.fadeOut( duration );\n\t\tthis.fadeIn( duration );\n\n\t\tif ( warp ) {\n\n\t\t\tconst fadeInDuration = this._clip.duration,\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\n\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\n\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tcrossFadeTo( fadeInAction, duration, warp ) {\n\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\n\n\t}\n\n\tstopFading() {\n\n\t\tconst weightInterpolant = this._weightInterpolant;\n\n\t\tif ( weightInterpolant !== null ) {\n\n\t\t\tthis._weightInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Time Scale Control\n\n\t// set the time scale stopping any scheduled warping\n\t// although .paused = true yields an effective time scale of zero, this\n\t// method does *not* change .paused, because it would be confusing\n\tsetEffectiveTimeScale( timeScale ) {\n\n\t\tthis.timeScale = timeScale;\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\t// return the time scale considering warping and .paused\n\tgetEffectiveTimeScale() {\n\n\t\treturn this._effectiveTimeScale;\n\n\t}\n\n\tsetDuration( duration ) {\n\n\t\tthis.timeScale = this._clip.duration / duration;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\tsyncWith( action ) {\n\n\t\tthis.time = action.time;\n\t\tthis.timeScale = action.timeScale;\n\n\t\treturn this.stopWarping();\n\n\t}\n\n\thalt( duration ) {\n\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\n\n\t}\n\n\twarp( startTimeScale, endTimeScale, duration ) {\n\n\t\tconst mixer = this._mixer,\n\t\t\tnow = mixer.time,\n\t\t\ttimeScale = this.timeScale;\n\n\t\tlet interpolant = this._timeScaleInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._timeScaleInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\ttimes[ 1 ] = now + duration;\n\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\n\n\t\treturn this;\n\n\t}\n\n\tstopWarping() {\n\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\n\n\t\tif ( timeScaleInterpolant !== null ) {\n\n\t\t\tthis._timeScaleInterpolant = null;\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Object Accessors\n\n\tgetMixer() {\n\n\t\treturn this._mixer;\n\n\t}\n\n\tgetClip() {\n\n\t\treturn this._clip;\n\n\t}\n\n\tgetRoot() {\n\n\t\treturn this._localRoot || this._mixer._root;\n\n\t}\n\n\t// Interna\n\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\n\n\t\t// called by the mixer\n\n\t\tif ( ! this.enabled ) {\n\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\n\n\t\t\tthis._updateWeight( time );\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst startTime = this._startTime;\n\n\t\tif ( startTime !== null ) {\n\n\t\t\t// check for scheduled start of action\n\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\n\n\t\t\t\tdeltaTime = 0;\n\n\t\t\t} else {\n\n\n\t\t\t\tthis._startTime = null; // unschedule\n\t\t\t\tdeltaTime = timeDirection * timeRunning;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// apply time scale and advance time\n\n\t\tdeltaTime *= this._updateTimeScale( time );\n\t\tconst clipTime = this._updateTime( deltaTime );\n\n\t\t// note: _updateTime may disable the action resulting in\n\t\t// an effective weight of 0\n\n\t\tconst weight = this._updateWeight( time );\n\n\t\tif ( weight > 0 ) {\n\n\t\t\tconst interpolants = this._interpolants;\n\t\t\tconst propertyMixers = this._propertyBindings;\n\n\t\t\tswitch ( this.blendMode ) {\n\n\t\t\t\tcase AdditiveAnimationBlendMode:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase NormalAnimationBlendMode:\n\t\t\t\tdefault:\n\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\n\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\n\n\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_updateWeight( time ) {\n\n\t\tlet weight = 0;\n\n\t\tif ( this.enabled ) {\n\n\t\t\tweight = this.weight;\n\t\t\tconst interpolant = this._weightInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\tweight *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopFading();\n\n\t\t\t\t\tif ( interpolantValue === 0 ) {\n\n\t\t\t\t\t\t// faded out, disable\n\t\t\t\t\t\tthis.enabled = false;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveWeight = weight;\n\t\treturn weight;\n\n\t}\n\n\t_updateTimeScale( time ) {\n\n\t\tlet timeScale = 0;\n\n\t\tif ( ! this.paused ) {\n\n\t\t\ttimeScale = this.timeScale;\n\n\t\t\tconst interpolant = this._timeScaleInterpolant;\n\n\t\t\tif ( interpolant !== null ) {\n\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\n\n\t\t\t\ttimeScale *= interpolantValue;\n\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\n\n\t\t\t\t\tthis.stopWarping();\n\n\t\t\t\t\tif ( timeScale === 0 ) {\n\n\t\t\t\t\t\t// motion has halted, pause\n\t\t\t\t\t\tthis.paused = true;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// warp done - apply final time scale\n\t\t\t\t\t\tthis.timeScale = timeScale;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis._effectiveTimeScale = timeScale;\n\t\treturn timeScale;\n\n\t}\n\n\t_updateTime( deltaTime ) {\n\n\t\tconst duration = this._clip.duration;\n\t\tconst loop = this.loop;\n\n\t\tlet time = this.time + deltaTime;\n\t\tlet loopCount = this._loopCount;\n\n\t\tconst pingPong = ( loop === LoopPingPong );\n\n\t\tif ( deltaTime === 0 ) {\n\n\t\t\tif ( loopCount === -1 ) return time;\n\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\n\n\t\t}\n\n\t\tif ( loop === LoopOnce ) {\n\n\t\t\tif ( loopCount === -1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tthis._loopCount = 0;\n\t\t\t\tthis._setEndings( true, true, false );\n\n\t\t\t}\n\n\t\t\thandle_stop: {\n\n\t\t\t\tif ( time >= duration ) {\n\n\t\t\t\t\ttime = duration;\n\n\t\t\t\t} else if ( time < 0 ) {\n\n\t\t\t\t\ttime = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tbreak handle_stop;\n\n\t\t\t\t}\n\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\telse this.enabled = false;\n\n\t\t\t\tthis.time = time;\n\n\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\tdirection: deltaTime < 0 ? -1 : 1\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t} else { // repetitive Repeat or PingPong\n\n\t\t\tif ( loopCount === -1 ) {\n\n\t\t\t\t// just started\n\n\t\t\t\tif ( deltaTime >= 0 ) {\n\n\t\t\t\t\tloopCount = 0;\n\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// when looping in reverse direction, the initial\n\t\t\t\t\t// transition through zero counts as a repetition,\n\t\t\t\t\t// so leave loopCount at -1\n\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( time >= duration || time < 0 ) {\n\n\t\t\t\t// wrap around\n\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\n\t\t\t\ttime -= duration * loopDelta;\n\n\t\t\t\tloopCount += Math.abs( loopDelta );\n\n\t\t\t\tconst pending = this.repetitions - loopCount;\n\n\t\t\t\tif ( pending <= 0 ) {\n\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\n\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\n\t\t\t\t\telse this.enabled = false;\n\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'finished', action: this,\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : -1\n\t\t\t\t\t} );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// keep running\n\n\t\t\t\t\tif ( pending === 1 ) {\n\n\t\t\t\t\t\t// entering the last round\n\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._loopCount = loopCount;\n\n\t\t\t\t\tthis.time = time;\n\n\t\t\t\t\tthis._mixer.dispatchEvent( {\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\n\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tthis.time = time;\n\n\t\t\t}\n\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\n\n\t\t\t\t// invert time for the \"pong round\"\n\n\t\t\t\treturn duration - time;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn time;\n\n\t}\n\n\t_setEndings( atStart, atEnd, pingPong ) {\n\n\t\tconst settings = this._interpolantSettings;\n\n\t\tif ( pingPong ) {\n\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\n\n\t\t} else {\n\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\n\n\t\t\tif ( atStart ) {\n\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t\tif ( atEnd ) {\n\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n\n\t\t\t} else {\n\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_scheduleFading( duration, weightNow, weightThen ) {\n\n\t\tconst mixer = this._mixer, now = mixer.time;\n\t\tlet interpolant = this._weightInterpolant;\n\n\t\tif ( interpolant === null ) {\n\n\t\t\tinterpolant = mixer._lendControlInterpolant();\n\t\t\tthis._weightInterpolant = interpolant;\n\n\t\t}\n\n\t\tconst times = interpolant.parameterPositions,\n\t\t\tvalues = interpolant.sampleValues;\n\n\t\ttimes[ 0 ] = now;\n\t\tvalues[ 0 ] = weightNow;\n\t\ttimes[ 1 ] = now + duration;\n\t\tvalues[ 1 ] = weightThen;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _controlInterpolantsResultBuffer = new Float32Array( 1 );\n\n\nclass AnimationMixer extends EventDispatcher {\n\n\tconstructor( root ) {\n\n\t\tsuper();\n\n\t\tthis._root = root;\n\t\tthis._initMemoryManager();\n\t\tthis._accuIndex = 0;\n\t\tthis.time = 0;\n\t\tthis.timeScale = 1.0;\n\n\t}\n\n\t_bindAction( action, prototypeAction ) {\n\n\t\tconst root = action._localRoot || this._root,\n\t\t\ttracks = action._clip.tracks,\n\t\t\tnTracks = tracks.length,\n\t\t\tbindings = action._propertyBindings,\n\t\t\tinterpolants = action._interpolants,\n\t\t\trootUuid = root.uuid,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\n\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingsByName === undefined ) {\n\n\t\t\tbindingsByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\n\n\t\t}\n\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\n\n\t\t\tconst track = tracks[ i ],\n\t\t\t\ttrackName = track.name;\n\n\t\t\tlet binding = bindingsByName[ trackName ];\n\n\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t} else {\n\n\t\t\t\tbinding = bindings[ i ];\n\n\t\t\t\tif ( binding !== undefined ) {\n\n\t\t\t\t\t// existing binding, make sure the cache knows\n\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\n\n\t\t\t\t\t\t++ binding.referenceCount;\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcontinue;\n\n\t\t\t\t}\n\n\t\t\t\tconst path = prototypeAction && prototypeAction.\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\n\n\t\t\t\tbinding = new PropertyMixer(\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\n\n\t\t\t\t++ binding.referenceCount;\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\n\n\t\t\t\tbindings[ i ] = binding;\n\n\t\t\t}\n\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\n\n\t\t}\n\n\t}\n\n\t_activateAction( action ) {\n\n\t\tif ( ! this._isActiveAction( action ) ) {\n\n\t\t\tif ( action._cacheIndex === null ) {\n\n\t\t\t\t// this action has been forgotten by the cache, but the user\n\t\t\t\t// appears to be still using it -> rebind\n\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\n\t\t\t\t\tclipUuid = action._clip.uuid,\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\t\t\tthis._bindAction( action,\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\n\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\n\n\t\t\t}\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// increment reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\n\n\t\t\t\t\tthis._lendBinding( binding );\n\t\t\t\t\tbinding.saveOriginalState();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._lendAction( action );\n\n\t\t}\n\n\t}\n\n\t_deactivateAction( action ) {\n\n\t\tif ( this._isActiveAction( action ) ) {\n\n\t\t\tconst bindings = action._propertyBindings;\n\n\t\t\t// decrement reference counts / sort out state\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\t\tconst binding = bindings[ i ];\n\n\t\t\t\tif ( -- binding.useCount === 0 ) {\n\n\t\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\t\tthis._takeBackBinding( binding );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tthis._takeBackAction( action );\n\n\t\t}\n\n\t}\n\n\t// Memory manager\n\n\t_initMemoryManager() {\n\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\n\t\tthis._nActiveActions = 0;\n\n\t\tthis._actionsByClip = {};\n\t\t// inside:\n\t\t// {\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\n\t\t// \tactionByRoot: AnimationAction - lookup\n\t\t// }\n\n\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\n\t\tthis._nActiveBindings = 0;\n\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\n\n\n\t\tthis._controlInterpolants = []; // same game as above\n\t\tthis._nActiveControlInterpolants = 0;\n\n\t\tconst scope = this;\n\n\t\tthis.stats = {\n\n\t\t\tactions: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._actions.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveActions;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tbindings: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._bindings.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveBindings;\n\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontrolInterpolants: {\n\t\t\t\tget total() {\n\n\t\t\t\t\treturn scope._controlInterpolants.length;\n\n\t\t\t\t},\n\t\t\t\tget inUse() {\n\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t// Memory management for AnimationAction objects\n\n\t_isActiveAction( action ) {\n\n\t\tconst index = action._cacheIndex;\n\t\treturn index !== null && index < this._nActiveActions;\n\n\t}\n\n\t_addInactiveAction( action, clipUuid, rootUuid ) {\n\n\t\tconst actions = this._actions,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip === undefined ) {\n\n\t\t\tactionsForClip = {\n\n\t\t\t\tknownActions: [ action ],\n\t\t\t\tactionByRoot: {}\n\n\t\t\t};\n\n\t\t\taction._byClipCacheIndex = 0;\n\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\n\n\t\t} else {\n\n\t\t\tconst knownActions = actionsForClip.knownActions;\n\n\t\t\taction._byClipCacheIndex = knownActions.length;\n\t\t\tknownActions.push( action );\n\n\t\t}\n\n\t\taction._cacheIndex = actions.length;\n\t\tactions.push( action );\n\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\n\n\t}\n\n\t_removeInactiveAction( action ) {\n\n\t\tconst actions = this._actions,\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\n\t\t\tcacheIndex = action._cacheIndex;\n\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\tactions.pop();\n\n\t\taction._cacheIndex = null;\n\n\n\t\tconst clipUuid = action._clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\n\n\t\t\tlastKnownAction =\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\n\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\n\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\n\t\tknownActionsForClip.pop();\n\n\t\taction._byClipCacheIndex = null;\n\n\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\n\n\t\tdelete actionByRoot[ rootUuid ];\n\n\t\tif ( knownActionsForClip.length === 0 ) {\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t\tthis._removeInactiveBindingsForAction( action );\n\n\t}\n\n\t_removeInactiveBindingsForAction( action ) {\n\n\t\tconst bindings = action._propertyBindings;\n\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\n\n\t\t\tconst binding = bindings[ i ];\n\n\t\t\tif ( -- binding.referenceCount === 0 ) {\n\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t_lendAction( action ) {\n\n\t\t// [ active actions |  inactive actions  ]\n\t\t// [  active actions >| inactive actions ]\n\t\t//                 s        a\n\t\t//                  <-swap->\n\t\t//                 a        s\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveActions ++,\n\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\n\n\t\taction._cacheIndex = lastActiveIndex;\n\t\tactions[ lastActiveIndex ] = action;\n\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = firstInactiveAction;\n\n\t}\n\n\t_takeBackAction( action ) {\n\n\t\t// [  active actions  | inactive actions ]\n\t\t// [ active actions |< inactive actions  ]\n\t\t//        a        s\n\t\t//         <-swap->\n\t\t//        s        a\n\n\t\tconst actions = this._actions,\n\t\t\tprevIndex = action._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\n\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\n\n\t\taction._cacheIndex = firstInactiveIndex;\n\t\tactions[ firstInactiveIndex ] = action;\n\n\t\tlastActiveAction._cacheIndex = prevIndex;\n\t\tactions[ prevIndex ] = lastActiveAction;\n\n\t}\n\n\t// Memory management for PropertyMixer objects\n\n\t_addInactiveBinding( binding, rootUuid, trackName ) {\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindings = this._bindings;\n\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName === undefined ) {\n\n\t\t\tbindingByName = {};\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\n\n\t\t}\n\n\t\tbindingByName[ trackName ] = binding;\n\n\t\tbinding._cacheIndex = bindings.length;\n\t\tbindings.push( binding );\n\n\t}\n\n\t_removeInactiveBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tpropBinding = binding.binding,\n\t\t\trootUuid = propBinding.rootNode.uuid,\n\t\t\ttrackName = propBinding.path,\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\n\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\n\t\t\tcacheIndex = binding._cacheIndex;\n\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\n\t\tbindings.pop();\n\n\t\tdelete bindingByName[ trackName ];\n\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\n\n\t\t\tdelete bindingsByRoot[ rootUuid ];\n\n\t\t}\n\n\t}\n\n\t_lendBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\n\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\n\n\t\tbinding._cacheIndex = lastActiveIndex;\n\t\tbindings[ lastActiveIndex ] = binding;\n\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\n\n\t}\n\n\t_takeBackBinding( binding ) {\n\n\t\tconst bindings = this._bindings,\n\t\t\tprevIndex = binding._cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\n\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\n\n\t\tbinding._cacheIndex = firstInactiveIndex;\n\t\tbindings[ firstInactiveIndex ] = binding;\n\n\t\tlastActiveBinding._cacheIndex = prevIndex;\n\t\tbindings[ prevIndex ] = lastActiveBinding;\n\n\t}\n\n\n\t// Memory management of Interpolants for weight and time scale\n\n\t_lendControlInterpolant() {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\n\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\n\n\t\tif ( interpolant === undefined ) {\n\n\t\t\tinterpolant = new LinearInterpolant(\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\n\t\t\t\t1, _controlInterpolantsResultBuffer );\n\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\n\n\t\t}\n\n\t\treturn interpolant;\n\n\t}\n\n\t_takeBackControlInterpolant( interpolant ) {\n\n\t\tconst interpolants = this._controlInterpolants,\n\t\t\tprevIndex = interpolant.__cacheIndex,\n\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\n\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\n\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\n\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\n\n\t}\n\n\t// return an action for a clip optionally using a custom root target\n\t// object (this method allocates a lot of dynamic memory in case a\n\t// previously unknown clip/root combination is specified)\n\tclipAction( clip, optionalRoot, blendMode ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid;\n\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\n\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\n\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\n\t\tlet prototypeAction = null;\n\n\t\tif ( blendMode === undefined ) {\n\n\t\t\tif ( clipObject !== null ) {\n\n\t\t\t\tblendMode = clipObject.blendMode;\n\n\t\t\t} else {\n\n\t\t\t\tblendMode = NormalAnimationBlendMode;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\n\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\n\n\t\t\t\treturn existingAction;\n\n\t\t\t}\n\n\t\t\t// we know the clip, so we don't have to parse all\n\t\t\t// the bindings again but can just copy\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\n\n\t\t\t// also, take the clip from the prototype action\n\t\t\tif ( clipObject === null )\n\t\t\t\tclipObject = prototypeAction._clip;\n\n\t\t}\n\n\t\t// clip must be known when specified via string\n\t\tif ( clipObject === null ) return null;\n\n\t\t// allocate all resources required to run it\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\n\n\t\tthis._bindAction( newAction, prototypeAction );\n\n\t\t// and make the action known to the memory manager\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\n\n\t\treturn newAction;\n\n\t}\n\n\t// get an existing action\n\texistingAction( clip, optionalRoot ) {\n\n\t\tconst root = optionalRoot || this._root,\n\t\t\trootUuid = root.uuid,\n\n\t\t\tclipObject = typeof clip === 'string' ?\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\n\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\n\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\n\n\t\t}\n\n\t\treturn null;\n\n\t}\n\n\t// deactivates all previously scheduled actions\n\tstopAllAction() {\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions;\n\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\n\n\t\t\tactions[ i ].stop();\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// advance the time and update apply the animation\n\tupdate( deltaTime ) {\n\n\t\tdeltaTime *= this.timeScale;\n\n\t\tconst actions = this._actions,\n\t\t\tnActions = this._nActiveActions,\n\n\t\t\ttime = this.time += deltaTime,\n\t\t\ttimeDirection = Math.sign( deltaTime ),\n\n\t\t\taccuIndex = this._accuIndex ^= 1;\n\n\t\t// run active actions\n\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\n\n\t\t\tconst action = actions[ i ];\n\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\n\n\t\t}\n\n\t\t// update scene graph\n\n\t\tconst bindings = this._bindings,\n\t\t\tnBindings = this._nActiveBindings;\n\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\n\n\t\t\tbindings[ i ].apply( accuIndex );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t// Allows you to seek to a specific time in an animation.\n\tsetTime( timeInSeconds ) {\n\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\n\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\n\n\t\t}\n\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\n\n\t}\n\n\t// return this mixer's root target object\n\tgetRoot() {\n\n\t\treturn this._root;\n\n\t}\n\n\t// free all resources specific to a particular clip\n\tuncacheClip( clip ) {\n\n\t\tconst actions = this._actions,\n\t\t\tclipUuid = clip.uuid,\n\t\t\tactionsByClip = this._actionsByClip,\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\n\n\t\tif ( actionsForClip !== undefined ) {\n\n\t\t\t// note: just calling _removeInactiveAction would mess up the\n\t\t\t// iteration state and also require updating the state we can\n\t\t\t// just throw away\n\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\n\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\n\n\t\t\t\tconst action = actionsToRemove[ i ];\n\n\t\t\t\tthis._deactivateAction( action );\n\n\t\t\t\tconst cacheIndex = action._cacheIndex,\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\n\n\t\t\t\taction._cacheIndex = null;\n\t\t\t\taction._byClipCacheIndex = null;\n\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\n\t\t\t\tactions.pop();\n\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\n\n\t\t\t}\n\n\t\t\tdelete actionsByClip[ clipUuid ];\n\n\t\t}\n\n\t}\n\n\t// free all resources specific to a particular root target object\n\tuncacheRoot( root ) {\n\n\t\tconst rootUuid = root.uuid,\n\t\t\tactionsByClip = this._actionsByClip;\n\n\t\tfor ( const clipUuid in actionsByClip ) {\n\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\n\t\t\t\taction = actionByRoot[ rootUuid ];\n\n\t\t\tif ( action !== undefined ) {\n\n\t\t\t\tthis._deactivateAction( action );\n\t\t\t\tthis._removeInactiveAction( action );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\n\n\t\tif ( bindingByName !== undefined ) {\n\n\t\t\tfor ( const trackName in bindingByName ) {\n\n\t\t\t\tconst binding = bindingByName[ trackName ];\n\t\t\t\tbinding.restoreOriginalState();\n\t\t\t\tthis._removeInactiveBinding( binding );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t// remove a targeted clip from the cache\n\tuncacheAction( clip, optionalRoot ) {\n\n\t\tconst action = this.existingAction( clip, optionalRoot );\n\n\t\tif ( action !== null ) {\n\n\t\t\tthis._deactivateAction( action );\n\t\t\tthis._removeInactiveAction( action );\n\n\t\t}\n\n\t}\n\n}\n\nclass RenderTarget3D extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isRenderTarget3D = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new Data3DTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass RenderTargetArray extends RenderTarget {\n\n\tconstructor( width = 1, height = 1, depth = 1, options = {} ) {\n\n\t\tsuper( width, height, options );\n\n\t\tthis.isRenderTargetArray = true;\n\n\t\tthis.depth = depth;\n\n\t\tthis.texture = new DataArrayTexture( null, width, height, depth );\n\n\t\tthis.texture.isRenderTargetTexture = true;\n\n\t}\n\n}\n\nclass Uniform {\n\n\tconstructor( value ) {\n\n\t\tthis.value = value;\n\n\t}\n\n\tclone() {\n\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\n\n\t}\n\n}\n\nlet _id = 0;\n\nclass UniformsGroup extends EventDispatcher {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.isUniformsGroup = true;\n\n\t\tObject.defineProperty( this, 'id', { value: _id ++ } );\n\n\t\tthis.name = '';\n\n\t\tthis.usage = StaticDrawUsage;\n\t\tthis.uniforms = [];\n\n\t}\n\n\tadd( uniform ) {\n\n\t\tthis.uniforms.push( uniform );\n\n\t\treturn this;\n\n\t}\n\n\tremove( uniform ) {\n\n\t\tconst index = this.uniforms.indexOf( uniform );\n\n\t\tif ( index !== -1 ) this.uniforms.splice( index, 1 );\n\n\t\treturn this;\n\n\t}\n\n\tsetName( name ) {\n\n\t\tthis.name = name;\n\n\t\treturn this;\n\n\t}\n\n\tsetUsage( value ) {\n\n\t\tthis.usage = value;\n\n\t\treturn this;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.dispatchEvent( { type: 'dispose' } );\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tthis.name = source.name;\n\t\tthis.usage = source.usage;\n\n\t\tconst uniformsSource = source.uniforms;\n\n\t\tthis.uniforms.length = 0;\n\n\t\tfor ( let i = 0, l = uniformsSource.length; i < l; i ++ ) {\n\n\t\t\tconst uniforms = Array.isArray( uniformsSource[ i ] ) ? uniformsSource[ i ] : [ uniformsSource[ i ] ];\n\n\t\t\tfor ( let j = 0; j < uniforms.length; j ++ ) {\n\n\t\t\t\tthis.uniforms.push( uniforms[ j ].clone() );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n\n\tconstructor( array, stride, meshPerAttribute = 1 ) {\n\n\t\tsuper( array, stride );\n\n\t\tthis.isInstancedInterleavedBuffer = true;\n\n\t\tthis.meshPerAttribute = meshPerAttribute;\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source );\n\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\n\n\t\treturn this;\n\n\t}\n\n\tclone( data ) {\n\n\t\tconst ib = super.clone( data );\n\n\t\tib.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn ib;\n\n\t}\n\n\ttoJSON( data ) {\n\n\t\tconst json = super.toJSON( data );\n\n\t\tjson.isInstancedInterleavedBuffer = true;\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\n\n\t\treturn json;\n\n\t}\n\n}\n\nclass GLBufferAttribute {\n\n\tconstructor( buffer, type, itemSize, elementSize, count ) {\n\n\t\tthis.isGLBufferAttribute = true;\n\n\t\tthis.name = '';\n\n\t\tthis.buffer = buffer;\n\t\tthis.type = type;\n\t\tthis.itemSize = itemSize;\n\t\tthis.elementSize = elementSize;\n\t\tthis.count = count;\n\n\t\tthis.version = 0;\n\n\t}\n\n\tset needsUpdate( value ) {\n\n\t\tif ( value === true ) this.version ++;\n\n\t}\n\n\tsetBuffer( buffer ) {\n\n\t\tthis.buffer = buffer;\n\n\t\treturn this;\n\n\t}\n\n\tsetType( type, elementSize ) {\n\n\t\tthis.type = type;\n\t\tthis.elementSize = elementSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetItemSize( itemSize ) {\n\n\t\tthis.itemSize = itemSize;\n\n\t\treturn this;\n\n\t}\n\n\tsetCount( count ) {\n\n\t\tthis.count = count;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _matrix = /*@__PURE__*/ new Matrix4();\n\nclass Raycaster {\n\n\tconstructor( origin, direction, near = 0, far = Infinity ) {\n\n\t\tthis.ray = new Ray( origin, direction );\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.near = near;\n\t\tthis.far = far;\n\t\tthis.camera = null;\n\t\tthis.layers = new Layers();\n\n\t\tthis.params = {\n\t\t\tMesh: {},\n\t\t\tLine: { threshold: 1 },\n\t\t\tLOD: {},\n\t\t\tPoints: { threshold: 1 },\n\t\t\tSprite: {}\n\t\t};\n\n\t}\n\n\tset( origin, direction ) {\n\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\n\n\t\tthis.ray.set( origin, direction );\n\n\t}\n\n\tsetFromCamera( coords, camera ) {\n\n\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\n\t\t\tthis.camera = camera;\n\n\t\t} else if ( camera.isOrthographicCamera ) {\n\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\n\t\t\tthis.ray.direction.set( 0, 0, -1 ).transformDirection( camera.matrixWorld );\n\t\t\tthis.camera = camera;\n\n\t\t} else {\n\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\n\n\t\t}\n\n\t}\n\n\tsetFromXRController( controller ) {\n\n\t\t_matrix.identity().extractRotation( controller.matrixWorld );\n\n\t\tthis.ray.origin.setFromMatrixPosition( controller.matrixWorld );\n\t\tthis.ray.direction.set( 0, 0, -1 ).applyMatrix4( _matrix );\n\n\t\treturn this;\n\n\t}\n\n\tintersectObject( object, recursive = true, intersects = [] ) {\n\n\t\tintersect( object, this, intersects, recursive );\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n\tintersectObjects( objects, recursive = true, intersects = [] ) {\n\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\n\n\t\t\tintersect( objects[ i ], this, intersects, recursive );\n\n\t\t}\n\n\t\tintersects.sort( ascSort );\n\n\t\treturn intersects;\n\n\t}\n\n}\n\nfunction ascSort( a, b ) {\n\n\treturn a.distance - b.distance;\n\n}\n\nfunction intersect( object, raycaster, intersects, recursive ) {\n\n\tlet propagate = true;\n\n\tif ( object.layers.test( raycaster.layers ) ) {\n\n\t\tconst result = object.raycast( raycaster, intersects );\n\n\t\tif ( result === false ) propagate = false;\n\n\t}\n\n\tif ( propagate === true && recursive === true ) {\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\tintersect( children[ i ], raycaster, intersects, true );\n\n\t\t}\n\n\t}\n\n}\n\n/**\n * This class can be used to represent points in 3D space as\n * [Spherical coordinates]{@link https://en.wikipedia.org/wiki/Spherical_coordinate_system}.\n */\nclass Spherical {\n\n\t/**\n\t * Constructs a new spherical.\n\t *\n\t * @param {number} [radius=1] - The radius, or the Euclidean distance (straight-line distance) from the point to the origin.\n\t * @param {number} [phi=0] - The polar angle in radians from the y (up) axis.\n\t * @param {number} [theta=0] - The equator/azimuthal angle in radians around the y (up) axis.\n\t */\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\n\n\t\t/**\n\t\t * The radius, or the Euclidean distance (straight-line distance) from the point to the origin.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = radius;\n\n\t\t/**\n\t\t * The polar angle in radians from the y (up) axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.phi = phi;\n\n\t\t/**\n\t\t * The equator/azimuthal angle in radians around the y (up) axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.theta = theta;\n\n\t}\n\n\t/**\n\t * Sets the spherical components by copying the given values.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} phi - The polar angle.\n\t * @param {number} theta - The azimuthal angle.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tset( radius, phi, theta ) {\n\n\t\tthis.radius = radius;\n\t\tthis.phi = phi;\n\t\tthis.theta = theta;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given spherical to this instance.\n\t *\n\t * @param {Spherical} other - The spherical to copy.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.phi = other.phi;\n\t\tthis.theta = other.theta;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Restricts the polar angle [page:.phi phi] to be between `0.000001` and pi -\n\t * `0.000001`.\n\t *\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tmakeSafe() {\n\n\t\tconst EPS = 0.000001;\n\t\tthis.phi = clamp( this.phi, EPS, Math.PI - EPS );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the spherical components from the given vector which is assumed to hold\n\t * Cartesian coordinates.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\t/**\n\t * Sets the spherical components from the given Cartesian coordinates.\n\t *\n\t * @param {number} x - The x value.\n\t * @param {number} y - The x value.\n\t * @param {number} z - The x value.\n\t * @return {Spherical} A reference to this spherical.\n\t */\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\n\n\t\tif ( this.radius === 0 ) {\n\n\t\t\tthis.theta = 0;\n\t\t\tthis.phi = 0;\n\n\t\t} else {\n\n\t\t\tthis.theta = Math.atan2( x, z );\n\t\t\tthis.phi = Math.acos( clamp( y / this.radius, -1, 1 ) );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new spherical with copied values from this instance.\n\t *\n\t * @return {Spherical} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * This class can be used to represent points in 3D space as\n * [Cylindrical coordinates]{@link https://en.wikipedia.org/wiki/Cylindrical_coordinate_system}.\n */\nclass Cylindrical {\n\n\t/**\n\t * Constructs a new cylindrical.\n\t *\n\t * @param {number} [radius=1] - The distance from the origin to a point in the x-z plane.\n\t * @param {number} [theta=0] - A counterclockwise angle in the x-z plane measured in radians from the positive z-axis.\n\t * @param {number} [y=0] - The height above the x-z plane.\n\t */\n\tconstructor( radius = 1, theta = 0, y = 0 ) {\n\n\t\t/**\n\t\t * The distance from the origin to a point in the x-z plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.radius = radius;\n\n\t\t/**\n\t\t * A counterclockwise angle in the x-z plane measured in radians from the positive z-axis.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.theta = theta;\n\n\t\t/**\n\t\t * The height above the x-z plane.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 0\n\t\t */\n\t\tthis.y = y;\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components by copying the given values.\n\t *\n\t * @param {number} radius - The radius.\n\t * @param {number} theta - The theta angle.\n\t * @param {number} y - The height value.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tset( radius, theta, y ) {\n\n\t\tthis.radius = radius;\n\t\tthis.theta = theta;\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given cylindrical to this instance.\n\t *\n\t * @param {Cylindrical} other - The cylindrical to copy.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tcopy( other ) {\n\n\t\tthis.radius = other.radius;\n\t\tthis.theta = other.theta;\n\t\tthis.y = other.y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components from the given vector which is assumed to hold\n\t * Cartesian coordinates.\n\t *\n\t * @param {Vector3} v - The vector to set.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tsetFromVector3( v ) {\n\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\n\n\t}\n\n\t/**\n\t * Sets the cylindrical components from the given Cartesian coordinates.\n\t *\n\t * @param {number} x - The x value.\n\t * @param {number} y - The x value.\n\t * @param {number} z - The x value.\n\t * @return {Cylindrical} A reference to this cylindrical.\n\t */\n\tsetFromCartesianCoords( x, y, z ) {\n\n\t\tthis.radius = Math.sqrt( x * x + z * z );\n\t\tthis.theta = Math.atan2( x, z );\n\t\tthis.y = y;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new cylindrical with copied values from this instance.\n\t *\n\t * @return {Cylindrical} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\n/**\n * Represents a 2x2 matrix.\n *\n * A Note on Row-Major and Column-Major Ordering:\n *\n * The constructor and {@link Matrix2#set} method take arguments in\n * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}\n * order, while internally they are stored in the {@link Matrix2#elements} array in column-major order.\n * This means that calling:\n * ```js\n * const m = new THREE.Matrix2();\n * m.set( 11, 12,\n *        21, 22 );\n * ```\n * will result in the elements array containing:\n * ```js\n * m.elements = [ 11, 21,\n *                12, 22 ];\n * ```\n * and internally all calculations are performed using column-major ordering.\n * However, as the actual ordering makes no difference mathematically and\n * most people are used to thinking about matrices in row-major order, the\n * three.js documentation shows matrices in row-major order. Just bear in\n * mind that if you are reading the source code, you'll have to take the\n * transpose of any matrices outlined here to make sense of the calculations.\n */\nclass Matrix2 {\n\n\t/**\n\t * Constructs a new 2x2 matrix. The arguments are supposed to be\n\t * in row-major order. If no arguments are provided, the constructor\n\t * initializes the matrix as an identity matrix.\n\t *\n\t * @param {number} [n11] - 1-1 matrix element.\n\t * @param {number} [n12] - 1-2 matrix element.\n\t * @param {number} [n21] - 2-1 matrix element.\n\t * @param {number} [n22] - 2-2 matrix element.\n\t */\n\tconstructor( n11, n12, n21, n22 ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tMatrix2.prototype.isMatrix2 = true;\n\n\t\t/**\n\t\t * A column-major list of matrix values.\n\t\t *\n\t\t * @type {Array<number>}\n\t\t */\n\t\tthis.elements = [\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t];\n\n\t\tif ( n11 !== undefined ) {\n\n\t\t\tthis.set( n11, n12, n21, n22 );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets this matrix to the 2x2 identity matrix.\n\t *\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tidentity() {\n\n\t\tthis.set(\n\t\t\t1, 0,\n\t\t\t0, 1,\n\t\t);\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix from the given array.\n\t *\n\t * @param {Array<number>} array - The matrix elements in column-major order.\n\t * @param {number} [offset=0] - Index of the first element in the array.\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tfromArray( array, offset = 0 ) {\n\n\t\tfor ( let i = 0; i < 4; i ++ ) {\n\n\t\t\tthis.elements[ i ] = array[ i + offset ];\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the elements of the matrix.The arguments are supposed to be\n\t * in row-major order.\n\t *\n\t * @param {number} n11 - 1-1 matrix element.\n\t * @param {number} n12 - 1-2 matrix element.\n\t * @param {number} n21 - 2-1 matrix element.\n\t * @param {number} n22 - 2-2 matrix element.\n\t * @return {Matrix2} A reference to this matrix.\n\t */\n\tset( n11, n12, n21, n22 ) {\n\n\t\tconst te = this.elements;\n\n\t\tte[ 0 ] = n11; te[ 2 ] = n12;\n\t\tte[ 1 ] = n21; te[ 3 ] = n22;\n\n\t\treturn this;\n\n\t}\n\n}\n\nconst _vector$4 = /*@__PURE__*/ new Vector2();\n\n/**\n * Represents an axis-aligned bounding box (AABB) in 2D space.\n */\nclass Box2 {\n\n\t/**\n\t * Constructs a new bounding box.\n\t *\n\t * @param {Vector2} [min=(Infinity,Infinity)] - A vector representing the lower boundary of the box.\n\t * @param {Vector2} [max=(-Infinity,-Infinity)] - A vector representing the upper boundary of the box.\n\t */\n\tconstructor( min = new Vector2( + Infinity, + Infinity ), max = new Vector2( - Infinity, - Infinity ) ) {\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isBox2 = true;\n\n\t\t/**\n\t\t * The lower boundary of the box.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.min = min;\n\n\t\t/**\n\t\t * The upper boundary of the box.\n\t\t *\n\t\t * @type {Vector2}\n\t\t */\n\t\tthis.max = max;\n\n\t}\n\n\t/**\n\t * Sets the lower and upper boundaries of this box.\n\t * Please note that this method only copies the values from the given objects.\n\t *\n\t * @param {Vector2} min - The lower boundary of the box.\n\t * @param {Vector2} max - The upper boundary of the box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tset( min, max ) {\n\n\t\tthis.min.copy( min );\n\t\tthis.max.copy( max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Sets the upper and lower bounds of this box so it encloses the position data\n\t * in the given array.\n\t *\n\t * @param {Array<Vector2>} points - An array holding 2D position data as instances of {@link Vector2}.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tsetFromPoints( points ) {\n\n\t\tthis.makeEmpty();\n\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\n\n\t\t\tthis.expandByPoint( points[ i ] );\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Centers this box on the given center vector and sets this box's width, height and\n\t * depth to the given size values.\n\t *\n\t * @param {Vector2} center - The center of the box.\n\t * @param {Vector2} size - The x and y dimensions of the box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tsetFromCenterAndSize( center, size ) {\n\n\t\tconst halfSize = _vector$4.copy( size ).multiplyScalar( 0.5 );\n\t\tthis.min.copy( center ).sub( halfSize );\n\t\tthis.max.copy( center ).add( halfSize );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns a new box with copied values from this instance.\n\t *\n\t * @return {Box2} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n\t/**\n\t * Copies the values of the given box to this instance.\n\t *\n\t * @param {Box2} box - The box to copy.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tcopy( box ) {\n\n\t\tthis.min.copy( box.min );\n\t\tthis.max.copy( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Makes this box empty which means in encloses a zero space in 2D.\n\t *\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tmakeEmpty() {\n\n\t\tthis.min.x = this.min.y = + Infinity;\n\t\tthis.max.x = this.max.y = - Infinity;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns true if this box includes zero points within its bounds.\n\t * Note that a box with equal lower and upper bounds still includes one\n\t * point, the one both bounds share.\n\t *\n\t * @return {boolean} Whether this box is empty or not.\n\t */\n\tisEmpty() {\n\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\n\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\n\n\t}\n\n\t/**\n\t * Returns the center point of this box.\n\t *\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the dimensions of this box.\n\t *\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The size.\n\t */\n\tgetSize( target ) {\n\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\n\n\t}\n\n\t/**\n\t * Expands the boundaries of this box to include the given point.\n\t *\n\t * @param {Vector2} point - The point that should be included by the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByPoint( point ) {\n\n\t\tthis.min.min( point );\n\t\tthis.max.max( point );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands this box equilaterally by the given vector. The width of this\n\t * box will be expanded by the x component of the vector in both\n\t * directions. The height of this box will be expanded by the y component of\n\t * the vector in both directions.\n\t *\n\t * @param {Vector2} vector - The vector that should expand the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByVector( vector ) {\n\n\t\tthis.min.sub( vector );\n\t\tthis.max.add( vector );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Expands each dimension of the box by the given scalar. If negative, the\n\t * dimensions of the box will be contracted.\n\t *\n\t * @param {number} scalar - The scalar value that should expand the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\texpandByScalar( scalar ) {\n\n\t\tthis.min.addScalar( - scalar );\n\t\tthis.max.addScalar( scalar );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if the given point lies within or on the boundaries of this box.\n\t *\n\t * @param {Vector2} point - The point to test.\n\t * @return {boolean} Whether the bounding box contains the given point or not.\n\t */\n\tcontainsPoint( point ) {\n\n\t\treturn point.x >= this.min.x && point.x <= this.max.x &&\n\t\t\tpoint.y >= this.min.y && point.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box includes the entirety of the given bounding box.\n\t * If this box and the given one are identical, this function also returns `true`.\n\t *\n\t * @param {Box2} box - The bounding box to test.\n\t * @return {boolean} Whether the bounding box contains the given bounding box or not.\n\t */\n\tcontainsBox( box ) {\n\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Returns a point as a proportion of this box's width and height.\n\t *\n\t * @param {Vector2} point - A point in 2D space.\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} A point as a proportion of this box's width and height.\n\t */\n\tgetParameter( point, target ) {\n\n\t\t// This can potentially have a divide by zero if the box\n\t\t// has a size dimension of 0.\n\n\t\treturn target.set(\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\n\t\t);\n\n\t}\n\n\t/**\n\t * Returns `true` if the given bounding box intersects with this bounding box.\n\t *\n\t * @param {Box2} box - The bounding box to test.\n\t * @return {boolean} Whether the given bounding box intersects with this bounding box.\n\t */\n\tintersectsBox( box ) {\n\n\t\t// using 4 splitting planes to rule out intersections\n\n\t\treturn box.max.x >= this.min.x && box.min.x <= this.max.x &&\n\t\t\tbox.max.y >= this.min.y && box.min.y <= this.max.y;\n\n\t}\n\n\t/**\n\t * Clamps the given point within the bounds of this box.\n\t *\n\t * @param {Vector2} point - The point to clamp.\n\t * @param {Vector2} target - The target vector that is used to store the method's result.\n\t * @return {Vector2} The clamped point.\n\t */\n\tclampPoint( point, target ) {\n\n\t\treturn target.copy( point ).clamp( this.min, this.max );\n\n\t}\n\n\t/**\n\t * Returns the euclidean distance from any edge of this box to the specified point. If\n\t * the given point lies inside of this box, the distance will be `0`.\n\t *\n\t * @param {Vector2} point - The point to compute the distance to.\n\t * @return {number} The euclidean distance.\n\t */\n\tdistanceToPoint( point ) {\n\n\t\treturn this.clampPoint( point, _vector$4 ).distanceTo( point );\n\n\t}\n\n\t/**\n\t * Computes the intersection of this bounding box and the given one, setting the upper\n\t * bound of this box to the lesser of the two boxes' upper bounds and the\n\t * lower bound of this box to the greater of the two boxes' lower bounds. If\n\t * there's no overlap, makes this box empty.\n\t *\n\t * @param {Box2} box - The bounding box to intersect with.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tintersect( box ) {\n\n\t\tthis.min.max( box.min );\n\t\tthis.max.min( box.max );\n\n\t\tif ( this.isEmpty() ) this.makeEmpty();\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Computes the union of this box and another and the given one, setting the upper\n\t * bound of this box to the greater of the two boxes' upper bounds and the\n\t * lower bound of this box to the lesser of the two boxes' lower bounds.\n\t *\n\t * @param {Box2} box - The bounding box that will be unioned with this instance.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\tunion( box ) {\n\n\t\tthis.min.min( box.min );\n\t\tthis.max.max( box.max );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds the given offset to both the upper and lower bounds of this bounding box,\n\t * effectively moving it in 2D space.\n\t *\n\t * @param {Vector2} offset - The offset that should be used to translate the bounding box.\n\t * @return {Box2} A reference to this bounding box.\n\t */\n\ttranslate( offset ) {\n\n\t\tthis.min.add( offset );\n\t\tthis.max.add( offset );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this bounding box is equal with the given one.\n\t *\n\t * @param {Box2} box - The box to test for equality.\n\t * @return {boolean} Whether this bounding box is equal with the given one.\n\t */\n\tequals( box ) {\n\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\n\n\t}\n\n}\n\nconst _startP = /*@__PURE__*/ new Vector3();\nconst _startEnd = /*@__PURE__*/ new Vector3();\n\n/**\n * An analytical line segment in 3D space represented by a start and end point.\n */\nclass Line3 {\n\n\t/**\n\t * Constructs a new line segment.\n\t *\n\t * @param {Vector3} [start=(0,0,0)] - Start of the line segment.\n\t * @param {Vector3} [end=(0,0,0)] - End of the line segment.\n\t */\n\tconstructor( start = new Vector3(), end = new Vector3() ) {\n\n\t\t/**\n\t\t * Start of the line segment.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.start = start;\n\n\t\t/**\n\t\t * End of the line segment.\n\t\t *\n\t\t * @type {Vector3}\n\t\t */\n\t\tthis.end = end;\n\n\t}\n\n\t/**\n\t * Sets the start and end values by copying the given vectors.\n\t *\n\t * @param {Vector3} start - The start point.\n\t * @param {Vector3} end - The end point.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tset( start, end ) {\n\n\t\tthis.start.copy( start );\n\t\tthis.end.copy( end );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Copies the values of the given line segment to this instance.\n\t *\n\t * @param {Line3} line - The line segment to copy.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tcopy( line ) {\n\n\t\tthis.start.copy( line.start );\n\t\tthis.end.copy( line.end );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns the center of the line segment.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The center point.\n\t */\n\tgetCenter( target ) {\n\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\n\n\t}\n\n\t/**\n\t * Returns the delta vector of the line segment's start and end point.\n\t *\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The delta vector.\n\t */\n\tdelta( target ) {\n\n\t\treturn target.subVectors( this.end, this.start );\n\n\t}\n\n\t/**\n\t * Returns the squared Euclidean distance between the line' start and end point.\n\t *\n\t * @return {number} The squared Euclidean distance.\n\t */\n\tdistanceSq() {\n\n\t\treturn this.start.distanceToSquared( this.end );\n\n\t}\n\n\t/**\n\t * Returns the Euclidean distance between the line' start and end point.\n\t *\n\t * @return {number} The Euclidean distance.\n\t */\n\tdistance() {\n\n\t\treturn this.start.distanceTo( this.end );\n\n\t}\n\n\t/**\n\t * Returns a vector at a certain position along the line segment.\n\t *\n\t * @param {number} t - A value between `[0,1]` to represent a position along the line segment.\n\t * @param {Vector3} target - The target vector that is used to store the method's result.\n\t * @return {Vector3} The delta vector.\n\t */\n\tat( t, target ) {\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\t/**\n\t * Returns a point parameter based on the closest point as projected on the line segment.\n\t *\n\t * @param {Vector3} point - The point for which to return a point parameter.\n\t * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not.\n\t * @return {number} The point parameter.\n\t */\n\tclosestPointToPointParameter( point, clampToLine ) {\n\n\t\t_startP.subVectors( point, this.start );\n\t\t_startEnd.subVectors( this.end, this.start );\n\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\n\n\t\tlet t = startEnd_startP / startEnd2;\n\n\t\tif ( clampToLine ) {\n\n\t\t\tt = clamp( t, 0, 1 );\n\n\t\t}\n\n\t\treturn t;\n\n\t}\n\n\t/**\n\t * Returns the closets point on the line for a given point.\n\t *\n\t * @param {Vector3} point - The point to compute the closest point on the line for.\n\t * @param {boolean} clampToLine - Whether to clamp the result to the range `[0,1]` or not.\n\t * @param {Vector3} target -  The target vector that is used to store the method's result.\n\t * @return {Vector3} The closest point on the line.\n\t */\n\tclosestPointToPoint( point, clampToLine, target ) {\n\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\n\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\n\n\t}\n\n\t/**\n\t * Applies a 4x4 transformation matrix to this line segment.\n\t *\n\t * @param {Matrix4} matrix - The transformation matrix.\n\t * @return {Line3} A reference to this line segment.\n\t */\n\tapplyMatrix4( matrix ) {\n\n\t\tthis.start.applyMatrix4( matrix );\n\t\tthis.end.applyMatrix4( matrix );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Returns `true` if this line segment is equal with the given one.\n\t *\n\t * @param {Line3} line - The line segment to test for equality.\n\t * @return {boolean} Whether this line segment is equal with the given one.\n\t */\n\tequals( line ) {\n\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\n\n\t}\n\n\t/**\n\t * Returns a new line segment with copied values from this instance.\n\t *\n\t * @return {Line3} A clone of this instance.\n\t */\n\tclone() {\n\n\t\treturn new this.constructor().copy( this );\n\n\t}\n\n}\n\nconst _vector$3 = /*@__PURE__*/ new Vector3();\n\n/**\n * This displays a cone shaped helper object for a {@link SpotLight}.\n *\n * ```js\n * const spotLight = new THREE.SpotLight( 0xffffff );\n * spotLight.position.set( 10, 10, 10 );\n * scene.add( spotLight );\n *\n * const spotLightHelper = new THREE.SpotLightHelper( spotLight );\n * scene.add( spotLightHelper );\n * ```\n *\n * @augments Object3D\n */\nclass SpotLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new spot light helper.\n\t *\n\t * @param {HemisphereLight} light - The light to be visualized.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {SpotLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'SpotLightHelper';\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst positions = [\n\t\t\t0, 0, 0, \t0, 0, 1,\n\t\t\t0, 0, 0, \t1, 0, 1,\n\t\t\t0, 0, 0,\t-1, 0, 1,\n\t\t\t0, 0, 0, \t0, 1, 1,\n\t\t\t0, 0, 0, \t0, -1, 1\n\t\t];\n\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\n\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\n\n\t\t\tpositions.push(\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\n\t\t\t);\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\tthis.cone = new LineSegments( geometry, material );\n\t\tthis.add( this.cone );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t// update the local matrix based on the parent and light target transforms\n\t\tif ( this.parent ) {\n\n\t\t\tthis.parent.updateWorldMatrix( true );\n\n\t\t\tthis.matrix\n\t\t\t\t.copy( this.parent.matrixWorld )\n\t\t\t\t.invert()\n\t\t\t\t.multiply( this.light.matrixWorld );\n\n\t\t} else {\n\n\t\t\tthis.matrix.copy( this.light.matrixWorld );\n\n\t\t}\n\n\t\tthis.matrixWorld.copy( this.light.matrixWorld );\n\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\n\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\n\n\t\t_vector$3.setFromMatrixPosition( this.light.target.matrixWorld );\n\n\t\tthis.cone.lookAt( _vector$3 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.cone.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.cone.material.color.copy( this.light.color );\n\n\t\t}\n\n\t}\n\n}\n\nconst _vector$2 = /*@__PURE__*/ new Vector3();\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\n\n/**\n * A helper object to assist with visualizing a {@link Skeleton}.\n *\n * ```js\n * const helper = new THREE.SkeletonHelper( skinnedMesh );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass SkeletonHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new hemisphere light helper.\n\t *\n\t * @param {Object3D} object -  Usually an instance of {@link SkinnedMesh}. However, any 3D object\n\t * can be used if it represents a hierarchy of bones (see {@link Bone}).\n\t */\n\tconstructor( object ) {\n\n\t\tconst bones = getBoneList( object );\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst color1 = new Color( 0, 0, 1 );\n\t\tconst color2 = new Color( 0, 1, 0 );\n\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * This flag can be used for type testing.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @readonly\n\t\t * @default true\n\t\t */\n\t\tthis.isSkeletonHelper = true;\n\n\t\tthis.type = 'SkeletonHelper';\n\n\t\t/**\n\t\t * The object being visualized.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.root = object;\n\n\t\t/**\n\t\t * he list of bones that the helper visualizes.\n\t\t *\n\t\t * @type {Array<Bone>}\n\t\t */\n\t\tthis.bones = bones;\n\n\t\tthis.matrix = object.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst bones = this.bones;\n\n\t\tconst geometry = this.geometry;\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\n\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\n\n\t\t\tconst bone = bones[ i ];\n\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\n\t\t\t\t_vector$2.setFromMatrixPosition( _boneMatrix );\n\t\t\t\tposition.setXYZ( j + 1, _vector$2.x, _vector$2.y, _vector$2.z );\n\n\t\t\t\tj += 2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction getBoneList( object ) {\n\n\tconst boneList = [];\n\n\tif ( object.isBone === true ) {\n\n\t\tboneList.push( object );\n\n\t}\n\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\n\n\t\tboneList.push( ...getBoneList( object.children[ i ] ) );\n\n\t}\n\n\treturn boneList;\n\n}\n\n/**\n * This displays a helper object consisting of a spherical mesh for\n * visualizing an instance of {@link PointLight}.\n *\n * ```js\n * const pointLight = new THREE.PointLight( 0xff0000, 1, 100 );\n * pointLight.position.set( 10, 10, 10 );\n * scene.add( pointLight );\n *\n * const sphereSize = 1;\n * const pointLightHelper = new THREE.PointLightHelper( pointLight, sphereSize );\n * scene.add( pointLightHelper );\n * ```\n *\n * @augments Mesh\n */\nclass PointLightHelper extends Mesh {\n\n\t/**\n\t * Constructs a new point light helper.\n\t *\n\t * @param {PointLight} light - The light to be visualized.\n\t * @param {number} [sphereSize=1] - The size of the sphere helper.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, sphereSize, color ) {\n\n\t\tconst geometry = new SphereGeometry( sphereSize, 4, 2 );\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {HemisphereLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'PointLightHelper';\n\n\t\tthis.matrix = this.light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\n\t\t/*\n\t// TODO: delete this comment?\n\tconst distanceGeometry = new THREE.IcosahedronGeometry( 1, 2 );\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\n\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\n\n\tconst d = light.distance;\n\n\tif ( d === 0.0 ) {\n\n\t\tthis.lightDistance.visible = false;\n\n\t} else {\n\n\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t}\n\n\tthis.add( this.lightDistance );\n\t*/\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\t/*\n\t\tconst d = this.light.distance;\n\n\t\tif ( d === 0.0 ) {\n\n\t\t\tthis.lightDistance.visible = false;\n\n\t\t} else {\n\n\t\t\tthis.lightDistance.visible = true;\n\t\t\tthis.lightDistance.scale.set( d, d, d );\n\n\t\t}\n\t\t*/\n\n\t}\n\n}\n\nconst _vector$1 = /*@__PURE__*/ new Vector3();\nconst _color1 = /*@__PURE__*/ new Color();\nconst _color2 = /*@__PURE__*/ new Color();\n\n/**\n * Creates a visual aid consisting of a spherical mesh for a\n * given {@link HemisphereLight}.\n *\n * ```js\n * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );\n * const helper = new THREE.HemisphereLightHelper( light, 5 );\n * scene.add( helper );\n * ```\n *\n * @augments Object3D\n */\nclass HemisphereLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new hemisphere light helper.\n\t *\n\t * @param {HemisphereLight} light - The light to be visualized.\n\t * @param {number} [size=1] - The size of the mesh used to visualize the light.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {HemisphereLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'HemisphereLightHelper';\n\n\t\tconst geometry = new OctahedronGeometry( size );\n\t\tgeometry.rotateY( Math.PI * 0.5 );\n\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\t\tconst colors = new Float32Array( position.count * 3 );\n\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\n\n\t\tthis.add( new Mesh( geometry, this.material ) );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tconst mesh = this.children[ 0 ];\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\n\n\t\t\t_color1.copy( this.light.color );\n\t\t\t_color2.copy( this.light.groundColor );\n\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\n\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\n\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t\tcolors.needsUpdate = true;\n\n\t\t}\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\n\t\tmesh.lookAt( _vector$1.setFromMatrixPosition( this.light.matrixWorld ).negate() );\n\n\t}\n\n}\n\n/**\n * The helper is an object to define grids. Grids are two-dimensional\n * arrays of lines.\n *\n * ```js\n * const size = 10;\n * const divisions = 10;\n *\n * const gridHelper = new THREE.GridHelper( size, divisions );\n * scene.add( gridHelper );\n * ```\n *\n * @augments LineSegments\n */\nclass GridHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new grid helper.\n\t *\n\t * @param {number} [size=10] - The size of the grid.\n\t * @param {number} [divisions=10] - The number of divisions across the grid.\n\t * @param {number|Color|string} [color1=0x444444] - The color of the center line.\n\t * @param {number|Color|string} [color2=0x888888] - The color of the lines of the grid.\n\t */\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst center = divisions / 2;\n\t\tconst step = size / divisions;\n\t\tconst halfSize = size / 2;\n\n\t\tconst vertices = [], colors = [];\n\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\n\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\n\n\t\t\tconst color = i === center ? color1 : color2;\n\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\t\t\tcolor.toArray( colors, j ); j += 3;\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'GridHelper';\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * This helper is an object to define polar grids. Grids are\n * two-dimensional arrays of lines.\n *\n * ```js\n * const radius = 10;\n * const sectors = 16;\n * const rings = 8;\n * const divisions = 64;\n *\n * const helper = new THREE.PolarGridHelper( radius, sectors, rings, divisions );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass PolarGridHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new polar grid helper.\n\t *\n\t * @param {number} [radius=10] - The radius of the polar grid. This can be any positive number.\n\t * @param {number} [sectors=16] - The number of sectors the grid will be divided into. This can be any positive integer.\n\t * @param {number} [rings=16] - The number of rings. This can be any positive integer.\n\t * @param {number} [divisions=64] - The number of line segments used for each circle. This can be any positive integer.\n\t * @param {number|Color|string} [color1=0x444444] - The first color used for grid elements.\n\t * @param {number|Color|string} [color2=0x888888] -  The second color used for grid elements.\n\t */\n\tconstructor( radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\n\n\t\tcolor1 = new Color( color1 );\n\t\tcolor2 = new Color( color2 );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\t// create the sectors\n\n\t\tif ( sectors > 1 ) {\n\n\t\t\tfor ( let i = 0; i < sectors; i ++ ) {\n\n\t\t\t\tconst v = ( i / sectors ) * ( Math.PI * 2 );\n\n\t\t\t\tconst x = Math.sin( v ) * radius;\n\t\t\t\tconst z = Math.cos( v ) * radius;\n\n\t\t\t\tvertices.push( 0, 0, 0 );\n\t\t\t\tvertices.push( x, 0, z );\n\n\t\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// create the rings\n\n\t\tfor ( let i = 0; i < rings; i ++ ) {\n\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\n\n\t\t\tconst r = radius - ( radius / rings * i );\n\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\n\n\t\t\t\t// first vertex\n\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tlet x = Math.sin( v ) * r;\n\t\t\t\tlet z = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t\t// second vertex\n\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\n\n\t\t\t\tx = Math.sin( v ) * r;\n\t\t\t\tz = Math.cos( v ) * r;\n\n\t\t\t\tvertices.push( x, 0, z );\n\t\t\t\tcolors.push( color.r, color.g, color.b );\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'PolarGridHelper';\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\nconst _v1 = /*@__PURE__*/ new Vector3();\nconst _v2 = /*@__PURE__*/ new Vector3();\nconst _v3 = /*@__PURE__*/ new Vector3();\n\n/**\n * Helper object to assist with visualizing a {@link DirectionalLight}'s\n * effect on the scene. This consists of plane and a line representing the\n * light's position and direction.\n *\n * ```js\n * const light = new THREE.DirectionalLight( 0xFFFFFF );\n * scene.add( light );\n *\n * const helper = new THREE.DirectionalLightHelper( light, 5 );\n * scene.add( helper );\n * ```\n *\n * @augments Object3D\n */\nclass DirectionalLightHelper extends Object3D {\n\n\t/**\n\t * Constructs a new directional light helper.\n\t *\n\t * @param {DirectionalLight} light - The light to be visualized.\n\t * @param {number} [size=1] - The dimensions of the plane.\n\t * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take\n\t * the color of the light.\n\t */\n\tconstructor( light, size, color ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The light being visualized.\n\t\t *\n\t\t * @type {DirectionalLight}\n\t\t */\n\t\tthis.light = light;\n\n\t\tthis.matrix = light.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * The color parameter passed in the constructor.\n\t\t * If not set, the helper will take the color of the light.\n\t\t *\n\t\t * @type {number|Color|string}\n\t\t */\n\t\tthis.color = color;\n\n\t\tthis.type = 'DirectionalLightHelper';\n\n\t\tif ( size === undefined ) size = 1;\n\n\t\tlet geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\n\t\t\t- size, size, 0,\n\t\t\tsize, size, 0,\n\t\t\tsize, - size, 0,\n\t\t\t- size, - size, 0,\n\t\t\t- size, size, 0\n\t\t], 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\n\n\t\t/**\n\t\t * Contains the line showing the location of the directional light.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.lightPlane = new Line( geometry, material );\n\t\tthis.add( this.lightPlane );\n\n\t\tgeometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\n\n\t\t/**\n\t\t * Represents the target line of the directional light.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.targetLine = new Line( geometry, material );\n\t\tthis.add( this.targetLine );\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.lightPlane.geometry.dispose();\n\t\tthis.lightPlane.material.dispose();\n\t\tthis.targetLine.geometry.dispose();\n\t\tthis.targetLine.material.dispose();\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tupdate() {\n\n\t\tthis.light.updateWorldMatrix( true, false );\n\t\tthis.light.target.updateWorldMatrix( true, false );\n\n\t\t_v1.setFromMatrixPosition( this.light.matrixWorld );\n\t\t_v2.setFromMatrixPosition( this.light.target.matrixWorld );\n\t\t_v3.subVectors( _v2, _v1 );\n\n\t\tthis.lightPlane.lookAt( _v2 );\n\n\t\tif ( this.color !== undefined ) {\n\n\t\t\tthis.lightPlane.material.color.set( this.color );\n\t\t\tthis.targetLine.material.color.set( this.color );\n\n\t\t} else {\n\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\n\n\t\t}\n\n\t\tthis.targetLine.lookAt( _v2 );\n\t\tthis.targetLine.scale.z = _v3.length();\n\n\t}\n\n}\n\nconst _vector = /*@__PURE__*/ new Vector3();\nconst _camera = /*@__PURE__*/ new Camera();\n\n/**\n * This helps with visualizing what a camera contains in its frustum. It\n * visualizes the frustum of a camera using a line segments.\n *\n * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.\n *\n * `CameraHelper` must be a child of the scene.\n *\n * ```js\n * const camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );\n * const helper = new THREE.CameraHelper( camera );\n * scene.add( helper );\n * ```\n *\n * @augments LineSegments\n */\nclass CameraHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new arrow helper.\n\t *\n\t * @param {Camera} camera - The camera to visualize.\n\t */\n\tconstructor( camera ) {\n\n\t\tconst geometry = new BufferGeometry();\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\n\n\t\tconst vertices = [];\n\t\tconst colors = [];\n\n\t\tconst pointMap = {};\n\n\t\t// near\n\n\t\taddLine( 'n1', 'n2' );\n\t\taddLine( 'n2', 'n4' );\n\t\taddLine( 'n4', 'n3' );\n\t\taddLine( 'n3', 'n1' );\n\n\t\t// far\n\n\t\taddLine( 'f1', 'f2' );\n\t\taddLine( 'f2', 'f4' );\n\t\taddLine( 'f4', 'f3' );\n\t\taddLine( 'f3', 'f1' );\n\n\t\t// sides\n\n\t\taddLine( 'n1', 'f1' );\n\t\taddLine( 'n2', 'f2' );\n\t\taddLine( 'n3', 'f3' );\n\t\taddLine( 'n4', 'f4' );\n\n\t\t// cone\n\n\t\taddLine( 'p', 'n1' );\n\t\taddLine( 'p', 'n2' );\n\t\taddLine( 'p', 'n3' );\n\t\taddLine( 'p', 'n4' );\n\n\t\t// up\n\n\t\taddLine( 'u1', 'u2' );\n\t\taddLine( 'u2', 'u3' );\n\t\taddLine( 'u3', 'u1' );\n\n\t\t// target\n\n\t\taddLine( 'c', 't' );\n\t\taddLine( 'p', 'c' );\n\n\t\t// cross\n\n\t\taddLine( 'cn1', 'cn2' );\n\t\taddLine( 'cn3', 'cn4' );\n\n\t\taddLine( 'cf1', 'cf2' );\n\t\taddLine( 'cf3', 'cf4' );\n\n\t\tfunction addLine( a, b ) {\n\n\t\t\taddPoint( a );\n\t\t\taddPoint( b );\n\n\t\t}\n\n\t\tfunction addPoint( id ) {\n\n\t\t\tvertices.push( 0, 0, 0 );\n\t\t\tcolors.push( 0, 0, 0 );\n\n\t\t\tif ( pointMap[ id ] === undefined ) {\n\n\t\t\t\tpointMap[ id ] = [];\n\n\t\t\t}\n\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\n\n\t\t}\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'CameraHelper';\n\n\t\t/**\n\t\t * The camera being visualized.\n\t\t *\n\t\t * @type {Camera}\n\t\t */\n\t\tthis.camera = camera;\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\n\n\t\tthis.matrix = camera.matrixWorld;\n\t\tthis.matrixAutoUpdate = false;\n\n\t\t/**\n\t\t * This contains the points used to visualize the camera.\n\t\t *\n\t\t * @type {Object<string,Array<number>>}\n\t\t */\n\t\tthis.pointMap = pointMap;\n\n\t\tthis.update();\n\n\t\t// colors\n\n\t\tconst colorFrustum = new Color( 0xffaa00 );\n\t\tconst colorCone = new Color( 0xff0000 );\n\t\tconst colorUp = new Color( 0x00aaff );\n\t\tconst colorTarget = new Color( 0xffffff );\n\t\tconst colorCross = new Color( 0x333333 );\n\n\t\tthis.setColors( colorFrustum, colorCone, colorUp, colorTarget, colorCross );\n\n\t}\n\n\t/**\n\t * Defines the colors of the helper.\n\t *\n\t * @param {Color} frustum - The frustum line color.\n\t * @param {Color} cone - The cone line color.\n\t * @param {Color} up - The up line color.\n\t * @param {Color} target - The target line color.\n\t * @param {Color} cross - The cross line color.\n\t */\n\tsetColors( frustum, cone, up, target, cross ) {\n\n\t\tconst geometry = this.geometry;\n\n\t\tconst colorAttribute = geometry.getAttribute( 'color' );\n\n\t\t// near\n\n\t\tcolorAttribute.setXYZ( 0, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 1, frustum.r, frustum.g, frustum.b ); // n1, n2\n\t\tcolorAttribute.setXYZ( 2, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 3, frustum.r, frustum.g, frustum.b ); // n2, n4\n\t\tcolorAttribute.setXYZ( 4, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 5, frustum.r, frustum.g, frustum.b ); // n4, n3\n\t\tcolorAttribute.setXYZ( 6, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 7, frustum.r, frustum.g, frustum.b ); // n3, n1\n\n\t\t// far\n\n\t\tcolorAttribute.setXYZ( 8, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 9, frustum.r, frustum.g, frustum.b ); // f1, f2\n\t\tcolorAttribute.setXYZ( 10, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 11, frustum.r, frustum.g, frustum.b ); // f2, f4\n\t\tcolorAttribute.setXYZ( 12, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 13, frustum.r, frustum.g, frustum.b ); // f4, f3\n\t\tcolorAttribute.setXYZ( 14, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 15, frustum.r, frustum.g, frustum.b ); // f3, f1\n\n\t\t// sides\n\n\t\tcolorAttribute.setXYZ( 16, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 17, frustum.r, frustum.g, frustum.b ); // n1, f1\n\t\tcolorAttribute.setXYZ( 18, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 19, frustum.r, frustum.g, frustum.b ); // n2, f2\n\t\tcolorAttribute.setXYZ( 20, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 21, frustum.r, frustum.g, frustum.b ); // n3, f3\n\t\tcolorAttribute.setXYZ( 22, frustum.r, frustum.g, frustum.b ); colorAttribute.setXYZ( 23, frustum.r, frustum.g, frustum.b ); // n4, f4\n\n\t\t// cone\n\n\t\tcolorAttribute.setXYZ( 24, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 25, cone.r, cone.g, cone.b ); // p, n1\n\t\tcolorAttribute.setXYZ( 26, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 27, cone.r, cone.g, cone.b ); // p, n2\n\t\tcolorAttribute.setXYZ( 28, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 29, cone.r, cone.g, cone.b ); // p, n3\n\t\tcolorAttribute.setXYZ( 30, cone.r, cone.g, cone.b ); colorAttribute.setXYZ( 31, cone.r, cone.g, cone.b ); // p, n4\n\n\t\t// up\n\n\t\tcolorAttribute.setXYZ( 32, up.r, up.g, up.b ); colorAttribute.setXYZ( 33, up.r, up.g, up.b ); // u1, u2\n\t\tcolorAttribute.setXYZ( 34, up.r, up.g, up.b ); colorAttribute.setXYZ( 35, up.r, up.g, up.b ); // u2, u3\n\t\tcolorAttribute.setXYZ( 36, up.r, up.g, up.b ); colorAttribute.setXYZ( 37, up.r, up.g, up.b ); // u3, u1\n\n\t\t// target\n\n\t\tcolorAttribute.setXYZ( 38, target.r, target.g, target.b ); colorAttribute.setXYZ( 39, target.r, target.g, target.b ); // c, t\n\t\tcolorAttribute.setXYZ( 40, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 41, cross.r, cross.g, cross.b ); // p, c\n\n\t\t// cross\n\n\t\tcolorAttribute.setXYZ( 42, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 43, cross.r, cross.g, cross.b ); // cn1, cn2\n\t\tcolorAttribute.setXYZ( 44, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 45, cross.r, cross.g, cross.b ); // cn3, cn4\n\n\t\tcolorAttribute.setXYZ( 46, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 47, cross.r, cross.g, cross.b ); // cf1, cf2\n\t\tcolorAttribute.setXYZ( 48, cross.r, cross.g, cross.b ); colorAttribute.setXYZ( 49, cross.r, cross.g, cross.b ); // cf3, cf4\n\n\t\tcolorAttribute.needsUpdate = true;\n\n\t}\n\n\t/**\n\t * Updates the helper based on the projection matrix of the camera.\n\t */\n\tupdate() {\n\n\t\tconst geometry = this.geometry;\n\t\tconst pointMap = this.pointMap;\n\n\t\tconst w = 1, h = 1;\n\n\t\t// we need just camera projection matrix inverse\n\t\t// world matrix must be identity\n\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\n\n\t\t// Adjust z values based on coordinate system\n\t\tconst nearZ = this.camera.coordinateSystem === WebGLCoordinateSystem ? -1 : 0;\n\n\t\t// center / target\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, nearZ );\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\n\n\t\t// near\n\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, -1, -1, nearZ );\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, -1, nearZ );\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, -1, h, nearZ );\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, nearZ );\n\n\t\t// far\n\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, -1, -1, 1 );\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, -1, 1 );\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, -1, h, 1 );\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\n\n\t\t// up\n\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, nearZ );\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, -1 * 0.7, h * 1.1, nearZ );\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, nearZ );\n\n\t\t// cross\n\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, -1, 0, 1 );\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, -1, 1 );\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\n\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, -1, 0, nearZ );\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, nearZ );\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, -1, nearZ );\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, nearZ );\n\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\n\n\t_vector.set( x, y, z ).unproject( camera );\n\n\tconst points = pointMap[ point ];\n\n\tif ( points !== undefined ) {\n\n\t\tconst position = geometry.getAttribute( 'position' );\n\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\n\n\t\t\tposition.setXYZ( points[ i ], _vector.x, _vector.y, _vector.z );\n\n\t\t}\n\n\t}\n\n}\n\nconst _box = /*@__PURE__*/ new Box3();\n\n/**\n * Helper object to graphically show the world-axis-aligned bounding box\n * around an object. The actual bounding box is handled with {@link Box3},\n * this is just a visual helper for debugging. It can be automatically\n * resized with {@link BoxHelper#update} when the object it's created from\n * is transformed. Note that the object must have a geometry for this to work,\n * so it won't work with sprites.\n *\n * ```js\n * const sphere = new THREE.SphereGeometry();\n * const object = new THREE.Mesh( sphere, new THREE.MeshBasicMaterial( 0xff0000 ) );\n * const box = new THREE.BoxHelper( object, 0xffff00 );\n * scene.add( box );\n * ```\n *\n * @augments LineSegments\n */\nclass BoxHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new box helper.\n\t *\n\t * @param {Object3D} [object] - The 3D object to show the world-axis-aligned bounding box.\n\t * @param {number|Color|string} [color=0xffff00] - The box's color.\n\t */\n\tconstructor( object, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\t\tconst positions = new Float32Array( 8 * 3 );\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\t/**\n\t\t * The 3D object being visualized.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.object = object;\n\t\tthis.type = 'BoxHelper';\n\n\t\tthis.matrixAutoUpdate = false;\n\n\t\tthis.update();\n\n\t}\n\n\t/**\n\t * Updates the helper's geometry to match the dimensions of the object,\n\t * including any children.\n\t */\n\tupdate() {\n\n\t\tif ( this.object !== undefined ) {\n\n\t\t\t_box.setFromObject( this.object );\n\n\t\t}\n\n\t\tif ( _box.isEmpty() ) return;\n\n\t\tconst min = _box.min;\n\t\tconst max = _box.max;\n\n\t\t/*\n\t\t\t5____4\n\t\t1/___0/|\n\t\t| 6__|_7\n\t\t2/___3/\n\n\t\t0: max.x, max.y, max.z\n\t\t1: min.x, max.y, max.z\n\t\t2: min.x, min.y, max.z\n\t\t3: max.x, min.y, max.z\n\t\t4: max.x, max.y, min.z\n\t\t5: min.x, max.y, min.z\n\t\t6: min.x, min.y, min.z\n\t\t7: max.x, min.y, min.z\n\t\t*/\n\n\t\tconst position = this.geometry.attributes.position;\n\t\tconst array = position.array;\n\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\n\n\t\tposition.needsUpdate = true;\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\t/**\n\t * Updates the wireframe box for the passed object.\n\t *\n\t * @param {Object3D} object - The 3D object to create the helper for.\n\t * @return {BoxHelper} A reference to this instance.\n\t */\n\tsetFromObject( object ) {\n\n\t\tthis.object = object;\n\t\tthis.update();\n\n\t\treturn this;\n\n\t}\n\n\tcopy( source, recursive ) {\n\n\t\tsuper.copy( source, recursive );\n\n\t\tthis.object = source.object;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * A helper object to visualize an instance of {@link Box3}.\n *\n * ```js\n * const box = new THREE.Box3();\n * box.setFromCenterAndSize( new THREE.Vector3( 1, 1, 1 ), new THREE.Vector3( 2, 1, 3 ) );\n *\n * const helper = new THREE.Box3Helper( box, 0xffff00 );\n * scene.add( helper )\n * ```\n *\n * @augments LineSegments\n */\nclass Box3Helper extends LineSegments {\n\n\t/**\n\t * Constructs a new box3 helper.\n\t *\n\t * @param {Box3} box - The box to visualize.\n\t * @param {number|Color|string} [color=0xffff00] - The box's color.\n\t */\n\tconstructor( box, color = 0xffff00 ) {\n\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\n\n\t\tconst positions = [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1 ];\n\n\t\tconst geometry = new BufferGeometry();\n\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\n\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\t/**\n\t\t * The box being visualized.\n\t\t *\n\t\t * @type {Box3}\n\t\t */\n\t\tthis.box = box;\n\n\t\tthis.type = 'Box3Helper';\n\n\t\tthis.geometry.computeBoundingSphere();\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tconst box = this.box;\n\n\t\tif ( box.isEmpty() ) return;\n\n\t\tbox.getCenter( this.position );\n\n\t\tbox.getSize( this.scale );\n\n\t\tthis.scale.multiplyScalar( 0.5 );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * A helper object to visualize an instance of {@link Plane}.\n *\n * ```js\n * const plane = new THREE.Plane( new THREE.Vector3( 1, 1, 0.2 ), 3 );\n * const helper = new THREE.PlaneHelper( plane, 1, 0xffff00 );\n * scene.add( helper );\n * ```\n *\n * @augments Line\n */\nclass PlaneHelper extends Line {\n\n\t/**\n\t * Constructs a new plane helper.\n\t *\n\t * @param {Plane} plane - The plane to be visualized.\n\t * @param {number} [size=1] - The side length of plane helper.\n\t * @param {number|Color|string} [hex=0xffff00] - The helper's color.\n\t */\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\n\n\t\tconst color = hex;\n\n\t\tconst positions = [ 1, -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0 ];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\n\t\tgeometry.computeBoundingSphere();\n\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\n\t\tthis.type = 'PlaneHelper';\n\n\t\t/**\n\t\t * The plane being visualized.\n\t\t *\n\t\t * @type {Plane}\n\t\t */\n\t\tthis.plane = plane;\n\n\t\t/**\n\t\t * The side length of plane helper.\n\t\t *\n\t\t * @type {number}\n\t\t * @default 1\n\t\t */\n\t\tthis.size = size;\n\n\t\tconst positions2 = [ 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0 ];\n\n\t\tconst geometry2 = new BufferGeometry();\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\n\t\tgeometry2.computeBoundingSphere();\n\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\n\n\t}\n\n\tupdateMatrixWorld( force ) {\n\n\t\tthis.position.set( 0, 0, 0 );\n\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, 1 );\n\n\t\tthis.lookAt( this.plane.normal );\n\n\t\tthis.translateZ( - this.plane.constant );\n\n\t\tsuper.updateMatrixWorld( force );\n\n\t}\n\n\t/**\n\t * Updates the helper to match the position and direction of the\n\t * light being visualized.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\t\tthis.children[ 0 ].geometry.dispose();\n\t\tthis.children[ 0 ].material.dispose();\n\n\t}\n\n}\n\nconst _axis = /*@__PURE__*/ new Vector3();\nlet _lineGeometry, _coneGeometry;\n\n/**\n * An 3D arrow object for visualizing directions.\n *\n * ```js\n * const dir = new THREE.Vector3( 1, 2, 0 );\n *\n * //normalize the direction vector (convert to vector of length 1)\n * dir.normalize();\n *\n * const origin = new THREE.Vector3( 0, 0, 0 );\n * const length = 1;\n * const hex = 0xffff00;\n *\n * const arrowHelper = new THREE.ArrowHelper( dir, origin, length, hex );\n * scene.add( arrowHelper );\n * ```\n *\n * @augments Object3D\n */\nclass ArrowHelper extends Object3D {\n\n\t/**\n\t * Constructs a new arrow helper.\n\t *\n\t * @param {Vector3} [dir=(0, 0, 1)] - The (normalized) direction vector.\n\t * @param {Vector3} [origin=(0, 0, 0)] - Point at which the arrow starts.\n\t * @param {number} [length=1] - Length of the arrow in world units.\n\t * @param {(number|Color|string)} [color=0xffff00] - Color of the arrow.\n\t * @param {number} [headLength=length*0.2] - The length of the head of the arrow.\n\t * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.\n\t */\n\tconstructor( dir = new Vector3( 0, 0, 1 ), origin = new Vector3( 0, 0, 0 ), length = 1, color = 0xffff00, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tsuper();\n\n\t\tthis.type = 'ArrowHelper';\n\n\t\tif ( _lineGeometry === undefined ) {\n\n\t\t\t_lineGeometry = new BufferGeometry();\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\n\n\t\t\t_coneGeometry = new CylinderGeometry( 0, 0.5, 1, 5, 1 );\n\t\t\t_coneGeometry.translate( 0, -0.5, 0 );\n\n\t\t}\n\n\t\tthis.position.copy( origin );\n\n\t\t/**\n\t\t * The line part of the arrow helper.\n\t\t *\n\t\t * @type {Line}\n\t\t */\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.line.matrixAutoUpdate = false;\n\t\tthis.add( this.line );\n\n\t\t/**\n\t\t * The cone part of the arrow helper.\n\t\t *\n\t\t * @type {Mesh}\n\t\t */\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\n\t\tthis.cone.matrixAutoUpdate = false;\n\t\tthis.add( this.cone );\n\n\t\tthis.setDirection( dir );\n\t\tthis.setLength( length, headLength, headWidth );\n\n\t}\n\n\t/**\n\t * Sets the direction of the helper.\n\t *\n\t * @param {Vector3} dir - The normalized direction vector.\n\t */\n\tsetDirection( dir ) {\n\n\t\t// dir is assumed to be normalized\n\n\t\tif ( dir.y > 0.99999 ) {\n\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\n\n\t\t} else if ( dir.y < -0.99999 ) {\n\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\n\n\t\t} else {\n\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\n\n\t\t\tconst radians = Math.acos( dir.y );\n\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Sets the length of the helper.\n\t *\n\t * @param {number} length - Length of the arrow in world units.\n\t * @param {number} [headLength=length*0.2] - The length of the head of the arrow.\n\t * @param {number} [headWidth=headLength*0.2] - The width of the head of the arrow.\n\t */\n\tsetLength( length, headLength = length * 0.2, headWidth = headLength * 0.2 ) {\n\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\n\t\tthis.line.updateMatrix();\n\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\n\t\tthis.cone.position.y = length;\n\t\tthis.cone.updateMatrix();\n\n\t}\n\n\t/**\n\t * Sets the color of the helper.\n\t *\n\t * @param {number|Color|string} color - The color to set.\n\t */\n\tsetColor( color ) {\n\n\t\tthis.line.material.color.set( color );\n\t\tthis.cone.material.color.set( color );\n\n\t}\n\n\tcopy( source ) {\n\n\t\tsuper.copy( source, false );\n\n\t\tthis.line.copy( source.line );\n\t\tthis.cone.copy( source.cone );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.line.geometry.dispose();\n\t\tthis.line.material.dispose();\n\t\tthis.cone.geometry.dispose();\n\t\tthis.cone.material.dispose();\n\n\t}\n\n}\n\n/**\n * An axis object to visualize the 3 axes in a simple way.\n * The X axis is red. The Y axis is green. The Z axis is blue.\n *\n * ```js\n * const axesHelper = new THREE.AxesHelper( 5 );\n * scene.add( axesHelper );\n * ```\n *\n * @augments LineSegments\n */\nclass AxesHelper extends LineSegments {\n\n\t/**\n\t * Constructs a new axes helper.\n\t *\n\t * @param {number} [size=1] - Size of the lines representing the axes.\n\t */\n\tconstructor( size = 1 ) {\n\n\t\tconst vertices = [\n\t\t\t0, 0, 0,\tsize, 0, 0,\n\t\t\t0, 0, 0,\t0, size, 0,\n\t\t\t0, 0, 0,\t0, 0, size\n\t\t];\n\n\t\tconst colors = [\n\t\t\t1, 0, 0,\t1, 0.6, 0,\n\t\t\t0, 1, 0,\t0.6, 1, 0,\n\t\t\t0, 0, 1,\t0, 0.6, 1\n\t\t];\n\n\t\tconst geometry = new BufferGeometry();\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\n\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\n\n\t\tsuper( geometry, material );\n\n\t\tthis.type = 'AxesHelper';\n\n\t}\n\n\t/**\n\t * Defines the colors of the axes helper.\n\t *\n\t * @param {number|Color|string} xAxisColor - The color for the x axis.\n\t * @param {number|Color|string} yAxisColor - The color for the y axis.\n\t * @param {number|Color|string} zAxisColor - The color for the z axis.\n\t * @return {AxesHelper} A reference to this axes helper.\n\t */\n\tsetColors( xAxisColor, yAxisColor, zAxisColor ) {\n\n\t\tconst color = new Color();\n\t\tconst array = this.geometry.attributes.color.array;\n\n\t\tcolor.set( xAxisColor );\n\t\tcolor.toArray( array, 0 );\n\t\tcolor.toArray( array, 3 );\n\n\t\tcolor.set( yAxisColor );\n\t\tcolor.toArray( array, 6 );\n\t\tcolor.toArray( array, 9 );\n\n\t\tcolor.set( zAxisColor );\n\t\tcolor.toArray( array, 12 );\n\t\tcolor.toArray( array, 15 );\n\n\t\tthis.geometry.attributes.color.needsUpdate = true;\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Frees the GPU-related resources allocated by this instance. Call this\n\t * method whenever this instance is no longer used in your app.\n\t */\n\tdispose() {\n\n\t\tthis.geometry.dispose();\n\t\tthis.material.dispose();\n\n\t}\n\n}\n\n/**\n * This class is used to convert a series of paths to an array of\n * shapes. It is specifically used in context of fonts and SVG.\n */\nclass ShapePath {\n\n\t/**\n\t * Constructs a new shape path.\n\t */\n\tconstructor() {\n\n\t\tthis.type = 'ShapePath';\n\n\t\t/**\n\t\t * The color of the shape.\n\t\t *\n\t\t * @type {Color}\n\t\t */\n\t\tthis.color = new Color();\n\n\t\t/**\n\t\t * The paths that have been generated for this shape.\n\t\t *\n\t\t * @type {Array<Path>}\n\t\t * @default null\n\t\t */\n\t\tthis.subPaths = [];\n\n\t\t/**\n\t\t * The current path that is being generated.\n\t\t *\n\t\t * @type {?Path}\n\t\t * @default null\n\t\t */\n\t\tthis.currentPath = null;\n\n\t}\n\n\t/**\n\t * Creates a new path and moves it current point to the given one.\n\t *\n\t * @param {number} x - The x coordinate.\n\t * @param {number} y - The y coordinate.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tmoveTo( x, y ) {\n\n\t\tthis.currentPath = new Path();\n\t\tthis.subPaths.push( this.currentPath );\n\t\tthis.currentPath.moveTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link LineCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} x - The x coordinate of the end point.\n\t * @param {number} y - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tlineTo( x, y ) {\n\n\t\tthis.currentPath.lineTo( x, y );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link QuadraticBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCPx - The x coordinate of the control point.\n\t * @param {number} aCPy - The y coordinate of the control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tquadraticCurveTo( aCPx, aCPy, aX, aY ) {\n\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link CubicBezierCurve} to the path by connecting\n\t * the current point with the given one.\n\t *\n\t * @param {number} aCP1x - The x coordinate of the first control point.\n\t * @param {number} aCP1y - The y coordinate of the first control point.\n\t * @param {number} aCP2x - The x coordinate of the second control point.\n\t * @param {number} aCP2y - The y coordinate of the second control point.\n\t * @param {number} aX - The x coordinate of the end point.\n\t * @param {number} aY - The y coordinate of the end point.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tbezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\n\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Adds an instance of {@link SplineCurve} to the path by connecting\n\t * the current point with the given list of points.\n\t *\n\t * @param {Array<Vector2>} pts - An array of points in 2D space.\n\t * @return {ShapePath} A reference to this shape path.\n\t */\n\tsplineThru( pts ) {\n\n\t\tthis.currentPath.splineThru( pts );\n\n\t\treturn this;\n\n\t}\n\n\t/**\n\t * Converts the paths into an array of shapes.\n\t *\n\t * @param {boolean} isCCW - By default solid shapes are  defined clockwise (CW) and holes are defined counterclockwise (CCW).\n\t * If this flag is set to `true`, then those are flipped.\n\t * @return {Array<Shape>} An array of shapes.\n\t */\n\ttoShapes( isCCW ) {\n\n\t\tfunction toShapesNoHoles( inSubpaths ) {\n\n\t\t\tconst shapes = [];\n\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\n\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\n\n\t\t\t\tconst tmpShape = new Shape();\n\t\t\t\ttmpShape.curves = tmpPath.curves;\n\n\t\t\t\tshapes.push( tmpShape );\n\n\t\t\t}\n\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\n\n\t\t\tconst polyLen = inPolygon.length;\n\n\t\t\t// inPt on polygon contour => immediate success    or\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\n\t\t\t//  with the horizontal line through inPt, left of inPt\n\t\t\t//  not counting lowerY endpoints of edges and whole edges on that line\n\t\t\tlet inside = false;\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\n\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\n\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\n\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\n\n\t\t\t\t\t// not parallel\n\t\t\t\t\tif ( edgeDy < 0 ) {\n\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\n\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\n\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// parallel or collinear\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\n\t\t\t\t\t// continue;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn\tinside;\n\n\t\t}\n\n\t\tconst isClockWise = ShapeUtils.isClockWise;\n\n\t\tconst subPaths = this.subPaths;\n\t\tif ( subPaths.length === 0 ) return [];\n\n\t\tlet solid, tmpPath, tmpShape;\n\t\tconst shapes = [];\n\n\t\tif ( subPaths.length === 1 ) {\n\n\t\t\ttmpPath = subPaths[ 0 ];\n\t\t\ttmpShape = new Shape();\n\t\t\ttmpShape.curves = tmpPath.curves;\n\t\t\tshapes.push( tmpShape );\n\t\t\treturn shapes;\n\n\t\t}\n\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\n\n\t\t// console.log(\"Holes first\", holesFirst);\n\n\t\tconst betterShapeHoles = [];\n\t\tconst newShapes = [];\n\t\tlet newShapeHoles = [];\n\t\tlet mainIdx = 0;\n\t\tlet tmpPoints;\n\n\t\tnewShapes[ mainIdx ] = undefined;\n\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\n\n\t\t\ttmpPath = subPaths[ i ];\n\t\t\ttmpPoints = tmpPath.getPoints();\n\t\t\tsolid = isClockWise( tmpPoints );\n\t\t\tsolid = isCCW ? ! solid : solid;\n\n\t\t\tif ( solid ) {\n\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\n\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\n\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\n\n\t\t\t\t//console.log('cw', i);\n\n\t\t\t} else {\n\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\n\n\t\t\t\t//console.log('ccw', i);\n\n\t\t\t}\n\n\t\t}\n\n\t\t// only Holes? -> probably all Shapes with wrong orientation\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\n\n\n\t\tif ( newShapes.length > 1 ) {\n\n\t\t\tlet ambiguous = false;\n\t\t\tlet toChange = 0;\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\n\n\t\t\t}\n\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\n\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\n\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\n\n\t\t\t\t\tconst ho = sho[ hIdx ];\n\t\t\t\t\tlet hole_unassigned = true;\n\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\n\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\n\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange ++;\n\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\t\t\thole_unassigned = false;\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tambiguous = true;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hole_unassigned ) {\n\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( toChange > 0 && ambiguous === false ) {\n\n\t\t\t\tnewShapeHoles = betterShapeHoles;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet tmpHoles;\n\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\n\n\t\t\ttmpShape = newShapes[ i ].s;\n\t\t\tshapes.push( tmpShape );\n\t\t\ttmpHoles = newShapeHoles[ i ];\n\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\n\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//console.log(\"shape\", shapes);\n\n\t\treturn shapes;\n\n\t}\n\n}\n\n/**\n * Abstract base class for controls.\n *\n * @abstract\n * @augments EventDispatcher\n */\nclass Controls extends EventDispatcher {\n\n\t/**\n\t * Constructs a new controls instance.\n\t *\n\t * @param {Object3D} object - The object that is managed by the controls.\n\t * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.\n\t */\n\tconstructor( object, domElement = null ) {\n\n\t\tsuper();\n\n\t\t/**\n\t\t * The object that is managed by the controls.\n\t\t *\n\t\t * @type {Object3D}\n\t\t */\n\t\tthis.object = object;\n\n\t\t/**\n\t\t * The HTML element used for event listeners.\n\t\t *\n\t\t * @type {?HTMLDOMElement}\n\t\t * @default null\n\t\t */\n\t\tthis.domElement = domElement;\n\n\t\t/**\n\t\t * Whether the controls responds to user input or not.\n\t\t *\n\t\t * @type {boolean}\n\t\t * @default true\n\t\t */\n\t\tthis.enabled = true;\n\n\t\t/**\n\t\t * The internal state of the controls.\n\t\t *\n\t\t * @type {number}\n\t\t * @default -1\n\t\t */\n\t\tthis.state = -1;\n\n\t\t/**\n\t\t * This object defines the keyboard input of the controls.\n\t\t *\n\t\t * @type {Object}\n\t\t */\n\t\tthis.keys = {};\n\n\t\t/**\n\t\t * This object defines what type of actions are assigned to the available mouse buttons.\n\t\t * It depends on the control implementation what kind of mouse buttons and actions are supported.\n\t\t *\n\t\t * @type {{LEFT: ?number, MIDDLE: ?number, RIGHT: ?number}}\n\t\t */\n\t\tthis.mouseButtons = { LEFT: null, MIDDLE: null, RIGHT: null };\n\n\t\t/**\n\t\t * This object defines what type of actions are assigned to what kind of touch interaction.\n\t\t * It depends on the control implementation what kind of touch interaction and actions are supported.\n\t\t *\n\t\t * @type {{ONE: ?number, TWO: ?number}}\n\t\t */\n\t\tthis.touches = { ONE: null, TWO: null };\n\n\t}\n\n\t/**\n\t * Connects the controls to the DOM. This method has so called \"side effects\" since\n\t * it adds the module's event listeners to the DOM.\n\t */\n\tconnect() {}\n\n\t/**\n\t * Disconnects the controls from the DOM.\n\t */\n\tdisconnect() {}\n\n\t/**\n\t * Call this method if you no longer want use to the controls. It frees all internal\n\t * resources and removes all event listeners.\n\t */\n\tdispose() {}\n\n\t/**\n\t * Controls should implement this method if they have to update their internal state\n\t * per simulation step.\n\t *\n\t * @param {number} [delta] - The time delta in seconds.\n\t */\n\tupdate( /* delta */ ) {}\n\n}\n\n/**\n * Scales the texture as large as possible within its surface without cropping\n * or stretching the texture. The method preserves the original aspect ratio of\n * the texture. Akin to CSS `object-fit: contain`\n *\n * @param {Texture} texture - The texture.\n * @param {number} aspect - The texture's aspect ratio.\n * @return {Texture} The updated texture.\n */\nfunction contain( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t} else {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t}\n\n\treturn texture;\n\n}\n\n/**\n * Scales the texture to the smallest possible size to fill the surface, leaving\n * no empty space. The method preserves the original aspect ratio of the texture.\n * Akin to CSS `object-fit: cover`.\n *\n * @param {Texture} texture - The texture.\n * @param {number} aspect - The texture's aspect ratio.\n * @return {Texture} The updated texture.\n */\nfunction cover( texture, aspect ) {\n\n\tconst imageAspect = ( texture.image && texture.image.width ) ? texture.image.width / texture.image.height : 1;\n\n\tif ( imageAspect > aspect ) {\n\n\t\ttexture.repeat.x = aspect / imageAspect;\n\t\ttexture.repeat.y = 1;\n\n\t\ttexture.offset.x = ( 1 - texture.repeat.x ) / 2;\n\t\ttexture.offset.y = 0;\n\n\t} else {\n\n\t\ttexture.repeat.x = 1;\n\t\ttexture.repeat.y = imageAspect / aspect;\n\n\t\ttexture.offset.x = 0;\n\t\ttexture.offset.y = ( 1 - texture.repeat.y ) / 2;\n\n\t}\n\n\treturn texture;\n\n}\n\n/**\n * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.\n *\n * @param {Texture} texture - The texture.\n * @return {Texture} The updated texture.\n */\nfunction fill( texture ) {\n\n\ttexture.repeat.x = 1;\n\ttexture.repeat.y = 1;\n\n\ttexture.offset.x = 0;\n\ttexture.offset.y = 0;\n\n\treturn texture;\n\n}\n\n/**\n * Determines how many bytes must be used to represent the texture.\n *\n * @param {number} width - The width of the texture.\n * @param {number} height - The height of the texture.\n * @param {number} format - The texture's format.\n * @param {number} type - The texture's type.\n * @return {number} The byte length.\n */\nfunction getByteLength( width, height, format, type ) {\n\n\tconst typeByteLength = getTextureTypeByteLength( type );\n\n\tswitch ( format ) {\n\n\t\t// https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml\n\t\tcase AlphaFormat:\n\t\t\treturn width * height;\n\t\tcase LuminanceFormat:\n\t\t\treturn width * height;\n\t\tcase LuminanceAlphaFormat:\n\t\t\treturn width * height * 2;\n\t\tcase RedFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RedIntegerFormat:\n\t\t\treturn ( ( width * height ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGIntegerFormat:\n\t\t\treturn ( ( width * height * 2 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBFormat:\n\t\t\treturn ( ( width * height * 3 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\t\tcase RGBAIntegerFormat:\n\t\t\treturn ( ( width * height * 4 ) / typeByteLength.components ) * typeByteLength.byteLength;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_s3tc_srgb/\n\t\tcase RGB_S3TC_DXT1_Format:\n\t\tcase RGBA_S3TC_DXT1_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_S3TC_DXT3_Format:\n\t\tcase RGBA_S3TC_DXT5_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_pvrtc/\n\t\tcase RGB_PVRTC_2BPPV1_Format:\n\t\tcase RGBA_PVRTC_2BPPV1_Format:\n\t\t\treturn ( Math.max( width, 16 ) * Math.max( height, 8 ) ) / 4;\n\t\tcase RGB_PVRTC_4BPPV1_Format:\n\t\tcase RGBA_PVRTC_4BPPV1_Format:\n\t\t\treturn ( Math.max( width, 8 ) * Math.max( height, 8 ) ) / 2;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_etc/\n\t\tcase RGB_ETC1_Format:\n\t\tcase RGB_ETC2_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 8;\n\t\tcase RGBA_ETC2_EAC_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/WEBGL_compressed_texture_astc/\n\t\tcase RGBA_ASTC_4x4_Format:\n\t\t\treturn Math.floor( ( width + 3 ) / 4 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x4_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 3 ) / 4 ) * 16;\n\t\tcase RGBA_ASTC_5x5_Format:\n\t\t\treturn Math.floor( ( width + 4 ) / 5 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x5_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_6x6_Format:\n\t\t\treturn Math.floor( ( width + 5 ) / 6 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x5_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_8x6_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_8x8_Format:\n\t\t\treturn Math.floor( ( width + 7 ) / 8 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x5_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 4 ) / 5 ) * 16;\n\t\tcase RGBA_ASTC_10x6_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 5 ) / 6 ) * 16;\n\t\tcase RGBA_ASTC_10x8_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 7 ) / 8 ) * 16;\n\t\tcase RGBA_ASTC_10x10_Format:\n\t\t\treturn Math.floor( ( width + 9 ) / 10 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x10_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 9 ) / 10 ) * 16;\n\t\tcase RGBA_ASTC_12x12_Format:\n\t\t\treturn Math.floor( ( width + 11 ) / 12 ) * Math.floor( ( height + 11 ) / 12 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_bptc/\n\t\tcase RGBA_BPTC_Format:\n\t\tcase RGB_BPTC_SIGNED_Format:\n\t\tcase RGB_BPTC_UNSIGNED_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t\t// https://registry.khronos.org/webgl/extensions/EXT_texture_compression_rgtc/\n\t\tcase RED_RGTC1_Format:\n\t\tcase SIGNED_RED_RGTC1_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 8;\n\t\tcase RED_GREEN_RGTC2_Format:\n\t\tcase SIGNED_RED_GREEN_RGTC2_Format:\n\t\t\treturn Math.ceil( width / 4 ) * Math.ceil( height / 4 ) * 16;\n\n\t}\n\n\tthrow new Error(\n\t\t`Unable to determine texture byte length for ${format} format.`,\n\t);\n\n}\n\nfunction getTextureTypeByteLength( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase UnsignedByteType:\n\t\tcase ByteType:\n\t\t\treturn { byteLength: 1, components: 1 };\n\t\tcase UnsignedShortType:\n\t\tcase ShortType:\n\t\tcase HalfFloatType:\n\t\t\treturn { byteLength: 2, components: 1 };\n\t\tcase UnsignedShort4444Type:\n\t\tcase UnsignedShort5551Type:\n\t\t\treturn { byteLength: 2, components: 4 };\n\t\tcase UnsignedIntType:\n\t\tcase IntType:\n\t\tcase FloatType:\n\t\t\treturn { byteLength: 4, components: 1 };\n\t\tcase UnsignedInt5999Type:\n\t\t\treturn { byteLength: 4, components: 3 };\n\n\t}\n\n\tthrow new Error( `Unknown texture type ${type}.` );\n\n}\n\n/**\n * A class containing utility functions for textures.\n *\n * @hideconstructor\n */\nclass TextureUtils {\n\n\t/**\n\t * Scales the texture as large as possible within its surface without cropping\n\t * or stretching the texture. The method preserves the original aspect ratio of\n\t * the texture. Akin to CSS `object-fit: contain`\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @param {number} aspect - The texture's aspect ratio.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic contain( texture, aspect ) {\n\n\t\treturn contain( texture, aspect );\n\n\t}\n\n\t/**\n\t * Scales the texture to the smallest possible size to fill the surface, leaving\n\t * no empty space. The method preserves the original aspect ratio of the texture.\n\t * Akin to CSS `object-fit: cover`.\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @param {number} aspect - The texture's aspect ratio.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic cover( texture, aspect ) {\n\n\t\treturn cover( texture, aspect );\n\n\t}\n\n\t/**\n\t * Configures the texture to the default transformation. Akin to CSS `object-fit: fill`.\n\t *\n\t * @param {Texture} texture - The texture.\n\t * @return {Texture} The updated texture.\n\t */\n\tstatic fill( texture ) {\n\n\t\treturn fill( texture );\n\n\t}\n\n\t/**\n\t * Determines how many bytes must be used to represent the texture.\n\t *\n\t * @param {number} width - The width of the texture.\n\t * @param {number} height - The height of the texture.\n\t * @param {number} format - The texture's format.\n\t * @param {number} type - The texture's type.\n\t * @return {number} The byte length.\n\t */\n\tstatic getByteLength( width, height, format, type ) {\n\n\t\treturn getByteLength( width, height, format, type );\n\n\t}\n\n}\n\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\n\t\trevision: REVISION,\n\t} } ) );\n\n}\n\nif ( typeof window !== 'undefined' ) {\n\n\tif ( window.__THREE__ ) {\n\n\t\tconsole.warn( 'WARNING: Multiple instances of Three.js being imported.' );\n\n\t} else {\n\n\t\twindow.__THREE__ = REVISION;\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RenderTargetArray, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, arrayNeedsUint32, cloneUniforms, createCanvasElement, createElementNS, getByteLength, getUnlitUniformColorSpace, mergeUniforms, probeAsync, toNormalizedProjectionMatrix, toReversedProjectionMatrix, warnOnce };\n","/**\n * @license\n * Copyright 2010-2025 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nimport { Color, Matrix3, Vector2, mergeUniforms, Vector3, CubeUVReflectionMapping, Mesh, BoxGeometry, ShaderMaterial, cloneUniforms, BackSide, ColorManagement, SRGBTransfer, PlaneGeometry, FrontSide, getUnlitUniformColorSpace, Euler, Matrix4, IntType, RGBAFormat, HalfFloatType, UnsignedByteType, FloatType, Plane, EquirectangularReflectionMapping, EquirectangularRefractionMapping, WebGLCubeRenderTarget, CubeReflectionMapping, CubeRefractionMapping, PerspectiveCamera, NoToneMapping, MeshBasicMaterial, BufferGeometry, BufferAttribute, WebGLRenderTarget, NoBlending, OrthographicCamera, LinearFilter, LinearSRGBColorSpace, warnOnce, arrayNeedsUint32, Uint32BufferAttribute, Uint16BufferAttribute, Vector4, DataArrayTexture, LessEqualCompare, Texture, DepthTexture, Data3DTexture, CubeTexture, GLSL3, CustomToneMapping, NeutralToneMapping, AgXToneMapping, ACESFilmicToneMapping, CineonToneMapping, ReinhardToneMapping, LinearToneMapping, PCFShadowMap, PCFSoftShadowMap, VSMShadowMap, LinearTransfer, AddOperation, MixOperation, MultiplyOperation, ObjectSpaceNormalMap, TangentSpaceNormalMap, NormalBlending, DoubleSide, UniformsUtils, Layers, Frustum, MeshDepthMaterial, RGBADepthPacking, MeshDistanceMaterial, NearestFilter, LessEqualDepth, AddEquation, SubtractEquation, ReverseSubtractEquation, ZeroFactor, OneFactor, SrcColorFactor, SrcAlphaFactor, SrcAlphaSaturateFactor, DstColorFactor, DstAlphaFactor, OneMinusSrcColorFactor, OneMinusSrcAlphaFactor, OneMinusDstColorFactor, OneMinusDstAlphaFactor, ConstantColorFactor, OneMinusConstantColorFactor, ConstantAlphaFactor, OneMinusConstantAlphaFactor, CustomBlending, MultiplyBlending, SubtractiveBlending, AdditiveBlending, CullFaceNone, CullFaceBack, CullFaceFront, NotEqualDepth, GreaterDepth, GreaterEqualDepth, EqualDepth, LessDepth, AlwaysDepth, NeverDepth, MinEquation, MaxEquation, RepeatWrapping, ClampToEdgeWrapping, MirroredRepeatWrapping, NearestMipmapNearestFilter, NearestMipmapLinearFilter, LinearMipmapNearestFilter, LinearMipmapLinearFilter, NeverCompare, AlwaysCompare, LessCompare, EqualCompare, GreaterEqualCompare, GreaterCompare, NotEqualCompare, NoColorSpace, DepthStencilFormat, getByteLength, UnsignedIntType, UnsignedInt248Type, UnsignedShortType, DepthFormat, createElementNS, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedInt5999Type, ByteType, ShortType, AlphaFormat, RGBFormat, LuminanceFormat, LuminanceAlphaFormat, RedFormat, RedIntegerFormat, RGFormat, RGIntegerFormat, RGBAIntegerFormat, RGB_S3TC_DXT1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGB_PVRTC_4BPPV1_Format, RGB_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_PVRTC_2BPPV1_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGBA_ETC2_EAC_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_10x10_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_BPTC_Format, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RED_RGTC1_Format, SIGNED_RED_RGTC1_Format, RED_GREEN_RGTC2_Format, SIGNED_RED_GREEN_RGTC2_Format, EventDispatcher, ArrayCamera, WebXRController, RAD2DEG, createCanvasElement, SRGBColorSpace, REVISION, toNormalizedProjectionMatrix, toReversedProjectionMatrix, probeAsync, WebGLCoordinateSystem } from './three.core.js';\nexport { AdditiveAnimationBlendMode, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BasicDepthPacking, BasicShadowMap, BatchedMesh, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxHelper, BufferGeometryLoader, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CircleGeometry, Clock, ColorKeyframeTrack, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, Controls, CubeCamera, CubeTextureLoader, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceFrontBack, Curve, CurvePath, CylinderGeometry, Cylindrical, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualStencilFunc, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, Fog, FogExp2, FramebufferTexture, GLBufferAttribute, GLSL1, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialLoader, MathUtils, Matrix2, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NeverStencilFunc, NormalAnimationBlendMode, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, OctahedronGeometry, Path, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, RGBDepthPacking, RGBIntegerFormat, RGDepthPacking, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RenderTarget, RenderTarget3D, RenderTargetArray, ReplaceStencilOp, RingGeometry, Scene, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, TOUCH, TetrahedronGeometry, TextureLoader, TextureUtils, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGPUCoordinateSystem, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroSlopeEnding, ZeroStencilOp } from './three.core.js';\n\nfunction WebGLAnimation() {\n\n\tlet context = null;\n\tlet isAnimating = false;\n\tlet animationLoop = null;\n\tlet requestId = null;\n\n\tfunction onAnimationFrame( time, frame ) {\n\n\t\tanimationLoop( time, frame );\n\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t}\n\n\treturn {\n\n\t\tstart: function () {\n\n\t\t\tif ( isAnimating === true ) return;\n\t\t\tif ( animationLoop === null ) return;\n\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\n\n\t\t\tisAnimating = true;\n\n\t\t},\n\n\t\tstop: function () {\n\n\t\t\tcontext.cancelAnimationFrame( requestId );\n\n\t\t\tisAnimating = false;\n\n\t\t},\n\n\t\tsetAnimationLoop: function ( callback ) {\n\n\t\t\tanimationLoop = callback;\n\n\t\t},\n\n\t\tsetContext: function ( value ) {\n\n\t\t\tcontext = value;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLAttributes( gl ) {\n\n\tconst buffers = new WeakMap();\n\n\tfunction createBuffer( attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst usage = attribute.usage;\n\t\tconst size = array.byteLength;\n\n\t\tconst buffer = gl.createBuffer();\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\t\tgl.bufferData( bufferType, array, usage );\n\n\t\tattribute.onUploadCallback();\n\n\t\tlet type;\n\n\t\tif ( array instanceof Float32Array ) {\n\n\t\t\ttype = gl.FLOAT;\n\n\t\t} else if ( array instanceof Uint16Array ) {\n\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\n\n\t\t\t\ttype = gl.HALF_FLOAT;\n\n\t\t\t} else {\n\n\t\t\t\ttype = gl.UNSIGNED_SHORT;\n\n\t\t\t}\n\n\t\t} else if ( array instanceof Int16Array ) {\n\n\t\t\ttype = gl.SHORT;\n\n\t\t} else if ( array instanceof Uint32Array ) {\n\n\t\t\ttype = gl.UNSIGNED_INT;\n\n\t\t} else if ( array instanceof Int32Array ) {\n\n\t\t\ttype = gl.INT;\n\n\t\t} else if ( array instanceof Int8Array ) {\n\n\t\t\ttype = gl.BYTE;\n\n\t\t} else if ( array instanceof Uint8Array ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else if ( array instanceof Uint8ClampedArray ) {\n\n\t\t\ttype = gl.UNSIGNED_BYTE;\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'THREE.WebGLAttributes: Unsupported buffer data format: ' + array );\n\n\t\t}\n\n\t\treturn {\n\t\t\tbuffer: buffer,\n\t\t\ttype: type,\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\n\t\t\tversion: attribute.version,\n\t\t\tsize: size\n\t\t};\n\n\t}\n\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\n\n\t\tconst array = attribute.array;\n\t\tconst updateRanges = attribute.updateRanges;\n\n\t\tgl.bindBuffer( bufferType, buffer );\n\n\t\tif ( updateRanges.length === 0 ) {\n\n\t\t\t// Not using update ranges\n\t\t\tgl.bufferSubData( bufferType, 0, array );\n\n\t\t} else {\n\n\t\t\t// Before applying update ranges, we merge any adjacent / overlapping\n\t\t\t// ranges to reduce load on `gl.bufferSubData`. Empirically, this has led\n\t\t\t// to performance improvements for applications which make heavy use of\n\t\t\t// update ranges. Likely due to GPU command overhead.\n\t\t\t//\n\t\t\t// Note that to reduce garbage collection between frames, we merge the\n\t\t\t// update ranges in-place. This is safe because this method will clear the\n\t\t\t// update ranges once updated.\n\n\t\t\tupdateRanges.sort( ( a, b ) => a.start - b.start );\n\n\t\t\t// To merge the update ranges in-place, we work from left to right in the\n\t\t\t// existing updateRanges array, merging ranges. This may result in a final\n\t\t\t// array which is smaller than the original. This index tracks the last\n\t\t\t// index representing a merged range, any data after this index can be\n\t\t\t// trimmed once the merge algorithm is completed.\n\t\t\tlet mergeIndex = 0;\n\n\t\t\tfor ( let i = 1; i < updateRanges.length; i ++ ) {\n\n\t\t\t\tconst previousRange = updateRanges[ mergeIndex ];\n\t\t\t\tconst range = updateRanges[ i ];\n\n\t\t\t\t// We add one here to merge adjacent ranges. This is safe because ranges\n\t\t\t\t// operate over positive integers.\n\t\t\t\tif ( range.start <= previousRange.start + previousRange.count + 1 ) {\n\n\t\t\t\t\tpreviousRange.count = Math.max(\n\t\t\t\t\t\tpreviousRange.count,\n\t\t\t\t\t\trange.start + range.count - previousRange.start\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\t++ mergeIndex;\n\t\t\t\t\tupdateRanges[ mergeIndex ] = range;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Trim the array to only contain the merged ranges.\n\t\t\tupdateRanges.length = mergeIndex + 1;\n\n\t\t\tfor ( let i = 0, l = updateRanges.length; i < l; i ++ ) {\n\n\t\t\t\tconst range = updateRanges[ i ];\n\n\t\t\t\tgl.bufferSubData( bufferType, range.start * array.BYTES_PER_ELEMENT,\n\t\t\t\t\tarray, range.start, range.count );\n\n\t\t\t}\n\n\t\t\tattribute.clearUpdateRanges();\n\n\t\t}\n\n\t\tattribute.onUploadCallback();\n\n\t}\n\n\t//\n\n\tfunction get( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\treturn buffers.get( attribute );\n\n\t}\n\n\tfunction remove( attribute ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data ) {\n\n\t\t\tgl.deleteBuffer( data.buffer );\n\n\t\t\tbuffers.delete( attribute );\n\n\t\t}\n\n\t}\n\n\tfunction update( attribute, bufferType ) {\n\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\n\n\t\tif ( attribute.isGLBufferAttribute ) {\n\n\t\t\tconst cached = buffers.get( attribute );\n\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\n\n\t\t\t\tbuffers.set( attribute, {\n\t\t\t\t\tbuffer: attribute.buffer,\n\t\t\t\t\ttype: attribute.type,\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\n\t\t\t\t\tversion: attribute.version\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst data = buffers.get( attribute );\n\n\t\tif ( data === undefined ) {\n\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\n\n\t\t} else if ( data.version < attribute.version ) {\n\n\t\t\tif ( data.size !== attribute.array.byteLength ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLAttributes: The size of the buffer attribute\\'s array buffer does not match the original size. Resizing buffer attributes is not supported.' );\n\n\t\t\t}\n\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\n\n\t\t\tdata.version = attribute.version;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update\n\n\t};\n\n}\n\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\n\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\\tconst float ALPHA_HASH_SCALE = 0.05;\\n\\tfloat hash2D( vec2 value ) {\\n\\t\\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\\t}\\n\\tfloat hash3D( vec3 value ) {\\n\\t\\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\\t}\\n\\tfloat getAlphaHashThreshold( vec3 position ) {\\n\\t\\tfloat maxDeriv = max(\\n\\t\\t\\tlength( dFdx( position.xyz ) ),\\n\\t\\t\\tlength( dFdy( position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\\t\\tvec2 pixScales = vec2(\\n\\t\\t\\texp2( floor( log2( pixScale ) ) ),\\n\\t\\t\\texp2( ceil( log2( pixScale ) ) )\\n\\t\\t);\\n\\t\\tvec2 alpha = vec2(\\n\\t\\t\\thash3D( floor( pixScales.x * position.xyz ) ),\\n\\t\\t\\thash3D( floor( pixScales.y * position.xyz ) )\\n\\t\\t);\\n\\t\\tfloat lerpFactor = fract( log2( pixScale ) );\\n\\t\\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\\t\\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\\t\\tvec3 cases = vec3(\\n\\t\\t\\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\\t\\t\\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\\t\\t\\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\\t\\t);\\n\\t\\tfloat threshold = ( x < ( 1.0 - a ) )\\n\\t\\t\\t? ( ( x < a ) ? cases.x : cases.y )\\n\\t\\t\\t: cases.z;\\n\\t\\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\\t}\\n#endif\";\n\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\n\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\tif ( diffuseColor.a < alphaTest ) discard;\\n\\t#endif\\n#endif\";\n\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\\tuniform float alphaTest;\\n#endif\";\n\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_CLEARCOAT ) \\n\\t\\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_SHEEN ) \\n\\t\\tsheenSpecularIndirect *= ambientOcclusion;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\\t#endif\\n#endif\";\n\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\n\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\\t#if ! defined( GL_ANGLE_multi_draw )\\n\\t#define gl_DrawID _gl_DrawID\\n\\tuniform int _gl_DrawID;\\n\\t#endif\\n\\tuniform highp sampler2D batchingTexture;\\n\\tuniform highp usampler2D batchingIdTexture;\\n\\tmat4 getBatchingMatrix( const in float i ) {\\n\\t\\tint size = textureSize( batchingTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n\\tfloat getIndirectIndex( const in int i ) {\\n\\t\\tint size = textureSize( batchingIdTexture, 0 ).x;\\n\\t\\tint x = i % size;\\n\\t\\tint y = i / size;\\n\\t\\treturn float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\\n\\t}\\n#endif\\n#ifdef USE_BATCHING_COLOR\\n\\tuniform sampler2D batchingColorTexture;\\n\\tvec3 getBatchingColor( const in float i ) {\\n\\t\\tint size = textureSize( batchingColorTexture, 0 ).x;\\n\\t\\tint j = int( i );\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\treturn texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\\n\\t}\\n#endif\";\n\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\\tmat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\\n#endif\";\n\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\\tvPosition = vec3( position );\\n#endif\";\n\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\n\nvar bsdfs = \"float 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} // validated\";\n\nvar 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\\treturn 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 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\";\n\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\\t\\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + 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 = normalize( dFdx( surf_pos.xyz ) );\\n\\t\\tvec3 vSigmaY = normalize( 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\";\n\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#ifdef ALPHA_TO_COVERAGE\\n\\t\\tfloat distanceToPlane, distanceGradient;\\n\\t\\tfloat clipOpacity = 1.0;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\tif ( clipOpacity == 0.0 ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tfloat unionClipOpacity = 1.0;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\\t\\t\\t\\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\\t\\t\\t\\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tclipOpacity *= 1.0 - unionClipOpacity;\\n\\t\\t#endif\\n\\t\\tdiffuseColor.a *= clipOpacity;\\n\\t\\tif ( diffuseColor.a == 0.0 ) discard;\\n\\t#else\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\t\\tbool clipped = true;\\n\\t\\t\\t#pragma unroll_loop_start\\n\\t\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t\\t}\\n\\t\\t\\t#pragma unroll_loop_end\\n\\t\\t\\tif ( clipped ) discard;\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\n\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\n\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\n\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\n\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\n\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_pars_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvarying vec4 vColor;\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\n\nvar color_vertex = \"#if defined( USE_COLOR_ALPHA )\\n\\tvColor = vec4( 1.0 );\\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_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\\n#ifdef USE_BATCHING_COLOR\\n\\tvec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\\n\\tvColor.xyz *= batchingColor.xyz;\\n#endif\";\n\nvar 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};\\n#ifdef USE_ALPHAHASH\\n\\tvarying vec3 vPosition;\\n#endif\\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}\\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}\\nvec3 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} // validated\";\n\nvar 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_m0 - 2.0\\n\\t#define cubeUV_r1 0.8\\n\\t#define cubeUV_m1 - 1.0\\n\\t#define cubeUV_r4 0.4\\n\\t#define cubeUV_m4 2.0\\n\\t#define cubeUV_r5 0.305\\n\\t#define cubeUV_m5 3.0\\n\\t#define cubeUV_r6 0.21\\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\";\n\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\\tmat3 bm = mat3( batchingMatrix );\\n\\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\\ttransformedNormal = bm * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = bm * transformedTangent;\\n\\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmat3 im = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\\ttransformedNormal = im * transformedNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\ttransformedTangent = im * transformedTangent;\\n\\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\n\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\n\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\n\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\\n\\t\\temissiveColor = sRGBTransferEOTF( emissiveColor );\\n\\t#endif\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\n\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\n\nvar colorspace_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\n\nvar colorspace_pars_fragment = \"vec4 LinearTransferOETF( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 sRGBTransferEOTF( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 sRGBTransferOETF( 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}\";\n\nvar 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, envMapRotation * 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\";\n\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform mat3 envMapRotation;\\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\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tvFogDepth = - mvPosition.z;\\n#endif\";\n\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float vFogDepth;\\n#endif\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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}\";\n\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\n\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\n\nvar 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\";\n\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\\tuniform vec3 lightProbe[ 9 ];\\n#endif\\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\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif ( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\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, 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 vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = pointLight.position - geometryPosition;\\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 vec3 geometryPosition, out IncidentLight light ) {\\n\\t\\tvec3 lVector = spotLight.position - geometryPosition;\\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\";\n\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, envMapRotation * 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#ifdef 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, envMapRotation * 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\\t#ifdef USE_ANISOTROPY\\n\\t\\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\\t\\t\\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t\\t\\t\\tvec3 bentNormal = cross( bitangent, viewDir );\\n\\t\\t\\t\\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\\t\\t\\t\\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\\t\\t\\t\\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\\t\\t\\t#else\\n\\t\\t\\t\\treturn vec3( 0.0 );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t#endif\\n#endif\";\n\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\n\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\";\n\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\n\nvar 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\";\n\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\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 USE_SPECULAR\\n\\t\\tfloat specularIntensityFactor = specularIntensity;\\n\\t\\tvec3 specularColorFactor = specularColor;\\n\\t\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\t\\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\\t\\t#endif\\n\\t\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\t\\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\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, vClearcoatMapUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).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_DISPERSION\\n\\tmaterial.dispersion = dispersion;\\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, vIridescenceMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\t\\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).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_SHEEN_COLORMAP\\n\\t\\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\\t#endif\\n\\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\\t\\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\\t\\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\\t#else\\n\\t\\tvec2 anisotropyV = anisotropyVector;\\n\\t#endif\\n\\tmaterial.anisotropy = length( anisotropyV );\\n\\tif( material.anisotropy == 0.0 ) {\\n\\t\\tanisotropyV = vec2( 1.0, 0.0 );\\n\\t} else {\\n\\t\\tanisotropyV /= material.anisotropy;\\n\\t\\tmaterial.anisotropy = saturate( material.anisotropy );\\n\\t}\\n\\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\n\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat roughness;\\n\\tvec3 specularColor;\\n\\tfloat specularF90;\\n\\tfloat dispersion;\\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\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat anisotropy;\\n\\t\\tfloat alphaT;\\n\\t\\tvec3 anisotropyT;\\n\\t\\tvec3 anisotropyB;\\n\\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\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}\\n#ifdef USE_ANISOTROPY\\n\\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\\t\\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\\t\\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\\t\\tfloat v = 0.5 / ( gv + gl );\\n\\t\\treturn saturate(v);\\n\\t}\\n\\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\\t\\tfloat a2 = alphaT * alphaB;\\n\\t\\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\\t\\thighp float v2 = dot( v, v );\\n\\t\\tfloat w2 = a2 / v2;\\n\\t\\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\\t\\tvec3 f0 = material.clearcoatF0;\\n\\t\\tfloat f90 = material.clearcoatF90;\\n\\t\\tfloat roughness = material.clearcoatRoughness;\\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 = F_Schlick( f0, f90, dotVH );\\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\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\\tvec3 f0 = material.specularColor;\\n\\tfloat f90 = material.specularF90;\\n\\tfloat roughness = material.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\\t#ifdef USE_IRIDESCENCE\\n\\t\\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\\t#endif\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\\t\\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\\t\\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\\t\\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\\t\\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\\t\\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\\t\\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\\t\\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\\t#else\\n\\t\\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\t\\tfloat D = D_GGX( alpha, dotNH );\\n\\t#endif\\n\\treturn F * ( V * D );\\n}\\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}\\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\\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometryNormal;\\n\\t\\tvec3 viewDir = geometryViewDir;\\n\\t\\tvec3 position = geometryPosition;\\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\\t\\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\\t#endif\\n\\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, 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( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\\t#else\\n\\t\\tcomputeMultiscattering( geometryNormal, geometryViewDir, 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}\";\n\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\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, geometryPosition, 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.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, geometryPosition, 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.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, 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.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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\\t#if defined( USE_LIGHT_PROBES )\\n\\t\\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\\t#endif\\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 ], geometryNormal );\\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\";\n\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\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( geometryNormal );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\t#ifdef USE_ANISOTROPY\\n\\t\\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\\t#else\\n\\t\\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\\t#endif\\n#endif\";\n\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\n\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tgl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\n\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\n\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\tvFragDepth = 1.0 + gl_Position.w;\\n\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n#endif\";\n\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\n\\t#ifdef DECODE_VIDEO_TEXTURE\\n\\t\\tsampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\\n\\t#endif\\n\\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\n\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\n\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t#if defined( USE_POINTS_UV )\\n\\t\\tvec2 uv = vUv;\\n\\t#else\\n\\t\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\\t#endif\\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\";\n\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\\tvarying vec2 vUv;\\n#else\\n\\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\t\\tuniform mat3 uvTransform;\\n\\t#endif\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\n\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\n\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\n\nvar morphinstance_vertex = \"#ifdef USE_INSTANCING_MORPH\\n\\tfloat morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\tfloat morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tmorphTargetInfluences[i] =  texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\\n\\t}\\n#endif\";\n\nvar morphcolor_vertex = \"#if defined( USE_MORPHCOLORS )\\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\";\n\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\\n\\t}\\n#endif\";\n\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\t#ifndef USE_INSTANCING_MORPH\\n\\t\\tuniform float morphTargetBaseInfluence;\\n\\t\\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\\n\\t#endif\\n\\tuniform sampler2DArray morphTargetsTexture;\\n\\tuniform ivec2 morphTargetsTextureSize;\\n\\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\\n\\t\\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\\n\\t\\tint y = texelIndex / morphTargetsTextureSize.x;\\n\\t\\tint x = texelIndex - y * morphTargetsTextureSize.x;\\n\\t\\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\\n\\t\\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\\n\\t}\\n#endif\";\n\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\\n\\t\\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\\n\\t}\\n#endif\";\n\nvar 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 *= faceDirection;\\n\\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\\t\\t#if defined( USE_NORMALMAP )\\n\\t\\t\\tvNormalMapUv\\n\\t\\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tvClearcoatNormalMapUv\\n\\t\\t#else\\n\\t\\t\\tvUv\\n\\t\\t#endif\\n\\t\\t);\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn[0] *= faceDirection;\\n\\t\\ttbn[1] *= faceDirection;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\t#ifdef USE_TANGENT\\n\\t\\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\\t#else\\n\\t\\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\\t#endif\\n\\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\\t\\ttbn2[0] *= faceDirection;\\n\\t\\ttbn2[1] *= faceDirection;\\n\\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\n\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tnormal = texture2D( normalMap, vNormalMapUv ).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( USE_NORMALMAP_TANGENTSPACE )\\n\\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\n\nvar 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\";\n\nvar 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\";\n\nvar 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\";\n\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\\t\\tvec3 q0 = dFdx( eye_pos.xyz );\\n\\t\\tvec3 q1 = dFdy( eye_pos.xyz );\\n\\t\\tvec2 st0 = dFdx( uv.st );\\n\\t\\tvec2 st1 = dFdy( uv.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 : inversesqrt( det );\\n\\t\\treturn mat3( T * scale, B * scale, N );\\n\\t}\\n#endif\";\n\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\n\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\n\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\n\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\n\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\n\nvar 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.;const float ShiftRight8 = 1. / 256.;\\nconst float Inv255 = 1. / 255.;\\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec4( 0., 0., 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec4( 1., 1., 1., 1. );\\n\\tfloat vuf;\\n\\tfloat af = modf( v * PackFactors.a, vuf );\\n\\tfloat bf = modf( vuf * ShiftRight8, vuf );\\n\\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\\treturn vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\\n}\\nvec3 packDepthToRGB( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec3( 0., 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec3( 1., 1., 1. );\\n\\tfloat vuf;\\n\\tfloat bf = modf( v * PackFactors.b, vuf );\\n\\tfloat gf = modf( vuf * ShiftRight8, vuf );\\n\\treturn vec3( vuf * Inv255, gf * PackUpscale, bf );\\n}\\nvec2 packDepthToRG( const in float v ) {\\n\\tif( v <= 0.0 )\\n\\t\\treturn vec2( 0., 0. );\\n\\tif( v >= 1.0 )\\n\\t\\treturn vec2( 1., 1. );\\n\\tfloat vuf;\\n\\tfloat gf = modf( v * 256., vuf );\\n\\treturn vec2( vuf * Inv255, gf );\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors4 );\\n}\\nfloat unpackRGBToDepth( const in vec3 v ) {\\n\\treturn dot( v, UnpackFactors3 );\\n}\\nfloat unpackRGToDepth( const in vec2 v ) {\\n\\treturn v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\\n}\\nvec4 pack2HalfToRGBA( const in 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( const in 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 depth, const in float near, const in float far ) {\\n\\treturn depth * ( 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 depth, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\n\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\n\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\n\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\n\nvar 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\";\n\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\n\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\n\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\\tuniform 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 shadowIntensity;\\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 shadowIntensity;\\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 shadowIntensity;\\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 shadowIntensity, 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 mix( 1.0, shadow, shadowIntensity );\\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 shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\t\\n\\t\\tfloat lightToPositionLength = length( lightToPosition );\\n\\t\\tif ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\\n\\t\\t\\tfloat dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\t\\tdp += shadowBias;\\n\\t\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\t\\tshadow = (\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tshadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn mix( 1.0, shadow, shadowIntensity );\\n\\t}\\n#endif\";\n\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\\tvarying 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 shadowIntensity;\\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 shadowIntensity;\\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 shadowIntensity;\\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\";\n\nvar 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\";\n\nvar 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.shadowIntensity, 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.shadowIntensity, 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.shadowIntensity, 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}\";\n\nvar 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\";\n\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\tuniform highp sampler2D boneTexture;\\n\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\tint size = textureSize( boneTexture, 0 ).x;\\n\\t\\tint j = int( i ) * 4;\\n\\t\\tint x = j % size;\\n\\t\\tint y = j / size;\\n\\t\\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\\t\\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\\t\\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\\t\\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\\t\\treturn mat4( v1, v2, v3, v4 );\\n\\t}\\n#endif\";\n\nvar 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\";\n\nvar 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\";\n\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\n\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\n\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\n\nvar 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 saturate( toneMappingExposure * color );\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 CineonToneMapping( 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}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\\tvec3 x2 = x * x;\\n\\tvec3 x4 = x2 * x2;\\n\\treturn + 15.5 * x4 * x2\\n\\t\\t- 40.14 * x4 * x\\n\\t\\t+ 31.96 * x4\\n\\t\\t- 6.868 * x2 * x\\n\\t\\t+ 0.4298 * x2\\n\\t\\t+ 0.1191 * x\\n\\t\\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\\tconst mat3 AgXInsetMatrix = mat3(\\n\\t\\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\\t\\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\\t\\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\\t);\\n\\tconst mat3 AgXOutsetMatrix = mat3(\\n\\t\\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\\t\\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\\t\\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\\t);\\n\\tconst float AgxMinEv = - 12.47393;\\tconst float AgxMaxEv = 4.026069;\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\\tcolor = AgXInsetMatrix * color;\\n\\tcolor = max( color, 1e-10 );\\tcolor = log2( color );\\n\\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\tcolor = agxDefaultContrastApprox( color );\\n\\tcolor = AgXOutsetMatrix * color;\\n\\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\\tcolor = clamp( color, 0.0, 1.0 );\\n\\treturn color;\\n}\\nvec3 NeutralToneMapping( vec3 color ) {\\n\\tconst float StartCompression = 0.8 - 0.04;\\n\\tconst float Desaturation = 0.15;\\n\\tcolor *= toneMappingExposure;\\n\\tfloat x = min( color.r, min( color.g, color.b ) );\\n\\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\\n\\tcolor -= offset;\\n\\tfloat peak = max( color.r, max( color.g, color.b ) );\\n\\tif ( peak < StartCompression ) return color;\\n\\tfloat d = 1. - StartCompression;\\n\\tfloat newPeak = 1. - d * d / ( peak + d - StartCompression );\\n\\tcolor *= newPeak / peak;\\n\\tfloat g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\\n\\treturn mix( color, vec3( newPeak ), g );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\n\nvar 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, vTransmissionMapUv ).r;\\n\\t#endif\\n\\t#ifdef USE_THICKNESSMAP\\n\\t\\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\\t#endif\\n\\tvec3 pos = vWorldPosition;\\n\\tvec3 v = normalize( cameraPosition - pos );\\n\\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\\tvec4 transmitted = getIBLVolumeRefraction(\\n\\t\\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\\n\\t\\tpos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\\n\\t\\tmaterial.attenuationColor, material.attenuationDistance );\\n\\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\\n\\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\n\nvar 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\\tfloat w0( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w1( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a *  a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\\t}\\n\\tfloat w2( float a ){\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\\t}\\n\\tfloat w3( float a ) {\\n\\t\\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\\t}\\n\\tfloat g0( float a ) {\\n\\t\\treturn w0( a ) + w1( a );\\n\\t}\\n\\tfloat g1( float a ) {\\n\\t\\treturn w2( a ) + w3( a );\\n\\t}\\n\\tfloat h0( float a ) {\\n\\t\\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\\t}\\n\\tfloat h1( float a ) {\\n\\t\\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\\t}\\n\\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\\t\\tuv = uv * texelSize.zw + 0.5;\\n\\t\\tvec2 iuv = floor( uv );\\n\\t\\tvec2 fuv = fract( uv );\\n\\t\\tfloat g0x = g0( fuv.x );\\n\\t\\tfloat g1x = g1( fuv.x );\\n\\t\\tfloat h0x = h0( fuv.x );\\n\\t\\tfloat h1x = h1( fuv.x );\\n\\t\\tfloat h0y = h0( fuv.y );\\n\\t\\tfloat h1y = h1( fuv.y );\\n\\t\\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\\t\\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\\t\\t\\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\\t}\\n\\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\\t\\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\\t\\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\\t\\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\\t\\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\\t\\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\\t\\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\\t\\treturn mix( fSample, cSample, fract( lod ) );\\n\\t}\\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 lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\\t\\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\\t}\\n\\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tif ( isinf( attenuationDistance ) ) {\\n\\t\\t\\treturn vec3( 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\\t\\t\\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\\t\\t\\treturn transmittance;\\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 dispersion, const in float ior, const in float thickness,\\n\\t\\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\\n\\t\\tvec4 transmittedLight;\\n\\t\\tvec3 transmittance;\\n\\t\\t#ifdef USE_DISPERSION\\n\\t\\t\\tfloat halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\\n\\t\\t\\tvec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\\n\\t\\t\\tfor ( int i = 0; i < 3; i ++ ) {\\n\\t\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\\n\\t\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\t\\tvec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\\n\\t\\t\\t\\ttransmittedLight[ i ] = transmissionSample[ i ];\\n\\t\\t\\t\\ttransmittedLight.a += transmissionSample.a;\\n\\t\\t\\t\\ttransmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\\n\\t\\t\\t}\\n\\t\\t\\ttransmittedLight.a /= 3.0;\\n\\t\\t#else\\n\\t\\t\\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\\n\\t\\t\\tvec3 refractedRayExit = position + transmissionRay;\\n\\t\\t\\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\\n\\t\\t\\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\\n\\t\\t\\trefractionCoords += 1.0;\\n\\t\\t\\trefractionCoords /= 2.0;\\n\\t\\t\\ttransmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\\n\\t\\t\\ttransmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\\t\\t#endif\\n\\t\\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\\t\\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\\t\\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\\t\\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\\t}\\n#endif\";\n\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform mat3 mapTransform;\\n\\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform mat3 alphaMapTransform;\\n\\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tuniform mat3 lightMapTransform;\\n\\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\\tuniform mat3 aoMapTransform;\\n\\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tuniform mat3 bumpMapTransform;\\n\\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tuniform mat3 normalMapTransform;\\n\\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tuniform mat3 displacementMapTransform;\\n\\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tuniform mat3 emissiveMapTransform;\\n\\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tuniform mat3 metalnessMapTransform;\\n\\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tuniform mat3 roughnessMapTransform;\\n\\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tuniform mat3 anisotropyMapTransform;\\n\\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tuniform mat3 clearcoatMapTransform;\\n\\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform mat3 clearcoatNormalMapTransform;\\n\\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform mat3 clearcoatRoughnessMapTransform;\\n\\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tuniform mat3 sheenColorMapTransform;\\n\\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tuniform mat3 sheenRoughnessMapTransform;\\n\\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tuniform mat3 iridescenceMapTransform;\\n\\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tuniform mat3 iridescenceThicknessMapTransform;\\n\\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tuniform mat3 specularMapTransform;\\n\\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tuniform mat3 specularColorMapTransform;\\n\\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tuniform mat3 specularIntensityMapTransform;\\n\\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tuniform mat3 transmissionMapTransform;\\n\\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tuniform mat3 thicknessMapTransform;\\n\\tvarying vec2 vThicknessMapUv;\\n#endif\";\n\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\n\nvar 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_BATCHING\\n\\t\\tworldPosition = batchingMatrix * worldPosition;\\n\\t#endif\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\n\nconst vertex$h = \"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}\";\n\nconst fragment$h = \"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 <colorspace_fragment>\\n}\";\n\nconst vertex$g = \"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}\";\n\nconst fragment$g = \"#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;\\nuniform mat3 backgroundRotation;\\nvarying vec3 vWorldDirection;\\n#include <cube_uv_reflection_fragment>\\nvoid main() {\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 texColor = textureCubeUV( envMap, backgroundRotation * 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 <colorspace_fragment>\\n}\";\n\nconst vertex$f = \"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}\";\n\nconst fragment$f = \"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 <colorspace_fragment>\\n}\";\n\nconst vertex$e = \"#include <common>\\n#include <batching_pars_vertex>\\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 <batching_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <morphinstance_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}\";\n\nconst fragment$e = \"#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 <alphahash_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <clipping_planes_fragment>\\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 <alphahash_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#elif DEPTH_PACKING == 3202\\n\\t\\tgl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\\n\\t#elif DEPTH_PACKING == 3203\\n\\t\\tgl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\\n\\t#endif\\n}\";\n\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\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 <batching_vertex>\\n\\t#include <skinbase_vertex>\\n\\t#include <morphinstance_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}\";\n\nconst fragment$d = \"#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 <alphahash_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include <clipping_planes_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <alphahash_fragment>\\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\n\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include <begin_vertex>\\n\\t#include <project_vertex>\\n}\";\n\nconst fragment$c = \"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 <colorspace_fragment>\\n}\";\n\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <uv_pars_vertex>\\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 <uv_vertex>\\n\\t#include <color_vertex>\\n\\t#include <morphinstance_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}\";\n\nconst fragment$b = \"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 <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <color_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nconst vertex$a = \"#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\\t#include <morphinstance_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <batching_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}\";\n\nconst fragment$a = \"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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\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 <alphahash_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, vLightMapUv );\\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 <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\\t#include <morphinstance_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <batching_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}\";\n\nconst fragment$9 = \"#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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\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 <morphinstance_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <batching_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}\";\n\nconst fragment$8 = \"#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 <alphahash_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\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#include <common>\\n#include <batching_pars_vertex>\\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 <batching_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphinstance_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( USE_NORMALMAP_TANGENTSPACE )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\n\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\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\\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\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 ), diffuseColor.a );\\n\\t#ifdef OPAQUE\\n\\t\\tgl_FragColor.a = 1.0;\\n\\t#endif\\n}\";\n\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <batching_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphinstance_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}\";\n\nconst fragment$6 = \"#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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\\tvarying vec3 vWorldPosition;\\n#endif\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\\t#include <morphinstance_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <batching_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}\";\n\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define IOR\\n\\t#define USE_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 USE_SPECULAR\\n\\tuniform float specularIntensity;\\n\\tuniform vec3 specularColor;\\n\\t#ifdef USE_SPECULAR_COLORMAP\\n\\t\\tuniform sampler2D specularColorMap;\\n\\t#endif\\n\\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\\t\\tuniform sampler2D specularIntensityMap;\\n\\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_DISPERSION\\n\\tuniform float dispersion;\\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_SHEEN_COLORMAP\\n\\t\\tuniform sampler2D sheenColorMap;\\n\\t#endif\\n\\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\\t\\tuniform sampler2D sheenRoughnessMap;\\n\\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\\tuniform vec2 anisotropyVector;\\n\\t#ifdef USE_ANISOTROPYMAP\\n\\t\\tuniform sampler2D anisotropyMap;\\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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\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\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\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 <alphahash_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 + sheenSpecularDirect + sheenSpecularIndirect;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT\\n\\t\\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\\t\\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\\t\\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\\t#endif\\n\\t#include <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\\t#include <morphinstance_vertex>\\n\\t#include <morphcolor_vertex>\\n\\t#include <batching_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}\";\n\nconst fragment$4 = \"#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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n\\t#include <dithering_fragment>\\n}\";\n\nconst vertex$3 = \"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>\\n#ifdef USE_POINTS_UV\\n\\tvarying vec2 vUv;\\n\\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\\t#ifdef USE_POINTS_UV\\n\\t\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\t#endif\\n\\t#include <color_vertex>\\n\\t#include <morphinstance_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}\";\n\nconst fragment$3 = \"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 <alphahash_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_particle_fragment>\\n\\t#include <color_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <alphahash_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n\\t#include <premultiplied_alpha_fragment>\\n}\";\n\nconst vertex$2 = \"#include <common>\\n#include <batching_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\\t#include <batching_vertex>\\n\\t#include <beginnormal_vertex>\\n\\t#include <morphinstance_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 <logdepthbuf_vertex>\\n\\t#include <worldpos_vertex>\\n\\t#include <shadowmap_vertex>\\n\\t#include <fog_vertex>\\n}\";\n\nconst fragment$2 = \"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 <logdepthbuf_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\\t#include <logdepthbuf_fragment>\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nconst vertex$1 = \"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[ 3 ];\\n\\tvec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\\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}\";\n\nconst fragment$1 = \"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 <alphahash_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include <clipping_planes_fragment>\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\t#include <logdepthbuf_fragment>\\n\\t#include <map_fragment>\\n\\t#include <alphamap_fragment>\\n\\t#include <alphatest_fragment>\\n\\t#include <alphahash_fragment>\\n\\toutgoingLight = diffuseColor.rgb;\\n\\t#include <opaque_fragment>\\n\\t#include <tonemapping_fragment>\\n\\t#include <colorspace_fragment>\\n\\t#include <fog_fragment>\\n}\";\n\nconst ShaderChunk = {\n\talphahash_fragment: alphahash_fragment,\n\talphahash_pars_fragment: alphahash_pars_fragment,\n\talphamap_fragment: alphamap_fragment,\n\talphamap_pars_fragment: alphamap_pars_fragment,\n\talphatest_fragment: alphatest_fragment,\n\talphatest_pars_fragment: alphatest_pars_fragment,\n\taomap_fragment: aomap_fragment,\n\taomap_pars_fragment: aomap_pars_fragment,\n\tbatching_pars_vertex: batching_pars_vertex,\n\tbatching_vertex: batching_vertex,\n\tbegin_vertex: begin_vertex,\n\tbeginnormal_vertex: beginnormal_vertex,\n\tbsdfs: bsdfs,\n\tiridescence_fragment: iridescence_fragment,\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\n\tclipping_planes_fragment: clipping_planes_fragment,\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\n\tclipping_planes_vertex: clipping_planes_vertex,\n\tcolor_fragment: color_fragment,\n\tcolor_pars_fragment: color_pars_fragment,\n\tcolor_pars_vertex: color_pars_vertex,\n\tcolor_vertex: color_vertex,\n\tcommon: common,\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\n\tdefaultnormal_vertex: defaultnormal_vertex,\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\n\tdisplacementmap_vertex: displacementmap_vertex,\n\temissivemap_fragment: emissivemap_fragment,\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\n\tcolorspace_fragment: colorspace_fragment,\n\tcolorspace_pars_fragment: colorspace_pars_fragment,\n\tenvmap_fragment: envmap_fragment,\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\n\tenvmap_pars_fragment: envmap_pars_fragment,\n\tenvmap_pars_vertex: envmap_pars_vertex,\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\n\tenvmap_vertex: envmap_vertex,\n\tfog_vertex: fog_vertex,\n\tfog_pars_vertex: fog_pars_vertex,\n\tfog_fragment: fog_fragment,\n\tfog_pars_fragment: fog_pars_fragment,\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\n\tlightmap_pars_fragment: lightmap_pars_fragment,\n\tlights_lambert_fragment: lights_lambert_fragment,\n\tlights_lambert_pars_fragment: lights_lambert_pars_fragment,\n\tlights_pars_begin: lights_pars_begin,\n\tlights_toon_fragment: lights_toon_fragment,\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\n\tlights_phong_fragment: lights_phong_fragment,\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\n\tlights_physical_fragment: lights_physical_fragment,\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\n\tlights_fragment_begin: lights_fragment_begin,\n\tlights_fragment_maps: lights_fragment_maps,\n\tlights_fragment_end: lights_fragment_end,\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\n\tmap_fragment: map_fragment,\n\tmap_pars_fragment: map_pars_fragment,\n\tmap_particle_fragment: map_particle_fragment,\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\n\tmetalnessmap_fragment: metalnessmap_fragment,\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\n\tmorphinstance_vertex: morphinstance_vertex,\n\tmorphcolor_vertex: morphcolor_vertex,\n\tmorphnormal_vertex: morphnormal_vertex,\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\n\tmorphtarget_vertex: morphtarget_vertex,\n\tnormal_fragment_begin: normal_fragment_begin,\n\tnormal_fragment_maps: normal_fragment_maps,\n\tnormal_pars_fragment: normal_pars_fragment,\n\tnormal_pars_vertex: normal_pars_vertex,\n\tnormal_vertex: normal_vertex,\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\n\tiridescence_pars_fragment: iridescence_pars_fragment,\n\topaque_fragment: opaque_fragment,\n\tpacking: packing,\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\n\tproject_vertex: project_vertex,\n\tdithering_fragment: dithering_fragment,\n\tdithering_pars_fragment: dithering_pars_fragment,\n\troughnessmap_fragment: roughnessmap_fragment,\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\n\tshadowmap_vertex: shadowmap_vertex,\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\n\tskinbase_vertex: skinbase_vertex,\n\tskinning_pars_vertex: skinning_pars_vertex,\n\tskinning_vertex: skinning_vertex,\n\tskinnormal_vertex: skinnormal_vertex,\n\tspecularmap_fragment: specularmap_fragment,\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\n\ttonemapping_fragment: tonemapping_fragment,\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\n\ttransmission_fragment: transmission_fragment,\n\ttransmission_pars_fragment: transmission_pars_fragment,\n\tuv_pars_fragment: uv_pars_fragment,\n\tuv_pars_vertex: uv_pars_vertex,\n\tuv_vertex: uv_vertex,\n\tworldpos_vertex: worldpos_vertex,\n\n\tbackground_vert: vertex$h,\n\tbackground_frag: fragment$h,\n\tbackgroundCube_vert: vertex$g,\n\tbackgroundCube_frag: fragment$g,\n\tcube_vert: vertex$f,\n\tcube_frag: fragment$f,\n\tdepth_vert: vertex$e,\n\tdepth_frag: fragment$e,\n\tdistanceRGBA_vert: vertex$d,\n\tdistanceRGBA_frag: fragment$d,\n\tequirect_vert: vertex$c,\n\tequirect_frag: fragment$c,\n\tlinedashed_vert: vertex$b,\n\tlinedashed_frag: fragment$b,\n\tmeshbasic_vert: vertex$a,\n\tmeshbasic_frag: fragment$a,\n\tmeshlambert_vert: vertex$9,\n\tmeshlambert_frag: fragment$9,\n\tmeshmatcap_vert: vertex$8,\n\tmeshmatcap_frag: fragment$8,\n\tmeshnormal_vert: vertex$7,\n\tmeshnormal_frag: fragment$7,\n\tmeshphong_vert: vertex$6,\n\tmeshphong_frag: fragment$6,\n\tmeshphysical_vert: vertex$5,\n\tmeshphysical_frag: fragment$5,\n\tmeshtoon_vert: vertex$4,\n\tmeshtoon_frag: fragment$4,\n\tpoints_vert: vertex$3,\n\tpoints_frag: fragment$3,\n\tshadow_vert: vertex$2,\n\tshadow_frag: fragment$2,\n\tsprite_vert: vertex$1,\n\tsprite_frag: fragment$1\n};\n\n/**\n * Uniforms library for shared webgl shaders\n */\n\nconst UniformsLib = {\n\n\tcommon: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\n\t\talphaTest: { value: 0 }\n\n\t},\n\n\tspecularmap: {\n\n\t\tspecularMap: { value: null },\n\t\tspecularMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tenvmap: {\n\n\t\tenvMap: { value: null },\n\t\tenvMapRotation: { value: /*@__PURE__*/ new Matrix3() },\n\t\tflipEnvMap: { value: -1 },\n\t\treflectivity: { value: 1.0 }, // basic, lambert, phong\n\t\tior: { value: 1.5 }, // physical\n\t\trefractionRatio: { value: 0.98 }, // basic, lambert, phong\n\n\t},\n\n\taomap: {\n\n\t\taoMap: { value: null },\n\t\taoMapIntensity: { value: 1 },\n\t\taoMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tlightmap: {\n\n\t\tlightMap: { value: null },\n\t\tlightMapIntensity: { value: 1 },\n\t\tlightMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tbumpmap: {\n\n\t\tbumpMap: { value: null },\n\t\tbumpMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tbumpScale: { value: 1 }\n\n\t},\n\n\tnormalmap: {\n\n\t\tnormalMap: { value: null },\n\t\tnormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tnormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }\n\n\t},\n\n\tdisplacementmap: {\n\n\t\tdisplacementMap: { value: null },\n\t\tdisplacementMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\tdisplacementScale: { value: 1 },\n\t\tdisplacementBias: { value: 0 }\n\n\t},\n\n\temissivemap: {\n\n\t\temissiveMap: { value: null },\n\t\temissiveMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tmetalnessmap: {\n\n\t\tmetalnessMap: { value: null },\n\t\tmetalnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\troughnessmap: {\n\n\t\troughnessMap: { value: null },\n\t\troughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tgradientmap: {\n\n\t\tgradientMap: { value: null }\n\n\t},\n\n\tfog: {\n\n\t\tfogDensity: { value: 0.00025 },\n\t\tfogNear: { value: 1 },\n\t\tfogFar: { value: 2000 },\n\t\tfogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }\n\n\t},\n\n\tlights: {\n\n\t\tambientLightColor: { value: [] },\n\n\t\tlightProbe: { value: [] },\n\n\t\tdirectionalLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tcolor: {}\n\t\t} },\n\n\t\tdirectionalLightShadows: { value: [], properties: {\n\t\t\tshadowIntensity: 1,\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tdirectionalShadowMap: { value: [] },\n\t\tdirectionalShadowMatrix: { value: [] },\n\n\t\tspotLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdirection: {},\n\t\t\tdistance: {},\n\t\t\tconeCos: {},\n\t\t\tpenumbraCos: {},\n\t\t\tdecay: {}\n\t\t} },\n\n\t\tspotLightShadows: { value: [], properties: {\n\t\t\tshadowIntensity: 1,\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {}\n\t\t} },\n\n\t\tspotLightMap: { value: [] },\n\t\tspotShadowMap: { value: [] },\n\t\tspotLightMatrix: { value: [] },\n\n\t\tpointLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\tdecay: {},\n\t\t\tdistance: {}\n\t\t} },\n\n\t\tpointLightShadows: { value: [], properties: {\n\t\t\tshadowIntensity: 1,\n\t\t\tshadowBias: {},\n\t\t\tshadowNormalBias: {},\n\t\t\tshadowRadius: {},\n\t\t\tshadowMapSize: {},\n\t\t\tshadowCameraNear: {},\n\t\t\tshadowCameraFar: {}\n\t\t} },\n\n\t\tpointShadowMap: { value: [] },\n\t\tpointShadowMatrix: { value: [] },\n\n\t\themisphereLights: { value: [], properties: {\n\t\t\tdirection: {},\n\t\t\tskyColor: {},\n\t\t\tgroundColor: {}\n\t\t} },\n\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n\t\trectAreaLights: { value: [], properties: {\n\t\t\tcolor: {},\n\t\t\tposition: {},\n\t\t\twidth: {},\n\t\t\theight: {}\n\t\t} },\n\n\t\tltc_1: { value: null },\n\t\tltc_2: { value: null }\n\n\t},\n\n\tpoints: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tsize: { value: 1.0 },\n\t\tscale: { value: 1.0 },\n\t\tmap: { value: null },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 },\n\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() }\n\n\t},\n\n\tsprite: {\n\n\t\tdiffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },\n\t\topacity: { value: 1.0 },\n\t\tcenter: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },\n\t\trotation: { value: 0.0 },\n\t\tmap: { value: null },\n\t\tmapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaMap: { value: null },\n\t\talphaMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\talphaTest: { value: 0 }\n\n\t}\n\n};\n\nconst ShaderLib = {\n\n\tbasic: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\n\n\t},\n\n\tlambert: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\n\n\t},\n\n\tphong: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.specularmap,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\tspecular: { value: /*@__PURE__*/ new Color( 0x111111 ) },\n\t\t\t\tshininess: { value: 30 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphong_vert,\n\t\tfragmentShader: ShaderChunk.meshphong_frag\n\n\t},\n\n\tstandard: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.envmap,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.roughnessmap,\n\t\t\tUniformsLib.metalnessmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\t\troughness: { value: 1.0 },\n\t\t\t\tmetalness: { value: 0.0 },\n\t\t\t\tenvMapIntensity: { value: 1 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\n\n\t},\n\n\ttoon: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.aomap,\n\t\t\tUniformsLib.lightmap,\n\t\t\tUniformsLib.emissivemap,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.gradientmap,\n\t\t\tUniformsLib.fog,\n\t\t\tUniformsLib.lights,\n\t\t\t{\n\t\t\t\temissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\n\n\t},\n\n\tmatcap: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tmatcap: { value: null }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\n\n\t},\n\n\tpoints: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.points,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.points_vert,\n\t\tfragmentShader: ShaderChunk.points_frag\n\n\t},\n\n\tdashed: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tscale: { value: 1 },\n\t\t\t\tdashSize: { value: 1 },\n\t\t\t\ttotalSize: { value: 2 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.linedashed_vert,\n\t\tfragmentShader: ShaderChunk.linedashed_frag\n\n\t},\n\n\tdepth: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.depth_vert,\n\t\tfragmentShader: ShaderChunk.depth_frag\n\n\t},\n\n\tnormal: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.bumpmap,\n\t\t\tUniformsLib.normalmap,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.meshnormal_vert,\n\t\tfragmentShader: ShaderChunk.meshnormal_frag\n\n\t},\n\n\tsprite: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.sprite,\n\t\t\tUniformsLib.fog\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.sprite_vert,\n\t\tfragmentShader: ShaderChunk.sprite_frag\n\n\t},\n\n\tbackground: {\n\n\t\tuniforms: {\n\t\t\tuvTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tt2D: { value: null },\n\t\t\tbackgroundIntensity: { value: 1 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.background_vert,\n\t\tfragmentShader: ShaderChunk.background_frag\n\n\t},\n\n\tbackgroundCube: {\n\n\t\tuniforms: {\n\t\t\tenvMap: { value: null },\n\t\t\tflipEnvMap: { value: -1 },\n\t\t\tbackgroundBlurriness: { value: 0 },\n\t\t\tbackgroundIntensity: { value: 1 },\n\t\t\tbackgroundRotation: { value: /*@__PURE__*/ new Matrix3() }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.backgroundCube_vert,\n\t\tfragmentShader: ShaderChunk.backgroundCube_frag\n\n\t},\n\n\tcube: {\n\n\t\tuniforms: {\n\t\t\ttCube: { value: null },\n\t\t\ttFlip: { value: -1 },\n\t\t\topacity: { value: 1.0 }\n\t\t},\n\n\t\tvertexShader: ShaderChunk.cube_vert,\n\t\tfragmentShader: ShaderChunk.cube_frag\n\n\t},\n\n\tequirect: {\n\n\t\tuniforms: {\n\t\t\ttEquirect: { value: null },\n\t\t},\n\n\t\tvertexShader: ShaderChunk.equirect_vert,\n\t\tfragmentShader: ShaderChunk.equirect_frag\n\n\t},\n\n\tdistanceRGBA: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.common,\n\t\t\tUniformsLib.displacementmap,\n\t\t\t{\n\t\t\t\treferencePosition: { value: /*@__PURE__*/ new Vector3() },\n\t\t\t\tnearDistance: { value: 1 },\n\t\t\t\tfarDistance: { value: 1000 }\n\t\t\t}\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\n\n\t},\n\n\tshadow: {\n\n\t\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\t\tUniformsLib.lights,\n\t\t\tUniformsLib.fog,\n\t\t\t{\n\t\t\t\tcolor: { value: /*@__PURE__*/ new Color( 0x00000 ) },\n\t\t\t\topacity: { value: 1.0 }\n\t\t\t},\n\t\t] ),\n\n\t\tvertexShader: ShaderChunk.shadow_vert,\n\t\tfragmentShader: ShaderChunk.shadow_frag\n\n\t}\n\n};\n\nShaderLib.physical = {\n\n\tuniforms: /*@__PURE__*/ mergeUniforms( [\n\t\tShaderLib.standard.uniforms,\n\t\t{\n\t\t\tclearcoat: { value: 0 },\n\t\t\tclearcoatMap: { value: null },\n\t\t\tclearcoatMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalMap: { value: null },\n\t\t\tclearcoatNormalMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tclearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },\n\t\t\tclearcoatRoughness: { value: 0 },\n\t\t\tclearcoatRoughnessMap: { value: null },\n\t\t\tclearcoatRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tdispersion: { value: 0 },\n\t\t\tiridescence: { value: 0 },\n\t\t\tiridescenceMap: { value: null },\n\t\t\tiridescenceMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tiridescenceIOR: { value: 1.3 },\n\t\t\tiridescenceThicknessMinimum: { value: 100 },\n\t\t\tiridescenceThicknessMaximum: { value: 400 },\n\t\t\tiridescenceThicknessMap: { value: null },\n\t\t\tiridescenceThicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheen: { value: 0 },\n\t\t\tsheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tsheenColorMap: { value: null },\n\t\t\tsheenColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tsheenRoughness: { value: 1 },\n\t\t\tsheenRoughnessMap: { value: null },\n\t\t\tsheenRoughnessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmission: { value: 0 },\n\t\t\ttransmissionMap: { value: null },\n\t\t\ttransmissionMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\ttransmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },\n\t\t\ttransmissionSamplerMap: { value: null },\n\t\t\tthickness: { value: 0 },\n\t\t\tthicknessMap: { value: null },\n\t\t\tthicknessMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tattenuationDistance: { value: 0 },\n\t\t\tattenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },\n\t\t\tspecularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },\n\t\t\tspecularColorMap: { value: null },\n\t\t\tspecularColorMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tspecularIntensity: { value: 1 },\n\t\t\tspecularIntensityMap: { value: null },\n\t\t\tspecularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t\tanisotropyVector: { value: /*@__PURE__*/ new Vector2() },\n\t\t\tanisotropyMap: { value: null },\n\t\t\tanisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },\n\t\t}\n\t] ),\n\n\tvertexShader: ShaderChunk.meshphysical_vert,\n\tfragmentShader: ShaderChunk.meshphysical_frag\n\n};\n\nconst _rgb = { r: 0, b: 0, g: 0 };\nconst _e1$1 = /*@__PURE__*/ new Euler();\nconst _m1$1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha ) {\n\n\tconst clearColor = new Color( 0x000000 );\n\tlet clearAlpha = alpha === true ? 0 : 1;\n\n\tlet planeMesh;\n\tlet boxMesh;\n\n\tlet currentBackground = null;\n\tlet currentBackgroundVersion = 0;\n\tlet currentTonemapping = null;\n\n\tfunction getBackground( scene ) {\n\n\t\tlet background = scene.isScene === true ? scene.background : null;\n\n\t\tif ( background && background.isTexture ) {\n\n\t\t\tconst usePMREM = scene.backgroundBlurriness > 0; // use PMREM if the user wants to blur the background\n\t\t\tbackground = ( usePMREM ? cubeuvmaps : cubemaps ).get( background );\n\n\t\t}\n\n\t\treturn background;\n\n\t}\n\n\tfunction render( scene ) {\n\n\t\tlet forceClear = false;\n\t\tconst background = getBackground( scene );\n\n\t\tif ( background === null ) {\n\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t} else if ( background && background.isColor ) {\n\n\t\t\tsetClear( background, 1 );\n\t\t\tforceClear = true;\n\n\t\t}\n\n\t\tconst environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n\n\t\tif ( environmentBlendMode === 'additive' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 1, premultipliedAlpha );\n\n\t\t} else if ( environmentBlendMode === 'alpha-blend' ) {\n\n\t\t\tstate.buffers.color.setClear( 0, 0, 0, 0, premultipliedAlpha );\n\n\t\t}\n\n\t\tif ( renderer.autoClear || forceClear ) {\n\n\t\t\t// buffers might not be writable which is required to ensure a correct clear\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\n\t\t}\n\n\t}\n\n\tfunction addToRenderList( renderList, scene ) {\n\n\t\tconst background = getBackground( scene );\n\n\t\tif ( background && ( background.isCubeTexture || background.mapping === CubeUVReflectionMapping ) ) {\n\n\t\t\tif ( boxMesh === undefined ) {\n\n\t\t\t\tboxMesh = new Mesh(\n\t\t\t\t\tnew BoxGeometry( 1, 1, 1 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.backgroundCube.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.backgroundCube.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.backgroundCube.fragmentShader,\n\t\t\t\t\t\tside: BackSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\n\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\n\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\n\n\t\t\t\t};\n\n\t\t\t\t// add \"envMap\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( boxMesh );\n\n\t\t\t}\n\n\t\t\t_e1$1.copy( scene.backgroundRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1$1.x *= -1; _e1$1.y *= -1; _e1$1.z *= -1;\n\n\t\t\tif ( background.isCubeTexture && background.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1$1.y *= -1;\n\t\t\t\t_e1$1.z *= -1;\n\n\t\t\t}\n\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background.isRenderTargetTexture === false ) ? -1 : 1;\n\t\t\tboxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n\t\t\tboxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tboxMesh.material.uniforms.backgroundRotation.value.setFromMatrix4( _m1$1.makeRotationFromEuler( _e1$1 ) );\n\t\t\tboxMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tboxMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tboxMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\n\n\t\t} else if ( background && background.isTexture ) {\n\n\t\t\tif ( planeMesh === undefined ) {\n\n\t\t\t\tplaneMesh = new Mesh(\n\t\t\t\t\tnew PlaneGeometry( 2, 2 ),\n\t\t\t\t\tnew ShaderMaterial( {\n\t\t\t\t\t\tname: 'BackgroundMaterial',\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\n\t\t\t\t\t\tside: FrontSide,\n\t\t\t\t\t\tdepthTest: false,\n\t\t\t\t\t\tdepthWrite: false,\n\t\t\t\t\t\tfog: false\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\n\n\t\t\t\t// add \"map\" material property so the renderer can evaluate it like for built-in materials\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\n\n\t\t\t\t\tget: function () {\n\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t\tobjects.update( planeMesh );\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\n\t\t\tplaneMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n\t\t\tplaneMesh.material.toneMapped = ColorManagement.getTransfer( background.colorSpace ) !== SRGBTransfer;\n\n\t\t\tif ( background.matrixAutoUpdate === true ) {\n\n\t\t\t\tbackground.updateMatrix();\n\n\t\t\t}\n\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\n\n\t\t\tif ( currentBackground !== background ||\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\n\n\t\t\t\tplaneMesh.material.needsUpdate = true;\n\n\t\t\t\tcurrentBackground = background;\n\t\t\t\tcurrentBackgroundVersion = background.version;\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t\tplaneMesh.layers.enableAll();\n\n\t\t\t// push to the pre-sorted opaque render list\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\n\n\t\t}\n\n\t}\n\n\tfunction setClear( color, alpha ) {\n\n\t\tcolor.getRGB( _rgb, getUnlitUniformColorSpace( renderer ) );\n\n\t\tstate.buffers.color.setClear( _rgb.r, _rgb.g, _rgb.b, alpha, premultipliedAlpha );\n\n\t}\n\n\tfunction dispose() {\n\n\t\tif ( boxMesh !== undefined ) {\n\n\t\t\tboxMesh.geometry.dispose();\n\t\t\tboxMesh.material.dispose();\n\n\t\t\tboxMesh = undefined;\n\n\t\t}\n\n\t\tif ( planeMesh !== undefined ) {\n\n\t\t\tplaneMesh.geometry.dispose();\n\t\t\tplaneMesh.material.dispose();\n\n\t\t\tplaneMesh = undefined;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\tgetClearColor: function () {\n\n\t\t\treturn clearColor;\n\n\t\t},\n\t\tsetClearColor: function ( color, alpha = 1 ) {\n\n\t\t\tclearColor.set( color );\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\tgetClearAlpha: function () {\n\n\t\t\treturn clearAlpha;\n\n\t\t},\n\t\tsetClearAlpha: function ( alpha ) {\n\n\t\t\tclearAlpha = alpha;\n\t\t\tsetClear( clearColor, clearAlpha );\n\n\t\t},\n\t\trender: render,\n\t\taddToRenderList: addToRenderList,\n\t\tdispose: dispose\n\n\t};\n\n}\n\nfunction WebGLBindingStates( gl, attributes ) {\n\n\tconst maxVertexAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\n\tconst bindingStates = {};\n\n\tconst defaultState = createBindingState( null );\n\tlet currentState = defaultState;\n\tlet forceUpdate = false;\n\n\tfunction setup( object, material, program, geometry, index ) {\n\n\t\tlet updateBuffers = false;\n\n\t\tconst state = getBindingState( geometry, program, material );\n\n\t\tif ( currentState !== state ) {\n\n\t\t\tcurrentState = state;\n\t\t\tbindVertexArrayObject( currentState.object );\n\n\t\t}\n\n\t\tupdateBuffers = needsUpdate( object, geometry, program, index );\n\n\t\tif ( updateBuffers ) saveCache( object, geometry, program, index );\n\n\t\tif ( index !== null ) {\n\n\t\t\tattributes.update( index, gl.ELEMENT_ARRAY_BUFFER );\n\n\t\t}\n\n\t\tif ( updateBuffers || forceUpdate ) {\n\n\t\t\tforceUpdate = false;\n\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tgl.bindBuffer( gl.ELEMENT_ARRAY_BUFFER, attributes.get( index ).buffer );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction createVertexArrayObject() {\n\n\t\treturn gl.createVertexArray();\n\n\t}\n\n\tfunction bindVertexArrayObject( vao ) {\n\n\t\treturn gl.bindVertexArray( vao );\n\n\t}\n\n\tfunction deleteVertexArrayObject( vao ) {\n\n\t\treturn gl.deleteVertexArray( vao );\n\n\t}\n\n\tfunction getBindingState( geometry, program, material ) {\n\n\t\tconst wireframe = ( material.wireframe === true );\n\n\t\tlet programMap = bindingStates[ geometry.id ];\n\n\t\tif ( programMap === undefined ) {\n\n\t\t\tprogramMap = {};\n\t\t\tbindingStates[ geometry.id ] = programMap;\n\n\t\t}\n\n\t\tlet stateMap = programMap[ program.id ];\n\n\t\tif ( stateMap === undefined ) {\n\n\t\t\tstateMap = {};\n\t\t\tprogramMap[ program.id ] = stateMap;\n\n\t\t}\n\n\t\tlet state = stateMap[ wireframe ];\n\n\t\tif ( state === undefined ) {\n\n\t\t\tstate = createBindingState( createVertexArrayObject() );\n\t\t\tstateMap[ wireframe ] = state;\n\n\t\t}\n\n\t\treturn state;\n\n\t}\n\n\tfunction createBindingState( vao ) {\n\n\t\tconst newAttributes = [];\n\t\tconst enabledAttributes = [];\n\t\tconst attributeDivisors = [];\n\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\t\t\tenabledAttributes[ i ] = 0;\n\t\t\tattributeDivisors[ i ] = 0;\n\n\t\t}\n\n\t\treturn {\n\n\t\t\t// for backward compatibility on non-VAO support browser\n\t\t\tgeometry: null,\n\t\t\tprogram: null,\n\t\t\twireframe: false,\n\n\t\t\tnewAttributes: newAttributes,\n\t\t\tenabledAttributes: enabledAttributes,\n\t\t\tattributeDivisors: attributeDivisors,\n\t\t\tobject: vao,\n\t\t\tattributes: {},\n\t\t\tindex: null\n\n\t\t};\n\n\t}\n\n\tfunction needsUpdate( object, geometry, program, index ) {\n\n\t\tconst cachedAttributes = currentState.attributes;\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tconst cachedAttribute = cachedAttributes[ name ];\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( cachedAttribute === undefined ) return true;\n\n\t\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\n\n\t\t\t\tif ( geometryAttribute && cachedAttribute.data !== geometryAttribute.data ) return true;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\n\n\t\tif ( currentState.index !== index ) return true;\n\n\t\treturn false;\n\n\t}\n\n\tfunction saveCache( object, geometry, program, index ) {\n\n\t\tconst cache = {};\n\t\tconst attributes = geometry.attributes;\n\t\tlet attributesNum = 0;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet attribute = attributes[ name ];\n\n\t\t\t\tif ( attribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) attribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) attribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tconst data = {};\n\t\t\t\tdata.attribute = attribute;\n\n\t\t\t\tif ( attribute && attribute.data ) {\n\n\t\t\t\t\tdata.data = attribute.data;\n\n\t\t\t\t}\n\n\t\t\t\tcache[ name ] = data;\n\n\t\t\t\tattributesNum ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tcurrentState.attributes = cache;\n\t\tcurrentState.attributesNum = attributesNum;\n\n\t\tcurrentState.index = index;\n\n\t}\n\n\tfunction initAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\n\n\t\t\tnewAttributes[ i ] = 0;\n\n\t\t}\n\n\t}\n\n\tfunction enableAttribute( attribute ) {\n\n\t\tenableAttributeAndDivisor( attribute, 0 );\n\n\t}\n\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\t\tconst attributeDivisors = currentState.attributeDivisors;\n\n\t\tnewAttributes[ attribute ] = 1;\n\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\n\n\t\t\tgl.enableVertexAttribArray( attribute );\n\t\t\tenabledAttributes[ attribute ] = 1;\n\n\t\t}\n\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\n\n\t\t\tgl.vertexAttribDivisor( attribute, meshPerAttribute );\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\n\n\t\t}\n\n\t}\n\n\tfunction disableUnusedAttributes() {\n\n\t\tconst newAttributes = currentState.newAttributes;\n\t\tconst enabledAttributes = currentState.enabledAttributes;\n\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\n\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\n\n\t\t\t\tgl.disableVertexAttribArray( i );\n\t\t\t\tenabledAttributes[ i ] = 0;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset, integer ) {\n\n\t\tif ( integer === true ) {\n\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\n\n\t\t} else {\n\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\n\n\t\t}\n\n\t}\n\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\n\n\t\tinitAttributes();\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\tconst programAttributes = program.getAttributes();\n\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\n\n\t\tfor ( const name in programAttributes ) {\n\n\t\t\tconst programAttribute = programAttributes[ name ];\n\n\t\t\tif ( programAttribute.location >= 0 ) {\n\n\t\t\t\tlet geometryAttribute = geometryAttributes[ name ];\n\n\t\t\t\tif ( geometryAttribute === undefined ) {\n\n\t\t\t\t\tif ( name === 'instanceMatrix' && object.instanceMatrix ) geometryAttribute = object.instanceMatrix;\n\t\t\t\t\tif ( name === 'instanceColor' && object.instanceColor ) geometryAttribute = object.instanceColor;\n\n\t\t\t\t}\n\n\t\t\t\tif ( geometryAttribute !== undefined ) {\n\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\n\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\n\n\t\t\t\t\t// TODO Attribute may not be available on context restore\n\n\t\t\t\t\tif ( attribute === undefined ) continue;\n\n\t\t\t\t\tconst buffer = attribute.buffer;\n\t\t\t\t\tconst type = attribute.type;\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\n\n\t\t\t\t\t// check for integer attributes\n\n\t\t\t\t\tconst integer = ( type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType );\n\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\n\n\t\t\t\t\t\tconst data = geometryAttribute.data;\n\t\t\t\t\t\tconst stride = data.stride;\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\n\n\t\t\t\t\t\tif ( data.isInstancedInterleavedBuffer ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, data.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tstride * bytesPerElement,\n\t\t\t\t\t\t\t\t( offset + ( size / programAttribute.locationSize ) * i ) * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute.location + i, geometryAttribute.meshPerAttribute );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif ( object.isInstancedMesh !== true && geometry._maxInstanceCount === undefined ) {\n\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\t\tenableAttribute( programAttribute.location + i );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tgl.bindBuffer( gl.ARRAY_BUFFER, buffer );\n\n\t\t\t\t\t\tfor ( let i = 0; i < programAttribute.locationSize; i ++ ) {\n\n\t\t\t\t\t\t\tvertexAttribPointer(\n\t\t\t\t\t\t\t\tprogramAttribute.location + i,\n\t\t\t\t\t\t\t\tsize / programAttribute.locationSize,\n\t\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\t\tnormalized,\n\t\t\t\t\t\t\t\tsize * bytesPerElement,\n\t\t\t\t\t\t\t\t( size / programAttribute.locationSize ) * i * bytesPerElement,\n\t\t\t\t\t\t\t\tinteger\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\n\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\n\n\t\t\t\t\tif ( value !== undefined ) {\n\n\t\t\t\t\t\tswitch ( value.length ) {\n\n\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute.location, value );\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute.location, value );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tdisableUnusedAttributes();\n\n\t}\n\n\tfunction dispose() {\n\n\t\treset();\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tfor ( const programId in programMap ) {\n\n\t\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t\t}\n\n\t\t\t\tdelete programMap[ programId ];\n\n\t\t\t}\n\n\t\t\tdelete bindingStates[ geometryId ];\n\n\t\t}\n\n\t}\n\n\tfunction releaseStatesOfGeometry( geometry ) {\n\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\n\n\t\tconst programMap = bindingStates[ geometry.id ];\n\n\t\tfor ( const programId in programMap ) {\n\n\t\t\tconst stateMap = programMap[ programId ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ programId ];\n\n\t\t}\n\n\t\tdelete bindingStates[ geometry.id ];\n\n\t}\n\n\tfunction releaseStatesOfProgram( program ) {\n\n\t\tfor ( const geometryId in bindingStates ) {\n\n\t\t\tconst programMap = bindingStates[ geometryId ];\n\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\n\n\t\t\tconst stateMap = programMap[ program.id ];\n\n\t\t\tfor ( const wireframe in stateMap ) {\n\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\n\n\t\t\t\tdelete stateMap[ wireframe ];\n\n\t\t\t}\n\n\t\t\tdelete programMap[ program.id ];\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\tresetDefaultState();\n\t\tforceUpdate = true;\n\n\t\tif ( currentState === defaultState ) return;\n\n\t\tcurrentState = defaultState;\n\t\tbindVertexArrayObject( currentState.object );\n\n\t}\n\n\t// for backward-compatibility\n\n\tfunction resetDefaultState() {\n\n\t\tdefaultState.geometry = null;\n\t\tdefaultState.program = null;\n\t\tdefaultState.wireframe = false;\n\n\t}\n\n\treturn {\n\n\t\tsetup: setup,\n\t\treset: reset,\n\t\tresetDefaultState: resetDefaultState,\n\t\tdispose: dispose,\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\n\n\t\tinitAttributes: initAttributes,\n\t\tenableAttribute: enableAttribute,\n\t\tdisableUnusedAttributes: disableUnusedAttributes\n\n\t};\n\n}\n\nfunction WebGLBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawArrays( mode, start, count );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawArraysInstanced( mode, start, count, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\textension.multiDrawArraysWEBGL( mode, starts, 0, counts, 0, drawCount );\n\n\t\tlet elementCount = 0;\n\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\telementCount += counts[ i ];\n\n\t\t}\n\n\t\tinfo.update( elementCount, mode, 1 );\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ], counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawArraysInstancedWEBGL( mode, starts, 0, counts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ] * primcount[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\n\n}\n\nfunction WebGLCapabilities( gl, extensions, parameters, utils ) {\n\n\tlet maxAnisotropy;\n\n\tfunction getMaxAnisotropy() {\n\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\n\n\t\t} else {\n\n\t\t\tmaxAnisotropy = 0;\n\n\t\t}\n\n\t\treturn maxAnisotropy;\n\n\t}\n\n\tfunction textureFormatReadable( textureFormat ) {\n\n\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction textureTypeReadable( textureType ) {\n\n\t\tconst halfFloatSupportedByExt = ( textureType === HalfFloatType ) && ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) );\n\n\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== gl.getParameter( gl.IMPLEMENTATION_COLOR_READ_TYPE ) && // Edge and Chrome Mac < 52 (#9513)\n\t\t\ttextureType !== FloatType && ! halfFloatSupportedByExt ) {\n\n\t\t\treturn false;\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\tfunction getMaxPrecision( precision ) {\n\n\t\tif ( precision === 'highp' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.HIGH_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.HIGH_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'highp';\n\n\t\t\t}\n\n\t\t\tprecision = 'mediump';\n\n\t\t}\n\n\t\tif ( precision === 'mediump' ) {\n\n\t\t\tif ( gl.getShaderPrecisionFormat( gl.VERTEX_SHADER, gl.MEDIUM_FLOAT ).precision > 0 &&\n\t\t\t\tgl.getShaderPrecisionFormat( gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT ).precision > 0 ) {\n\n\t\t\t\treturn 'mediump';\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn 'lowp';\n\n\t}\n\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\n\tconst maxPrecision = getMaxPrecision( precision );\n\n\tif ( maxPrecision !== precision ) {\n\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\n\t\tprecision = maxPrecision;\n\n\t}\n\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n\tconst reverseDepthBuffer = parameters.reverseDepthBuffer === true && extensions.has( 'EXT_clip_control' );\n\n\tconst maxTextures = gl.getParameter( gl.MAX_TEXTURE_IMAGE_UNITS );\n\tconst maxVertexTextures = gl.getParameter( gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS );\n\tconst maxTextureSize = gl.getParameter( gl.MAX_TEXTURE_SIZE );\n\tconst maxCubemapSize = gl.getParameter( gl.MAX_CUBE_MAP_TEXTURE_SIZE );\n\n\tconst maxAttributes = gl.getParameter( gl.MAX_VERTEX_ATTRIBS );\n\tconst maxVertexUniforms = gl.getParameter( gl.MAX_VERTEX_UNIFORM_VECTORS );\n\tconst maxVaryings = gl.getParameter( gl.MAX_VARYING_VECTORS );\n\tconst maxFragmentUniforms = gl.getParameter( gl.MAX_FRAGMENT_UNIFORM_VECTORS );\n\n\tconst vertexTextures = maxVertexTextures > 0;\n\n\tconst maxSamples = gl.getParameter( gl.MAX_SAMPLES );\n\n\treturn {\n\n\t\tisWebGL2: true, // keeping this for backwards compatibility\n\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\n\t\tgetMaxPrecision: getMaxPrecision,\n\n\t\ttextureFormatReadable: textureFormatReadable,\n\t\ttextureTypeReadable: textureTypeReadable,\n\n\t\tprecision: precision,\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\t\treverseDepthBuffer: reverseDepthBuffer,\n\n\t\tmaxTextures: maxTextures,\n\t\tmaxVertexTextures: maxVertexTextures,\n\t\tmaxTextureSize: maxTextureSize,\n\t\tmaxCubemapSize: maxCubemapSize,\n\n\t\tmaxAttributes: maxAttributes,\n\t\tmaxVertexUniforms: maxVertexUniforms,\n\t\tmaxVaryings: maxVaryings,\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\n\n\t\tvertexTextures: vertexTextures,\n\n\t\tmaxSamples: maxSamples\n\n\t};\n\n}\n\nfunction WebGLClipping( properties ) {\n\n\tconst scope = this;\n\n\tlet globalState = null,\n\t\tnumGlobalPlanes = 0,\n\t\tlocalClippingEnabled = false,\n\t\trenderingShadows = false;\n\n\tconst plane = new Plane(),\n\t\tviewNormalMatrix = new Matrix3(),\n\n\t\tuniform = { value: null, needsUpdate: false };\n\n\tthis.uniform = uniform;\n\tthis.numPlanes = 0;\n\tthis.numIntersection = 0;\n\n\tthis.init = function ( planes, enableLocalClipping ) {\n\n\t\tconst enabled =\n\t\t\tplanes.length !== 0 ||\n\t\t\tenableLocalClipping ||\n\t\t\t// enable state of previous frame - the clipping code has to\n\t\t\t// run another frame in order to reset the state:\n\t\t\tnumGlobalPlanes !== 0 ||\n\t\t\tlocalClippingEnabled;\n\n\t\tlocalClippingEnabled = enableLocalClipping;\n\n\t\tnumGlobalPlanes = planes.length;\n\n\t\treturn enabled;\n\n\t};\n\n\tthis.beginShadows = function () {\n\n\t\trenderingShadows = true;\n\t\tprojectPlanes( null );\n\n\t};\n\n\tthis.endShadows = function () {\n\n\t\trenderingShadows = false;\n\n\t};\n\n\tthis.setGlobalState = function ( planes, camera ) {\n\n\t\tglobalState = projectPlanes( planes, camera, 0 );\n\n\t};\n\n\tthis.setState = function ( material, camera, useCache ) {\n\n\t\tconst planes = material.clippingPlanes,\n\t\t\tclipIntersection = material.clipIntersection,\n\t\t\tclipShadows = material.clipShadows;\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\n\n\t\t\t// there's no local clipping\n\n\t\t\tif ( renderingShadows ) {\n\n\t\t\t\t// there's no global clipping\n\n\t\t\t\tprojectPlanes( null );\n\n\t\t\t} else {\n\n\t\t\t\tresetGlobalState();\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\n\t\t\t\tlGlobal = nGlobal * 4;\n\n\t\t\tlet dstArray = materialProperties.clippingState || null;\n\n\t\t\tuniform.value = dstArray; // ensure unique state\n\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\n\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\n\n\t\t\t\tdstArray[ i ] = globalState[ i ];\n\n\t\t\t}\n\n\t\t\tmaterialProperties.clippingState = dstArray;\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\n\t\t\tthis.numPlanes += nGlobal;\n\n\t\t}\n\n\n\t};\n\n\tfunction resetGlobalState() {\n\n\t\tif ( uniform.value !== globalState ) {\n\n\t\t\tuniform.value = globalState;\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\n\n\t\t}\n\n\t\tscope.numPlanes = numGlobalPlanes;\n\t\tscope.numIntersection = 0;\n\n\t}\n\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\n\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\n\t\tlet dstArray = null;\n\n\t\tif ( nPlanes !== 0 ) {\n\n\t\t\tdstArray = uniform.value;\n\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\n\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\n\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\n\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\n\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\n\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\n\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tuniform.value = dstArray;\n\t\t\tuniform.needsUpdate = true;\n\n\t\t}\n\n\t\tscope.numPlanes = nPlanes;\n\t\tscope.numIntersection = 0;\n\n\t\treturn dstArray;\n\n\t}\n\n}\n\nfunction WebGLCubeMaps( renderer ) {\n\n\tlet cubemaps = new WeakMap();\n\n\tfunction mapTextureMapping( texture, mapping ) {\n\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\n\n\t\t\ttexture.mapping = CubeReflectionMapping;\n\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\n\n\t\t\ttexture.mapping = CubeRefractionMapping;\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\n\n\t\t\t\tif ( cubemaps.has( texture ) ) {\n\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\tif ( image && image.height > 0 ) {\n\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height );\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\n\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemap = cubemaps.get( texture );\n\n\t\tif ( cubemap !== undefined ) {\n\n\t\t\tcubemaps.delete( texture );\n\t\t\tcubemap.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubemaps = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nconst LOD_MIN = 4;\n\n// The standard deviations (radians) associated with the extra mips. These are\n// chosen to approximate a Trowbridge-Reitz distribution function times the\n// geometric shadowing function. These sigma values squared must match the\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\n\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\n// samples and exit early, but not recompile the shader.\nconst MAX_SAMPLES = 20;\n\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\nconst _clearColor = /*@__PURE__*/ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\nlet _oldXrEnabled = false;\n\n// Golden Ratio\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\nconst INV_PHI = 1 / PHI;\n\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nconst _axisDirections = [\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\n\t/*@__PURE__*/ new Vector3( -1, 1, -1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, -1 ),\n\t/*@__PURE__*/ new Vector3( -1, 1, 1 ),\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ) ];\n\nconst _origin = /*@__PURE__*/ new Vector3();\n\n/**\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\n * (PMREM) from a cubeMap environment texture. This allows different levels of\n * blur to be quickly accessed based on material roughness. It is packed into a\n * special CubeUV format that allows us to perform custom interpolation so that\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\n * higher roughness levels. In this way we maintain resolution to smoothly\n * interpolate diffuse lighting while limiting sampling computation.\n *\n * Paper: Fast, Accurate Image-Based Lighting\n * https://drive.google.com/file/d/15y8r_UpKlU9SvV4ILb0C3qCPecS8pvLz/view\n*/\n\nclass PMREMGenerator {\n\n\tconstructor( renderer ) {\n\n\t\tthis._renderer = renderer;\n\t\tthis._pingPongRenderTarget = null;\n\n\t\tthis._lodMax = 0;\n\t\tthis._cubeSize = 0;\n\t\tthis._lodPlanes = [];\n\t\tthis._sizeLods = [];\n\t\tthis._sigmas = [];\n\n\t\tthis._blurMaterial = null;\n\t\tthis._cubemapMaterial = null;\n\t\tthis._equirectMaterial = null;\n\n\t\tthis._compileMaterial( this._blurMaterial );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\n\t * in radians to be applied to the scene before PMREM generation. Optional near\n\t * and far planes ensure the scene is rendered in its entirety.\n\t *\n\t * @param {Scene} scene\n\t * @param {number} sigma\n\t * @param {number} near\n\t * @param {number} far\n\t * @param {Object} [options={}]\n\t * @return {WebGLRenderTarget}\n\t */\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100, options = {} ) {\n\n\t\tconst {\n\t\t\tsize = 256,\n\t\t\tposition = _origin,\n\t\t} = options;\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tthis._setSize( size );\n\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\n\t\tcubeUVRenderTarget.depthBuffer = true;\n\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget, position );\n\n\t\tif ( sigma > 0 ) {\n\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\n\n\t\t}\n\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\n\t * or HDR. The ideal input image size is 1k (1024 x 512),\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported equirectangular image size is 64 x 32.\n\t *\n\t * @param {Texture} equirectangular\n\t * @param {?WebGLRenderTarget} [renderTarget=null] - Optional render target.\n\t * @return {WebGLRenderTarget}\n\t */\n\tfromEquirectangular( equirectangular, renderTarget = null ) {\n\n\t\treturn this._fromTexture( equirectangular, renderTarget );\n\n\t}\n\n\t/**\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\n\t * or HDR. The ideal input cube size is 256 x 256,\n\t * as this matches best with the 256 x 256 cubemap output.\n\t * The smallest supported cube size is 16 x 16.\n\t *\n\t * @param {Texture} cubemap\n\t * @param {null} [renderTarget=null] - Optional render target.\n\t * @return {WebGLRenderTarget}\n\t */\n\tfromCubemap( cubemap, renderTarget = null ) {\n\n\t\treturn this._fromTexture( cubemap, renderTarget );\n\n\t}\n\n\t/**\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileCubemapShader() {\n\n\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\t\t\tthis._compileMaterial( this._cubemapMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n\t * your texture's network fetch for increased concurrency.\n\t */\n\tcompileEquirectangularShader() {\n\n\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\t\t\tthis._compileMaterial( this._equirectMaterial );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n\t * one of them will cause any others to also become unusable.\n\t */\n\tdispose() {\n\n\t\tthis._dispose();\n\n\t\tif ( this._cubemapMaterial !== null ) this._cubemapMaterial.dispose();\n\t\tif ( this._equirectMaterial !== null ) this._equirectMaterial.dispose();\n\n\t}\n\n\t// private interface\n\n\t_setSize( cubeSize ) {\n\n\t\tthis._lodMax = Math.floor( Math.log2( cubeSize ) );\n\t\tthis._cubeSize = Math.pow( 2, this._lodMax );\n\n\t}\n\n\t_dispose() {\n\n\t\tif ( this._blurMaterial !== null ) this._blurMaterial.dispose();\n\n\t\tif ( this._pingPongRenderTarget !== null ) this._pingPongRenderTarget.dispose();\n\n\t\tfor ( let i = 0; i < this._lodPlanes.length; i ++ ) {\n\n\t\t\tthis._lodPlanes[ i ].dispose();\n\n\t\t}\n\n\t}\n\n\t_cleanup( outputTarget ) {\n\n\t\tthis._renderer.setRenderTarget( _oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel );\n\t\tthis._renderer.xr.enabled = _oldXrEnabled;\n\n\t\toutputTarget.scissorTest = false;\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\n\n\t}\n\n\t_fromTexture( texture, renderTarget ) {\n\n\t\tif ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping ) {\n\n\t\t\tthis._setSize( texture.image.length === 0 ? 16 : ( texture.image[ 0 ].width || texture.image[ 0 ].image.width ) );\n\n\t\t} else { // Equirectangular\n\n\t\t\tthis._setSize( texture.image.width / 4 );\n\n\t\t}\n\n\t\t_oldTarget = this._renderer.getRenderTarget();\n\t\t_oldActiveCubeFace = this._renderer.getActiveCubeFace();\n\t\t_oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n\t\t_oldXrEnabled = this._renderer.xr.enabled;\n\n\t\tthis._renderer.xr.enabled = false;\n\n\t\tconst cubeUVRenderTarget = renderTarget || this._allocateTargets();\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\n\t\tthis._applyPMREM( cubeUVRenderTarget );\n\t\tthis._cleanup( cubeUVRenderTarget );\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_allocateTargets() {\n\n\t\tconst width = 3 * Math.max( this._cubeSize, 16 * 7 );\n\t\tconst height = 4 * this._cubeSize;\n\n\t\tconst params = {\n\t\t\tmagFilter: LinearFilter,\n\t\t\tminFilter: LinearFilter,\n\t\t\tgenerateMipmaps: false,\n\t\t\ttype: HalfFloatType,\n\t\t\tformat: RGBAFormat,\n\t\t\tcolorSpace: LinearSRGBColorSpace,\n\t\t\tdepthBuffer: false\n\t\t};\n\n\t\tconst cubeUVRenderTarget = _createRenderTarget( width, height, params );\n\n\t\tif ( this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height ) {\n\n\t\t\tif ( this._pingPongRenderTarget !== null ) {\n\n\t\t\t\tthis._dispose();\n\n\t\t\t}\n\n\t\t\tthis._pingPongRenderTarget = _createRenderTarget( width, height, params );\n\n\t\t\tconst { _lodMax } = this;\n\t\t\t( { sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes( _lodMax ) );\n\n\t\t\tthis._blurMaterial = _getBlurShader( _lodMax, width, height );\n\n\t\t}\n\n\t\treturn cubeUVRenderTarget;\n\n\t}\n\n\t_compileMaterial( material ) {\n\n\t\tconst tmpMesh = new Mesh( this._lodPlanes[ 0 ], material );\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\n\n\t}\n\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget, position ) {\n\n\t\tconst fov = 90;\n\t\tconst aspect = 1;\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\n\t\tconst upSign = [ 1, -1, 1, 1, 1, 1 ];\n\t\tconst forwardSign = [ 1, 1, 1, -1, -1, -1 ];\n\t\tconst renderer = this._renderer;\n\n\t\tconst originalAutoClear = renderer.autoClear;\n\t\tconst toneMapping = renderer.toneMapping;\n\t\trenderer.getClearColor( _clearColor );\n\n\t\trenderer.toneMapping = NoToneMapping;\n\t\trenderer.autoClear = false;\n\n\t\tconst backgroundMaterial = new MeshBasicMaterial( {\n\t\t\tname: 'PMREM.Background',\n\t\t\tside: BackSide,\n\t\t\tdepthWrite: false,\n\t\t\tdepthTest: false,\n\t\t} );\n\n\t\tconst backgroundBox = new Mesh( new BoxGeometry(), backgroundMaterial );\n\n\t\tlet useSolidColor = false;\n\t\tconst background = scene.background;\n\n\t\tif ( background ) {\n\n\t\t\tif ( background.isColor ) {\n\n\t\t\t\tbackgroundMaterial.color.copy( background );\n\t\t\t\tscene.background = null;\n\t\t\t\tuseSolidColor = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tbackgroundMaterial.color.copy( _clearColor );\n\t\t\tuseSolidColor = true;\n\n\t\t}\n\n\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\tconst col = i % 3;\n\n\t\t\tif ( col === 0 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.position.set( position.x, position.y, position.z );\n\t\t\t\tcubeCamera.lookAt( position.x + forwardSign[ i ], position.y, position.z );\n\n\t\t\t} else if ( col === 1 ) {\n\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\n\t\t\t\tcubeCamera.position.set( position.x, position.y, position.z );\n\t\t\t\tcubeCamera.lookAt( position.x, position.y + forwardSign[ i ], position.z );\n\n\n\t\t\t} else {\n\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\n\t\t\t\tcubeCamera.position.set( position.x, position.y, position.z );\n\t\t\t\tcubeCamera.lookAt( position.x, position.y, position.z + forwardSign[ i ] );\n\n\t\t\t}\n\n\t\t\tconst size = this._cubeSize;\n\n\t\t\t_setViewport( cubeUVRenderTarget, col * size, i > 2 ? size : 0, size, size );\n\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\n\t\t\tif ( useSolidColor ) {\n\n\t\t\t\trenderer.render( backgroundBox, cubeCamera );\n\n\t\t\t}\n\n\t\t\trenderer.render( scene, cubeCamera );\n\n\t\t}\n\n\t\tbackgroundBox.geometry.dispose();\n\t\tbackgroundBox.material.dispose();\n\n\t\trenderer.toneMapping = toneMapping;\n\t\trenderer.autoClear = originalAutoClear;\n\t\tscene.background = background;\n\n\t}\n\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\n\t\tconst isCubeTexture = ( texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping );\n\n\t\tif ( isCubeTexture ) {\n\n\t\t\tif ( this._cubemapMaterial === null ) {\n\n\t\t\t\tthis._cubemapMaterial = _getCubemapMaterial();\n\n\t\t\t}\n\n\t\t\tthis._cubemapMaterial.uniforms.flipEnvMap.value = ( texture.isRenderTargetTexture === false ) ? -1 : 1;\n\n\t\t} else {\n\n\t\t\tif ( this._equirectMaterial === null ) {\n\n\t\t\t\tthis._equirectMaterial = _getEquirectMaterial();\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst material = isCubeTexture ? this._cubemapMaterial : this._equirectMaterial;\n\t\tconst mesh = new Mesh( this._lodPlanes[ 0 ], material );\n\n\t\tconst uniforms = material.uniforms;\n\n\t\tuniforms[ 'envMap' ].value = texture;\n\n\t\tconst size = this._cubeSize;\n\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * size, 2 * size );\n\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\n\t\trenderer.render( mesh, _flatCamera );\n\n\t}\n\n\t_applyPMREM( cubeUVRenderTarget ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst autoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\t\tconst n = this._lodPlanes.length;\n\n\t\tfor ( let i = 1; i < n; i ++ ) {\n\n\t\t\tconst sigma = Math.sqrt( this._sigmas[ i ] * this._sigmas[ i ] - this._sigmas[ i - 1 ] * this._sigmas[ i - 1 ] );\n\n\t\t\tconst poleAxis = _axisDirections[ ( n - i - 1 ) % _axisDirections.length ];\n\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\n\n\t\t}\n\n\t\trenderer.autoClear = autoClear;\n\n\t}\n\n\t/**\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\n\t * the poles) to approximate the orthogonally-separable blur. It is least\n\t * accurate at the poles, but still does a decent job.\n\t *\n\t * @param {WebGLRenderTarget} cubeUVRenderTarget\n\t * @param {number} lodIn\n\t * @param {number} lodOut\n\t * @param {number} sigma\n\t * @param {Vector3} [poleAxis]\n\t */\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\n\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\n\n\t\tthis._halfBlur(\n\t\t\tcubeUVRenderTarget,\n\t\t\tpingPongRenderTarget,\n\t\t\tlodIn,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'latitudinal',\n\t\t\tpoleAxis );\n\n\t\tthis._halfBlur(\n\t\t\tpingPongRenderTarget,\n\t\t\tcubeUVRenderTarget,\n\t\t\tlodOut,\n\t\t\tlodOut,\n\t\t\tsigma,\n\t\t\t'longitudinal',\n\t\t\tpoleAxis );\n\n\t}\n\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\n\n\t\tconst renderer = this._renderer;\n\t\tconst blurMaterial = this._blurMaterial;\n\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\n\n\t\t\tconsole.error(\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\n\n\t\t}\n\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\n\t\tconst STANDARD_DEVIATIONS = 3;\n\n\t\tconst blurMesh = new Mesh( this._lodPlanes[ lodOut ], blurMaterial );\n\t\tconst blurUniforms = blurMaterial.uniforms;\n\n\t\tconst pixels = this._sizeLods[ lodIn ] - 1;\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\n\n\t\tif ( samples > MAX_SAMPLES ) {\n\n\t\t\tconsole.warn( `sigmaRadians, ${\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\n\n\t\t}\n\n\t\tconst weights = [];\n\t\tlet sum = 0;\n\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\n\n\t\t\tconst x = i / sigmaPixels;\n\t\t\tconst weight = Math.exp( - x * x / 2 );\n\t\t\tweights.push( weight );\n\n\t\t\tif ( i === 0 ) {\n\n\t\t\t\tsum += weight;\n\n\t\t\t} else if ( i < samples ) {\n\n\t\t\t\tsum += 2 * weight;\n\n\t\t\t}\n\n\t\t}\n\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\n\n\t\t\tweights[ i ] = weights[ i ] / sum;\n\n\t\t}\n\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\n\t\tblurUniforms[ 'samples' ].value = samples;\n\t\tblurUniforms[ 'weights' ].value = weights;\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\n\n\t\tif ( poleAxis ) {\n\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\n\n\t\t}\n\n\t\tconst { _lodMax } = this;\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\n\t\tblurUniforms[ 'mipInt' ].value = _lodMax - lodIn;\n\n\t\tconst outputSize = this._sizeLods[ lodOut ];\n\t\tconst x = 3 * outputSize * ( lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0 );\n\t\tconst y = 4 * ( this._cubeSize - outputSize );\n\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\n\t\trenderer.setRenderTarget( targetOut );\n\t\trenderer.render( blurMesh, _flatCamera );\n\n\t}\n\n}\n\n\n\nfunction _createPlanes( lodMax ) {\n\n\tconst lodPlanes = [];\n\tconst sizeLods = [];\n\tconst sigmas = [];\n\n\tlet lod = lodMax;\n\n\tconst totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n\n\tfor ( let i = 0; i < totalLods; i ++ ) {\n\n\t\tconst sizeLod = Math.pow( 2, lod );\n\t\tsizeLods.push( sizeLod );\n\t\tlet sigma = 1.0 / sizeLod;\n\n\t\tif ( i > lodMax - LOD_MIN ) {\n\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - lodMax + LOD_MIN - 1 ];\n\n\t\t} else if ( i === 0 ) {\n\n\t\t\tsigma = 0;\n\n\t\t}\n\n\t\tsigmas.push( sigma );\n\n\t\tconst texelSize = 1.0 / ( sizeLod - 2 );\n\t\tconst min = - texelSize;\n\t\tconst max = 1 + texelSize;\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\n\n\t\tconst cubeFaces = 6;\n\t\tconst vertices = 6;\n\t\tconst positionSize = 3;\n\t\tconst uvSize = 2;\n\t\tconst faceIndexSize = 1;\n\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\n\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\n\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\n\t\t\tconst y = face > 2 ? 0 : -1;\n\t\t\tconst coordinates = [\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y, 0,\n\t\t\t\tx + 2 / 3, y + 1, 0,\n\t\t\t\tx, y + 1, 0\n\t\t\t];\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\n\t\t\tuv.set( uv1, uvSize * vertices * face );\n\t\t\tconst fill = [ face, face, face, face, face, face ];\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\n\n\t\t}\n\n\t\tconst planes = new BufferGeometry();\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\n\t\tlodPlanes.push( planes );\n\n\t\tif ( lod > LOD_MIN ) {\n\n\t\t\tlod --;\n\n\t\t}\n\n\t}\n\n\treturn { lodPlanes, sizeLods, sigmas };\n\n}\n\nfunction _createRenderTarget( width, height, params ) {\n\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( width, height, params );\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\n\tcubeUVRenderTarget.scissorTest = true;\n\treturn cubeUVRenderTarget;\n\n}\n\nfunction _setViewport( target, x, y, width, height ) {\n\n\ttarget.viewport.set( x, y, width, height );\n\ttarget.scissor.set( x, y, width, height );\n\n}\n\nfunction _getBlurShader( lodMax, width, height ) {\n\n\tconst weights = new Float32Array( MAX_SAMPLES );\n\tconst poleAxis = new Vector3( 0, 1, 0 );\n\tconst shaderMaterial = new ShaderMaterial( {\n\n\t\tname: 'SphericalGaussianBlur',\n\n\t\tdefines: {\n\t\t\t'n': MAX_SAMPLES,\n\t\t\t'CUBEUV_TEXEL_WIDTH': 1.0 / width,\n\t\t\t'CUBEUV_TEXEL_HEIGHT': 1.0 / height,\n\t\t\t'CUBEUV_MAX_MIP': `${lodMax}.0`,\n\t\t},\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'samples': { value: 1 },\n\t\t\t'weights': { value: weights },\n\t\t\t'latitudinal': { value: false },\n\t\t\t'dTheta': { value: 0 },\n\t\t\t'mipInt': { value: 0 },\n\t\t\t'poleAxis': { value: poleAxis }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\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`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n\treturn shaderMaterial;\n\n}\n\nfunction _getEquirectMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'EquirectangularToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\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`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCubemapMaterial() {\n\n\treturn new ShaderMaterial( {\n\n\t\tname: 'CubemapToCubeUV',\n\n\t\tuniforms: {\n\t\t\t'envMap': { value: null },\n\t\t\t'flipEnvMap': { value: -1 }\n\t\t},\n\n\t\tvertexShader: _getCommonVertexShader(),\n\n\t\tfragmentShader: /* glsl */`\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`,\n\n\t\tblending: NoBlending,\n\t\tdepthTest: false,\n\t\tdepthWrite: false\n\n\t} );\n\n}\n\nfunction _getCommonVertexShader() {\n\n\treturn /* glsl */`\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`;\n\n}\n\nfunction WebGLCubeUVMaps( renderer ) {\n\n\tlet cubeUVmaps = new WeakMap();\n\n\tlet pmremGenerator = null;\n\n\tfunction get( texture ) {\n\n\t\tif ( texture && texture.isTexture ) {\n\n\t\t\tconst mapping = texture.mapping;\n\n\t\t\tconst isEquirectMap = ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping );\n\t\t\tconst isCubeMap = ( mapping === CubeReflectionMapping || mapping === CubeRefractionMapping );\n\n\t\t\t// equirect/cube map to cubeUV conversion\n\n\t\t\tif ( isEquirectMap || isCubeMap ) {\n\n\t\t\t\tlet renderTarget = cubeUVmaps.get( texture );\n\n\t\t\t\tconst currentPMREMVersion = renderTarget !== undefined ? renderTarget.texture.pmremVersion : 0;\n\n\t\t\t\tif ( texture.isRenderTargetTexture && texture.pmremVersion !== currentPMREMVersion ) {\n\n\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture, renderTarget ) : pmremGenerator.fromCubemap( texture, renderTarget );\n\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( renderTarget !== undefined ) {\n\n\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst image = texture.image;\n\n\t\t\t\t\t\tif ( ( isEquirectMap && image && image.height > 0 ) || ( isCubeMap && image && isCubeTextureComplete( image ) ) ) {\n\n\t\t\t\t\t\t\tif ( pmremGenerator === null ) pmremGenerator = new PMREMGenerator( renderer );\n\n\t\t\t\t\t\t\trenderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular( texture ) : pmremGenerator.fromCubemap( texture );\n\t\t\t\t\t\t\trenderTarget.texture.pmremVersion = texture.pmremVersion;\n\n\t\t\t\t\t\t\tcubeUVmaps.set( texture, renderTarget );\n\n\t\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t\t\t\t\t\treturn renderTarget.texture;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// image not yet ready. try the conversion next frame\n\n\t\t\t\t\t\t\treturn null;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tfunction isCubeTextureComplete( image ) {\n\n\t\tlet count = 0;\n\t\tconst length = 6;\n\n\t\tfor ( let i = 0; i < length; i ++ ) {\n\n\t\t\tif ( image[ i ] !== undefined ) count ++;\n\n\t\t}\n\n\t\treturn count === length;\n\n\n\t}\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tconst cubemapUV = cubeUVmaps.get( texture );\n\n\t\tif ( cubemapUV !== undefined ) {\n\n\t\t\tcubeUVmaps.delete( texture );\n\t\t\tcubemapUV.dispose();\n\n\t\t}\n\n\t}\n\n\tfunction dispose() {\n\n\t\tcubeUVmaps = new WeakMap();\n\n\t\tif ( pmremGenerator !== null ) {\n\n\t\t\tpmremGenerator.dispose();\n\t\t\tpmremGenerator = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLExtensions( gl ) {\n\n\tconst extensions = {};\n\n\tfunction getExtension( name ) {\n\n\t\tif ( extensions[ name ] !== undefined ) {\n\n\t\t\treturn extensions[ name ];\n\n\t\t}\n\n\t\tlet extension;\n\n\t\tswitch ( name ) {\n\n\t\t\tcase 'WEBGL_depth_texture':\n\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'EXT_texture_filter_anisotropic':\n\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_s3tc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\n\t\t\t\tbreak;\n\n\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\n\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\textension = gl.getExtension( name );\n\n\t\t}\n\n\t\textensions[ name ] = extension;\n\n\t\treturn extension;\n\n\t}\n\n\treturn {\n\n\t\thas: function ( name ) {\n\n\t\t\treturn getExtension( name ) !== null;\n\n\t\t},\n\n\t\tinit: function () {\n\n\t\t\tgetExtension( 'EXT_color_buffer_float' );\n\t\t\tgetExtension( 'WEBGL_clip_cull_distance' );\n\t\t\tgetExtension( 'OES_texture_float_linear' );\n\t\t\tgetExtension( 'EXT_color_buffer_half_float' );\n\t\t\tgetExtension( 'WEBGL_multisampled_render_to_texture' );\n\t\t\tgetExtension( 'WEBGL_render_shared_exponent' );\n\n\t\t},\n\n\t\tget: function ( name ) {\n\n\t\t\tconst extension = getExtension( name );\n\n\t\t\tif ( extension === null ) {\n\n\t\t\t\twarnOnce( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\n\n\t\t\t}\n\n\t\t\treturn extension;\n\n\t\t}\n\n\t};\n\n}\n\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\n\n\tconst geometries = {};\n\tconst wireframeAttributes = new WeakMap();\n\n\tfunction onGeometryDispose( event ) {\n\n\t\tconst geometry = event.target;\n\n\t\tif ( geometry.index !== null ) {\n\n\t\t\tattributes.remove( geometry.index );\n\n\t\t}\n\n\t\tfor ( const name in geometry.attributes ) {\n\n\t\t\tattributes.remove( geometry.attributes[ name ] );\n\n\t\t}\n\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\n\n\t\tdelete geometries[ geometry.id ];\n\n\t\tconst attribute = wireframeAttributes.get( geometry );\n\n\t\tif ( attribute ) {\n\n\t\t\tattributes.remove( attribute );\n\t\t\twireframeAttributes.delete( geometry );\n\n\t\t}\n\n\t\tbindingStates.releaseStatesOfGeometry( geometry );\n\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\n\n\t\t\tdelete geometry._maxInstanceCount;\n\n\t\t}\n\n\t\t//\n\n\t\tinfo.memory.geometries --;\n\n\t}\n\n\tfunction get( object, geometry ) {\n\n\t\tif ( geometries[ geometry.id ] === true ) return geometry;\n\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\n\n\t\tgeometries[ geometry.id ] = true;\n\n\t\tinfo.memory.geometries ++;\n\n\t\treturn geometry;\n\n\t}\n\n\tfunction update( geometry ) {\n\n\t\tconst geometryAttributes = geometry.attributes;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\n\n\t\tfor ( const name in geometryAttributes ) {\n\n\t\t\tattributes.update( geometryAttributes[ name ], gl.ARRAY_BUFFER );\n\n\t\t}\n\n\t}\n\n\tfunction updateWireframeAttribute( geometry ) {\n\n\t\tconst indices = [];\n\n\t\tconst geometryIndex = geometry.index;\n\t\tconst geometryPosition = geometry.attributes.position;\n\t\tlet version = 0;\n\n\t\tif ( geometryIndex !== null ) {\n\n\t\t\tconst array = geometryIndex.array;\n\t\t\tversion = geometryIndex.version;\n\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\n\n\t\t\t\tconst a = array[ i + 0 ];\n\t\t\t\tconst b = array[ i + 1 ];\n\t\t\t\tconst c = array[ i + 2 ];\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else if ( geometryPosition !== undefined ) {\n\n\t\t\tconst array = geometryPosition.array;\n\t\t\tversion = geometryPosition.version;\n\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\n\n\t\t\t\tconst a = i + 0;\n\t\t\t\tconst b = i + 1;\n\t\t\t\tconst c = i + 2;\n\n\t\t\t\tindices.push( a, b, b, c, c, a );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tconst attribute = new ( arrayNeedsUint32( indices ) ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\n\t\tattribute.version = version;\n\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\n\n\t\t//\n\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\n\n\t\t//\n\n\t\twireframeAttributes.set( geometry, attribute );\n\n\t}\n\n\tfunction getWireframeAttribute( geometry ) {\n\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\n\n\t\tif ( currentAttribute ) {\n\n\t\t\tconst geometryIndex = geometry.index;\n\n\t\t\tif ( geometryIndex !== null ) {\n\n\t\t\t\t// if the attribute is obsolete, create a new one\n\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\n\n\t\t\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tupdateWireframeAttribute( geometry );\n\n\t\t}\n\n\t\treturn wireframeAttributes.get( geometry );\n\n\t}\n\n\treturn {\n\n\t\tget: get,\n\t\tupdate: update,\n\n\t\tgetWireframeAttribute: getWireframeAttribute\n\n\t};\n\n}\n\nfunction WebGLIndexedBufferRenderer( gl, extensions, info ) {\n\n\tlet mode;\n\n\tfunction setMode( value ) {\n\n\t\tmode = value;\n\n\t}\n\n\tlet type, bytesPerElement;\n\n\tfunction setIndex( value ) {\n\n\t\ttype = value.type;\n\t\tbytesPerElement = value.bytesPerElement;\n\n\t}\n\n\tfunction render( start, count ) {\n\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\n\n\t\tinfo.update( count, mode, 1 );\n\n\t}\n\n\tfunction renderInstances( start, count, primcount ) {\n\n\t\tif ( primcount === 0 ) return;\n\n\t\tgl.drawElementsInstanced( mode, count, type, start * bytesPerElement, primcount );\n\n\t\tinfo.update( count, mode, primcount );\n\n\t}\n\n\tfunction renderMultiDraw( starts, counts, drawCount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\t\textension.multiDrawElementsWEBGL( mode, counts, 0, type, starts, 0, drawCount );\n\n\t\tlet elementCount = 0;\n\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\telementCount += counts[ i ];\n\n\t\t}\n\n\t\tinfo.update( elementCount, mode, 1 );\n\n\n\t}\n\n\tfunction renderMultiDrawInstances( starts, counts, drawCount, primcount ) {\n\n\t\tif ( drawCount === 0 ) return;\n\n\t\tconst extension = extensions.get( 'WEBGL_multi_draw' );\n\n\t\tif ( extension === null ) {\n\n\t\t\tfor ( let i = 0; i < starts.length; i ++ ) {\n\n\t\t\t\trenderInstances( starts[ i ] / bytesPerElement, counts[ i ], primcount[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\textension.multiDrawElementsInstancedWEBGL( mode, counts, 0, type, starts, 0, primcount, 0, drawCount );\n\n\t\t\tlet elementCount = 0;\n\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\telementCount += counts[ i ] * primcount[ i ];\n\n\t\t\t}\n\n\t\t\tinfo.update( elementCount, mode, 1 );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tthis.setMode = setMode;\n\tthis.setIndex = setIndex;\n\tthis.render = render;\n\tthis.renderInstances = renderInstances;\n\tthis.renderMultiDraw = renderMultiDraw;\n\tthis.renderMultiDrawInstances = renderMultiDrawInstances;\n\n}\n\nfunction WebGLInfo( gl ) {\n\n\tconst memory = {\n\t\tgeometries: 0,\n\t\ttextures: 0\n\t};\n\n\tconst render = {\n\t\tframe: 0,\n\t\tcalls: 0,\n\t\ttriangles: 0,\n\t\tpoints: 0,\n\t\tlines: 0\n\t};\n\n\tfunction update( count, mode, instanceCount ) {\n\n\t\trender.calls ++;\n\n\t\tswitch ( mode ) {\n\n\t\t\tcase gl.TRIANGLES:\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINES:\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_STRIP:\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\n\t\t\t\tbreak;\n\n\t\t\tcase gl.LINE_LOOP:\n\t\t\t\trender.lines += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tcase gl.POINTS:\n\t\t\t\trender.points += instanceCount * count;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\tfunction reset() {\n\n\t\trender.calls = 0;\n\t\trender.triangles = 0;\n\t\trender.points = 0;\n\t\trender.lines = 0;\n\n\t}\n\n\treturn {\n\t\tmemory: memory,\n\t\trender: render,\n\t\tprograms: null,\n\t\tautoReset: true,\n\t\treset: reset,\n\t\tupdate: update\n\t};\n\n}\n\nfunction WebGLMorphtargets( gl, capabilities, textures ) {\n\n\tconst morphTextures = new WeakMap();\n\tconst morph = new Vector4();\n\n\tfunction update( object, geometry, program ) {\n\n\t\tconst objectInfluences = object.morphTargetInfluences;\n\n\t\t// the following encodes morph targets into an array of data textures. Each layer represents a single morph target.\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet entry = morphTextures.get( geometry );\n\n\t\tif ( entry === undefined || entry.count !== morphTargetsCount ) {\n\n\t\t\tif ( entry !== undefined ) entry.texture.dispose();\n\n\t\t\tconst hasMorphPosition = geometry.morphAttributes.position !== undefined;\n\t\t\tconst hasMorphNormals = geometry.morphAttributes.normal !== undefined;\n\t\t\tconst hasMorphColors = geometry.morphAttributes.color !== undefined;\n\n\t\t\tconst morphTargets = geometry.morphAttributes.position || [];\n\t\t\tconst morphNormals = geometry.morphAttributes.normal || [];\n\t\t\tconst morphColors = geometry.morphAttributes.color || [];\n\n\t\t\tlet vertexDataCount = 0;\n\n\t\t\tif ( hasMorphPosition === true ) vertexDataCount = 1;\n\t\t\tif ( hasMorphNormals === true ) vertexDataCount = 2;\n\t\t\tif ( hasMorphColors === true ) vertexDataCount = 3;\n\n\t\t\tlet width = geometry.attributes.position.count * vertexDataCount;\n\t\t\tlet height = 1;\n\n\t\t\tif ( width > capabilities.maxTextureSize ) {\n\n\t\t\t\theight = Math.ceil( width / capabilities.maxTextureSize );\n\t\t\t\twidth = capabilities.maxTextureSize;\n\n\t\t\t}\n\n\t\t\tconst buffer = new Float32Array( width * height * 4 * morphTargetsCount );\n\n\t\t\tconst texture = new DataArrayTexture( buffer, width, height, morphTargetsCount );\n\t\t\ttexture.type = FloatType;\n\t\t\ttexture.needsUpdate = true;\n\n\t\t\t// fill buffer\n\n\t\t\tconst vertexDataStride = vertexDataCount * 4;\n\n\t\t\tfor ( let i = 0; i < morphTargetsCount; i ++ ) {\n\n\t\t\t\tconst morphTarget = morphTargets[ i ];\n\t\t\t\tconst morphNormal = morphNormals[ i ];\n\t\t\t\tconst morphColor = morphColors[ i ];\n\n\t\t\t\tconst offset = width * height * 4 * i;\n\n\t\t\t\tfor ( let j = 0; j < morphTarget.count; j ++ ) {\n\n\t\t\t\t\tconst stride = j * vertexDataStride;\n\n\t\t\t\t\tif ( hasMorphPosition === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphTarget, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 0 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 1 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 2 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 3 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphNormals === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphNormal, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 4 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 5 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 6 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 7 ] = 0;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( hasMorphColors === true ) {\n\n\t\t\t\t\t\tmorph.fromBufferAttribute( morphColor, j );\n\n\t\t\t\t\t\tbuffer[ offset + stride + 8 ] = morph.x;\n\t\t\t\t\t\tbuffer[ offset + stride + 9 ] = morph.y;\n\t\t\t\t\t\tbuffer[ offset + stride + 10 ] = morph.z;\n\t\t\t\t\t\tbuffer[ offset + stride + 11 ] = ( morphColor.itemSize === 4 ) ? morph.w : 1;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tentry = {\n\t\t\t\tcount: morphTargetsCount,\n\t\t\t\ttexture: texture,\n\t\t\t\tsize: new Vector2( width, height )\n\t\t\t};\n\n\t\t\tmorphTextures.set( geometry, entry );\n\n\t\t\tfunction disposeTexture() {\n\n\t\t\t\ttexture.dispose();\n\n\t\t\t\tmorphTextures.delete( geometry );\n\n\t\t\t\tgeometry.removeEventListener( 'dispose', disposeTexture );\n\n\t\t\t}\n\n\t\t\tgeometry.addEventListener( 'dispose', disposeTexture );\n\n\t\t}\n\n\t\t//\n\t\tif ( object.isInstancedMesh === true && object.morphTexture !== null ) {\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTexture', object.morphTexture, textures );\n\n\t\t} else {\n\n\t\t\tlet morphInfluencesSum = 0;\n\n\t\t\tfor ( let i = 0; i < objectInfluences.length; i ++ ) {\n\n\t\t\t\tmorphInfluencesSum += objectInfluences[ i ];\n\n\t\t\t}\n\n\t\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n\n\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\n\t\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', objectInfluences );\n\n\t\t}\n\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTexture', entry.texture, textures );\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetsTextureSize', entry.size );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update\n\n\t};\n\n}\n\nfunction WebGLObjects( gl, geometries, attributes, info ) {\n\n\tlet updateMap = new WeakMap();\n\n\tfunction update( object ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\tconst geometry = object.geometry;\n\t\tconst buffergeometry = geometries.get( object, geometry );\n\n\t\t// Update once per frame\n\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\n\n\t\t\tgeometries.update( buffergeometry );\n\n\t\t\tupdateMap.set( buffergeometry, frame );\n\n\t\t}\n\n\t\tif ( object.isInstancedMesh ) {\n\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\n\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\t\t}\n\n\t\t\tif ( updateMap.get( object ) !== frame ) {\n\n\t\t\t\tattributes.update( object.instanceMatrix, gl.ARRAY_BUFFER );\n\n\t\t\t\tif ( object.instanceColor !== null ) {\n\n\t\t\t\t\tattributes.update( object.instanceColor, gl.ARRAY_BUFFER );\n\n\t\t\t\t}\n\n\t\t\t\tupdateMap.set( object, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\tconst skeleton = object.skeleton;\n\n\t\t\tif ( updateMap.get( skeleton ) !== frame ) {\n\n\t\t\t\tskeleton.update();\n\n\t\t\t\tupdateMap.set( skeleton, frame );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn buffergeometry;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tupdateMap = new WeakMap();\n\n\t}\n\n\tfunction onInstancedMeshDispose( event ) {\n\n\t\tconst instancedMesh = event.target;\n\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\n\n\t\tattributes.remove( instancedMesh.instanceMatrix );\n\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\n\n\t}\n\n\treturn {\n\n\t\tupdate: update,\n\t\tdispose: dispose\n\n\t};\n\n}\n\n/**\n * Uniforms of a program.\n * Those form a tree structure with a special top-level container for the root,\n * which you get by calling 'new WebGLUniforms( gl, program )'.\n *\n *\n * Properties of inner nodes including the top-level container:\n *\n * .seq - array of nested uniforms\n * .map - nested uniforms by name\n *\n *\n * Methods of all nodes except the top-level container:\n *\n * .setValue( gl, value, [textures] )\n *\n * \t\tuploads a uniform value(s)\n *  \tthe 'textures' parameter is needed for sampler uniforms\n *\n *\n * Static methods of the top-level container (textures factorizations):\n *\n * .upload( gl, seq, values, textures )\n *\n * \t\tsets uniforms in 'seq' to 'values[id].value'\n *\n * .seqWithValue( seq, values ) : filteredSeq\n *\n * \t\tfilters 'seq' entries with corresponding entry in values\n *\n *\n * Methods of the top-level container (textures factorizations):\n *\n * .setValue( gl, name, value, textures )\n *\n * \t\tsets uniform with  name 'name' to 'value'\n *\n * .setOptional( gl, obj, prop )\n *\n * \t\tlike .set for an optional property of the object\n *\n */\n\n\nconst emptyTexture = /*@__PURE__*/ new Texture();\n\nconst emptyShadowTexture = /*@__PURE__*/ new DepthTexture( 1, 1 );\n\nconst emptyArrayTexture = /*@__PURE__*/ new DataArrayTexture();\nconst empty3dTexture = /*@__PURE__*/ new Data3DTexture();\nconst emptyCubeTexture = /*@__PURE__*/ new CubeTexture();\n\n// --- Utilities ---\n\n// Array Caches (provide typed arrays for temporary by size)\n\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\n\n// Float32Array caches used for uploading Matrix uniforms\n\nconst mat4array = new Float32Array( 16 );\nconst mat3array = new Float32Array( 9 );\nconst mat2array = new Float32Array( 4 );\n\n// Flattening for arrays of vectors and matrices\n\nfunction flatten( array, nBlocks, blockSize ) {\n\n\tconst firstElem = array[ 0 ];\n\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\n\t// unoptimized: ! isNaN( firstElem )\n\t// see http://jacksondunstan.com/articles/983\n\n\tconst n = nBlocks * blockSize;\n\tlet r = arrayCacheF32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Float32Array( n );\n\t\tarrayCacheF32[ n ] = r;\n\n\t}\n\n\tif ( nBlocks !== 0 ) {\n\n\t\tfirstElem.toArray( r, 0 );\n\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\n\n\t\t\toffset += blockSize;\n\t\t\tarray[ i ].toArray( r, offset );\n\n\t\t}\n\n\t}\n\n\treturn r;\n\n}\n\nfunction arraysEqual( a, b ) {\n\n\tif ( a.length !== b.length ) return false;\n\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\n\n\t\tif ( a[ i ] !== b[ i ] ) return false;\n\n\t}\n\n\treturn true;\n\n}\n\nfunction copyArray( a, b ) {\n\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\n\n\t\ta[ i ] = b[ i ];\n\n\t}\n\n}\n\n// Texture unit allocation\n\nfunction allocTexUnits( textures, n ) {\n\n\tlet r = arrayCacheI32[ n ];\n\n\tif ( r === undefined ) {\n\n\t\tr = new Int32Array( n );\n\t\tarrayCacheI32[ n ] = r;\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\tr[ i ] = textures.allocateTextureUnit();\n\n\t}\n\n\treturn r;\n\n}\n\n// --- Setters ---\n\n// Note: Defining these methods externally, because they come in a bunch\n// and this way their names minify.\n\n// Single scalar\n\nfunction setValueV1f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1f( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single float vector (from flat array or THREE.VectorN)\n\nfunction setValueV2f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else if ( v.r !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\n\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\n\n\t\t\tcache[ 0 ] = v.r;\n\t\t\tcache[ 1 ] = v.g;\n\t\t\tcache[ 2 ] = v.b;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4f( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4fv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single matrix (from flat array or THREE.MatrixN)\n\nfunction setValueM2( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat2array.set( elements );\n\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM3( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat3array.set( elements );\n\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\nfunction setValueM4( gl, v ) {\n\n\tconst cache = this.cache;\n\tconst elements = v.elements;\n\n\tif ( elements === undefined ) {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\n\n\t\tcopyArray( cache, v );\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, elements ) ) return;\n\n\t\tmat4array.set( elements );\n\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\n\n\t\tcopyArray( cache, elements );\n\n\t}\n\n}\n\n// Single integer / boolean\n\nfunction setValueV1i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1i( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single integer / boolean vector (from flat array or THREE.VectorN)\n\nfunction setValueV2i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2i( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3i( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4i( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4i( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4iv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n// Single unsigned integer\n\nfunction setValueV1ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( cache[ 0 ] === v ) return;\n\n\tgl.uniform1ui( this.addr, v );\n\n\tcache[ 0 ] = v;\n\n}\n\n// Single unsigned integer vector (from flat array or THREE.VectorN)\n\nfunction setValueV2ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\n\n\t\t\tgl.uniform2ui( this.addr, v.x, v.y );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform2uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV3ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\n\n\t\t\tgl.uniform3ui( this.addr, v.x, v.y, v.z );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform3uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\nfunction setValueV4ui( gl, v ) {\n\n\tconst cache = this.cache;\n\n\tif ( v.x !== undefined ) {\n\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\n\n\t\t\tgl.uniform4ui( this.addr, v.x, v.y, v.z, v.w );\n\n\t\t\tcache[ 0 ] = v.x;\n\t\t\tcache[ 1 ] = v.y;\n\t\t\tcache[ 2 ] = v.z;\n\t\t\tcache[ 3 ] = v.w;\n\n\t\t}\n\n\t} else {\n\n\t\tif ( arraysEqual( cache, v ) ) return;\n\n\t\tgl.uniform4uiv( this.addr, v );\n\n\t\tcopyArray( cache, v );\n\n\t}\n\n}\n\n\n// Single texture (2D / Cube)\n\nfunction setValueT1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\tlet emptyTexture2D;\n\n\tif ( this.type === gl.SAMPLER_2D_SHADOW ) {\n\n\t\temptyShadowTexture.compareFunction = LessEqualCompare; // #28670\n\t\temptyTexture2D = emptyShadowTexture;\n\n\t} else {\n\n\t\temptyTexture2D = emptyTexture;\n\n\t}\n\n\ttextures.setTexture2D( v || emptyTexture2D, unit );\n\n}\n\nfunction setValueT3D1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture3D( v || empty3dTexture, unit );\n\n}\n\nfunction setValueT6( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTextureCube( v || emptyCubeTexture, unit );\n\n}\n\nfunction setValueT2DArray1( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\tconst unit = textures.allocateTextureUnit();\n\n\tif ( cache[ 0 ] !== unit ) {\n\n\t\tgl.uniform1i( this.addr, unit );\n\t\tcache[ 0 ] = unit;\n\n\t}\n\n\ttextures.setTexture2DArray( v || emptyArrayTexture, unit );\n\n}\n\n// Helper to pick the right setter for the singular case\n\nfunction getSingularSetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1f; // FLOAT\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\n\n\t\tcase 0x1405: return setValueV1ui; // UINT\n\t\tcase 0x8dc6: return setValueV2ui; // _VEC2\n\t\tcase 0x8dc7: return setValueV3ui; // _VEC3\n\t\tcase 0x8dc8: return setValueV4ui; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3D1;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArray1;\n\n\t}\n\n}\n\n\n// Array of scalars\n\nfunction setValueV1fArray( gl, v ) {\n\n\tgl.uniform1fv( this.addr, v );\n\n}\n\n// Array of vectors (from flat array or array of THREE.VectorN)\n\nfunction setValueV2fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 2 );\n\n\tgl.uniform2fv( this.addr, data );\n\n}\n\nfunction setValueV3fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 3 );\n\n\tgl.uniform3fv( this.addr, data );\n\n}\n\nfunction setValueV4fArray( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniform4fv( this.addr, data );\n\n}\n\n// Array of matrices (from flat array or array of THREE.MatrixN)\n\nfunction setValueM2Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 4 );\n\n\tgl.uniformMatrix2fv( this.addr, false, data );\n\n}\n\nfunction setValueM3Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 9 );\n\n\tgl.uniformMatrix3fv( this.addr, false, data );\n\n}\n\nfunction setValueM4Array( gl, v ) {\n\n\tconst data = flatten( v, this.size, 16 );\n\n\tgl.uniformMatrix4fv( this.addr, false, data );\n\n}\n\n// Array of integer / boolean\n\nfunction setValueV1iArray( gl, v ) {\n\n\tgl.uniform1iv( this.addr, v );\n\n}\n\n// Array of integer / boolean vectors (from flat array)\n\nfunction setValueV2iArray( gl, v ) {\n\n\tgl.uniform2iv( this.addr, v );\n\n}\n\nfunction setValueV3iArray( gl, v ) {\n\n\tgl.uniform3iv( this.addr, v );\n\n}\n\nfunction setValueV4iArray( gl, v ) {\n\n\tgl.uniform4iv( this.addr, v );\n\n}\n\n// Array of unsigned integer\n\nfunction setValueV1uiArray( gl, v ) {\n\n\tgl.uniform1uiv( this.addr, v );\n\n}\n\n// Array of unsigned integer vectors (from flat array)\n\nfunction setValueV2uiArray( gl, v ) {\n\n\tgl.uniform2uiv( this.addr, v );\n\n}\n\nfunction setValueV3uiArray( gl, v ) {\n\n\tgl.uniform3uiv( this.addr, v );\n\n}\n\nfunction setValueV4uiArray( gl, v ) {\n\n\tgl.uniform4uiv( this.addr, v );\n\n}\n\n\n// Array of textures (2D / 3D / Cube / 2DArray)\n\nfunction setValueT1Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2D( v[ i ] || emptyTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT3DArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture3D( v[ i ] || empty3dTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT6Array( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\n\n\t}\n\n}\n\nfunction setValueT2DArrayArray( gl, v, textures ) {\n\n\tconst cache = this.cache;\n\n\tconst n = v.length;\n\n\tconst units = allocTexUnits( textures, n );\n\n\tif ( ! arraysEqual( cache, units ) ) {\n\n\t\tgl.uniform1iv( this.addr, units );\n\n\t\tcopyArray( cache, units );\n\n\t}\n\n\tfor ( let i = 0; i !== n; ++ i ) {\n\n\t\ttextures.setTexture2DArray( v[ i ] || emptyArrayTexture, units[ i ] );\n\n\t}\n\n}\n\n\n// Helper to pick the right setter for a pure (bottom-level) array\n\nfunction getPureArraySetter( type ) {\n\n\tswitch ( type ) {\n\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\n\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\n\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\n\n\t\tcase 0x1405: return setValueV1uiArray; // UINT\n\t\tcase 0x8dc6: return setValueV2uiArray; // _VEC2\n\t\tcase 0x8dc7: return setValueV3uiArray; // _VEC3\n\t\tcase 0x8dc8: return setValueV4uiArray; // _VEC4\n\n\t\tcase 0x8b5e: // SAMPLER_2D\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\n\t\tcase 0x8dca: // INT_SAMPLER_2D\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\n\t\t\treturn setValueT1Array;\n\n\t\tcase 0x8b5f: // SAMPLER_3D\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\n\t\t\treturn setValueT3DArray;\n\n\t\tcase 0x8b60: // SAMPLER_CUBE\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\n\t\t\treturn setValueT6Array;\n\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\n\t\t\treturn setValueT2DArrayArray;\n\n\t}\n\n}\n\n// --- Uniform Classes ---\n\nclass SingleUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.setValue = getSingularSetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass PureArrayUniform {\n\n\tconstructor( id, activeInfo, addr ) {\n\n\t\tthis.id = id;\n\t\tthis.addr = addr;\n\t\tthis.cache = [];\n\t\tthis.type = activeInfo.type;\n\t\tthis.size = activeInfo.size;\n\t\tthis.setValue = getPureArraySetter( activeInfo.type );\n\n\t\t// this.path = activeInfo.name; // DEBUG\n\n\t}\n\n}\n\nclass StructuredUniform {\n\n\tconstructor( id ) {\n\n\t\tthis.id = id;\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t}\n\n\tsetValue( gl, value, textures ) {\n\n\t\tconst seq = this.seq;\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tu.setValue( gl, value[ u.id ], textures );\n\n\t\t}\n\n\t}\n\n}\n\n// --- Top-level ---\n\n// Parser - builds up the property tree from the path strings\n\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\n\n// extracts\n// \t- the identifier (member name or array index)\n//  - followed by an optional right bracket (found when array index)\n//  - followed by an optional left bracket or dot (type of subscript)\n//\n// Note: These portions can be read in a non-overlapping fashion and\n// allow straightforward parsing of the hierarchy that WebGL encodes\n// in the uniform names.\n\nfunction addUniform( container, uniformObject ) {\n\n\tcontainer.seq.push( uniformObject );\n\tcontainer.map[ uniformObject.id ] = uniformObject;\n\n}\n\nfunction parseUniform( activeInfo, addr, container ) {\n\n\tconst path = activeInfo.name,\n\t\tpathLength = path.length;\n\n\t// reset RegExp object, because of the early exit of a previous run\n\tRePathPart.lastIndex = 0;\n\n\twhile ( true ) {\n\n\t\tconst match = RePathPart.exec( path ),\n\t\t\tmatchEnd = RePathPart.lastIndex;\n\n\t\tlet id = match[ 1 ];\n\t\tconst idIsIndex = match[ 2 ] === ']',\n\t\t\tsubscript = match[ 3 ];\n\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\n\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\n\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\n\n\t\t\taddUniform( container, subscript === undefined ?\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\n\n\t\t\tbreak;\n\n\t\t} else {\n\n\t\t\t// step into inner node / create it in case it doesn't exist\n\n\t\t\tconst map = container.map;\n\t\t\tlet next = map[ id ];\n\n\t\t\tif ( next === undefined ) {\n\n\t\t\t\tnext = new StructuredUniform( id );\n\t\t\t\taddUniform( container, next );\n\n\t\t\t}\n\n\t\t\tcontainer = next;\n\n\t\t}\n\n\t}\n\n}\n\n// Root Container\n\nclass WebGLUniforms {\n\n\tconstructor( gl, program ) {\n\n\t\tthis.seq = [];\n\t\tthis.map = {};\n\n\t\tconst n = gl.getProgramParameter( program, gl.ACTIVE_UNIFORMS );\n\n\t\tfor ( let i = 0; i < n; ++ i ) {\n\n\t\t\tconst info = gl.getActiveUniform( program, i ),\n\t\t\t\taddr = gl.getUniformLocation( program, info.name );\n\n\t\t\tparseUniform( info, addr, this );\n\n\t\t}\n\n\t}\n\n\tsetValue( gl, name, value, textures ) {\n\n\t\tconst u = this.map[ name ];\n\n\t\tif ( u !== undefined ) u.setValue( gl, value, textures );\n\n\t}\n\n\tsetOptional( gl, object, name ) {\n\n\t\tconst v = object[ name ];\n\n\t\tif ( v !== undefined ) this.setValue( gl, name, v );\n\n\t}\n\n\tstatic upload( gl, seq, values, textures ) {\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ],\n\t\t\t\tv = values[ u.id ];\n\n\t\t\tif ( v.needsUpdate !== false ) {\n\n\t\t\t\t// note: always updating when .needsUpdate is undefined\n\t\t\t\tu.setValue( gl, v.value, textures );\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tstatic seqWithValue( seq, values ) {\n\n\t\tconst r = [];\n\n\t\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\n\n\t\t\tconst u = seq[ i ];\n\t\t\tif ( u.id in values ) r.push( u );\n\n\t\t}\n\n\t\treturn r;\n\n\t}\n\n}\n\nfunction WebGLShader( gl, type, string ) {\n\n\tconst shader = gl.createShader( type );\n\n\tgl.shaderSource( shader, string );\n\tgl.compileShader( shader );\n\n\treturn shader;\n\n}\n\n// From https://www.khronos.org/registry/webgl/extensions/KHR_parallel_shader_compile/\nconst COMPLETION_STATUS_KHR = 0x91B1;\n\nlet programIdCount = 0;\n\nfunction handleSource( string, errorLine ) {\n\n\tconst lines = string.split( '\\n' );\n\tconst lines2 = [];\n\n\tconst from = Math.max( errorLine - 6, 0 );\n\tconst to = Math.min( errorLine + 6, lines.length );\n\n\tfor ( let i = from; i < to; i ++ ) {\n\n\t\tconst line = i + 1;\n\t\tlines2.push( `${line === errorLine ? '>' : ' '} ${line}: ${lines[ i ]}` );\n\n\t}\n\n\treturn lines2.join( '\\n' );\n\n}\n\nconst _m0 = /*@__PURE__*/ new Matrix3();\n\nfunction getEncodingComponents( colorSpace ) {\n\n\tColorManagement._getMatrix( _m0, ColorManagement.workingColorSpace, colorSpace );\n\n\tconst encodingMatrix = `mat3( ${ _m0.elements.map( ( v ) => v.toFixed( 4 ) ) } )`;\n\n\tswitch ( ColorManagement.getTransfer( colorSpace ) ) {\n\n\t\tcase LinearTransfer:\n\t\t\treturn [ encodingMatrix, 'LinearTransferOETF' ];\n\n\t\tcase SRGBTransfer:\n\t\t\treturn [ encodingMatrix, 'sRGBTransferOETF' ];\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported color space: ', colorSpace );\n\t\t\treturn [ encodingMatrix, 'LinearTransferOETF' ];\n\n\t}\n\n}\n\nfunction getShaderErrors( gl, shader, type ) {\n\n\tconst status = gl.getShaderParameter( shader, gl.COMPILE_STATUS );\n\tconst errors = gl.getShaderInfoLog( shader ).trim();\n\n\tif ( status && errors === '' ) return '';\n\n\tconst errorMatches = /ERROR: 0:(\\d+)/.exec( errors );\n\tif ( errorMatches ) {\n\n\t\t// --enable-privileged-webgl-extension\n\t\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\n\n\t\tconst errorLine = parseInt( errorMatches[ 1 ] );\n\t\treturn type.toUpperCase() + '\\n\\n' + errors + '\\n\\n' + handleSource( gl.getShaderSource( shader ), errorLine );\n\n\t} else {\n\n\t\treturn errors;\n\n\t}\n\n}\n\nfunction getTexelEncodingFunction( functionName, colorSpace ) {\n\n\tconst components = getEncodingComponents( colorSpace );\n\n\treturn [\n\n\t\t`vec4 ${functionName}( vec4 value ) {`,\n\n\t\t`\treturn ${components[ 1 ]}( vec4( value.rgb * ${components[ 0 ]}, value.a ) );`,\n\n\t\t'}',\n\n\t].join( '\\n' );\n\n}\n\nfunction getToneMappingFunction( functionName, toneMapping ) {\n\n\tlet toneMappingName;\n\n\tswitch ( toneMapping ) {\n\n\t\tcase LinearToneMapping:\n\t\t\ttoneMappingName = 'Linear';\n\t\t\tbreak;\n\n\t\tcase ReinhardToneMapping:\n\t\t\ttoneMappingName = 'Reinhard';\n\t\t\tbreak;\n\n\t\tcase CineonToneMapping:\n\t\t\ttoneMappingName = 'Cineon';\n\t\t\tbreak;\n\n\t\tcase ACESFilmicToneMapping:\n\t\t\ttoneMappingName = 'ACESFilmic';\n\t\t\tbreak;\n\n\t\tcase AgXToneMapping:\n\t\t\ttoneMappingName = 'AgX';\n\t\t\tbreak;\n\n\t\tcase NeutralToneMapping:\n\t\t\ttoneMappingName = 'Neutral';\n\t\t\tbreak;\n\n\t\tcase CustomToneMapping:\n\t\t\ttoneMappingName = 'Custom';\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\n\t\t\ttoneMappingName = 'Linear';\n\n\t}\n\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\n\n}\n\nconst _v0 = /*@__PURE__*/ new Vector3();\n\nfunction getLuminanceFunction() {\n\n\tColorManagement.getLuminanceCoefficients( _v0 );\n\n\tconst r = _v0.x.toFixed( 4 );\n\tconst g = _v0.y.toFixed( 4 );\n\tconst b = _v0.z.toFixed( 4 );\n\n\treturn [\n\n\t\t'float luminance( const in vec3 rgb ) {',\n\n\t\t`\tconst vec3 weights = vec3( ${ r }, ${ g }, ${ b } );`,\n\n\t\t'\treturn dot( weights, rgb );',\n\n\t\t'}'\n\n\t].join( '\\n' );\n\n}\n\nfunction generateVertexExtensions( parameters ) {\n\n\tconst chunks = [\n\t\tparameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',\n\t\tparameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',\n\t];\n\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\n\n}\n\nfunction generateDefines( defines ) {\n\n\tconst chunks = [];\n\n\tfor ( const name in defines ) {\n\n\t\tconst value = defines[ name ];\n\n\t\tif ( value === false ) continue;\n\n\t\tchunks.push( '#define ' + name + ' ' + value );\n\n\t}\n\n\treturn chunks.join( '\\n' );\n\n}\n\nfunction fetchAttributeLocations( gl, program ) {\n\n\tconst attributes = {};\n\n\tconst n = gl.getProgramParameter( program, gl.ACTIVE_ATTRIBUTES );\n\n\tfor ( let i = 0; i < n; i ++ ) {\n\n\t\tconst info = gl.getActiveAttrib( program, i );\n\t\tconst name = info.name;\n\n\t\tlet locationSize = 1;\n\t\tif ( info.type === gl.FLOAT_MAT2 ) locationSize = 2;\n\t\tif ( info.type === gl.FLOAT_MAT3 ) locationSize = 3;\n\t\tif ( info.type === gl.FLOAT_MAT4 ) locationSize = 4;\n\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\n\n\t\tattributes[ name ] = {\n\t\t\ttype: info.type,\n\t\t\tlocation: gl.getAttribLocation( program, name ),\n\t\t\tlocationSize: locationSize\n\t\t};\n\n\t}\n\n\treturn attributes;\n\n}\n\nfunction filterEmptyLine( string ) {\n\n\treturn string !== '';\n\n}\n\nfunction replaceLightNums( string, parameters ) {\n\n\tconst numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n\n\treturn string\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\n\t\t.replace( /NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords )\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps )\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\n\n}\n\nfunction replaceClippingPlaneNums( string, parameters ) {\n\n\treturn string\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\n\n}\n\n// Resolve Includes\n\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\n\nfunction resolveIncludes( string ) {\n\n\treturn string.replace( includePattern, includeReplacer );\n\n}\n\nconst shaderChunkMap = new Map();\n\nfunction includeReplacer( match, include ) {\n\n\tlet string = ShaderChunk[ include ];\n\n\tif ( string === undefined ) {\n\n\t\tconst newInclude = shaderChunkMap.get( include );\n\n\t\tif ( newInclude !== undefined ) {\n\n\t\t\tstring = ShaderChunk[ newInclude ];\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude );\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\n\n\t\t}\n\n\t}\n\n\treturn resolveIncludes( string );\n\n}\n\n// Unroll Loops\n\nconst unrollLoopPattern = /#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;\n\nfunction unrollLoops( string ) {\n\n\treturn string.replace( unrollLoopPattern, loopReplacer );\n\n}\n\nfunction loopReplacer( match, start, end, snippet ) {\n\n\tlet string = '';\n\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\n\n\t\tstring += snippet\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\n\n\t}\n\n\treturn string;\n\n}\n\n//\n\nfunction generatePrecision( parameters ) {\n\n\tlet precisionstring = `precision ${parameters.precision} float;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\tprecision ${parameters.precision} sampler3D;\n\tprecision ${parameters.precision} sampler2DArray;\n\tprecision ${parameters.precision} sampler2DShadow;\n\tprecision ${parameters.precision} samplerCubeShadow;\n\tprecision ${parameters.precision} sampler2DArrayShadow;\n\tprecision ${parameters.precision} isampler2D;\n\tprecision ${parameters.precision} isampler3D;\n\tprecision ${parameters.precision} isamplerCube;\n\tprecision ${parameters.precision} isampler2DArray;\n\tprecision ${parameters.precision} usampler2D;\n\tprecision ${parameters.precision} usampler3D;\n\tprecision ${parameters.precision} usamplerCube;\n\tprecision ${parameters.precision} usampler2DArray;\n\t`;\n\n\tif ( parameters.precision === 'highp' ) {\n\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\n\n\t} else if ( parameters.precision === 'mediump' ) {\n\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\n\n\t} else if ( parameters.precision === 'lowp' ) {\n\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\n\n\t}\n\n\treturn precisionstring;\n\n}\n\nfunction generateShadowMapTypeDefine( parameters ) {\n\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\n\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\n\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\n\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\n\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\n\n\t}\n\n\treturn shadowMapTypeDefine;\n\n}\n\nfunction generateEnvMapTypeDefine( parameters ) {\n\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeReflectionMapping:\n\t\t\tcase CubeRefractionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\n\t\t\t\tbreak;\n\n\t\t\tcase CubeUVReflectionMapping:\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapTypeDefine;\n\n}\n\nfunction generateEnvMapModeDefine( parameters ) {\n\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.envMapMode ) {\n\n\t\t\tcase CubeRefractionMapping:\n\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapModeDefine;\n\n}\n\nfunction generateEnvMapBlendingDefine( parameters ) {\n\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\n\n\tif ( parameters.envMap ) {\n\n\t\tswitch ( parameters.combine ) {\n\n\t\t\tcase MultiplyOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\n\t\t\t\tbreak;\n\n\t\t\tcase MixOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\n\t\t\t\tbreak;\n\n\t\t\tcase AddOperation:\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\n\t\t\t\tbreak;\n\n\t\t}\n\n\t}\n\n\treturn envMapBlendingDefine;\n\n}\n\nfunction generateCubeUVSize( parameters ) {\n\n\tconst imageHeight = parameters.envMapCubeUVHeight;\n\n\tif ( imageHeight === null ) return null;\n\n\tconst maxMip = Math.log2( imageHeight ) - 2;\n\n\tconst texelHeight = 1.0 / imageHeight;\n\n\tconst texelWidth = 1.0 / ( 3 * Math.max( Math.pow( 2, maxMip ), 7 * 16 ) );\n\n\treturn { texelWidth, texelHeight, maxMip };\n\n}\n\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\n\n\t// TODO Send this event to Three.js DevTools\n\t// console.log( 'WebGLProgram', cacheKey );\n\n\tconst gl = renderer.getContext();\n\n\tconst defines = parameters.defines;\n\n\tlet vertexShader = parameters.vertexShader;\n\tlet fragmentShader = parameters.fragmentShader;\n\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\n\tconst envMapCubeUVSize = generateCubeUVSize( parameters );\n\n\tconst customVertexExtensions = generateVertexExtensions( parameters );\n\n\tconst customDefines = generateDefines( defines );\n\n\tconst program = gl.createProgram();\n\n\tlet prefixVertex, prefixFragment;\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\n\n\tif ( parameters.isRawShaderMaterial ) {\n\n\t\tprefixVertex = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixVertex.length > 0 ) {\n\n\t\t\tprefixVertex += '\\n';\n\n\t\t}\n\n\t\tprefixFragment = [\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tif ( prefixFragment.length > 0 ) {\n\n\t\t\tprefixFragment += '\\n';\n\n\t\t}\n\n\t} else {\n\n\t\tprefixVertex = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.extensionClipCullDistance ? '#define USE_CLIP_DISTANCE' : '',\n\t\t\tparameters.batching ? '#define USE_BATCHING' : '',\n\t\t\tparameters.batchingColor ? '#define USE_BATCHING_COLOR' : '',\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\n\t\t\tparameters.instancingMorph ? '#define USE_INSTANCING_MORPH' : '',\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.displacementMap ? '#define USE_DISPLACEMENTMAP' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\t//\n\n\t\t\tparameters.mapUv ? '#define MAP_UV ' + parameters.mapUv : '',\n\t\t\tparameters.alphaMapUv ? '#define ALPHAMAP_UV ' + parameters.alphaMapUv : '',\n\t\t\tparameters.lightMapUv ? '#define LIGHTMAP_UV ' + parameters.lightMapUv : '',\n\t\t\tparameters.aoMapUv ? '#define AOMAP_UV ' + parameters.aoMapUv : '',\n\t\t\tparameters.emissiveMapUv ? '#define EMISSIVEMAP_UV ' + parameters.emissiveMapUv : '',\n\t\t\tparameters.bumpMapUv ? '#define BUMPMAP_UV ' + parameters.bumpMapUv : '',\n\t\t\tparameters.normalMapUv ? '#define NORMALMAP_UV ' + parameters.normalMapUv : '',\n\t\t\tparameters.displacementMapUv ? '#define DISPLACEMENTMAP_UV ' + parameters.displacementMapUv : '',\n\n\t\t\tparameters.metalnessMapUv ? '#define METALNESSMAP_UV ' + parameters.metalnessMapUv : '',\n\t\t\tparameters.roughnessMapUv ? '#define ROUGHNESSMAP_UV ' + parameters.roughnessMapUv : '',\n\n\t\t\tparameters.anisotropyMapUv ? '#define ANISOTROPYMAP_UV ' + parameters.anisotropyMapUv : '',\n\n\t\t\tparameters.clearcoatMapUv ? '#define CLEARCOATMAP_UV ' + parameters.clearcoatMapUv : '',\n\t\t\tparameters.clearcoatNormalMapUv ? '#define CLEARCOAT_NORMALMAP_UV ' + parameters.clearcoatNormalMapUv : '',\n\t\t\tparameters.clearcoatRoughnessMapUv ? '#define CLEARCOAT_ROUGHNESSMAP_UV ' + parameters.clearcoatRoughnessMapUv : '',\n\n\t\t\tparameters.iridescenceMapUv ? '#define IRIDESCENCEMAP_UV ' + parameters.iridescenceMapUv : '',\n\t\t\tparameters.iridescenceThicknessMapUv ? '#define IRIDESCENCE_THICKNESSMAP_UV ' + parameters.iridescenceThicknessMapUv : '',\n\n\t\t\tparameters.sheenColorMapUv ? '#define SHEEN_COLORMAP_UV ' + parameters.sheenColorMapUv : '',\n\t\t\tparameters.sheenRoughnessMapUv ? '#define SHEEN_ROUGHNESSMAP_UV ' + parameters.sheenRoughnessMapUv : '',\n\n\t\t\tparameters.specularMapUv ? '#define SPECULARMAP_UV ' + parameters.specularMapUv : '',\n\t\t\tparameters.specularColorMapUv ? '#define SPECULAR_COLORMAP_UV ' + parameters.specularColorMapUv : '',\n\t\t\tparameters.specularIntensityMapUv ? '#define SPECULAR_INTENSITYMAP_UV ' + parameters.specularIntensityMapUv : '',\n\n\t\t\tparameters.transmissionMapUv ? '#define TRANSMISSIONMAP_UV ' + parameters.transmissionMapUv : '',\n\t\t\tparameters.thicknessMapUv ? '#define THICKNESSMAP_UV ' + parameters.thicknessMapUv : '',\n\n\t\t\t//\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\n\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\n\t\t\t( parameters.morphColors ) ? '#define USE_MORPHCOLORS' : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_TEXTURE_STRIDE ' + parameters.morphTextureStride : '',\n\t\t\t( parameters.morphTargetsCount > 0 ) ? '#define MORPHTARGETS_COUNT ' + parameters.morphTargetsCount : '',\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 modelMatrix;',\n\t\t\t'uniform mat4 modelViewMatrix;',\n\t\t\t'uniform mat4 projectionMatrix;',\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform mat3 normalMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t'#ifdef USE_INSTANCING',\n\n\t\t\t'\tattribute mat4 instanceMatrix;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\n\n\t\t\t'\tattribute vec3 instanceColor;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_INSTANCING_MORPH',\n\n\t\t\t'\tuniform sampler2D morphTexture;',\n\n\t\t\t'#endif',\n\n\t\t\t'attribute vec3 position;',\n\t\t\t'attribute vec3 normal;',\n\t\t\t'attribute vec2 uv;',\n\n\t\t\t'#ifdef USE_UV1',\n\n\t\t\t'\tattribute vec2 uv1;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV2',\n\n\t\t\t'\tattribute vec2 uv2;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_UV3',\n\n\t\t\t'\tattribute vec2 uv3;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_TANGENT',\n\n\t\t\t'\tattribute vec4 tangent;',\n\n\t\t\t'#endif',\n\n\t\t\t'#if defined( USE_COLOR_ALPHA )',\n\n\t\t\t'\tattribute vec4 color;',\n\n\t\t\t'#elif defined( USE_COLOR )',\n\n\t\t\t'\tattribute vec3 color;',\n\n\t\t\t'#endif',\n\n\t\t\t'#ifdef USE_SKINNING',\n\n\t\t\t'\tattribute vec4 skinIndex;',\n\t\t\t'\tattribute vec4 skinWeight;',\n\n\t\t\t'#endif',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t\tprefixFragment = [\n\n\t\t\tgeneratePrecision( parameters ),\n\n\t\t\t'#define SHADER_TYPE ' + parameters.shaderType,\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\n\n\t\t\tcustomDefines,\n\n\t\t\tparameters.useFog && parameters.fog ? '#define USE_FOG' : '',\n\t\t\tparameters.useFog && parameters.fogExp2 ? '#define FOG_EXP2' : '',\n\n\t\t\tparameters.alphaToCoverage ? '#define ALPHA_TO_COVERAGE' : '',\n\t\t\tparameters.map ? '#define USE_MAP' : '',\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_WIDTH ' + envMapCubeUVSize.texelWidth : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_TEXEL_HEIGHT ' + envMapCubeUVSize.texelHeight : '',\n\t\t\tenvMapCubeUVSize ? '#define CUBEUV_MAX_MIP ' + envMapCubeUVSize.maxMip + '.0' : '',\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\n\t\t\tparameters.normalMapObjectSpace ? '#define USE_NORMALMAP_OBJECTSPACE' : '',\n\t\t\tparameters.normalMapTangentSpace ? '#define USE_NORMALMAP_TANGENTSPACE' : '',\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\n\n\t\t\tparameters.anisotropy ? '#define USE_ANISOTROPY' : '',\n\t\t\tparameters.anisotropyMap ? '#define USE_ANISOTROPYMAP' : '',\n\n\t\t\tparameters.clearcoat ? '#define USE_CLEARCOAT' : '',\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\n\n\t\t\tparameters.dispersion ? '#define USE_DISPERSION' : '',\n\n\t\t\tparameters.iridescence ? '#define USE_IRIDESCENCE' : '',\n\t\t\tparameters.iridescenceMap ? '#define USE_IRIDESCENCEMAP' : '',\n\t\t\tparameters.iridescenceThicknessMap ? '#define USE_IRIDESCENCE_THICKNESSMAP' : '',\n\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\n\t\t\tparameters.specularColorMap ? '#define USE_SPECULAR_COLORMAP' : '',\n\t\t\tparameters.specularIntensityMap ? '#define USE_SPECULAR_INTENSITYMAP' : '',\n\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\n\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\n\t\t\tparameters.alphaTest ? '#define USE_ALPHATEST' : '',\n\t\t\tparameters.alphaHash ? '#define USE_ALPHAHASH' : '',\n\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\n\t\t\tparameters.sheenColorMap ? '#define USE_SHEEN_COLORMAP' : '',\n\t\t\tparameters.sheenRoughnessMap ? '#define USE_SHEEN_ROUGHNESSMAP' : '',\n\n\t\t\tparameters.transmission ? '#define USE_TRANSMISSION' : '',\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\n\t\t\tparameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',\n\n\t\t\tparameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',\n\t\t\tparameters.vertexColors || parameters.instancingColor || parameters.batchingColor ? '#define USE_COLOR' : '',\n\t\t\tparameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',\n\t\t\tparameters.vertexUv1s ? '#define USE_UV1' : '',\n\t\t\tparameters.vertexUv2s ? '#define USE_UV2' : '',\n\t\t\tparameters.vertexUv3s ? '#define USE_UV3' : '',\n\n\t\t\tparameters.pointsUvs ? '#define USE_POINTS_UV' : '',\n\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\n\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\n\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\n\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\n\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\n\n\t\t\tparameters.numLightProbes > 0 ? '#define USE_LIGHT_PROBES' : '',\n\n\t\t\tparameters.decodeVideoTexture ? '#define DECODE_VIDEO_TEXTURE' : '',\n\t\t\tparameters.decodeVideoTextureEmissive ? '#define DECODE_VIDEO_TEXTURE_EMISSIVE' : '',\n\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\n\t\t\tparameters.reverseDepthBuffer ? '#define USE_REVERSEDEPTHBUF' : '',\n\n\t\t\t'uniform mat4 viewMatrix;',\n\t\t\t'uniform vec3 cameraPosition;',\n\t\t\t'uniform bool isOrthographic;',\n\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\n\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\n\t\t\tparameters.opaque ? '#define OPAQUE' : '',\n\n\t\t\tShaderChunk[ 'colorspace_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputColorSpace ),\n\t\t\tgetLuminanceFunction(),\n\n\t\t\tparameters.useDepthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\n\n\t\t\t'\\n'\n\n\t\t].filter( filterEmptyLine ).join( '\\n' );\n\n\t}\n\n\tvertexShader = resolveIncludes( vertexShader );\n\tvertexShader = replaceLightNums( vertexShader, parameters );\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\n\n\tfragmentShader = resolveIncludes( fragmentShader );\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\n\n\tvertexShader = unrollLoops( vertexShader );\n\tfragmentShader = unrollLoops( fragmentShader );\n\n\tif ( parameters.isRawShaderMaterial !== true ) {\n\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\n\n\t\tversionString = '#version 300 es\\n';\n\n\t\tprefixVertex = [\n\t\t\tcustomVertexExtensions,\n\t\t\t'#define attribute in',\n\t\t\t'#define varying out',\n\t\t\t'#define texture2D texture'\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\n\n\t\tprefixFragment = [\n\t\t\t'#define varying in',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'layout(location = 0) out highp vec4 pc_fragColor;',\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\n\t\t\t'#define texture2D texture',\n\t\t\t'#define textureCube texture',\n\t\t\t'#define texture2DProj textureProj',\n\t\t\t'#define texture2DLodEXT textureLod',\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\n\t\t\t'#define textureCubeLodEXT textureLod',\n\t\t\t'#define texture2DGradEXT textureGrad',\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\n\t\t\t'#define textureCubeGradEXT textureGrad'\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\n\n\t}\n\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\n\n\t// console.log( '*VERTEX*', vertexGlsl );\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\n\n\tconst glVertexShader = WebGLShader( gl, gl.VERTEX_SHADER, vertexGlsl );\n\tconst glFragmentShader = WebGLShader( gl, gl.FRAGMENT_SHADER, fragmentGlsl );\n\n\tgl.attachShader( program, glVertexShader );\n\tgl.attachShader( program, glFragmentShader );\n\n\t// Force a particular attribute to index 0.\n\n\tif ( parameters.index0AttributeName !== undefined ) {\n\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\n\n\t} else if ( parameters.morphTargets === true ) {\n\n\t\t// programs with morphTargets displace position out of attribute 0\n\t\tgl.bindAttribLocation( program, 0, 'position' );\n\n\t}\n\n\tgl.linkProgram( program );\n\n\tfunction onFirstUse( self ) {\n\n\t\t// check for link errors\n\t\tif ( renderer.debug.checkShaderErrors ) {\n\n\t\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\n\t\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\n\t\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\n\n\t\t\tlet runnable = true;\n\t\t\tlet haveDiagnostics = true;\n\n\t\t\tif ( gl.getProgramParameter( program, gl.LINK_STATUS ) === false ) {\n\n\t\t\t\trunnable = false;\n\n\t\t\t\tif ( typeof renderer.debug.onShaderError === 'function' ) {\n\n\t\t\t\t\trenderer.debug.onShaderError( gl, program, glVertexShader, glFragmentShader );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// default error reporting\n\n\t\t\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\n\t\t\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\n\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'THREE.WebGLProgram: Shader Error ' + gl.getError() + ' - ' +\n\t\t\t\t\t\t'VALIDATE_STATUS ' + gl.getProgramParameter( program, gl.VALIDATE_STATUS ) + '\\n\\n' +\n\t\t\t\t\t\t'Material Name: ' + self.name + '\\n' +\n\t\t\t\t\t\t'Material Type: ' + self.type + '\\n\\n' +\n\t\t\t\t\t\t'Program Info Log: ' + programLog + '\\n' +\n\t\t\t\t\t\tvertexErrors + '\\n' +\n\t\t\t\t\t\tfragmentErrors\n\t\t\t\t\t);\n\n\t\t\t\t}\n\n\t\t\t} else if ( programLog !== '' ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram: Program Info Log:', programLog );\n\n\t\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\n\n\t\t\t\thaveDiagnostics = false;\n\n\t\t\t}\n\n\t\t\tif ( haveDiagnostics ) {\n\n\t\t\t\tself.diagnostics = {\n\n\t\t\t\t\trunnable: runnable,\n\n\t\t\t\t\tprogramLog: programLog,\n\n\t\t\t\t\tvertexShader: {\n\n\t\t\t\t\t\tlog: vertexLog,\n\t\t\t\t\t\tprefix: prefixVertex\n\n\t\t\t\t\t},\n\n\t\t\t\t\tfragmentShader: {\n\n\t\t\t\t\t\tlog: fragmentLog,\n\t\t\t\t\t\tprefix: prefixFragment\n\n\t\t\t\t\t}\n\n\t\t\t\t};\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Clean up\n\n\t\t// Crashes in iOS9 and iOS10. #18402\n\t\t// gl.detachShader( program, glVertexShader );\n\t\t// gl.detachShader( program, glFragmentShader );\n\n\t\tgl.deleteShader( glVertexShader );\n\t\tgl.deleteShader( glFragmentShader );\n\n\t\tcachedUniforms = new WebGLUniforms( gl, program );\n\t\tcachedAttributes = fetchAttributeLocations( gl, program );\n\n\t}\n\n\t// set up caching for uniform locations\n\n\tlet cachedUniforms;\n\n\tthis.getUniforms = function () {\n\n\t\tif ( cachedUniforms === undefined ) {\n\n\t\t\t// Populates cachedUniforms and cachedAttributes\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedUniforms;\n\n\t};\n\n\t// set up caching for attribute locations\n\n\tlet cachedAttributes;\n\n\tthis.getAttributes = function () {\n\n\t\tif ( cachedAttributes === undefined ) {\n\n\t\t\t// Populates cachedAttributes and cachedUniforms\n\t\t\tonFirstUse( this );\n\n\t\t}\n\n\t\treturn cachedAttributes;\n\n\t};\n\n\t// indicate when the program is ready to be used. if the KHR_parallel_shader_compile extension isn't supported,\n\t// flag the program as ready immediately. It may cause a stall when it's first used.\n\n\tlet programReady = ( parameters.rendererExtensionParallelShaderCompile === false );\n\n\tthis.isReady = function () {\n\n\t\tif ( programReady === false ) {\n\n\t\t\tprogramReady = gl.getProgramParameter( program, COMPLETION_STATUS_KHR );\n\n\t\t}\n\n\t\treturn programReady;\n\n\t};\n\n\t// free resource\n\n\tthis.destroy = function () {\n\n\t\tbindingStates.releaseStatesOfProgram( this );\n\n\t\tgl.deleteProgram( program );\n\t\tthis.program = undefined;\n\n\t};\n\n\t//\n\n\tthis.type = parameters.shaderType;\n\tthis.name = parameters.shaderName;\n\tthis.id = programIdCount ++;\n\tthis.cacheKey = cacheKey;\n\tthis.usedTimes = 1;\n\tthis.program = program;\n\tthis.vertexShader = glVertexShader;\n\tthis.fragmentShader = glFragmentShader;\n\n\treturn this;\n\n}\n\nlet _id = 0;\n\nclass WebGLShaderCache {\n\n\tconstructor() {\n\n\t\tthis.shaderCache = new Map();\n\t\tthis.materialCache = new Map();\n\n\t}\n\n\tupdate( material ) {\n\n\t\tconst vertexShader = material.vertexShader;\n\t\tconst fragmentShader = material.fragmentShader;\n\n\t\tconst vertexShaderStage = this._getShaderStage( vertexShader );\n\t\tconst fragmentShaderStage = this._getShaderStage( fragmentShader );\n\n\t\tconst materialShaders = this._getShaderCacheForMaterial( material );\n\n\t\tif ( materialShaders.has( vertexShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( vertexShaderStage );\n\t\t\tvertexShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\tif ( materialShaders.has( fragmentShaderStage ) === false ) {\n\n\t\t\tmaterialShaders.add( fragmentShaderStage );\n\t\t\tfragmentShaderStage.usedTimes ++;\n\n\t\t}\n\n\t\treturn this;\n\n\t}\n\n\tremove( material ) {\n\n\t\tconst materialShaders = this.materialCache.get( material );\n\n\t\tfor ( const shaderStage of materialShaders ) {\n\n\t\t\tshaderStage.usedTimes --;\n\n\t\t\tif ( shaderStage.usedTimes === 0 ) this.shaderCache.delete( shaderStage.code );\n\n\t\t}\n\n\t\tthis.materialCache.delete( material );\n\n\t\treturn this;\n\n\t}\n\n\tgetVertexShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.vertexShader ).id;\n\n\t}\n\n\tgetFragmentShaderID( material ) {\n\n\t\treturn this._getShaderStage( material.fragmentShader ).id;\n\n\t}\n\n\tdispose() {\n\n\t\tthis.shaderCache.clear();\n\t\tthis.materialCache.clear();\n\n\t}\n\n\t_getShaderCacheForMaterial( material ) {\n\n\t\tconst cache = this.materialCache;\n\t\tlet set = cache.get( material );\n\n\t\tif ( set === undefined ) {\n\n\t\t\tset = new Set();\n\t\t\tcache.set( material, set );\n\n\t\t}\n\n\t\treturn set;\n\n\t}\n\n\t_getShaderStage( code ) {\n\n\t\tconst cache = this.shaderCache;\n\t\tlet stage = cache.get( code );\n\n\t\tif ( stage === undefined ) {\n\n\t\t\tstage = new WebGLShaderStage( code );\n\t\t\tcache.set( code, stage );\n\n\t\t}\n\n\t\treturn stage;\n\n\t}\n\n}\n\nclass WebGLShaderStage {\n\n\tconstructor( code ) {\n\n\t\tthis.id = _id ++;\n\n\t\tthis.code = code;\n\t\tthis.usedTimes = 0;\n\n\t}\n\n}\n\nfunction WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {\n\n\tconst _programLayers = new Layers();\n\tconst _customShaders = new WebGLShaderCache();\n\tconst _activeChannels = new Set();\n\tconst programs = [];\n\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n\tconst SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n\n\tlet precision = capabilities.precision;\n\n\tconst shaderIDs = {\n\t\tMeshDepthMaterial: 'depth',\n\t\tMeshDistanceMaterial: 'distanceRGBA',\n\t\tMeshNormalMaterial: 'normal',\n\t\tMeshBasicMaterial: 'basic',\n\t\tMeshLambertMaterial: 'lambert',\n\t\tMeshPhongMaterial: 'phong',\n\t\tMeshToonMaterial: 'toon',\n\t\tMeshStandardMaterial: 'physical',\n\t\tMeshPhysicalMaterial: 'physical',\n\t\tMeshMatcapMaterial: 'matcap',\n\t\tLineBasicMaterial: 'basic',\n\t\tLineDashedMaterial: 'dashed',\n\t\tPointsMaterial: 'points',\n\t\tShadowMaterial: 'shadow',\n\t\tSpriteMaterial: 'sprite'\n\t};\n\n\tfunction getChannel( value ) {\n\n\t\t_activeChannels.add( value );\n\n\t\tif ( value === 0 ) return 'uv';\n\n\t\treturn `uv${ value }`;\n\n\t}\n\n\tfunction getParameters( material, lights, shadows, scene, object ) {\n\n\t\tconst fog = scene.fog;\n\t\tconst geometry = object.geometry;\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\n\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\tconst envMapCubeUVHeight = ( !! envMap ) && ( envMap.mapping === CubeUVReflectionMapping ) ? envMap.image.height : null;\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\n\t\t// heuristics to create shader parameters according to lights in the scene\n\t\t// (not to blow over maxLights budget)\n\n\t\tif ( material.precision !== null ) {\n\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\n\n\t\t\tif ( precision !== material.precision ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\tlet morphTextureStride = 0;\n\n\t\tif ( geometry.morphAttributes.position !== undefined ) morphTextureStride = 1;\n\t\tif ( geometry.morphAttributes.normal !== undefined ) morphTextureStride = 2;\n\t\tif ( geometry.morphAttributes.color !== undefined ) morphTextureStride = 3;\n\n\t\t//\n\n\t\tlet vertexShader, fragmentShader;\n\t\tlet customVertexShaderID, customFragmentShaderID;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\n\t\t\tvertexShader = shader.vertexShader;\n\t\t\tfragmentShader = shader.fragmentShader;\n\n\t\t} else {\n\n\t\t\tvertexShader = material.vertexShader;\n\t\t\tfragmentShader = material.fragmentShader;\n\n\t\t\t_customShaders.update( material );\n\n\t\t\tcustomVertexShaderID = _customShaders.getVertexShaderID( material );\n\t\t\tcustomFragmentShaderID = _customShaders.getFragmentShaderID( material );\n\n\t\t}\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst reverseDepthBuffer = renderer.state.buffers.depth.getReversed();\n\n\t\tconst IS_INSTANCEDMESH = object.isInstancedMesh === true;\n\t\tconst IS_BATCHEDMESH = object.isBatchedMesh === true;\n\n\t\tconst HAS_MAP = !! material.map;\n\t\tconst HAS_MATCAP = !! material.matcap;\n\t\tconst HAS_ENVMAP = !! envMap;\n\t\tconst HAS_AOMAP = !! material.aoMap;\n\t\tconst HAS_LIGHTMAP = !! material.lightMap;\n\t\tconst HAS_BUMPMAP = !! material.bumpMap;\n\t\tconst HAS_NORMALMAP = !! material.normalMap;\n\t\tconst HAS_DISPLACEMENTMAP = !! material.displacementMap;\n\t\tconst HAS_EMISSIVEMAP = !! material.emissiveMap;\n\n\t\tconst HAS_METALNESSMAP = !! material.metalnessMap;\n\t\tconst HAS_ROUGHNESSMAP = !! material.roughnessMap;\n\n\t\tconst HAS_ANISOTROPY = material.anisotropy > 0;\n\t\tconst HAS_CLEARCOAT = material.clearcoat > 0;\n\t\tconst HAS_DISPERSION = material.dispersion > 0;\n\t\tconst HAS_IRIDESCENCE = material.iridescence > 0;\n\t\tconst HAS_SHEEN = material.sheen > 0;\n\t\tconst HAS_TRANSMISSION = material.transmission > 0;\n\n\t\tconst HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !! material.anisotropyMap;\n\n\t\tconst HAS_CLEARCOATMAP = HAS_CLEARCOAT && !! material.clearcoatMap;\n\t\tconst HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !! material.clearcoatNormalMap;\n\t\tconst HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !! material.clearcoatRoughnessMap;\n\n\t\tconst HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !! material.iridescenceMap;\n\t\tconst HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !! material.iridescenceThicknessMap;\n\n\t\tconst HAS_SHEEN_COLORMAP = HAS_SHEEN && !! material.sheenColorMap;\n\t\tconst HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !! material.sheenRoughnessMap;\n\n\t\tconst HAS_SPECULARMAP = !! material.specularMap;\n\t\tconst HAS_SPECULAR_COLORMAP = !! material.specularColorMap;\n\t\tconst HAS_SPECULAR_INTENSITYMAP = !! material.specularIntensityMap;\n\n\t\tconst HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !! material.transmissionMap;\n\t\tconst HAS_THICKNESSMAP = HAS_TRANSMISSION && !! material.thicknessMap;\n\n\t\tconst HAS_GRADIENTMAP = !! material.gradientMap;\n\n\t\tconst HAS_ALPHAMAP = !! material.alphaMap;\n\n\t\tconst HAS_ALPHATEST = material.alphaTest > 0;\n\n\t\tconst HAS_ALPHAHASH = !! material.alphaHash;\n\n\t\tconst HAS_EXTENSIONS = !! material.extensions;\n\n\t\tlet toneMapping = NoToneMapping;\n\n\t\tif ( material.toneMapped ) {\n\n\t\t\tif ( currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\ttoneMapping = renderer.toneMapping;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst parameters = {\n\n\t\t\tshaderID: shaderID,\n\t\t\tshaderType: material.type,\n\t\t\tshaderName: material.name,\n\n\t\t\tvertexShader: vertexShader,\n\t\t\tfragmentShader: fragmentShader,\n\t\t\tdefines: material.defines,\n\n\t\t\tcustomVertexShaderID: customVertexShaderID,\n\t\t\tcustomFragmentShaderID: customFragmentShaderID,\n\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\n\t\t\tglslVersion: material.glslVersion,\n\n\t\t\tprecision: precision,\n\n\t\t\tbatching: IS_BATCHEDMESH,\n\t\t\tbatchingColor: IS_BATCHEDMESH && object._colorsTexture !== null,\n\t\t\tinstancing: IS_INSTANCEDMESH,\n\t\t\tinstancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n\t\t\tinstancingMorph: IS_INSTANCEDMESH && object.morphTexture !== null,\n\n\t\t\tsupportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n\t\t\toutputColorSpace: ( currentRenderTarget === null ) ? renderer.outputColorSpace : ( currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace ),\n\t\t\talphaToCoverage: !! material.alphaToCoverage,\n\n\t\t\tmap: HAS_MAP,\n\t\t\tmatcap: HAS_MATCAP,\n\t\t\tenvMap: HAS_ENVMAP,\n\t\t\tenvMapMode: HAS_ENVMAP && envMap.mapping,\n\t\t\tenvMapCubeUVHeight: envMapCubeUVHeight,\n\t\t\taoMap: HAS_AOMAP,\n\t\t\tlightMap: HAS_LIGHTMAP,\n\t\t\tbumpMap: HAS_BUMPMAP,\n\t\t\tnormalMap: HAS_NORMALMAP,\n\t\t\tdisplacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n\t\t\temissiveMap: HAS_EMISSIVEMAP,\n\n\t\t\tnormalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n\t\t\tnormalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n\n\t\t\tmetalnessMap: HAS_METALNESSMAP,\n\t\t\troughnessMap: HAS_ROUGHNESSMAP,\n\n\t\t\tanisotropy: HAS_ANISOTROPY,\n\t\t\tanisotropyMap: HAS_ANISOTROPYMAP,\n\n\t\t\tclearcoat: HAS_CLEARCOAT,\n\t\t\tclearcoatMap: HAS_CLEARCOATMAP,\n\t\t\tclearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n\t\t\tclearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n\n\t\t\tdispersion: HAS_DISPERSION,\n\n\t\t\tiridescence: HAS_IRIDESCENCE,\n\t\t\tiridescenceMap: HAS_IRIDESCENCEMAP,\n\t\t\tiridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n\n\t\t\tsheen: HAS_SHEEN,\n\t\t\tsheenColorMap: HAS_SHEEN_COLORMAP,\n\t\t\tsheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n\n\t\t\tspecularMap: HAS_SPECULARMAP,\n\t\t\tspecularColorMap: HAS_SPECULAR_COLORMAP,\n\t\t\tspecularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n\n\t\t\ttransmission: HAS_TRANSMISSION,\n\t\t\ttransmissionMap: HAS_TRANSMISSIONMAP,\n\t\t\tthicknessMap: HAS_THICKNESSMAP,\n\n\t\t\tgradientMap: HAS_GRADIENTMAP,\n\n\t\t\topaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n\n\t\t\talphaMap: HAS_ALPHAMAP,\n\t\t\talphaTest: HAS_ALPHATEST,\n\t\t\talphaHash: HAS_ALPHAHASH,\n\n\t\t\tcombine: material.combine,\n\n\t\t\t//\n\n\t\t\tmapUv: HAS_MAP && getChannel( material.map.channel ),\n\t\t\taoMapUv: HAS_AOMAP && getChannel( material.aoMap.channel ),\n\t\t\tlightMapUv: HAS_LIGHTMAP && getChannel( material.lightMap.channel ),\n\t\t\tbumpMapUv: HAS_BUMPMAP && getChannel( material.bumpMap.channel ),\n\t\t\tnormalMapUv: HAS_NORMALMAP && getChannel( material.normalMap.channel ),\n\t\t\tdisplacementMapUv: HAS_DISPLACEMENTMAP && getChannel( material.displacementMap.channel ),\n\t\t\temissiveMapUv: HAS_EMISSIVEMAP && getChannel( material.emissiveMap.channel ),\n\n\t\t\tmetalnessMapUv: HAS_METALNESSMAP && getChannel( material.metalnessMap.channel ),\n\t\t\troughnessMapUv: HAS_ROUGHNESSMAP && getChannel( material.roughnessMap.channel ),\n\n\t\t\tanisotropyMapUv: HAS_ANISOTROPYMAP && getChannel( material.anisotropyMap.channel ),\n\n\t\t\tclearcoatMapUv: HAS_CLEARCOATMAP && getChannel( material.clearcoatMap.channel ),\n\t\t\tclearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel( material.clearcoatNormalMap.channel ),\n\t\t\tclearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel( material.clearcoatRoughnessMap.channel ),\n\n\t\t\tiridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel( material.iridescenceMap.channel ),\n\t\t\tiridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel( material.iridescenceThicknessMap.channel ),\n\n\t\t\tsheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel( material.sheenColorMap.channel ),\n\t\t\tsheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel( material.sheenRoughnessMap.channel ),\n\n\t\t\tspecularMapUv: HAS_SPECULARMAP && getChannel( material.specularMap.channel ),\n\t\t\tspecularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel( material.specularColorMap.channel ),\n\t\t\tspecularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel( material.specularIntensityMap.channel ),\n\n\t\t\ttransmissionMapUv: HAS_TRANSMISSIONMAP && getChannel( material.transmissionMap.channel ),\n\t\t\tthicknessMapUv: HAS_THICKNESSMAP && getChannel( material.thicknessMap.channel ),\n\n\t\t\talphaMapUv: HAS_ALPHAMAP && getChannel( material.alphaMap.channel ),\n\n\t\t\t//\n\n\t\t\tvertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),\n\t\t\tvertexColors: material.vertexColors,\n\t\t\tvertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n\n\t\t\tpointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),\n\n\t\t\tfog: !! fog,\n\t\t\tuseFog: material.fog === true,\n\t\t\tfogExp2: ( !! fog && fog.isFogExp2 ),\n\n\t\t\tflatShading: material.flatShading === true,\n\n\t\t\tsizeAttenuation: material.sizeAttenuation === true,\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\n\t\t\treverseDepthBuffer: reverseDepthBuffer,\n\n\t\t\tskinning: object.isSkinnedMesh === true,\n\n\t\t\tmorphTargets: geometry.morphAttributes.position !== undefined,\n\t\t\tmorphNormals: geometry.morphAttributes.normal !== undefined,\n\t\t\tmorphColors: geometry.morphAttributes.color !== undefined,\n\t\t\tmorphTargetsCount: morphTargetsCount,\n\t\t\tmorphTextureStride: morphTextureStride,\n\n\t\t\tnumDirLights: lights.directional.length,\n\t\t\tnumPointLights: lights.point.length,\n\t\t\tnumSpotLights: lights.spot.length,\n\t\t\tnumSpotLightMaps: lights.spotLightMap.length,\n\t\t\tnumRectAreaLights: lights.rectArea.length,\n\t\t\tnumHemiLights: lights.hemi.length,\n\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\n\t\t\tnumSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n\n\t\t\tnumLightProbes: lights.numLightProbes,\n\n\t\t\tnumClippingPlanes: clipping.numPlanes,\n\t\t\tnumClipIntersection: clipping.numIntersection,\n\n\t\t\tdithering: material.dithering,\n\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n\t\t\tshadowMapType: renderer.shadowMap.type,\n\n\t\t\ttoneMapping: toneMapping,\n\n\t\t\tdecodeVideoTexture: HAS_MAP && ( material.map.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.map.colorSpace ) === SRGBTransfer ),\n\t\t\tdecodeVideoTextureEmissive: HAS_EMISSIVEMAP && ( material.emissiveMap.isVideoTexture === true ) && ( ColorManagement.getTransfer( material.emissiveMap.colorSpace ) === SRGBTransfer ),\n\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\n\n\t\t\tdoubleSided: material.side === DoubleSide,\n\t\t\tflipSided: material.side === BackSide,\n\n\t\t\tuseDepthPacking: material.depthPacking >= 0,\n\t\t\tdepthPacking: material.depthPacking || 0,\n\n\t\t\tindex0AttributeName: material.index0AttributeName,\n\n\t\t\textensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),\n\t\t\textensionMultiDraw: ( HAS_EXTENSIONS && material.extensions.multiDraw === true || IS_BATCHEDMESH ) && extensions.has( 'WEBGL_multi_draw' ),\n\n\t\t\trendererExtensionParallelShaderCompile: extensions.has( 'KHR_parallel_shader_compile' ),\n\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\n\n\t\t};\n\n\t\t// the usage of getChannel() determines the active texture channels for this shader\n\n\t\tparameters.vertexUv1s = _activeChannels.has( 1 );\n\t\tparameters.vertexUv2s = _activeChannels.has( 2 );\n\t\tparameters.vertexUv3s = _activeChannels.has( 3 );\n\n\t\t_activeChannels.clear();\n\n\t\treturn parameters;\n\n\t}\n\n\tfunction getProgramCacheKey( parameters ) {\n\n\t\tconst array = [];\n\n\t\tif ( parameters.shaderID ) {\n\n\t\t\tarray.push( parameters.shaderID );\n\n\t\t} else {\n\n\t\t\tarray.push( parameters.customVertexShaderID );\n\t\t\tarray.push( parameters.customFragmentShaderID );\n\n\t\t}\n\n\t\tif ( parameters.defines !== undefined ) {\n\n\t\t\tfor ( const name in parameters.defines ) {\n\n\t\t\t\tarray.push( name );\n\t\t\t\tarray.push( parameters.defines[ name ] );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( parameters.isRawShaderMaterial === false ) {\n\n\t\t\tgetProgramCacheKeyParameters( array, parameters );\n\t\t\tgetProgramCacheKeyBooleans( array, parameters );\n\t\t\tarray.push( renderer.outputColorSpace );\n\n\t\t}\n\n\t\tarray.push( parameters.customProgramCacheKey );\n\n\t\treturn array.join();\n\n\t}\n\n\tfunction getProgramCacheKeyParameters( array, parameters ) {\n\n\t\tarray.push( parameters.precision );\n\t\tarray.push( parameters.outputColorSpace );\n\t\tarray.push( parameters.envMapMode );\n\t\tarray.push( parameters.envMapCubeUVHeight );\n\t\tarray.push( parameters.mapUv );\n\t\tarray.push( parameters.alphaMapUv );\n\t\tarray.push( parameters.lightMapUv );\n\t\tarray.push( parameters.aoMapUv );\n\t\tarray.push( parameters.bumpMapUv );\n\t\tarray.push( parameters.normalMapUv );\n\t\tarray.push( parameters.displacementMapUv );\n\t\tarray.push( parameters.emissiveMapUv );\n\t\tarray.push( parameters.metalnessMapUv );\n\t\tarray.push( parameters.roughnessMapUv );\n\t\tarray.push( parameters.anisotropyMapUv );\n\t\tarray.push( parameters.clearcoatMapUv );\n\t\tarray.push( parameters.clearcoatNormalMapUv );\n\t\tarray.push( parameters.clearcoatRoughnessMapUv );\n\t\tarray.push( parameters.iridescenceMapUv );\n\t\tarray.push( parameters.iridescenceThicknessMapUv );\n\t\tarray.push( parameters.sheenColorMapUv );\n\t\tarray.push( parameters.sheenRoughnessMapUv );\n\t\tarray.push( parameters.specularMapUv );\n\t\tarray.push( parameters.specularColorMapUv );\n\t\tarray.push( parameters.specularIntensityMapUv );\n\t\tarray.push( parameters.transmissionMapUv );\n\t\tarray.push( parameters.thicknessMapUv );\n\t\tarray.push( parameters.combine );\n\t\tarray.push( parameters.fogExp2 );\n\t\tarray.push( parameters.sizeAttenuation );\n\t\tarray.push( parameters.morphTargetsCount );\n\t\tarray.push( parameters.morphAttributeCount );\n\t\tarray.push( parameters.numDirLights );\n\t\tarray.push( parameters.numPointLights );\n\t\tarray.push( parameters.numSpotLights );\n\t\tarray.push( parameters.numSpotLightMaps );\n\t\tarray.push( parameters.numHemiLights );\n\t\tarray.push( parameters.numRectAreaLights );\n\t\tarray.push( parameters.numDirLightShadows );\n\t\tarray.push( parameters.numPointLightShadows );\n\t\tarray.push( parameters.numSpotLightShadows );\n\t\tarray.push( parameters.numSpotLightShadowsWithMaps );\n\t\tarray.push( parameters.numLightProbes );\n\t\tarray.push( parameters.shadowMapType );\n\t\tarray.push( parameters.toneMapping );\n\t\tarray.push( parameters.numClippingPlanes );\n\t\tarray.push( parameters.numClipIntersection );\n\t\tarray.push( parameters.depthPacking );\n\n\t}\n\n\tfunction getProgramCacheKeyBooleans( array, parameters ) {\n\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.supportsVertexTextures )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.instancing )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.instancingColor )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.instancingMorph )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.matcap )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.envMap )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.normalMapObjectSpace )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.normalMapTangentSpace )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.clearcoat )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.iridescence )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.alphaTest )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.vertexColors )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.vertexAlphas )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.vertexUv1s )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.vertexUv2s )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.vertexUv3s )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.vertexTangents )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.anisotropy )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.alphaHash )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.batching )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.dispersion )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.batchingColor )\n\t\t\t_programLayers.enable( 21 );\n\n\t\tarray.push( _programLayers.mask );\n\t\t_programLayers.disableAll();\n\n\t\tif ( parameters.fog )\n\t\t\t_programLayers.enable( 0 );\n\t\tif ( parameters.useFog )\n\t\t\t_programLayers.enable( 1 );\n\t\tif ( parameters.flatShading )\n\t\t\t_programLayers.enable( 2 );\n\t\tif ( parameters.logarithmicDepthBuffer )\n\t\t\t_programLayers.enable( 3 );\n\t\tif ( parameters.reverseDepthBuffer )\n\t\t\t_programLayers.enable( 4 );\n\t\tif ( parameters.skinning )\n\t\t\t_programLayers.enable( 5 );\n\t\tif ( parameters.morphTargets )\n\t\t\t_programLayers.enable( 6 );\n\t\tif ( parameters.morphNormals )\n\t\t\t_programLayers.enable( 7 );\n\t\tif ( parameters.morphColors )\n\t\t\t_programLayers.enable( 8 );\n\t\tif ( parameters.premultipliedAlpha )\n\t\t\t_programLayers.enable( 9 );\n\t\tif ( parameters.shadowMapEnabled )\n\t\t\t_programLayers.enable( 10 );\n\t\tif ( parameters.doubleSided )\n\t\t\t_programLayers.enable( 11 );\n\t\tif ( parameters.flipSided )\n\t\t\t_programLayers.enable( 12 );\n\t\tif ( parameters.useDepthPacking )\n\t\t\t_programLayers.enable( 13 );\n\t\tif ( parameters.dithering )\n\t\t\t_programLayers.enable( 14 );\n\t\tif ( parameters.transmission )\n\t\t\t_programLayers.enable( 15 );\n\t\tif ( parameters.sheen )\n\t\t\t_programLayers.enable( 16 );\n\t\tif ( parameters.opaque )\n\t\t\t_programLayers.enable( 17 );\n\t\tif ( parameters.pointsUvs )\n\t\t\t_programLayers.enable( 18 );\n\t\tif ( parameters.decodeVideoTexture )\n\t\t\t_programLayers.enable( 19 );\n\t\tif ( parameters.decodeVideoTextureEmissive )\n\t\t\t_programLayers.enable( 20 );\n\t\tif ( parameters.alphaToCoverage )\n\t\t\t_programLayers.enable( 21 );\n\n\t\tarray.push( _programLayers.mask );\n\n\t}\n\n\tfunction getUniforms( material ) {\n\n\t\tconst shaderID = shaderIDs[ material.type ];\n\t\tlet uniforms;\n\n\t\tif ( shaderID ) {\n\n\t\t\tconst shader = ShaderLib[ shaderID ];\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t} else {\n\n\t\t\tuniforms = material.uniforms;\n\n\t\t}\n\n\t\treturn uniforms;\n\n\t}\n\n\tfunction acquireProgram( parameters, cacheKey ) {\n\n\t\tlet program;\n\n\t\t// Check if code has been already compiled\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\n\n\t\t\tconst preexistingProgram = programs[ p ];\n\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\n\n\t\t\t\tprogram = preexistingProgram;\n\t\t\t\t++ program.usedTimes;\n\n\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( program === undefined ) {\n\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\n\t\t\tprograms.push( program );\n\n\t\t}\n\n\t\treturn program;\n\n\t}\n\n\tfunction releaseProgram( program ) {\n\n\t\tif ( -- program.usedTimes === 0 ) {\n\n\t\t\t// Remove from unordered set\n\t\t\tconst i = programs.indexOf( program );\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\n\t\t\tprograms.pop();\n\n\t\t\t// Free WebGL resources\n\t\t\tprogram.destroy();\n\n\t\t}\n\n\t}\n\n\tfunction releaseShaderCache( material ) {\n\n\t\t_customShaders.remove( material );\n\n\t}\n\n\tfunction dispose() {\n\n\t\t_customShaders.dispose();\n\n\t}\n\n\treturn {\n\t\tgetParameters: getParameters,\n\t\tgetProgramCacheKey: getProgramCacheKey,\n\t\tgetUniforms: getUniforms,\n\t\tacquireProgram: acquireProgram,\n\t\treleaseProgram: releaseProgram,\n\t\treleaseShaderCache: releaseShaderCache,\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\n\t\tprograms: programs,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction WebGLProperties() {\n\n\tlet properties = new WeakMap();\n\n\tfunction has( object ) {\n\n\t\treturn properties.has( object );\n\n\t}\n\n\tfunction get( object ) {\n\n\t\tlet map = properties.get( object );\n\n\t\tif ( map === undefined ) {\n\n\t\t\tmap = {};\n\t\t\tproperties.set( object, map );\n\n\t\t}\n\n\t\treturn map;\n\n\t}\n\n\tfunction remove( object ) {\n\n\t\tproperties.delete( object );\n\n\t}\n\n\tfunction update( object, key, value ) {\n\n\t\tproperties.get( object )[ key ] = value;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tproperties = new WeakMap();\n\n\t}\n\n\treturn {\n\t\thas: has,\n\t\tget: get,\n\t\tremove: remove,\n\t\tupdate: update,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction painterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.material.id !== b.material.id ) {\n\n\t\treturn a.material.id - b.material.id;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn a.z - b.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\nfunction reversePainterSortStable( a, b ) {\n\n\tif ( a.groupOrder !== b.groupOrder ) {\n\n\t\treturn a.groupOrder - b.groupOrder;\n\n\t} else if ( a.renderOrder !== b.renderOrder ) {\n\n\t\treturn a.renderOrder - b.renderOrder;\n\n\t} else if ( a.z !== b.z ) {\n\n\t\treturn b.z - a.z;\n\n\t} else {\n\n\t\treturn a.id - b.id;\n\n\t}\n\n}\n\n\nfunction WebGLRenderList() {\n\n\tconst renderItems = [];\n\tlet renderItemsIndex = 0;\n\n\tconst opaque = [];\n\tconst transmissive = [];\n\tconst transparent = [];\n\n\tfunction init() {\n\n\t\trenderItemsIndex = 0;\n\n\t\topaque.length = 0;\n\t\ttransmissive.length = 0;\n\t\ttransparent.length = 0;\n\n\t}\n\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\n\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\n\n\t\tif ( renderItem === undefined ) {\n\n\t\t\trenderItem = {\n\t\t\t\tid: object.id,\n\t\t\t\tobject: object,\n\t\t\t\tgeometry: geometry,\n\t\t\t\tmaterial: material,\n\t\t\t\tgroupOrder: groupOrder,\n\t\t\t\trenderOrder: object.renderOrder,\n\t\t\t\tz: z,\n\t\t\t\tgroup: group\n\t\t\t};\n\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\n\n\t\t} else {\n\n\t\t\trenderItem.id = object.id;\n\t\t\trenderItem.object = object;\n\t\t\trenderItem.geometry = geometry;\n\t\t\trenderItem.material = material;\n\t\t\trenderItem.groupOrder = groupOrder;\n\t\t\trenderItem.renderOrder = object.renderOrder;\n\t\t\trenderItem.z = z;\n\t\t\trenderItem.group = group;\n\n\t\t}\n\n\t\trenderItemsIndex ++;\n\n\t\treturn renderItem;\n\n\t}\n\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.push( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.push( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.push( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\n\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\n\n\t\tif ( material.transmission > 0.0 ) {\n\n\t\t\ttransmissive.unshift( renderItem );\n\n\t\t} else if ( material.transparent === true ) {\n\n\t\t\ttransparent.unshift( renderItem );\n\n\t\t} else {\n\n\t\t\topaque.unshift( renderItem );\n\n\t\t}\n\n\t}\n\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\n\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\n\t\tif ( transmissive.length > 1 ) transmissive.sort( customTransparentSort || reversePainterSortStable );\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\n\n\t}\n\n\tfunction finish() {\n\n\t\t// Clear references from inactive renderItems in the list\n\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\n\n\t\t\tconst renderItem = renderItems[ i ];\n\n\t\t\tif ( renderItem.id === null ) break;\n\n\t\t\trenderItem.id = null;\n\t\t\trenderItem.object = null;\n\t\t\trenderItem.geometry = null;\n\t\t\trenderItem.material = null;\n\t\t\trenderItem.group = null;\n\n\t\t}\n\n\t}\n\n\treturn {\n\n\t\topaque: opaque,\n\t\ttransmissive: transmissive,\n\t\ttransparent: transparent,\n\n\t\tinit: init,\n\t\tpush: push,\n\t\tunshift: unshift,\n\t\tfinish: finish,\n\n\t\tsort: sort\n\t};\n\n}\n\nfunction WebGLRenderLists() {\n\n\tlet lists = new WeakMap();\n\n\tfunction get( scene, renderCallDepth ) {\n\n\t\tconst listArray = lists.get( scene );\n\t\tlet list;\n\n\t\tif ( listArray === undefined ) {\n\n\t\t\tlist = new WebGLRenderList();\n\t\t\tlists.set( scene, [ list ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= listArray.length ) {\n\n\t\t\t\tlist = new WebGLRenderList();\n\t\t\t\tlistArray.push( list );\n\n\t\t\t} else {\n\n\t\t\t\tlist = listArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn list;\n\n\t}\n\n\tfunction dispose() {\n\n\t\tlists = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nfunction UniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tconeCos: 0,\n\t\t\t\t\t\tpenumbraCos: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tdistance: 0,\n\t\t\t\t\t\tdecay: 0\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'HemisphereLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tdirection: new Vector3(),\n\t\t\t\t\t\tskyColor: new Color(),\n\t\t\t\t\t\tgroundColor: new Color()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'RectAreaLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tcolor: new Color(),\n\t\t\t\t\t\tposition: new Vector3(),\n\t\t\t\t\t\thalfWidth: new Vector3(),\n\t\t\t\t\t\thalfHeight: new Vector3()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\nfunction ShadowUniformsCache() {\n\n\tconst lights = {};\n\n\treturn {\n\n\t\tget: function ( light ) {\n\n\t\t\tif ( lights[ light.id ] !== undefined ) {\n\n\t\t\t\treturn lights[ light.id ];\n\n\t\t\t}\n\n\t\t\tlet uniforms;\n\n\t\t\tswitch ( light.type ) {\n\n\t\t\t\tcase 'DirectionalLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowIntensity: 1,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'SpotLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowIntensity: 1,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2()\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase 'PointLight':\n\t\t\t\t\tuniforms = {\n\t\t\t\t\t\tshadowIntensity: 1,\n\t\t\t\t\t\tshadowBias: 0,\n\t\t\t\t\t\tshadowNormalBias: 0,\n\t\t\t\t\t\tshadowRadius: 1,\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\n\t\t\t\t\t\tshadowCameraNear: 1,\n\t\t\t\t\t\tshadowCameraFar: 1000\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\n\n\t\t\t}\n\n\t\t\tlights[ light.id ] = uniforms;\n\n\t\t\treturn uniforms;\n\n\t\t}\n\n\t};\n\n}\n\n\n\nlet nextVersion = 0;\n\nfunction shadowCastingAndTexturingLightsFirst( lightA, lightB ) {\n\n\treturn ( lightB.castShadow ? 2 : 0 ) - ( lightA.castShadow ? 2 : 0 ) + ( lightB.map ? 1 : 0 ) - ( lightA.map ? 1 : 0 );\n\n}\n\nfunction WebGLLights( extensions ) {\n\n\tconst cache = new UniformsCache();\n\n\tconst shadowCache = ShadowUniformsCache();\n\n\tconst state = {\n\n\t\tversion: 0,\n\n\t\thash: {\n\t\t\tdirectionalLength: -1,\n\t\t\tpointLength: -1,\n\t\t\tspotLength: -1,\n\t\t\trectAreaLength: -1,\n\t\t\themiLength: -1,\n\n\t\t\tnumDirectionalShadows: -1,\n\t\t\tnumPointShadows: -1,\n\t\t\tnumSpotShadows: -1,\n\t\t\tnumSpotMaps: -1,\n\n\t\t\tnumLightProbes: -1\n\t\t},\n\n\t\tambient: [ 0, 0, 0 ],\n\t\tprobe: [],\n\t\tdirectional: [],\n\t\tdirectionalShadow: [],\n\t\tdirectionalShadowMap: [],\n\t\tdirectionalShadowMatrix: [],\n\t\tspot: [],\n\t\tspotLightMap: [],\n\t\tspotShadow: [],\n\t\tspotShadowMap: [],\n\t\tspotLightMatrix: [],\n\t\trectArea: [],\n\t\trectAreaLTC1: null,\n\t\trectAreaLTC2: null,\n\t\tpoint: [],\n\t\tpointShadow: [],\n\t\tpointShadowMap: [],\n\t\tpointShadowMatrix: [],\n\t\themi: [],\n\t\tnumSpotLightShadowsWithMaps: 0,\n\t\tnumLightProbes: 0\n\n\t};\n\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\n\n\tconst vector3 = new Vector3();\n\tconst matrix4 = new Matrix4();\n\tconst matrix42 = new Matrix4();\n\n\tfunction setup( lights ) {\n\n\t\tlet r = 0, g = 0, b = 0;\n\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tlet numDirectionalShadows = 0;\n\t\tlet numPointShadows = 0;\n\t\tlet numSpotShadows = 0;\n\t\tlet numSpotMaps = 0;\n\t\tlet numSpotShadowsWithMaps = 0;\n\n\t\tlet numLightProbes = 0;\n\n\t\t// ordering : [shadow casting + map texturing, map texturing, shadow casting, none ]\n\t\tlights.sort( shadowCastingAndTexturingLightsFirst );\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tconst color = light.color;\n\t\t\tconst intensity = light.intensity;\n\t\t\tconst distance = light.distance;\n\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\n\n\t\t\tif ( light.isAmbientLight ) {\n\n\t\t\t\tr += color.r * intensity;\n\t\t\t\tg += color.g * intensity;\n\t\t\t\tb += color.b * intensity;\n\n\t\t\t} else if ( light.isLightProbe ) {\n\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\n\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\n\n\t\t\t\t}\n\n\t\t\t\tnumLightProbes ++;\n\n\t\t\t} else if ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowIntensity = shadow.intensity;\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumDirectionalShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.distance = distance;\n\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\n\n\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\tif ( light.map ) {\n\n\t\t\t\t\tstate.spotLightMap[ numSpotMaps ] = light.map;\n\t\t\t\t\tnumSpotMaps ++;\n\n\t\t\t\t\t// make sure the lightMatrix is up to date\n\t\t\t\t\t// TODO : do it if required only\n\t\t\t\t\tshadow.updateMatrices( light );\n\n\t\t\t\t\tif ( light.castShadow ) numSpotShadowsWithMaps ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.spotLightMatrix[ spotLength ] = shadow.matrix;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowIntensity = shadow.intensity;\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\n\n\t\t\t\t\tnumSpotShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\n\t\t\t\tuniforms.distance = light.distance;\n\t\t\t\tuniforms.decay = light.decay;\n\n\t\t\t\tif ( light.castShadow ) {\n\n\t\t\t\t\tconst shadow = light.shadow;\n\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\n\n\t\t\t\t\tshadowUniforms.shadowIntensity = shadow.intensity;\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\n\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\n\n\t\t\t\t\tnumPointShadows ++;\n\n\t\t\t\t}\n\n\t\t\t\tstate.point[ pointLength ] = uniforms;\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = cache.get( light );\n\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\n\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( rectAreaLength > 0 ) {\n\n\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n\n\t\t\t} else {\n\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.ambient[ 0 ] = r;\n\t\tstate.ambient[ 1 ] = g;\n\t\tstate.ambient[ 2 ] = b;\n\n\t\tconst hash = state.hash;\n\n\t\tif ( hash.directionalLength !== directionalLength ||\n\t\t\thash.pointLength !== pointLength ||\n\t\t\thash.spotLength !== spotLength ||\n\t\t\thash.rectAreaLength !== rectAreaLength ||\n\t\t\thash.hemiLength !== hemiLength ||\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\n\t\t\thash.numPointShadows !== numPointShadows ||\n\t\t\thash.numSpotShadows !== numSpotShadows ||\n\t\t\thash.numSpotMaps !== numSpotMaps ||\n\t\t\thash.numLightProbes !== numLightProbes ) {\n\n\t\t\tstate.directional.length = directionalLength;\n\t\t\tstate.spot.length = spotLength;\n\t\t\tstate.rectArea.length = rectAreaLength;\n\t\t\tstate.point.length = pointLength;\n\t\t\tstate.hemi.length = hemiLength;\n\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\n\t\t\tstate.pointShadow.length = numPointShadows;\n\t\t\tstate.pointShadowMap.length = numPointShadows;\n\t\t\tstate.spotShadow.length = numSpotShadows;\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\n\t\t\tstate.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n\t\t\tstate.spotLightMap.length = numSpotMaps;\n\t\t\tstate.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n\t\t\tstate.numLightProbes = numLightProbes;\n\n\t\t\thash.directionalLength = directionalLength;\n\t\t\thash.pointLength = pointLength;\n\t\t\thash.spotLength = spotLength;\n\t\t\thash.rectAreaLength = rectAreaLength;\n\t\t\thash.hemiLength = hemiLength;\n\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\n\t\t\thash.numPointShadows = numPointShadows;\n\t\t\thash.numSpotShadows = numSpotShadows;\n\t\t\thash.numSpotMaps = numSpotMaps;\n\n\t\t\thash.numLightProbes = numLightProbes;\n\n\t\t\tstate.version = nextVersion ++;\n\n\t\t}\n\n\t}\n\n\tfunction setupView( lights, camera ) {\n\n\t\tlet directionalLength = 0;\n\t\tlet pointLength = 0;\n\t\tlet spotLength = 0;\n\t\tlet rectAreaLength = 0;\n\t\tlet hemiLength = 0;\n\n\t\tconst viewMatrix = camera.matrixWorldInverse;\n\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\n\t\t\tif ( light.isDirectionalLight ) {\n\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tdirectionalLength ++;\n\n\t\t\t} else if ( light.isSpotLight ) {\n\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\n\t\t\t\tuniforms.direction.sub( vector3 );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\tspotLength ++;\n\n\t\t\t} else if ( light.isRectAreaLight ) {\n\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\n\t\t\t\tmatrix42.identity();\n\t\t\t\tmatrix4.copy( light.matrixWorld );\n\t\t\t\tmatrix4.premultiply( viewMatrix );\n\t\t\t\tmatrix42.extractRotation( matrix4 );\n\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\n\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\n\n\t\t\t\trectAreaLength ++;\n\n\t\t\t} else if ( light.isPointLight ) {\n\n\t\t\t\tconst uniforms = state.point[ pointLength ];\n\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\n\n\t\t\t\tpointLength ++;\n\n\t\t\t} else if ( light.isHemisphereLight ) {\n\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\n\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\n\n\t\t\t\themiLength ++;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\treturn {\n\t\tsetup: setup,\n\t\tsetupView: setupView,\n\t\tstate: state\n\t};\n\n}\n\nfunction WebGLRenderState( extensions ) {\n\n\tconst lights = new WebGLLights( extensions );\n\n\tconst lightsArray = [];\n\tconst shadowsArray = [];\n\n\tfunction init( camera ) {\n\n\t\tstate.camera = camera;\n\n\t\tlightsArray.length = 0;\n\t\tshadowsArray.length = 0;\n\n\t}\n\n\tfunction pushLight( light ) {\n\n\t\tlightsArray.push( light );\n\n\t}\n\n\tfunction pushShadow( shadowLight ) {\n\n\t\tshadowsArray.push( shadowLight );\n\n\t}\n\n\tfunction setupLights() {\n\n\t\tlights.setup( lightsArray );\n\n\t}\n\n\tfunction setupLightsView( camera ) {\n\n\t\tlights.setupView( lightsArray, camera );\n\n\t}\n\n\tconst state = {\n\t\tlightsArray: lightsArray,\n\t\tshadowsArray: shadowsArray,\n\n\t\tcamera: null,\n\n\t\tlights: lights,\n\n\t\ttransmissionRenderTarget: {}\n\t};\n\n\treturn {\n\t\tinit: init,\n\t\tstate: state,\n\t\tsetupLights: setupLights,\n\t\tsetupLightsView: setupLightsView,\n\n\t\tpushLight: pushLight,\n\t\tpushShadow: pushShadow\n\t};\n\n}\n\nfunction WebGLRenderStates( extensions ) {\n\n\tlet renderStates = new WeakMap();\n\n\tfunction get( scene, renderCallDepth = 0 ) {\n\n\t\tconst renderStateArray = renderStates.get( scene );\n\t\tlet renderState;\n\n\t\tif ( renderStateArray === undefined ) {\n\n\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\trenderStates.set( scene, [ renderState ] );\n\n\t\t} else {\n\n\t\t\tif ( renderCallDepth >= renderStateArray.length ) {\n\n\t\t\t\trenderState = new WebGLRenderState( extensions );\n\t\t\t\trenderStateArray.push( renderState );\n\n\t\t\t} else {\n\n\t\t\t\trenderState = renderStateArray[ renderCallDepth ];\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn renderState;\n\n\t}\n\n\tfunction dispose() {\n\n\t\trenderStates = new WeakMap();\n\n\t}\n\n\treturn {\n\t\tget: get,\n\t\tdispose: dispose\n\t};\n\n}\n\nconst vertex = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\n\nconst fragment = \"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}\";\n\nfunction WebGLShadowMap( renderer, objects, capabilities ) {\n\n\tlet _frustum = new Frustum();\n\n\tconst _shadowMapSize = new Vector2(),\n\t\t_viewportSize = new Vector2(),\n\n\t\t_viewport = new Vector4(),\n\n\t\t_depthMaterial = new MeshDepthMaterial( { depthPacking: RGBADepthPacking } ),\n\t\t_distanceMaterial = new MeshDistanceMaterial(),\n\n\t\t_materialCache = {},\n\n\t\t_maxTextureSize = capabilities.maxTextureSize;\n\n\tconst shadowSide = { [ FrontSide ]: BackSide, [ BackSide ]: FrontSide, [ DoubleSide ]: DoubleSide };\n\n\tconst shadowMaterialVertical = new ShaderMaterial( {\n\t\tdefines: {\n\t\t\tVSM_SAMPLES: 8\n\t\t},\n\t\tuniforms: {\n\t\t\tshadow_pass: { value: null },\n\t\t\tresolution: { value: new Vector2() },\n\t\t\tradius: { value: 4.0 }\n\t\t},\n\n\t\tvertexShader: vertex,\n\t\tfragmentShader: fragment\n\n\t} );\n\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n\n\tconst fullScreenTri = new BufferGeometry();\n\tfullScreenTri.setAttribute(\n\t\t'position',\n\t\tnew BufferAttribute(\n\t\t\tnew Float32Array( [ -1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5 ] ),\n\t\t\t3\n\t\t)\n\t);\n\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\n\n\tconst scope = this;\n\n\tthis.enabled = false;\n\n\tthis.autoUpdate = true;\n\tthis.needsUpdate = false;\n\n\tthis.type = PCFShadowMap;\n\tlet _previousType = this.type;\n\n\tthis.render = function ( lights, scene, camera ) {\n\n\t\tif ( scope.enabled === false ) return;\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\n\n\t\tif ( lights.length === 0 ) return;\n\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\n\t\tconst activeCubeFace = renderer.getActiveCubeFace();\n\t\tconst activeMipmapLevel = renderer.getActiveMipmapLevel();\n\n\t\tconst _state = renderer.state;\n\n\t\t// Set GL state for depth map.\n\t\t_state.setBlending( NoBlending );\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\n\t\t_state.buffers.depth.setTest( true );\n\t\t_state.setScissorTest( false );\n\n\t\t// check for shadow map type changes\n\n\t\tconst toVSM = ( _previousType !== VSMShadowMap && this.type === VSMShadowMap );\n\t\tconst fromVSM = ( _previousType === VSMShadowMap && this.type !== VSMShadowMap );\n\n\t\t// render depth map\n\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\n\n\t\t\tconst light = lights[ i ];\n\t\t\tconst shadow = light.shadow;\n\n\t\t\tif ( shadow === undefined ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\n\t\t\t\tcontinue;\n\n\t\t\t}\n\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\n\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\n\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\n\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\n\n\t\t\t_viewportSize.copy( shadow.mapSize );\n\n\t\t\tif ( _shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\tif ( _shadowMapSize.x > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.x = Math.floor( _maxTextureSize / shadowFrameExtents.x );\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\n\n\t\t\t\t}\n\n\t\t\t\tif ( _shadowMapSize.y > _maxTextureSize ) {\n\n\t\t\t\t\t_viewportSize.y = Math.floor( _maxTextureSize / shadowFrameExtents.y );\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( shadow.map === null || toVSM === true || fromVSM === true ) {\n\n\t\t\t\tconst pars = ( this.type !== VSMShadowMap ) ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n\n\t\t\t\tif ( shadow.map !== null ) {\n\n\t\t\t\t\tshadow.map.dispose();\n\n\t\t\t\t}\n\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\n\n\t\t\t\tshadow.camera.updateProjectionMatrix();\n\n\t\t\t}\n\n\t\t\trenderer.setRenderTarget( shadow.map );\n\t\t\trenderer.clear();\n\n\t\t\tconst viewportCount = shadow.getViewportCount();\n\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\n\n\t\t\t\tconst viewport = shadow.getViewport( vp );\n\n\t\t\t\t_viewport.set(\n\t\t\t\t\t_viewportSize.x * viewport.x,\n\t\t\t\t\t_viewportSize.y * viewport.y,\n\t\t\t\t\t_viewportSize.x * viewport.z,\n\t\t\t\t\t_viewportSize.y * viewport.w\n\t\t\t\t);\n\n\t\t\t\t_state.viewport( _viewport );\n\n\t\t\t\tshadow.updateMatrices( light, vp );\n\n\t\t\t\t_frustum = shadow.getFrustum();\n\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\n\n\t\t\t}\n\n\t\t\t// do blur pass for VSM\n\n\t\t\tif ( shadow.isPointLightShadow !== true && this.type === VSMShadowMap ) {\n\n\t\t\t\tVSMPass( shadow, camera );\n\n\t\t\t}\n\n\t\t\tshadow.needsUpdate = false;\n\n\t\t}\n\n\t\t_previousType = this.type;\n\n\t\tscope.needsUpdate = false;\n\n\t\trenderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\n\n\t};\n\n\tfunction VSMPass( shadow, camera ) {\n\n\t\tconst geometry = objects.update( fullScreenMesh );\n\n\t\tif ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {\n\n\t\t\tshadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n\t\t\tshadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n\n\t\t\tshadowMaterialVertical.needsUpdate = true;\n\t\t\tshadowMaterialHorizontal.needsUpdate = true;\n\n\t\t}\n\n\t\tif ( shadow.mapPass === null ) {\n\n\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y );\n\n\t\t}\n\n\t\t// vertical pass\n\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\n\t\trenderer.setRenderTarget( shadow.mapPass );\n\t\trenderer.clear();\n\t\trenderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\n\n\t\t// horizontal pass\n\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n\t\trenderer.setRenderTarget( shadow.map );\n\t\trenderer.clear();\n\t\trenderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\n\n\t}\n\n\tfunction getDepthMaterial( object, material, light, type ) {\n\n\t\tlet result = null;\n\n\t\tconst customMaterial = ( light.isPointLight === true ) ? object.customDistanceMaterial : object.customDepthMaterial;\n\n\t\tif ( customMaterial !== undefined ) {\n\n\t\t\tresult = customMaterial;\n\n\t\t} else {\n\n\t\t\tresult = ( light.isPointLight === true ) ? _distanceMaterial : _depthMaterial;\n\n\t\t\tif ( ( renderer.localClippingEnabled && material.clipShadows === true && Array.isArray( material.clippingPlanes ) && material.clippingPlanes.length !== 0 ) ||\n\t\t\t\t( material.displacementMap && material.displacementScale !== 0 ) ||\n\t\t\t\t( material.alphaMap && material.alphaTest > 0 ) ||\n\t\t\t\t( material.map && material.alphaTest > 0 ) ) {\n\n\t\t\t\t// in this case we need a unique material instance reflecting the\n\t\t\t\t// appropriate state\n\n\t\t\t\tconst keyA = result.uuid, keyB = material.uuid;\n\n\t\t\t\tlet materialsForVariant = _materialCache[ keyA ];\n\n\t\t\t\tif ( materialsForVariant === undefined ) {\n\n\t\t\t\t\tmaterialsForVariant = {};\n\t\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\n\n\t\t\t\t}\n\n\t\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\n\n\t\t\t\tif ( cachedMaterial === undefined ) {\n\n\t\t\t\t\tcachedMaterial = result.clone();\n\t\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\n\t\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\t}\n\n\t\t\t\tresult = cachedMaterial;\n\n\t\t\t}\n\n\t\t}\n\n\t\tresult.visible = material.visible;\n\t\tresult.wireframe = material.wireframe;\n\n\t\tif ( type === VSMShadowMap ) {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\n\n\t\t} else {\n\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\n\n\t\t}\n\n\t\tresult.alphaMap = material.alphaMap;\n\t\tresult.alphaTest = material.alphaTest;\n\t\tresult.map = material.map;\n\n\t\tresult.clipShadows = material.clipShadows;\n\t\tresult.clippingPlanes = material.clippingPlanes;\n\t\tresult.clipIntersection = material.clipIntersection;\n\n\t\tresult.displacementMap = material.displacementMap;\n\t\tresult.displacementScale = material.displacementScale;\n\t\tresult.displacementBias = material.displacementBias;\n\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\n\t\tresult.linewidth = material.linewidth;\n\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\n\n\t\t\tconst materialProperties = renderer.properties.get( result );\n\t\t\tmaterialProperties.light = light;\n\n\t\t}\n\n\t\treturn result;\n\n\t}\n\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\n\n\t\tif ( object.visible === false ) return;\n\n\t\tconst visible = object.layers.test( camera.layers );\n\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\n\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\n\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\n\n\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\n\n\t\t\t\t\t\tconst group = groups[ k ];\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, groupMaterial, light, type );\n\n\t\t\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\n\n\t\t\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, group );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, material, light, type );\n\n\t\t\t\t\tobject.onBeforeShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t\trenderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\n\n\t\t\t\t\tobject.onAfterShadow( renderer, object, camera, shadowCamera, geometry, depthMaterial, null );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tconst children = object.children;\n\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\n\n\t\t}\n\n\t}\n\n\tfunction onMaterialDispose( event ) {\n\n\t\tconst material = event.target;\n\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t// make sure to remove the unique distance/depth materials used for shadow map rendering\n\n\t\tfor ( const id in _materialCache ) {\n\n\t\t\tconst cache = _materialCache[ id ];\n\n\t\t\tconst uuid = event.target.uuid;\n\n\t\t\tif ( uuid in cache ) {\n\n\t\t\t\tconst shadowMaterial = cache[ uuid ];\n\t\t\t\tshadowMaterial.dispose();\n\t\t\t\tdelete cache[ uuid ];\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n}\n\nconst reversedFuncs = {\n\t[ NeverDepth ]: AlwaysDepth,\n\t[ LessDepth ]: GreaterDepth,\n\t[ EqualDepth ]: NotEqualDepth,\n\t[ LessEqualDepth ]: GreaterEqualDepth,\n\n\t[ AlwaysDepth ]: NeverDepth,\n\t[ GreaterDepth ]: LessDepth,\n\t[ NotEqualDepth ]: EqualDepth,\n\t[ GreaterEqualDepth ]: LessEqualDepth,\n};\n\nfunction WebGLState( gl, extensions ) {\n\n\tfunction ColorBuffer() {\n\n\t\tlet locked = false;\n\n\t\tconst color = new Vector4();\n\t\tlet currentColorMask = null;\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\n\n\t\treturn {\n\n\t\t\tsetMask: function ( colorMask ) {\n\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\n\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\n\t\t\t\t\tcurrentColorMask = colorMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\n\n\t\t\t\tif ( premultipliedAlpha === true ) {\n\n\t\t\t\t\tr *= a; g *= a; b *= a;\n\n\t\t\t\t}\n\n\t\t\t\tcolor.set( r, g, b, a );\n\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\n\n\t\t\t\t\tgl.clearColor( r, g, b, a );\n\t\t\t\t\tcurrentColorClear.copy( color );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentColorMask = null;\n\t\t\t\tcurrentColorClear.set( -1, 0, 0, 0 ); // set to invalid state\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction DepthBuffer() {\n\n\t\tlet locked = false;\n\t\tlet reversed = false;\n\n\t\tlet currentDepthMask = null;\n\t\tlet currentDepthFunc = null;\n\t\tlet currentDepthClear = null;\n\n\t\treturn {\n\n\t\t\tsetReversed: function ( value ) {\n\n\t\t\t\tif ( reversed !== value ) {\n\n\t\t\t\t\tconst ext = extensions.get( 'EXT_clip_control' );\n\n\t\t\t\t\tif ( reversed ) {\n\n\t\t\t\t\t\text.clipControlEXT( ext.LOWER_LEFT_EXT, ext.ZERO_TO_ONE_EXT );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\text.clipControlEXT( ext.LOWER_LEFT_EXT, ext.NEGATIVE_ONE_TO_ONE_EXT );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst oldDepth = currentDepthClear;\n\t\t\t\t\tcurrentDepthClear = null;\n\t\t\t\t\tthis.setClear( oldDepth );\n\n\t\t\t\t}\n\n\t\t\t\treversed = value;\n\n\t\t\t},\n\n\t\t\tgetReversed: function () {\n\n\t\t\t\treturn reversed;\n\n\t\t\t},\n\n\t\t\tsetTest: function ( depthTest ) {\n\n\t\t\t\tif ( depthTest ) {\n\n\t\t\t\t\tenable( gl.DEPTH_TEST );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdisable( gl.DEPTH_TEST );\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( depthMask ) {\n\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\n\n\t\t\t\t\tgl.depthMask( depthMask );\n\t\t\t\t\tcurrentDepthMask = depthMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( depthFunc ) {\n\n\t\t\t\tif ( reversed ) depthFunc = reversedFuncs[ depthFunc ];\n\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\n\n\t\t\t\t\tswitch ( depthFunc ) {\n\n\t\t\t\t\t\tcase NeverDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NEVER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AlwaysDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.ALWAYS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LESS );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase LessEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase EqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.EQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase GreaterDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.GREATER );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase NotEqualDepth:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.NOTEQUAL );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\n\t\t\t\t\t\t\tgl.depthFunc( gl.LEQUAL );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( depth ) {\n\n\t\t\t\tif ( currentDepthClear !== depth ) {\n\n\t\t\t\t\tif ( reversed ) {\n\n\t\t\t\t\t\tdepth = 1 - depth;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.clearDepth( depth );\n\t\t\t\t\tcurrentDepthClear = depth;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentDepthMask = null;\n\t\t\t\tcurrentDepthFunc = null;\n\t\t\t\tcurrentDepthClear = null;\n\t\t\t\treversed = false;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\tfunction StencilBuffer() {\n\n\t\tlet locked = false;\n\n\t\tlet currentStencilMask = null;\n\t\tlet currentStencilFunc = null;\n\t\tlet currentStencilRef = null;\n\t\tlet currentStencilFuncMask = null;\n\t\tlet currentStencilFail = null;\n\t\tlet currentStencilZFail = null;\n\t\tlet currentStencilZPass = null;\n\t\tlet currentStencilClear = null;\n\n\t\treturn {\n\n\t\t\tsetTest: function ( stencilTest ) {\n\n\t\t\t\tif ( ! locked ) {\n\n\t\t\t\t\tif ( stencilTest ) {\n\n\t\t\t\t\t\tenable( gl.STENCIL_TEST );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tdisable( gl.STENCIL_TEST );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetMask: function ( stencilMask ) {\n\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\n\n\t\t\t\t\tgl.stencilMask( stencilMask );\n\t\t\t\t\tcurrentStencilMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\n\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\n\t\t\t\t     currentStencilRef !== stencilRef ||\n\t\t\t\t     currentStencilFuncMask !== stencilMask ) {\n\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\n\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\n\t\t\t\t\tcurrentStencilRef = stencilRef;\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\n\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\n\t\t\t\t     currentStencilZFail !== stencilZFail ||\n\t\t\t\t     currentStencilZPass !== stencilZPass ) {\n\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\n\n\t\t\t\t\tcurrentStencilFail = stencilFail;\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\tsetLocked: function ( lock ) {\n\n\t\t\t\tlocked = lock;\n\n\t\t\t},\n\n\t\t\tsetClear: function ( stencil ) {\n\n\t\t\t\tif ( currentStencilClear !== stencil ) {\n\n\t\t\t\t\tgl.clearStencil( stencil );\n\t\t\t\t\tcurrentStencilClear = stencil;\n\n\t\t\t\t}\n\n\t\t\t},\n\n\t\t\treset: function () {\n\n\t\t\t\tlocked = false;\n\n\t\t\t\tcurrentStencilMask = null;\n\t\t\t\tcurrentStencilFunc = null;\n\t\t\t\tcurrentStencilRef = null;\n\t\t\t\tcurrentStencilFuncMask = null;\n\t\t\t\tcurrentStencilFail = null;\n\t\t\t\tcurrentStencilZFail = null;\n\t\t\t\tcurrentStencilZPass = null;\n\t\t\t\tcurrentStencilClear = null;\n\n\t\t\t}\n\n\t\t};\n\n\t}\n\n\t//\n\n\tconst colorBuffer = new ColorBuffer();\n\tconst depthBuffer = new DepthBuffer();\n\tconst stencilBuffer = new StencilBuffer();\n\n\tconst uboBindings = new WeakMap();\n\tconst uboProgramMap = new WeakMap();\n\n\tlet enabledCapabilities = {};\n\n\tlet currentBoundFramebuffers = {};\n\tlet currentDrawbuffers = new WeakMap();\n\tlet defaultDrawbuffers = [];\n\n\tlet currentProgram = null;\n\n\tlet currentBlendingEnabled = false;\n\tlet currentBlending = null;\n\tlet currentBlendEquation = null;\n\tlet currentBlendSrc = null;\n\tlet currentBlendDst = null;\n\tlet currentBlendEquationAlpha = null;\n\tlet currentBlendSrcAlpha = null;\n\tlet currentBlendDstAlpha = null;\n\tlet currentBlendColor = new Color( 0, 0, 0 );\n\tlet currentBlendAlpha = 0;\n\tlet currentPremultipledAlpha = false;\n\n\tlet currentFlipSided = null;\n\tlet currentCullFace = null;\n\n\tlet currentLineWidth = null;\n\n\tlet currentPolygonOffsetFactor = null;\n\tlet currentPolygonOffsetUnits = null;\n\n\tconst maxTextures = gl.getParameter( gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS );\n\n\tlet lineWidthAvailable = false;\n\tlet version = 0;\n\tconst glVersion = gl.getParameter( gl.VERSION );\n\n\tif ( glVersion.indexOf( 'WebGL' ) !== -1 ) {\n\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 1.0 );\n\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== -1 ) {\n\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\n\t\tlineWidthAvailable = ( version >= 2.0 );\n\n\t}\n\n\tlet currentTextureSlot = null;\n\tlet currentBoundTextures = {};\n\n\tconst scissorParam = gl.getParameter( gl.SCISSOR_BOX );\n\tconst viewportParam = gl.getParameter( gl.VIEWPORT );\n\n\tconst currentScissor = new Vector4().fromArray( scissorParam );\n\tconst currentViewport = new Vector4().fromArray( viewportParam );\n\n\tfunction createTexture( type, target, count, dimensions ) {\n\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\n\t\tconst texture = gl.createTexture();\n\n\t\tgl.bindTexture( type, texture );\n\t\tgl.texParameteri( type, gl.TEXTURE_MIN_FILTER, gl.NEAREST );\n\t\tgl.texParameteri( type, gl.TEXTURE_MAG_FILTER, gl.NEAREST );\n\n\t\tfor ( let i = 0; i < count; i ++ ) {\n\n\t\t\tif ( type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tgl.texImage3D( target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t} else {\n\n\t\t\t\tgl.texImage2D( target + i, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn texture;\n\n\t}\n\n\tconst emptyTextures = {};\n\temptyTextures[ gl.TEXTURE_2D ] = createTexture( gl.TEXTURE_2D, gl.TEXTURE_2D, 1 );\n\temptyTextures[ gl.TEXTURE_CUBE_MAP ] = createTexture( gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6 );\n\temptyTextures[ gl.TEXTURE_2D_ARRAY ] = createTexture( gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1 );\n\temptyTextures[ gl.TEXTURE_3D ] = createTexture( gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1 );\n\n\t// init\n\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\n\tdepthBuffer.setClear( 1 );\n\tstencilBuffer.setClear( 0 );\n\n\tenable( gl.DEPTH_TEST );\n\tdepthBuffer.setFunc( LessEqualDepth );\n\n\tsetFlipSided( false );\n\tsetCullFace( CullFaceBack );\n\tenable( gl.CULL_FACE );\n\n\tsetBlending( NoBlending );\n\n\t//\n\n\tfunction enable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== true ) {\n\n\t\t\tgl.enable( id );\n\t\t\tenabledCapabilities[ id ] = true;\n\n\t\t}\n\n\t}\n\n\tfunction disable( id ) {\n\n\t\tif ( enabledCapabilities[ id ] !== false ) {\n\n\t\t\tgl.disable( id );\n\t\t\tenabledCapabilities[ id ] = false;\n\n\t\t}\n\n\t}\n\n\tfunction bindFramebuffer( target, framebuffer ) {\n\n\t\tif ( currentBoundFramebuffers[ target ] !== framebuffer ) {\n\n\t\t\tgl.bindFramebuffer( target, framebuffer );\n\n\t\t\tcurrentBoundFramebuffers[ target ] = framebuffer;\n\n\t\t\t// gl.DRAW_FRAMEBUFFER is equivalent to gl.FRAMEBUFFER\n\n\t\t\tif ( target === gl.DRAW_FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\tif ( target === gl.FRAMEBUFFER ) {\n\n\t\t\t\tcurrentBoundFramebuffers[ gl.DRAW_FRAMEBUFFER ] = framebuffer;\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction drawBuffers( renderTarget, framebuffer ) {\n\n\t\tlet drawBuffers = defaultDrawbuffers;\n\n\t\tlet needsUpdate = false;\n\n\t\tif ( renderTarget ) {\n\n\t\t\tdrawBuffers = currentDrawbuffers.get( framebuffer );\n\n\t\t\tif ( drawBuffers === undefined ) {\n\n\t\t\t\tdrawBuffers = [];\n\t\t\t\tcurrentDrawbuffers.set( framebuffer, drawBuffers );\n\n\t\t\t}\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tif ( drawBuffers.length !== textures.length || drawBuffers[ 0 ] !== gl.COLOR_ATTACHMENT0 ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tdrawBuffers[ i ] = gl.COLOR_ATTACHMENT0 + i;\n\n\t\t\t\t}\n\n\t\t\t\tdrawBuffers.length = textures.length;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( drawBuffers[ 0 ] !== gl.BACK ) {\n\n\t\t\t\tdrawBuffers[ 0 ] = gl.BACK;\n\n\t\t\t\tneedsUpdate = true;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( needsUpdate ) {\n\n\t\t\tgl.drawBuffers( drawBuffers );\n\n\t\t}\n\n\t}\n\n\tfunction useProgram( program ) {\n\n\t\tif ( currentProgram !== program ) {\n\n\t\t\tgl.useProgram( program );\n\n\t\t\tcurrentProgram = program;\n\n\t\t\treturn true;\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tconst equationToGL = {\n\t\t[ AddEquation ]: gl.FUNC_ADD,\n\t\t[ SubtractEquation ]: gl.FUNC_SUBTRACT,\n\t\t[ ReverseSubtractEquation ]: gl.FUNC_REVERSE_SUBTRACT\n\t};\n\n\tequationToGL[ MinEquation ] = gl.MIN;\n\tequationToGL[ MaxEquation ] = gl.MAX;\n\n\tconst factorToGL = {\n\t\t[ ZeroFactor ]: gl.ZERO,\n\t\t[ OneFactor ]: gl.ONE,\n\t\t[ SrcColorFactor ]: gl.SRC_COLOR,\n\t\t[ SrcAlphaFactor ]: gl.SRC_ALPHA,\n\t\t[ SrcAlphaSaturateFactor ]: gl.SRC_ALPHA_SATURATE,\n\t\t[ DstColorFactor ]: gl.DST_COLOR,\n\t\t[ DstAlphaFactor ]: gl.DST_ALPHA,\n\t\t[ OneMinusSrcColorFactor ]: gl.ONE_MINUS_SRC_COLOR,\n\t\t[ OneMinusSrcAlphaFactor ]: gl.ONE_MINUS_SRC_ALPHA,\n\t\t[ OneMinusDstColorFactor ]: gl.ONE_MINUS_DST_COLOR,\n\t\t[ OneMinusDstAlphaFactor ]: gl.ONE_MINUS_DST_ALPHA,\n\t\t[ ConstantColorFactor ]: gl.CONSTANT_COLOR,\n\t\t[ OneMinusConstantColorFactor ]: gl.ONE_MINUS_CONSTANT_COLOR,\n\t\t[ ConstantAlphaFactor ]: gl.CONSTANT_ALPHA,\n\t\t[ OneMinusConstantAlphaFactor ]: gl.ONE_MINUS_CONSTANT_ALPHA\n\t};\n\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha ) {\n\n\t\tif ( blending === NoBlending ) {\n\n\t\t\tif ( currentBlendingEnabled === true ) {\n\n\t\t\t\tdisable( gl.BLEND );\n\t\t\t\tcurrentBlendingEnabled = false;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\tif ( currentBlendingEnabled === false ) {\n\n\t\t\tenable( gl.BLEND );\n\t\t\tcurrentBlendingEnabled = true;\n\n\t\t}\n\n\t\tif ( blending !== CustomBlending ) {\n\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\n\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\n\n\t\t\t\t\tgl.blendEquation( gl.FUNC_ADD );\n\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\n\n\t\t\t\t}\n\n\t\t\t\tif ( premultipliedAlpha ) {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ONE, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tswitch ( blending ) {\n\n\t\t\t\t\t\tcase NormalBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase AdditiveBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.SRC_ALPHA, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase SubtractiveBlending:\n\t\t\t\t\t\t\tgl.blendFuncSeparate( gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tcase MultiplyBlending:\n\t\t\t\t\t\t\tgl.blendFunc( gl.ZERO, gl.SRC_COLOR );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tcurrentBlendSrc = null;\n\t\t\t\tcurrentBlendDst = null;\n\t\t\t\tcurrentBlendSrcAlpha = null;\n\t\t\t\tcurrentBlendDstAlpha = null;\n\t\t\t\tcurrentBlendColor.set( 0, 0, 0 );\n\t\t\t\tcurrentBlendAlpha = 0;\n\n\t\t\t\tcurrentBlending = blending;\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\n\n\t\t\t}\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t// custom blending\n\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\n\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\n\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\n\n\t\t\tcurrentBlendEquation = blendEquation;\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\n\n\t\t}\n\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\n\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\n\n\t\t\tcurrentBlendSrc = blendSrc;\n\t\t\tcurrentBlendDst = blendDst;\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\n\n\t\t}\n\n\t\tif ( blendColor.equals( currentBlendColor ) === false || blendAlpha !== currentBlendAlpha ) {\n\n\t\t\tgl.blendColor( blendColor.r, blendColor.g, blendColor.b, blendAlpha );\n\n\t\t\tcurrentBlendColor.copy( blendColor );\n\t\t\tcurrentBlendAlpha = blendAlpha;\n\n\t\t}\n\n\t\tcurrentBlending = blending;\n\t\tcurrentPremultipledAlpha = false;\n\n\t}\n\n\tfunction setMaterial( material, frontFaceCW ) {\n\n\t\tmaterial.side === DoubleSide\n\t\t\t? disable( gl.CULL_FACE )\n\t\t\t: enable( gl.CULL_FACE );\n\n\t\tlet flipSided = ( material.side === BackSide );\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\n\n\t\tsetFlipSided( flipSided );\n\n\t\t( material.blending === NormalBlending && material.transparent === false )\n\t\t\t? setBlending( NoBlending )\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha );\n\n\t\tdepthBuffer.setFunc( material.depthFunc );\n\t\tdepthBuffer.setTest( material.depthTest );\n\t\tdepthBuffer.setMask( material.depthWrite );\n\t\tcolorBuffer.setMask( material.colorWrite );\n\n\t\tconst stencilWrite = material.stencilWrite;\n\t\tstencilBuffer.setTest( stencilWrite );\n\t\tif ( stencilWrite ) {\n\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\n\n\t\t}\n\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\n\n\t\tmaterial.alphaToCoverage === true\n\t\t\t? enable( gl.SAMPLE_ALPHA_TO_COVERAGE )\n\t\t\t: disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t}\n\n\t//\n\n\tfunction setFlipSided( flipSided ) {\n\n\t\tif ( currentFlipSided !== flipSided ) {\n\n\t\t\tif ( flipSided ) {\n\n\t\t\t\tgl.frontFace( gl.CW );\n\n\t\t\t} else {\n\n\t\t\t\tgl.frontFace( gl.CCW );\n\n\t\t\t}\n\n\t\t\tcurrentFlipSided = flipSided;\n\n\t\t}\n\n\t}\n\n\tfunction setCullFace( cullFace ) {\n\n\t\tif ( cullFace !== CullFaceNone ) {\n\n\t\t\tenable( gl.CULL_FACE );\n\n\t\t\tif ( cullFace !== currentCullFace ) {\n\n\t\t\t\tif ( cullFace === CullFaceBack ) {\n\n\t\t\t\t\tgl.cullFace( gl.BACK );\n\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tgl.cullFace( gl.FRONT_AND_BACK );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.CULL_FACE );\n\n\t\t}\n\n\t\tcurrentCullFace = cullFace;\n\n\t}\n\n\tfunction setLineWidth( width ) {\n\n\t\tif ( width !== currentLineWidth ) {\n\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\n\n\t\t\tcurrentLineWidth = width;\n\n\t\t}\n\n\t}\n\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\n\n\t\tif ( polygonOffset ) {\n\n\t\t\tenable( gl.POLYGON_OFFSET_FILL );\n\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\n\n\t\t\t\tgl.polygonOffset( factor, units );\n\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\n\t\t\t\tcurrentPolygonOffsetUnits = units;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tdisable( gl.POLYGON_OFFSET_FILL );\n\n\t\t}\n\n\t}\n\n\tfunction setScissorTest( scissorTest ) {\n\n\t\tif ( scissorTest ) {\n\n\t\t\tenable( gl.SCISSOR_TEST );\n\n\t\t} else {\n\n\t\t\tdisable( gl.SCISSOR_TEST );\n\n\t\t}\n\n\t}\n\n\t// texture\n\n\tfunction activeTexture( webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\tgl.activeTexture( webglSlot );\n\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t}\n\n\t}\n\n\tfunction bindTexture( webglType, webglTexture, webglSlot ) {\n\n\t\tif ( webglSlot === undefined ) {\n\n\t\t\tif ( currentTextureSlot === null ) {\n\n\t\t\t\twebglSlot = gl.TEXTURE0 + maxTextures - 1;\n\n\t\t\t} else {\n\n\t\t\t\twebglSlot = currentTextureSlot;\n\n\t\t\t}\n\n\t\t}\n\n\t\tlet boundTexture = currentBoundTextures[ webglSlot ];\n\n\t\tif ( boundTexture === undefined ) {\n\n\t\t\tboundTexture = { type: undefined, texture: undefined };\n\t\t\tcurrentBoundTextures[ webglSlot ] = boundTexture;\n\n\t\t}\n\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\n\n\t\t\tif ( currentTextureSlot !== webglSlot ) {\n\n\t\t\t\tgl.activeTexture( webglSlot );\n\t\t\t\tcurrentTextureSlot = webglSlot;\n\n\t\t\t}\n\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\n\n\t\t\tboundTexture.type = webglType;\n\t\t\tboundTexture.texture = webglTexture;\n\n\t\t}\n\n\t}\n\n\tfunction unbindTexture() {\n\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\n\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\n\n\t\t\tgl.bindTexture( boundTexture.type, null );\n\n\t\t\tboundTexture.type = undefined;\n\t\t\tboundTexture.texture = undefined;\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage2D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexImage3D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage2D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texSubImage3D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage2D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction compressedTexSubImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.compressedTexSubImage3D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage2D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texStorage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texStorage3D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage2D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage2D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\tfunction texImage3D() {\n\n\t\ttry {\n\n\t\t\tgl.texImage3D( ...arguments );\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction scissor( scissor ) {\n\n\t\tif ( currentScissor.equals( scissor ) === false ) {\n\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\n\t\t\tcurrentScissor.copy( scissor );\n\n\t\t}\n\n\t}\n\n\tfunction viewport( viewport ) {\n\n\t\tif ( currentViewport.equals( viewport ) === false ) {\n\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\n\t\t\tcurrentViewport.copy( viewport );\n\n\t\t}\n\n\t}\n\n\tfunction updateUBOMapping( uniformsGroup, program ) {\n\n\t\tlet mapping = uboProgramMap.get( program );\n\n\t\tif ( mapping === undefined ) {\n\n\t\t\tmapping = new WeakMap();\n\n\t\t\tuboProgramMap.set( program, mapping );\n\n\t\t}\n\n\t\tlet blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( blockIndex === undefined ) {\n\n\t\t\tblockIndex = gl.getUniformBlockIndex( program, uniformsGroup.name );\n\n\t\t\tmapping.set( uniformsGroup, blockIndex );\n\n\t\t}\n\n\t}\n\n\tfunction uniformBlockBinding( uniformsGroup, program ) {\n\n\t\tconst mapping = uboProgramMap.get( program );\n\t\tconst blockIndex = mapping.get( uniformsGroup );\n\n\t\tif ( uboBindings.get( program ) !== blockIndex ) {\n\n\t\t\t// bind shader specific block index to global block point\n\t\t\tgl.uniformBlockBinding( program, blockIndex, uniformsGroup.__bindingPointIndex );\n\n\t\t\tuboBindings.set( program, blockIndex );\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction reset() {\n\n\t\t// reset state\n\n\t\tgl.disable( gl.BLEND );\n\t\tgl.disable( gl.CULL_FACE );\n\t\tgl.disable( gl.DEPTH_TEST );\n\t\tgl.disable( gl.POLYGON_OFFSET_FILL );\n\t\tgl.disable( gl.SCISSOR_TEST );\n\t\tgl.disable( gl.STENCIL_TEST );\n\t\tgl.disable( gl.SAMPLE_ALPHA_TO_COVERAGE );\n\n\t\tgl.blendEquation( gl.FUNC_ADD );\n\t\tgl.blendFunc( gl.ONE, gl.ZERO );\n\t\tgl.blendFuncSeparate( gl.ONE, gl.ZERO, gl.ONE, gl.ZERO );\n\t\tgl.blendColor( 0, 0, 0, 0 );\n\n\t\tgl.colorMask( true, true, true, true );\n\t\tgl.clearColor( 0, 0, 0, 0 );\n\n\t\tgl.depthMask( true );\n\t\tgl.depthFunc( gl.LESS );\n\n\t\tdepthBuffer.setReversed( false );\n\n\t\tgl.clearDepth( 1 );\n\n\t\tgl.stencilMask( 0xffffffff );\n\t\tgl.stencilFunc( gl.ALWAYS, 0, 0xffffffff );\n\t\tgl.stencilOp( gl.KEEP, gl.KEEP, gl.KEEP );\n\t\tgl.clearStencil( 0 );\n\n\t\tgl.cullFace( gl.BACK );\n\t\tgl.frontFace( gl.CCW );\n\n\t\tgl.polygonOffset( 0, 0 );\n\n\t\tgl.activeTexture( gl.TEXTURE0 );\n\n\t\tgl.bindFramebuffer( gl.FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.DRAW_FRAMEBUFFER, null );\n\t\tgl.bindFramebuffer( gl.READ_FRAMEBUFFER, null );\n\n\t\tgl.useProgram( null );\n\n\t\tgl.lineWidth( 1 );\n\n\t\tgl.scissor( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tgl.viewport( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\t// reset internals\n\n\t\tenabledCapabilities = {};\n\n\t\tcurrentTextureSlot = null;\n\t\tcurrentBoundTextures = {};\n\n\t\tcurrentBoundFramebuffers = {};\n\t\tcurrentDrawbuffers = new WeakMap();\n\t\tdefaultDrawbuffers = [];\n\n\t\tcurrentProgram = null;\n\n\t\tcurrentBlendingEnabled = false;\n\t\tcurrentBlending = null;\n\t\tcurrentBlendEquation = null;\n\t\tcurrentBlendSrc = null;\n\t\tcurrentBlendDst = null;\n\t\tcurrentBlendEquationAlpha = null;\n\t\tcurrentBlendSrcAlpha = null;\n\t\tcurrentBlendDstAlpha = null;\n\t\tcurrentBlendColor = new Color( 0, 0, 0 );\n\t\tcurrentBlendAlpha = 0;\n\t\tcurrentPremultipledAlpha = false;\n\n\t\tcurrentFlipSided = null;\n\t\tcurrentCullFace = null;\n\n\t\tcurrentLineWidth = null;\n\n\t\tcurrentPolygonOffsetFactor = null;\n\t\tcurrentPolygonOffsetUnits = null;\n\n\t\tcurrentScissor.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\t\tcurrentViewport.set( 0, 0, gl.canvas.width, gl.canvas.height );\n\n\t\tcolorBuffer.reset();\n\t\tdepthBuffer.reset();\n\t\tstencilBuffer.reset();\n\n\t}\n\n\treturn {\n\n\t\tbuffers: {\n\t\t\tcolor: colorBuffer,\n\t\t\tdepth: depthBuffer,\n\t\t\tstencil: stencilBuffer\n\t\t},\n\n\t\tenable: enable,\n\t\tdisable: disable,\n\n\t\tbindFramebuffer: bindFramebuffer,\n\t\tdrawBuffers: drawBuffers,\n\n\t\tuseProgram: useProgram,\n\n\t\tsetBlending: setBlending,\n\t\tsetMaterial: setMaterial,\n\n\t\tsetFlipSided: setFlipSided,\n\t\tsetCullFace: setCullFace,\n\n\t\tsetLineWidth: setLineWidth,\n\t\tsetPolygonOffset: setPolygonOffset,\n\n\t\tsetScissorTest: setScissorTest,\n\n\t\tactiveTexture: activeTexture,\n\t\tbindTexture: bindTexture,\n\t\tunbindTexture: unbindTexture,\n\t\tcompressedTexImage2D: compressedTexImage2D,\n\t\tcompressedTexImage3D: compressedTexImage3D,\n\t\ttexImage2D: texImage2D,\n\t\ttexImage3D: texImage3D,\n\n\t\tupdateUBOMapping: updateUBOMapping,\n\t\tuniformBlockBinding: uniformBlockBinding,\n\n\t\ttexStorage2D: texStorage2D,\n\t\ttexStorage3D: texStorage3D,\n\t\ttexSubImage2D: texSubImage2D,\n\t\ttexSubImage3D: texSubImage3D,\n\t\tcompressedTexSubImage2D: compressedTexSubImage2D,\n\t\tcompressedTexSubImage3D: compressedTexSubImage3D,\n\n\t\tscissor: scissor,\n\t\tviewport: viewport,\n\n\t\treset: reset\n\n\t};\n\n}\n\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\n\n\tconst multisampledRTTExt = extensions.has( 'WEBGL_multisampled_render_to_texture' ) ? extensions.get( 'WEBGL_multisampled_render_to_texture' ) : null;\n\tconst supportsInvalidateFramebuffer = typeof navigator === 'undefined' ? false : /OculusBrowser/g.test( navigator.userAgent );\n\n\tconst _imageDimensions = new Vector2();\n\tconst _videoTextures = new WeakMap();\n\tlet _canvas;\n\n\tconst _sources = new WeakMap(); // maps WebglTexture objects to instances of Source\n\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\n\n\tlet useOffscreenCanvas = false;\n\n\ttry {\n\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\n\n\t} catch ( err ) {\n\n\t\t// Ignore any errors\n\n\t}\n\n\tfunction createCanvas( width, height ) {\n\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\n\n\t\treturn useOffscreenCanvas ?\n\t\t\t// eslint-disable-next-line compat/compat\n\t\t\tnew OffscreenCanvas( width, height ) : createElementNS( 'canvas' );\n\n\t}\n\n\tfunction resizeImage( image, needsNewCanvas, maxSize ) {\n\n\t\tlet scale = 1;\n\n\t\tconst dimensions = getDimensions( image );\n\n\t\t// handle case if texture exceeds max size\n\n\t\tif ( dimensions.width > maxSize || dimensions.height > maxSize ) {\n\n\t\t\tscale = maxSize / Math.max( dimensions.width, dimensions.height );\n\n\t\t}\n\n\t\t// only perform resize if necessary\n\n\t\tif ( scale < 1 ) {\n\n\t\t\t// only perform resize for certain image types\n\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ||\n\t\t\t\t( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) ) {\n\n\t\t\t\tconst width = Math.floor( scale * dimensions.width );\n\t\t\t\tconst height = Math.floor( scale * dimensions.height );\n\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\n\n\t\t\t\t// cube textures can't reuse the same canvas\n\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\n\n\t\t\t\tcanvas.width = width;\n\t\t\t\tcanvas.height = height;\n\n\t\t\t\tconst context = canvas.getContext( '2d' );\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + dimensions.width + 'x' + dimensions.height + ') to (' + width + 'x' + height + ').' );\n\n\t\t\t\treturn canvas;\n\n\t\t\t} else {\n\n\t\t\t\tif ( 'data' in image ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + dimensions.width + 'x' + dimensions.height + ').' );\n\n\t\t\t\t}\n\n\t\t\t\treturn image;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction textureNeedsGenerateMipmaps( texture ) {\n\n\t\treturn texture.generateMipmaps;\n\n\t}\n\n\tfunction generateMipmap( target ) {\n\n\t\t_gl.generateMipmap( target );\n\n\t}\n\n\tfunction getTargetType( texture ) {\n\n\t\tif ( texture.isWebGLCubeRenderTarget ) return _gl.TEXTURE_CUBE_MAP;\n\t\tif ( texture.isWebGL3DRenderTarget ) return _gl.TEXTURE_3D;\n\t\tif ( texture.isWebGLArrayRenderTarget || texture.isCompressedArrayTexture ) return _gl.TEXTURE_2D_ARRAY;\n\t\treturn _gl.TEXTURE_2D;\n\n\t}\n\n\tfunction getInternalFormat( internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false ) {\n\n\t\tif ( internalFormatName !== null ) {\n\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\n\n\t\t}\n\n\t\tlet internalFormat = glFormat;\n\n\t\tif ( glFormat === _gl.RED ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.R32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.R16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RED_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.R8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.R16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.R32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.R8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.R16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.R32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG ) {\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RG32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RG16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RG_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RG8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RG16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RG32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RG8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RG16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RG32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGB_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGB8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGB16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGB32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RGB8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RGB16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RGB32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA_INTEGER ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = _gl.RGBA8UI;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT ) internalFormat = _gl.RGBA16UI;\n\t\t\tif ( glType === _gl.UNSIGNED_INT ) internalFormat = _gl.RGBA32UI;\n\t\t\tif ( glType === _gl.BYTE ) internalFormat = _gl.RGBA8I;\n\t\t\tif ( glType === _gl.SHORT ) internalFormat = _gl.RGBA16I;\n\t\t\tif ( glType === _gl.INT ) internalFormat = _gl.RGBA32I;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGB ) {\n\n\t\t\tif ( glType === _gl.UNSIGNED_INT_5_9_9_9_REV ) internalFormat = _gl.RGB9_E5;\n\n\t\t}\n\n\t\tif ( glFormat === _gl.RGBA ) {\n\n\t\t\tconst transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer( colorSpace );\n\n\t\t\tif ( glType === _gl.FLOAT ) internalFormat = _gl.RGBA32F;\n\t\t\tif ( glType === _gl.HALF_FLOAT ) internalFormat = _gl.RGBA16F;\n\t\t\tif ( glType === _gl.UNSIGNED_BYTE ) internalFormat = ( transfer === SRGBTransfer ) ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_4_4_4_4 ) internalFormat = _gl.RGBA4;\n\t\t\tif ( glType === _gl.UNSIGNED_SHORT_5_5_5_1 ) internalFormat = _gl.RGB5_A1;\n\n\t\t}\n\n\t\tif ( internalFormat === _gl.R16F || internalFormat === _gl.R32F ||\n\t\t\tinternalFormat === _gl.RG16F || internalFormat === _gl.RG32F ||\n\t\t\tinternalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F ) {\n\n\t\t\textensions.get( 'EXT_color_buffer_float' );\n\n\t\t}\n\n\t\treturn internalFormat;\n\n\t}\n\n\tfunction getInternalDepthFormat( useStencil, depthType ) {\n\n\t\tlet glInternalFormat;\n\t\tif ( useStencil ) {\n\n\t\t\tif ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\n\t\t\t} else if ( depthType === FloatType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH32F_STENCIL8;\n\n\t\t\t} else if ( depthType === UnsignedShortType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH24_STENCIL8;\n\t\t\t\tconsole.warn( 'DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.' );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( depthType === null || depthType === UnsignedIntType || depthType === UnsignedInt248Type ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT24;\n\n\t\t\t} else if ( depthType === FloatType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT32F;\n\n\t\t\t} else if ( depthType === UnsignedShortType ) {\n\n\t\t\t\tglInternalFormat = _gl.DEPTH_COMPONENT16;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn glInternalFormat;\n\n\t}\n\n\tfunction getMipLevels( texture, image ) {\n\n\t\tif ( textureNeedsGenerateMipmaps( texture ) === true || ( texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) ) {\n\n\t\t\treturn Math.log2( Math.max( image.width, image.height ) ) + 1;\n\n\t\t} else if ( texture.mipmaps !== undefined && texture.mipmaps.length > 0 ) {\n\n\t\t\t// user-defined mipmaps\n\n\t\t\treturn texture.mipmaps.length;\n\n\t\t} else if ( texture.isCompressedTexture && Array.isArray( texture.image ) ) {\n\n\t\t\treturn image.mipmaps.length;\n\n\t\t} else {\n\n\t\t\t// texture without mipmaps (only base level)\n\n\t\t\treturn 1;\n\n\t\t}\n\n\t}\n\n\t//\n\n\tfunction onTextureDispose( event ) {\n\n\t\tconst texture = event.target;\n\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\n\n\t\tdeallocateTexture( texture );\n\n\t\tif ( texture.isVideoTexture ) {\n\n\t\t\t_videoTextures.delete( texture );\n\n\t\t}\n\n\t}\n\n\tfunction onRenderTargetDispose( event ) {\n\n\t\tconst renderTarget = event.target;\n\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tdeallocateRenderTarget( renderTarget );\n\n\t}\n\n\t//\n\n\tfunction deallocateTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( textureProperties.__webglInit === undefined ) return;\n\n\t\t// check if it's necessary to remove the WebGLTexture object\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures ) {\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\t\t\twebglTexture.usedTimes --;\n\n\t\t\t// the WebGLTexture object is not used anymore, remove it\n\n\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\tdeleteTexture( texture );\n\n\t\t\t}\n\n\t\t\t// remove the weak map entry if no WebGLTexture uses the source anymore\n\n\t\t\tif ( Object.keys( webglTextures ).length === 0 ) {\n\n\t\t\t\t_sources.delete( source );\n\n\t\t\t}\n\n\t\t}\n\n\t\tproperties.remove( texture );\n\n\t}\n\n\tfunction deleteTexture( texture ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\n\n\t\tconst source = texture.source;\n\t\tconst webglTextures = _sources.get( source );\n\t\tdelete webglTextures[ textureProperties.__cacheKey ];\n\n\t\tinfo.memory.textures --;\n\n\t}\n\n\tfunction deallocateRenderTarget( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( renderTarget.depthTexture ) {\n\n\t\t\trenderTarget.depthTexture.dispose();\n\n\t\t\tproperties.remove( renderTarget.depthTexture );\n\n\t\t}\n\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer[ i ] ) ) {\n\n\t\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer[ i ].length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ][ level ] );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( Array.isArray( renderTargetProperties.__webglFramebuffer ) ) {\n\n\t\t\t\tfor ( let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level ++ ) _gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ level ] );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) {\n\n\t\t\t\tfor ( let i = 0; i < renderTargetProperties.__webglColorRenderbuffer.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer[ i ] ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\n\n\t\t}\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\tif ( attachmentProperties.__webglTexture ) {\n\n\t\t\t\t_gl.deleteTexture( attachmentProperties.__webglTexture );\n\n\t\t\t\tinfo.memory.textures --;\n\n\t\t\t}\n\n\t\t\tproperties.remove( textures[ i ] );\n\n\t\t}\n\n\t\tproperties.remove( renderTarget );\n\n\t}\n\n\t//\n\n\tlet textureUnits = 0;\n\n\tfunction resetTextureUnits() {\n\n\t\ttextureUnits = 0;\n\n\t}\n\n\tfunction allocateTextureUnit() {\n\n\t\tconst textureUnit = textureUnits;\n\n\t\tif ( textureUnit >= capabilities.maxTextures ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + capabilities.maxTextures );\n\n\t\t}\n\n\t\ttextureUnits += 1;\n\n\t\treturn textureUnit;\n\n\t}\n\n\tfunction getTextureCacheKey( texture ) {\n\n\t\tconst array = [];\n\n\t\tarray.push( texture.wrapS );\n\t\tarray.push( texture.wrapT );\n\t\tarray.push( texture.wrapR || 0 );\n\t\tarray.push( texture.magFilter );\n\t\tarray.push( texture.minFilter );\n\t\tarray.push( texture.anisotropy );\n\t\tarray.push( texture.internalFormat );\n\t\tarray.push( texture.format );\n\t\tarray.push( texture.type );\n\t\tarray.push( texture.generateMipmaps );\n\t\tarray.push( texture.premultiplyAlpha );\n\t\tarray.push( texture.flipY );\n\t\tarray.push( texture.unpackAlignment );\n\t\tarray.push( texture.colorSpace );\n\n\t\treturn array.join();\n\n\t}\n\n\t//\n\n\tfunction setTexture2D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\n\n\t\tif ( texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tconst image = texture.image;\n\n\t\t\tif ( image === null ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but no image data found.' );\n\n\t\t\t} else if ( image.complete === false ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\n\n\t\t\t} else {\n\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture2DArray( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTexture3D( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tfunction setTextureCube( texture, slot ) {\n\n\t\tconst textureProperties = properties.get( texture );\n\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\n\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\n\t\t\treturn;\n\n\t\t}\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t}\n\n\tconst wrappingToGL = {\n\t\t[ RepeatWrapping ]: _gl.REPEAT,\n\t\t[ ClampToEdgeWrapping ]: _gl.CLAMP_TO_EDGE,\n\t\t[ MirroredRepeatWrapping ]: _gl.MIRRORED_REPEAT\n\t};\n\n\tconst filterToGL = {\n\t\t[ NearestFilter ]: _gl.NEAREST,\n\t\t[ NearestMipmapNearestFilter ]: _gl.NEAREST_MIPMAP_NEAREST,\n\t\t[ NearestMipmapLinearFilter ]: _gl.NEAREST_MIPMAP_LINEAR,\n\n\t\t[ LinearFilter ]: _gl.LINEAR,\n\t\t[ LinearMipmapNearestFilter ]: _gl.LINEAR_MIPMAP_NEAREST,\n\t\t[ LinearMipmapLinearFilter ]: _gl.LINEAR_MIPMAP_LINEAR\n\t};\n\n\tconst compareToGL = {\n\t\t[ NeverCompare ]: _gl.NEVER,\n\t\t[ AlwaysCompare ]: _gl.ALWAYS,\n\t\t[ LessCompare ]: _gl.LESS,\n\t\t[ LessEqualCompare ]: _gl.LEQUAL,\n\t\t[ EqualCompare ]: _gl.EQUAL,\n\t\t[ GreaterEqualCompare ]: _gl.GEQUAL,\n\t\t[ GreaterCompare ]: _gl.GREATER,\n\t\t[ NotEqualCompare ]: _gl.NOTEQUAL\n\t};\n\n\tfunction setTextureParameters( textureType, texture ) {\n\n\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false &&\n\t\t\t( texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter ||\n\t\t\ttexture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter ) ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.' );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[ texture.wrapS ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[ texture.wrapT ] );\n\n\t\tif ( textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[ texture.wrapR ] );\n\n\t\t}\n\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[ texture.magFilter ] );\n\t\t_gl.texParameteri( textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[ texture.minFilter ] );\n\n\t\tif ( texture.compareFunction ) {\n\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE );\n\t\t\t_gl.texParameteri( textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[ texture.compareFunction ] );\n\n\t\t}\n\n\t\tif ( extensions.has( 'EXT_texture_filter_anisotropic' ) === true ) {\n\n\t\t\tif ( texture.magFilter === NearestFilter ) return;\n\t\t\tif ( texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter ) return;\n\t\t\tif ( texture.type === FloatType && extensions.has( 'OES_texture_float_linear' ) === false ) return; // verify extension\n\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\n\n\t\t\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction initTexture( textureProperties, texture ) {\n\n\t\tlet forceUpload = false;\n\n\t\tif ( textureProperties.__webglInit === undefined ) {\n\n\t\t\ttextureProperties.__webglInit = true;\n\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\n\n\t\t}\n\n\t\t// create Source <-> WebGLTextures mapping if necessary\n\n\t\tconst source = texture.source;\n\t\tlet webglTextures = _sources.get( source );\n\n\t\tif ( webglTextures === undefined ) {\n\n\t\t\twebglTextures = {};\n\t\t\t_sources.set( source, webglTextures );\n\n\t\t}\n\n\t\t// check if there is already a WebGLTexture object for the given texture parameters\n\n\t\tconst textureCacheKey = getTextureCacheKey( texture );\n\n\t\tif ( textureCacheKey !== textureProperties.__cacheKey ) {\n\n\t\t\t// if not, create a new instance of WebGLTexture\n\n\t\t\tif ( webglTextures[ textureCacheKey ] === undefined ) {\n\n\t\t\t\t// create new entry\n\n\t\t\t\twebglTextures[ textureCacheKey ] = {\n\t\t\t\t\ttexture: _gl.createTexture(),\n\t\t\t\t\tusedTimes: 0\n\t\t\t\t};\n\n\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t// when a new instance of WebGLTexture was created, a texture upload is required\n\t\t\t\t// even if the image contents are identical\n\n\t\t\t\tforceUpload = true;\n\n\t\t\t}\n\n\t\t\twebglTextures[ textureCacheKey ].usedTimes ++;\n\n\t\t\t// every time the texture cache key changes, it's necessary to check if an instance of\n\t\t\t// WebGLTexture can be deleted in order to avoid a memory leak.\n\n\t\t\tconst webglTexture = webglTextures[ textureProperties.__cacheKey ];\n\n\t\t\tif ( webglTexture !== undefined ) {\n\n\t\t\t\twebglTextures[ textureProperties.__cacheKey ].usedTimes --;\n\n\t\t\t\tif ( webglTexture.usedTimes === 0 ) {\n\n\t\t\t\t\tdeleteTexture( texture );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// store references to cache key and WebGLTexture object\n\n\t\t\ttextureProperties.__cacheKey = textureCacheKey;\n\t\t\ttextureProperties.__webglTexture = webglTextures[ textureCacheKey ].texture;\n\n\t\t}\n\n\t\treturn forceUpload;\n\n\t}\n\n\tfunction uploadTexture( textureProperties, texture, slot ) {\n\n\t\tlet textureType = _gl.TEXTURE_2D;\n\n\t\tif ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) textureType = _gl.TEXTURE_2D_ARRAY;\n\t\tif ( texture.isData3DTexture ) textureType = _gl.TEXTURE_3D;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tlet image = resizeImage( texture.image, false, capabilities.maxTextureSize );\n\t\t\timage = verifyColorSpace( texture, image );\n\n\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\n\t\t\tconst glType = utils.convert( texture.type );\n\t\t\tlet glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture );\n\n\t\t\tsetTextureParameters( textureType, texture );\n\n\t\t\tlet mipmap;\n\t\t\tconst mipmaps = texture.mipmaps;\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tconst levels = getMipLevels( texture, image );\n\n\t\t\tif ( texture.isDepthTexture ) {\n\n\t\t\t\tglInternalFormat = getInternalDepthFormat( texture.format === DepthStencilFormat, texture.type );\n\n\t\t\t\t//\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataTexture ) {\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isCompressedTexture ) {\n\n\t\t\t\tif ( texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tif ( texture.layerUpdates.size > 0 ) {\n\n\t\t\t\t\t\t\t\t\t\t\tconst layerByteLength = getByteLength( mipmap.width, mipmap.height, texture.format, texture.type );\n\n\t\t\t\t\t\t\t\t\t\t\tfor ( const layerIndex of texture.layerUpdates ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\tconst layerData = mipmap.data.subarray(\n\t\t\t\t\t\t\t\t\t\t\t\t\tlayerIndex * layerByteLength / mipmap.data.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t\t\t\t\t\t\t( layerIndex + 1 ) * layerByteLength / mipmap.data.BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, layerIndex, mipmap.width, mipmap.height, 1, glFormat, layerData );\n\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\ttexture.clearLayerUpdates();\n\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0 );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, i, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, i, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[ 0 ].width, mipmaps[ 0 ].height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isDataArrayTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tif ( texture.layerUpdates.size > 0 ) {\n\n\t\t\t\t\t\t\tconst layerByteLength = getByteLength( image.width, image.height, texture.format, texture.type );\n\n\t\t\t\t\t\t\tfor ( const layerIndex of texture.layerUpdates ) {\n\n\t\t\t\t\t\t\t\tconst layerData = image.data.subarray(\n\t\t\t\t\t\t\t\t\tlayerIndex * layerByteLength / image.data.BYTES_PER_ELEMENT,\n\t\t\t\t\t\t\t\t\t( layerIndex + 1 ) * layerByteLength / image.data.BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, layerIndex, image.width, image.height, 1, glFormat, glType, layerData );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttexture.clearLayerUpdates();\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\tstate.texStorage3D( _gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\tstate.texSubImage3D( _gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tstate.texImage3D( _gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\n\n\t\t\t\t}\n\n\t\t\t} else if ( texture.isFramebufferTexture ) {\n\n\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tlet width = image.width, height = image.height;\n\n\t\t\t\t\t\tfor ( let i = 0; i < levels; i ++ ) {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t\t\t\t\twidth >>= 1;\n\t\t\t\t\t\t\theight >>= 1;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\t// regular Texture (image, video, canvas)\n\n\t\t\t\t// use manually created mipmaps if available\n\t\t\t\t// if there are no manual mipmaps\n\t\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\n\n\t\t\t\tif ( mipmaps.length > 0 ) {\n\n\t\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t\tconst dimensions = getDimensions( mipmaps[ 0 ] );\n\n\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\n\n\t\t\t\t\t\tmipmap = mipmaps[ i ];\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, i, 0, 0, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, i, glInternalFormat, glFormat, glType, mipmap );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\ttexture.generateMipmaps = false;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\tif ( allocateMemory ) {\n\n\t\t\t\t\t\t\tconst dimensions = getDimensions( image );\n\n\t\t\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_2D, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( textureType );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\n\n\t\tif ( texture.image.length !== 6 ) return;\n\n\t\tconst forceUpload = initTexture( textureProperties, texture );\n\t\tconst source = texture.source;\n\n\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot );\n\n\t\tconst sourceProperties = properties.get( source );\n\n\t\tif ( source.version !== sourceProperties.__version || forceUpload === true ) {\n\n\t\t\tstate.activeTexture( _gl.TEXTURE0 + slot );\n\n\t\t\tconst workingPrimaries = ColorManagement.getPrimaries( ColorManagement.workingColorSpace );\n\t\t\tconst texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries( texture.colorSpace );\n\t\t\tconst unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, texture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, texture.unpackAlignment );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion );\n\n\t\t\tconst isCompressed = ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture );\n\t\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\n\n\t\t\tconst cubeImage = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( ! isCompressed && ! isDataTexture ) {\n\n\t\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], true, capabilities.maxCubemapSize );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\n\n\t\t\t\t}\n\n\t\t\t\tcubeImage[ i ] = verifyColorSpace( texture, cubeImage[ i ] );\n\n\t\t\t}\n\n\t\t\tconst image = cubeImage[ 0 ],\n\t\t\t\tglFormat = utils.convert( texture.format, texture.colorSpace ),\n\t\t\t\tglType = utils.convert( texture.type ),\n\t\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\n\t\t\tconst useTexStorage = ( texture.isVideoTexture !== true );\n\t\t\tconst allocateMemory = ( sourceProperties.__version === undefined ) || ( forceUpload === true );\n\t\t\tconst dataReady = source.dataReady;\n\t\t\tlet levels = getMipLevels( texture, image );\n\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tlet mipmaps;\n\n\t\t\tif ( isCompressed ) {\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\n\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\tif ( texture.format !== RGBAFormat ) {\n\n\t\t\t\t\t\t\tif ( glFormat !== null ) {\n\n\t\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\t\tstate.compressedTexSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data );\n\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\tstate.compressedTexImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tmipmaps = texture.mipmaps;\n\n\t\t\t\tif ( useTexStorage && allocateMemory ) {\n\n\t\t\t\t\t// TODO: Uniformly handle mipmap definitions\n\t\t\t\t\t// Normal textures and compressed cube textures define base level + mips with their mipmap array\n\t\t\t\t\t// Uncompressed cube textures use their mipmap array only for mips (no base level)\n\n\t\t\t\t\tif ( mipmaps.length > 0 ) levels ++;\n\n\t\t\t\t\tconst dimensions = getDimensions( cubeImage[ 0 ] );\n\n\t\t\t\t\tstate.texStorage2D( _gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, dimensions.width, dimensions.height );\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tif ( isDataTexture ) {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, cubeImage[ i ].width, cubeImage[ i ].height, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\t\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, 0, 0, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\n\n\t\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\n\n\t\t\t\t\t\t\tif ( useTexStorage ) {\n\n\t\t\t\t\t\t\t\tif ( dataReady ) {\n\n\t\t\t\t\t\t\t\t\tstate.texSubImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, 0, 0, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tstate.texImage2D( _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\t// We assume images for cube map have the same size.\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tsourceProperties.__version = source.version;\n\n\t\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\n\n\t\t}\n\n\t\ttextureProperties.__version = texture.version;\n\n\t}\n\n\t// Render targets\n\n\t// Setup storage for target texture and bind it to correct framebuffer\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, texture, attachment, textureTarget, level ) {\n\n\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\tconst glType = utils.convert( texture.type );\n\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\ttextureProperties.__renderTarget = renderTarget;\n\n\t\tif ( ! renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\tconst width = Math.max( 1, renderTarget.width >> level );\n\t\t\tconst height = Math.max( 1, renderTarget.height >> level );\n\n\t\t\tif ( textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY ) {\n\n\t\t\t\tstate.texImage3D( textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null );\n\n\t\t\t} else {\n\n\t\t\t\tstate.texImage2D( textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, 0, getRenderTargetSamples( renderTarget ) );\n\n\t\t} else if ( textureTarget === _gl.TEXTURE_2D || ( textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z ) ) { // see #24753\n\n\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, attachment, textureTarget, textureProperties.__webglTexture, level );\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t// retrieve the depth attachment types\n\t\t\tconst depthTexture = renderTarget.depthTexture;\n\t\t\tconst depthType = depthTexture && depthTexture.isDepthTexture ? depthTexture.type : null;\n\t\t\tconst glInternalFormat = getInternalDepthFormat( renderTarget.stencilBuffer, depthType );\n\t\t\tconst glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\n\t\t\t// set up the attachment\n\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\tconst isUseMultisampledRTT = useMultisampledRTT( renderTarget );\n\t\t\tif ( isUseMultisampledRTT ) {\n\n\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else if ( isMultisample ) {\n\n\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t}\n\n\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t} else {\n\n\t\t\tconst textures = renderTarget.textures;\n\n\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\tconst texture = textures[ i ];\n\n\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace );\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\t\t\tif ( isMultisample && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else if ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\t\tmultisampledRTTExt.renderbufferStorageMultisampleEXT( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t_gl.renderbufferStorage( _gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t}\n\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\n\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\n\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\n\n\t\t}\n\n\t\tconst textureProperties = properties.get( renderTarget.depthTexture );\n\t\ttextureProperties.__renderTarget = renderTarget;\n\n\t\t// upload an empty depth texture with framebuffer size\n\t\tif ( ! textureProperties.__webglTexture ||\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\n\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\n\n\t\t}\n\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\n\n\t\tconst webglDepthTexture = textureProperties.__webglTexture;\n\t\tconst samples = getRenderTargetSamples( renderTarget );\n\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) ) {\n\n\t\t\t\tmultisampledRTTExt.framebufferTexture2DMultisampleEXT( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples );\n\n\t\t\t} else {\n\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0 );\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\n\n\t\t}\n\n\t}\n\n\t// Setup GL resources for a non-texture depth buffer\n\tfunction setupDepthRenderbuffer( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\n\t\t// if the bound depth texture has changed\n\t\tif ( renderTargetProperties.__boundDepthTexture !== renderTarget.depthTexture ) {\n\n\t\t\t// fire the dispose event to get rid of stored state associated with the previously bound depth buffer\n\t\t\tconst depthTexture = renderTarget.depthTexture;\n\t\t\tif ( renderTargetProperties.__depthDisposeCallback ) {\n\n\t\t\t\trenderTargetProperties.__depthDisposeCallback();\n\n\t\t\t}\n\n\t\t\t// set up dispose listeners to track when the currently attached buffer is implicitly unbound\n\t\t\tif ( depthTexture ) {\n\n\t\t\t\tconst disposeEvent = () => {\n\n\t\t\t\t\tdelete renderTargetProperties.__boundDepthTexture;\n\t\t\t\t\tdelete renderTargetProperties.__depthDisposeCallback;\n\t\t\t\t\tdepthTexture.removeEventListener( 'dispose', disposeEvent );\n\n\t\t\t\t};\n\n\t\t\t\tdepthTexture.addEventListener( 'dispose', disposeEvent );\n\t\t\t\trenderTargetProperties.__depthDisposeCallback = disposeEvent;\n\n\t\t\t}\n\n\t\t\trenderTargetProperties.__boundDepthTexture = depthTexture;\n\n\t\t}\n\n\t\tif ( renderTarget.depthTexture && ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\n\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\n\n\t\t} else {\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\n\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[ i ] );\n\n\t\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer[ i ] === undefined ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// attach buffer if it's been created already\n\t\t\t\t\t\tconst glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\t\t\tconst renderbuffer = renderTargetProperties.__webglDepthbuffer[ i ];\n\t\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer === undefined ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// attach buffer if it's been created already\n\t\t\t\t\tconst glAttachmentType = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\t\tconst renderbuffer = renderTargetProperties.__webglDepthbuffer;\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderbuffer );\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, glAttachmentType, _gl.RENDERBUFFER, renderbuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t}\n\n\t// rebind framebuffer with external textures\n\tfunction rebindTextures( renderTarget, colorTexture, depthTexture ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\tif ( colorTexture !== undefined ) {\n\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0 );\n\n\t\t}\n\n\t\tif ( depthTexture !== undefined ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\t// Set up GL resources for the render target\n\tfunction setupRenderTarget( renderTarget ) {\n\n\t\tconst texture = renderTarget.texture;\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\tconst textureProperties = properties.get( texture );\n\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\n\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\tif ( ! isMultipleRenderTargets ) {\n\n\t\t\tif ( textureProperties.__webglTexture === undefined ) {\n\n\t\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t}\n\n\t\t\ttextureProperties.__version = texture.version;\n\t\t\tinfo.memory.textures ++;\n\n\t\t}\n\n\t\t// Setup framebuffer\n\n\t\tif ( isCube ) {\n\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = [];\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ][ level ] = _gl.createFramebuffer();\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = [];\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\trenderTargetProperties.__webglFramebuffer[ level ] = _gl.createFramebuffer();\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n\n\t\t\t}\n\n\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\t\tconst attachmentProperties = properties.get( textures[ i ] );\n\n\t\t\t\t\tif ( attachmentProperties.__webglTexture === undefined ) {\n\n\t\t\t\t\t\tattachmentProperties.__webglTexture = _gl.createTexture();\n\n\t\t\t\t\t\tinfo.memory.textures ++;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( ( renderTarget.samples > 0 ) && useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = [];\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tconst texture = textures[ i ];\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer[ i ] = _gl.createRenderbuffer();\n\n\t\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\tconst glFormat = utils.convert( texture.format, texture.colorSpace );\n\t\t\t\t\tconst glType = utils.convert( texture.type );\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType, texture.colorSpace, renderTarget.isXRRenderTarget === true );\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\n\t\t\t\t\t_gl.renderbufferStorageMultisample( _gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height );\n\n\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t}\n\n\t\t\t\t_gl.bindRenderbuffer( _gl.RENDERBUFFER, null );\n\n\t\t\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Setup color buffer\n\n\t\tif ( isCube ) {\n\n\t\t\tstate.bindTexture( _gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( _gl.TEXTURE_CUBE_MAP, texture );\n\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\n\n\t\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ][ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, level );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i, 0 );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( _gl.TEXTURE_CUBE_MAP );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else if ( isMultipleRenderTargets ) {\n\n\t\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\t\tconst attachment = textures[ i ];\n\t\t\t\tconst attachmentProperties = properties.get( attachment );\n\n\t\t\t\tstate.bindTexture( _gl.TEXTURE_2D, attachmentProperties.__webglTexture );\n\t\t\t\tsetTextureParameters( _gl.TEXTURE_2D, attachment );\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, 0 );\n\n\t\t\t\tif ( textureNeedsGenerateMipmaps( attachment ) ) {\n\n\t\t\t\t\tgenerateMipmap( _gl.TEXTURE_2D );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t} else {\n\n\t\t\tlet glTextureType = _gl.TEXTURE_2D;\n\n\t\t\tif ( renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget ) {\n\n\t\t\t\tglTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t}\n\n\t\t\tstate.bindTexture( glTextureType, textureProperties.__webglTexture );\n\t\t\tsetTextureParameters( glTextureType, texture );\n\n\t\t\tif ( texture.mipmaps && texture.mipmaps.length > 0 ) {\n\n\t\t\t\tfor ( let level = 0; level < texture.mipmaps.length; level ++ ) {\n\n\t\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ level ], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0 );\n\n\t\t\t}\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tgenerateMipmap( glTextureType );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t}\n\n\t\t// Setup depth and stencil buffers\n\n\t\tif ( renderTarget.depthBuffer ) {\n\n\t\t\tsetupDepthRenderbuffer( renderTarget );\n\n\t\t}\n\n\t}\n\n\tfunction updateRenderTargetMipmap( renderTarget ) {\n\n\t\tconst textures = renderTarget.textures;\n\n\t\tfor ( let i = 0, il = textures.length; i < il; i ++ ) {\n\n\t\t\tconst texture = textures[ i ];\n\n\t\t\tif ( textureNeedsGenerateMipmaps( texture ) ) {\n\n\t\t\t\tconst targetType = getTargetType( renderTarget );\n\t\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\n\n\t\t\t\tstate.bindTexture( targetType, webglTexture );\n\t\t\t\tgenerateMipmap( targetType );\n\t\t\t\tstate.unbindTexture();\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tconst invalidationArrayRead = [];\n\tconst invalidationArrayDraw = [];\n\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\n\n\t\tif ( renderTarget.samples > 0 ) {\n\n\t\t\tif ( useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\tconst textures = renderTarget.textures;\n\t\t\t\tconst width = renderTarget.width;\n\t\t\t\tconst height = renderTarget.height;\n\t\t\t\tlet mask = _gl.COLOR_BUFFER_BIT;\n\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\t\tconst isMultipleRenderTargets = ( textures.length > 1 );\n\n\t\t\t\t// If MRT we need to remove FBO attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, null );\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, null, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\tif ( renderTarget.resolveDepthBuffer ) {\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer ) mask |= _gl.DEPTH_BUFFER_BIT;\n\n\t\t\t\t\t\t// resolving stencil is slow with a D3D backend. disable it for all transmission render targets (see #27799)\n\n\t\t\t\t\t\tif ( renderTarget.stencilBuffer && renderTarget.resolveStencilBuffer ) mask |= _gl.STENCIL_BUFFER_BIT;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST );\n\n\t\t\t\t\tif ( supportsInvalidateFramebuffer === true ) {\n\n\t\t\t\t\t\tinvalidationArrayRead.length = 0;\n\t\t\t\t\t\tinvalidationArrayDraw.length = 0;\n\n\t\t\t\t\t\tinvalidationArrayRead.push( _gl.COLOR_ATTACHMENT0 + i );\n\n\t\t\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false ) {\n\n\t\t\t\t\t\t\tinvalidationArrayRead.push( depthStyle );\n\t\t\t\t\t\t\tinvalidationArrayDraw.push( depthStyle );\n\n\t\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, invalidationArrayDraw );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_gl.invalidateFramebuffer( _gl.READ_FRAMEBUFFER, invalidationArrayRead );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t\t// If MRT since pre-blit we removed the FBO we need to reconstruct the attachments\n\t\t\t\tif ( isMultipleRenderTargets ) {\n\n\t\t\t\t\tfor ( let i = 0; i < textures.length; i ++ ) {\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\t\t\t\t\t\t_gl.framebufferRenderbuffer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[ i ] );\n\n\t\t\t\t\t\tconst webglTexture = properties.get( textures[ i ] ).__webglTexture;\n\n\t\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer );\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i, _gl.TEXTURE_2D, webglTexture, 0 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer );\n\n\t\t\t} else {\n\n\t\t\t\tif ( renderTarget.depthBuffer && renderTarget.resolveDepthBuffer === false && supportsInvalidateFramebuffer ) {\n\n\t\t\t\t\tconst depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n\n\t\t\t\t\t_gl.invalidateFramebuffer( _gl.DRAW_FRAMEBUFFER, [ depthStyle ] );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction getRenderTargetSamples( renderTarget ) {\n\n\t\treturn Math.min( capabilities.maxSamples, renderTarget.samples );\n\n\t}\n\n\tfunction useMultisampledRTT( renderTarget ) {\n\n\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\treturn renderTarget.samples > 0 && extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true && renderTargetProperties.__useRenderToTexture !== false;\n\n\t}\n\n\tfunction updateVideoTexture( texture ) {\n\n\t\tconst frame = info.render.frame;\n\n\t\t// Check the last frame we updated the VideoTexture\n\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\n\n\t\t\t_videoTextures.set( texture, frame );\n\t\t\ttexture.update();\n\n\t\t}\n\n\t}\n\n\tfunction verifyColorSpace( texture, image ) {\n\n\t\tconst colorSpace = texture.colorSpace;\n\t\tconst format = texture.format;\n\t\tconst type = texture.type;\n\n\t\tif ( texture.isCompressedTexture === true || texture.isVideoTexture === true ) return image;\n\n\t\tif ( colorSpace !== LinearSRGBColorSpace && colorSpace !== NoColorSpace ) {\n\n\t\t\t// sRGB\n\n\t\t\tif ( ColorManagement.getTransfer( colorSpace ) === SRGBTransfer ) {\n\n\t\t\t\t// in WebGL 2 uncompressed textures can only be sRGB encoded if they have the RGBA8 format\n\n\t\t\t\tif ( format !== RGBAFormat || type !== UnsignedByteType ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.' );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tconsole.error( 'THREE.WebGLTextures: Unsupported texture color space:', colorSpace );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn image;\n\n\t}\n\n\tfunction getDimensions( image ) {\n\n\t\tif ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) {\n\n\t\t\t// if intrinsic data are not available, fallback to width/height\n\n\t\t\t_imageDimensions.width = image.naturalWidth || image.width;\n\t\t\t_imageDimensions.height = image.naturalHeight || image.height;\n\n\t\t} else if ( typeof VideoFrame !== 'undefined' && image instanceof VideoFrame ) {\n\n\t\t\t_imageDimensions.width = image.displayWidth;\n\t\t\t_imageDimensions.height = image.displayHeight;\n\n\t\t} else {\n\n\t\t\t_imageDimensions.width = image.width;\n\t\t\t_imageDimensions.height = image.height;\n\n\t\t}\n\n\t\treturn _imageDimensions;\n\n\t}\n\n\t//\n\n\tthis.allocateTextureUnit = allocateTextureUnit;\n\tthis.resetTextureUnits = resetTextureUnits;\n\n\tthis.setTexture2D = setTexture2D;\n\tthis.setTexture2DArray = setTexture2DArray;\n\tthis.setTexture3D = setTexture3D;\n\tthis.setTextureCube = setTextureCube;\n\tthis.rebindTextures = rebindTextures;\n\tthis.setupRenderTarget = setupRenderTarget;\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n\tthis.setupDepthRenderbuffer = setupDepthRenderbuffer;\n\tthis.setupFrameBufferTexture = setupFrameBufferTexture;\n\tthis.useMultisampledRTT = useMultisampledRTT;\n\n}\n\nfunction WebGLUtils( gl, extensions ) {\n\n\tfunction convert( p, colorSpace = NoColorSpace ) {\n\n\t\tlet extension;\n\n\t\tconst transfer = ColorManagement.getTransfer( colorSpace );\n\n\t\tif ( p === UnsignedByteType ) return gl.UNSIGNED_BYTE;\n\t\tif ( p === UnsignedShort4444Type ) return gl.UNSIGNED_SHORT_4_4_4_4;\n\t\tif ( p === UnsignedShort5551Type ) return gl.UNSIGNED_SHORT_5_5_5_1;\n\t\tif ( p === UnsignedInt5999Type ) return gl.UNSIGNED_INT_5_9_9_9_REV;\n\n\t\tif ( p === ByteType ) return gl.BYTE;\n\t\tif ( p === ShortType ) return gl.SHORT;\n\t\tif ( p === UnsignedShortType ) return gl.UNSIGNED_SHORT;\n\t\tif ( p === IntType ) return gl.INT;\n\t\tif ( p === UnsignedIntType ) return gl.UNSIGNED_INT;\n\t\tif ( p === FloatType ) return gl.FLOAT;\n\t\tif ( p === HalfFloatType ) return gl.HALF_FLOAT;\n\n\t\tif ( p === AlphaFormat ) return gl.ALPHA;\n\t\tif ( p === RGBFormat ) return gl.RGB;\n\t\tif ( p === RGBAFormat ) return gl.RGBA;\n\t\tif ( p === LuminanceFormat ) return gl.LUMINANCE;\n\t\tif ( p === LuminanceAlphaFormat ) return gl.LUMINANCE_ALPHA;\n\t\tif ( p === DepthFormat ) return gl.DEPTH_COMPONENT;\n\t\tif ( p === DepthStencilFormat ) return gl.DEPTH_STENCIL;\n\n\t\t// WebGL2 formats.\n\n\t\tif ( p === RedFormat ) return gl.RED;\n\t\tif ( p === RedIntegerFormat ) return gl.RED_INTEGER;\n\t\tif ( p === RGFormat ) return gl.RG;\n\t\tif ( p === RGIntegerFormat ) return gl.RG_INTEGER;\n\t\tif ( p === RGBAIntegerFormat ) return gl.RGBA_INTEGER;\n\n\t\t// S3TC\n\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format || p === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\n\n\t\t\tif ( transfer === SRGBTransfer ) {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc_srgb' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\n\n\t\t\t\tif ( extension !== null ) {\n\n\t\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\n\t\t\t\t} else {\n\n\t\t\t\t\treturn null;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// PVRTC\n\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format || p === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ETC\n\n\t\tif ( p === RGB_ETC1_Format || p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGB_ETC1_Format || p === RGB_ETC2_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ASTC\n\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ) {\n\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_ASTC_4x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x4_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_5x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_6x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_8x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x5_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x6_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x8_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_10x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x10_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n\t\t\t\tif ( p === RGBA_ASTC_12x12_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// BPTC\n\n\t\tif ( p === RGBA_BPTC_Format || p === RGB_BPTC_SIGNED_Format || p === RGB_BPTC_UNSIGNED_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return ( transfer === SRGBTransfer ) ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\tif ( p === RGB_BPTC_SIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\tif ( p === RGB_BPTC_UNSIGNED_Format ) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t// RGTC\n\n\t\tif ( p === RED_RGTC1_Format || p === SIGNED_RED_RGTC1_Format || p === RED_GREEN_RGTC2_Format || p === SIGNED_RED_GREEN_RGTC2_Format ) {\n\n\t\t\textension = extensions.get( 'EXT_texture_compression_rgtc' );\n\n\t\t\tif ( extension !== null ) {\n\n\t\t\t\tif ( p === RGBA_BPTC_Format ) return extension.COMPRESSED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === SIGNED_RED_RGTC1_Format ) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n\t\t\t\tif ( p === RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n\t\t\t\tif ( p === SIGNED_RED_GREEN_RGTC2_Format ) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n\n\t\t\t} else {\n\n\t\t\t\treturn null;\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tif ( p === UnsignedInt248Type ) return gl.UNSIGNED_INT_24_8;\n\n\t\t// if \"p\" can't be resolved, assume the user defines a WebGL constant as a string (fallback/workaround for packed RGB formats)\n\n\t\treturn ( gl[ p ] !== undefined ) ? gl[ p ] : null;\n\n\t}\n\n\treturn { convert: convert };\n\n}\n\nconst _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\n\nconst _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\n\nclass WebXRDepthSensing {\n\n\tconstructor() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t\tthis.depthNear = 0;\n\t\tthis.depthFar = 0;\n\n\t}\n\n\tinit( renderer, depthData, renderState ) {\n\n\t\tif ( this.texture === null ) {\n\n\t\t\tconst texture = new Texture();\n\n\t\t\tconst texProps = renderer.properties.get( texture );\n\t\t\ttexProps.__webglTexture = depthData.texture;\n\n\t\t\tif ( ( depthData.depthNear !== renderState.depthNear ) || ( depthData.depthFar !== renderState.depthFar ) ) {\n\n\t\t\t\tthis.depthNear = depthData.depthNear;\n\t\t\t\tthis.depthFar = depthData.depthFar;\n\n\t\t\t}\n\n\t\t\tthis.texture = texture;\n\n\t\t}\n\n\t}\n\n\tgetMesh( cameraXR ) {\n\n\t\tif ( this.texture !== null ) {\n\n\t\t\tif ( this.mesh === null ) {\n\n\t\t\t\tconst viewport = cameraXR.cameras[ 0 ].viewport;\n\t\t\t\tconst material = new ShaderMaterial( {\n\t\t\t\t\tvertexShader: _occlusion_vertex,\n\t\t\t\t\tfragmentShader: _occlusion_fragment,\n\t\t\t\t\tuniforms: {\n\t\t\t\t\t\tdepthColor: { value: this.texture },\n\t\t\t\t\t\tdepthWidth: { value: viewport.z },\n\t\t\t\t\t\tdepthHeight: { value: viewport.w }\n\t\t\t\t\t}\n\t\t\t\t} );\n\n\t\t\t\tthis.mesh = new Mesh( new PlaneGeometry( 20, 20 ), material );\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn this.mesh;\n\n\t}\n\n\treset() {\n\n\t\tthis.texture = null;\n\t\tthis.mesh = null;\n\n\t}\n\n\tgetDepthTexture() {\n\n\t\treturn this.texture;\n\n\t}\n\n}\n\nclass WebXRManager extends EventDispatcher {\n\n\tconstructor( renderer, gl ) {\n\n\t\tsuper();\n\n\t\tconst scope = this;\n\n\t\tlet session = null;\n\n\t\tlet framebufferScaleFactor = 1.0;\n\n\t\tlet referenceSpace = null;\n\t\tlet referenceSpaceType = 'local-floor';\n\t\t// Set default foveation to maximum.\n\t\tlet foveation = 1.0;\n\t\tlet customReferenceSpace = null;\n\n\t\tlet pose = null;\n\t\tlet glBinding = null;\n\t\tlet glProjLayer = null;\n\t\tlet glBaseLayer = null;\n\t\tlet xrFrame = null;\n\n\t\tconst depthSensing = new WebXRDepthSensing();\n\t\tconst attributes = gl.getContextAttributes();\n\n\t\tlet initialRenderTarget = null;\n\t\tlet newRenderTarget = null;\n\n\t\tconst controllers = [];\n\t\tconst controllerInputSources = [];\n\n\t\tconst currentSize = new Vector2();\n\t\tlet currentPixelRatio = null;\n\n\t\t//\n\n\t\tconst cameraL = new PerspectiveCamera();\n\t\tcameraL.viewport = new Vector4();\n\n\t\tconst cameraR = new PerspectiveCamera();\n\t\tcameraR.viewport = new Vector4();\n\n\t\tconst cameras = [ cameraL, cameraR ];\n\n\t\tconst cameraXR = new ArrayCamera();\n\n\t\tlet _currentDepthNear = null;\n\t\tlet _currentDepthFar = null;\n\n\t\t//\n\n\t\tthis.cameraAutoUpdate = true;\n\t\tthis.enabled = false;\n\n\t\tthis.isPresenting = false;\n\n\t\tthis.getController = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getTargetRaySpace();\n\n\t\t};\n\n\t\tthis.getControllerGrip = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getGripSpace();\n\n\t\t};\n\n\t\tthis.getHand = function ( index ) {\n\n\t\t\tlet controller = controllers[ index ];\n\n\t\t\tif ( controller === undefined ) {\n\n\t\t\t\tcontroller = new WebXRController();\n\t\t\t\tcontrollers[ index ] = controller;\n\n\t\t\t}\n\n\t\t\treturn controller.getHandSpace();\n\n\t\t};\n\n\t\t//\n\n\t\tfunction onSessionEvent( event ) {\n\n\t\t\tconst controllerIndex = controllerInputSources.indexOf( event.inputSource );\n\n\t\t\tif ( controllerIndex === -1 ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\tif ( controller !== undefined ) {\n\n\t\t\t\tcontroller.update( event.inputSource, event.frame, customReferenceSpace || referenceSpace );\n\t\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction onSessionEnd() {\n\n\t\t\tsession.removeEventListener( 'select', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectstart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'selectend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeeze', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezestart', onSessionEvent );\n\t\t\tsession.removeEventListener( 'squeezeend', onSessionEvent );\n\t\t\tsession.removeEventListener( 'end', onSessionEnd );\n\t\t\tsession.removeEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\n\t\t\t\tif ( inputSource === null ) continue;\n\n\t\t\t\tcontrollerInputSources[ i ] = null;\n\n\t\t\t\tcontrollers[ i ].disconnect( inputSource );\n\n\t\t\t}\n\n\t\t\t_currentDepthNear = null;\n\t\t\t_currentDepthFar = null;\n\n\t\t\tdepthSensing.reset();\n\n\t\t\t// restore framebuffer/rendering state\n\n\t\t\trenderer.setRenderTarget( initialRenderTarget );\n\n\t\t\tglBaseLayer = null;\n\t\t\tglProjLayer = null;\n\t\t\tglBinding = null;\n\t\t\tsession = null;\n\t\t\tnewRenderTarget = null;\n\n\t\t\t//\n\n\t\t\tanimation.stop();\n\n\t\t\tscope.isPresenting = false;\n\n\t\t\trenderer.setPixelRatio( currentPixelRatio );\n\t\t\trenderer.setSize( currentSize.width, currentSize.height, false );\n\n\t\t\tscope.dispatchEvent( { type: 'sessionend' } );\n\n\t\t}\n\n\t\tthis.setFramebufferScaleFactor = function ( value ) {\n\n\t\t\tframebufferScaleFactor = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setReferenceSpaceType = function ( value ) {\n\n\t\t\treferenceSpaceType = value;\n\n\t\t\tif ( scope.isPresenting === true ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getReferenceSpace = function () {\n\n\t\t\treturn customReferenceSpace || referenceSpace;\n\n\t\t};\n\n\t\tthis.setReferenceSpace = function ( space ) {\n\n\t\t\tcustomReferenceSpace = space;\n\n\t\t};\n\n\t\tthis.getBaseLayer = function () {\n\n\t\t\treturn glProjLayer !== null ? glProjLayer : glBaseLayer;\n\n\t\t};\n\n\t\tthis.getBinding = function () {\n\n\t\t\treturn glBinding;\n\n\t\t};\n\n\t\tthis.getFrame = function () {\n\n\t\t\treturn xrFrame;\n\n\t\t};\n\n\t\tthis.getSession = function () {\n\n\t\t\treturn session;\n\n\t\t};\n\n\t\tthis.setSession = async function ( value ) {\n\n\t\t\tsession = value;\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\tinitialRenderTarget = renderer.getRenderTarget();\n\n\t\t\t\tsession.addEventListener( 'select', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\n\t\t\t\tsession.addEventListener( 'end', onSessionEnd );\n\t\t\t\tsession.addEventListener( 'inputsourceschange', onInputSourcesChange );\n\n\t\t\t\tif ( attributes.xrCompatible !== true ) {\n\n\t\t\t\t\tawait gl.makeXRCompatible();\n\n\t\t\t\t}\n\n\t\t\t\tcurrentPixelRatio = renderer.getPixelRatio();\n\t\t\t\trenderer.getSize( currentSize );\n\n\t\t\t\t// Check that the browser implements the necessary APIs to use an\n\t\t\t\t// XRProjectionLayer rather than an XRWebGLLayer\n\t\t\t\tconst useLayers = typeof XRWebGLBinding !== 'undefined' && 'createProjectionLayer' in XRWebGLBinding.prototype;\n\n\t\t\t\tif ( ! useLayers ) {\n\n\t\t\t\t\tconst layerInit = {\n\t\t\t\t\t\tantialias: attributes.antialias,\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: attributes.depth,\n\t\t\t\t\t\tstencil: attributes.stencil,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBaseLayer = new XRWebGLLayer( session, gl, layerInit );\n\n\t\t\t\t\tsession.updateRenderState( { baseLayer: glBaseLayer } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglBaseLayer.framebufferWidth,\n\t\t\t\t\t\tglBaseLayer.framebufferHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tresolveDepthBuffer: ( glBaseLayer.ignoreDepthValues === false ),\n\t\t\t\t\t\t\tresolveStencilBuffer: ( glBaseLayer.ignoreDepthValues === false )\n\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\n\t\t\t\t} else {\n\n\t\t\t\t\tlet depthFormat = null;\n\t\t\t\t\tlet depthType = null;\n\t\t\t\t\tlet glDepthFormat = null;\n\n\t\t\t\t\tif ( attributes.depth ) {\n\n\t\t\t\t\t\tglDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n\t\t\t\t\t\tdepthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n\t\t\t\t\t\tdepthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tconst projectionlayerInit = {\n\t\t\t\t\t\tcolorFormat: gl.RGBA8,\n\t\t\t\t\t\tdepthFormat: glDepthFormat,\n\t\t\t\t\t\tscaleFactor: framebufferScaleFactor\n\t\t\t\t\t};\n\n\t\t\t\t\tglBinding = new XRWebGLBinding( session, gl );\n\n\t\t\t\t\tglProjLayer = glBinding.createProjectionLayer( projectionlayerInit );\n\n\t\t\t\t\tsession.updateRenderState( { layers: [ glProjLayer ] } );\n\n\t\t\t\t\trenderer.setPixelRatio( 1 );\n\t\t\t\t\trenderer.setSize( glProjLayer.textureWidth, glProjLayer.textureHeight, false );\n\n\t\t\t\t\tnewRenderTarget = new WebGLRenderTarget(\n\t\t\t\t\t\tglProjLayer.textureWidth,\n\t\t\t\t\t\tglProjLayer.textureHeight,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tformat: RGBAFormat,\n\t\t\t\t\t\t\ttype: UnsignedByteType,\n\t\t\t\t\t\t\tdepthTexture: new DepthTexture( glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, undefined, undefined, undefined, undefined, undefined, undefined, depthFormat ),\n\t\t\t\t\t\t\tstencilBuffer: attributes.stencil,\n\t\t\t\t\t\t\tcolorSpace: renderer.outputColorSpace,\n\t\t\t\t\t\t\tsamples: attributes.antialias ? 4 : 0,\n\t\t\t\t\t\t\tresolveDepthBuffer: ( glProjLayer.ignoreDepthValues === false ),\n\t\t\t\t\t\t\tresolveStencilBuffer: ( glProjLayer.ignoreDepthValues === false )\n\t\t\t\t\t\t} );\n\n\t\t\t\t}\n\n\t\t\t\tnewRenderTarget.isXRRenderTarget = true; // TODO Remove this when possible, see #23278\n\n\t\t\t\tthis.setFoveation( foveation );\n\n\t\t\t\tcustomReferenceSpace = null;\n\t\t\t\treferenceSpace = await session.requestReferenceSpace( referenceSpaceType );\n\n\t\t\t\tanimation.setContext( session );\n\t\t\t\tanimation.start();\n\n\t\t\t\tscope.isPresenting = true;\n\n\t\t\t\tscope.dispatchEvent( { type: 'sessionstart' } );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getEnvironmentBlendMode = function () {\n\n\t\t\tif ( session !== null ) {\n\n\t\t\t\treturn session.environmentBlendMode;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.getDepthTexture = function () {\n\n\t\t\treturn depthSensing.getDepthTexture();\n\n\t\t};\n\n\t\tfunction onInputSourcesChange( event ) {\n\n\t\t\t// Notify disconnected\n\n\t\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.removed[ i ];\n\t\t\t\tconst index = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( index >= 0 ) {\n\n\t\t\t\t\tcontrollerInputSources[ index ] = null;\n\t\t\t\t\tcontrollers[ index ].disconnect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Notify connected\n\n\t\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\n\n\t\t\t\tconst inputSource = event.added[ i ];\n\n\t\t\t\tlet controllerIndex = controllerInputSources.indexOf( inputSource );\n\n\t\t\t\tif ( controllerIndex === -1 ) {\n\n\t\t\t\t\t// Assign input source a controller that currently has no input source\n\n\t\t\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\t\t\tif ( i >= controllerInputSources.length ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources.push( inputSource );\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t} else if ( controllerInputSources[ i ] === null ) {\n\n\t\t\t\t\t\t\tcontrollerInputSources[ i ] = inputSource;\n\t\t\t\t\t\t\tcontrollerIndex = i;\n\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// If all controllers do currently receive input we ignore new ones\n\n\t\t\t\t\tif ( controllerIndex === -1 ) break;\n\n\t\t\t\t}\n\n\t\t\t\tconst controller = controllers[ controllerIndex ];\n\n\t\t\t\tif ( controller ) {\n\n\t\t\t\t\tcontroller.connect( inputSource );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t//\n\n\t\tconst cameraLPos = new Vector3();\n\t\tconst cameraRPos = new Vector3();\n\n\t\t/**\n\t\t * Assumes 2 cameras that are parallel and share an X-axis, and that\n\t\t * the cameras' projection and world matrices have already been set.\n\t\t * And that near and far planes are identical for both cameras.\n\t\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\n\t\t *\n\t\t * @param {ArrayCamera} camera - The camera to update.\n\t\t * @param {PerspectiveCamera} cameraL - The left camera.\n\t\t * @param {PerspectiveCamera} cameraR - The right camera.\n\t\t */\n\t\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\n\n\t\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\n\t\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\n\n\t\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\n\n\t\t\tconst projL = cameraL.projectionMatrix.elements;\n\t\t\tconst projR = cameraR.projectionMatrix.elements;\n\n\t\t\t// VR systems will have identical far and near planes, and\n\t\t\t// most likely identical top and bottom frustum extents.\n\t\t\t// Use the left camera for these values.\n\t\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\n\t\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\n\t\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\n\t\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\n\n\t\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\n\t\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\n\t\t\tconst left = near * leftFov;\n\t\t\tconst right = near * rightFov;\n\n\t\t\t// Calculate the new camera's position offset from the\n\t\t\t// left camera. xOffset should be roughly half `ipd`.\n\t\t\tconst zOffset = ipd / ( - leftFov + rightFov );\n\t\t\tconst xOffset = zOffset * - leftFov;\n\n\t\t\t// TODO: Better way to apply this offset?\n\t\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.translateX( xOffset );\n\t\t\tcamera.translateZ( zOffset );\n\t\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t\t// Check if the projection uses an infinite far plane.\n\t\t\tif ( projL[ 10 ] === -1 ) {\n\n\t\t\t\t// Use the projection matrix from the left eye.\n\t\t\t\t// The camera offset is sufficient to include the view volumes\n\t\t\t\t// of both eyes (assuming symmetric projections).\n\t\t\t\tcamera.projectionMatrix.copy( cameraL.projectionMatrix );\n\t\t\t\tcamera.projectionMatrixInverse.copy( cameraL.projectionMatrixInverse );\n\n\t\t\t} else {\n\n\t\t\t\t// Find the union of the frustum values of the cameras and scale\n\t\t\t\t// the values so that the near plane's position does not change in world space,\n\t\t\t\t// although must now be relative to the new union camera.\n\t\t\t\tconst near2 = near + zOffset;\n\t\t\t\tconst far2 = far + zOffset;\n\t\t\t\tconst left2 = left - xOffset;\n\t\t\t\tconst right2 = right + ( ipd - xOffset );\n\t\t\t\tconst top2 = topFov * far / far2 * near2;\n\t\t\t\tconst bottom2 = bottomFov * far / far2 * near2;\n\n\t\t\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\n\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction updateCamera( camera, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrixWorld.copy( camera.matrix );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\n\n\t\t\t}\n\n\t\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\n\n\t\t}\n\n\t\tthis.updateCamera = function ( camera ) {\n\n\t\t\tif ( session === null ) return;\n\n\t\t\tlet depthNear = camera.near;\n\t\t\tlet depthFar = camera.far;\n\n\t\t\tif ( depthSensing.texture !== null ) {\n\n\t\t\t\tif ( depthSensing.depthNear > 0 ) depthNear = depthSensing.depthNear;\n\t\t\t\tif ( depthSensing.depthFar > 0 ) depthFar = depthSensing.depthFar;\n\n\t\t\t}\n\n\t\t\tcameraXR.near = cameraR.near = cameraL.near = depthNear;\n\t\t\tcameraXR.far = cameraR.far = cameraL.far = depthFar;\n\n\t\t\tif ( _currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far ) {\n\n\t\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\n\n\t\t\t\tsession.updateRenderState( {\n\t\t\t\t\tdepthNear: cameraXR.near,\n\t\t\t\t\tdepthFar: cameraXR.far\n\t\t\t\t} );\n\n\t\t\t\t_currentDepthNear = cameraXR.near;\n\t\t\t\t_currentDepthFar = cameraXR.far;\n\n\t\t\t}\n\n\t\t\tcameraL.layers.mask = camera.layers.mask | 0b010;\n\t\t\tcameraR.layers.mask = camera.layers.mask | 0b100;\n\t\t\tcameraXR.layers.mask = cameraL.layers.mask | cameraR.layers.mask;\n\n\t\t\tconst parent = camera.parent;\n\t\t\tconst cameras = cameraXR.cameras;\n\n\t\t\tupdateCamera( cameraXR, parent );\n\n\t\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\n\n\t\t\t\tupdateCamera( cameras[ i ], parent );\n\n\t\t\t}\n\n\t\t\t// update projection matrix for proper view frustum culling\n\n\t\t\tif ( cameras.length === 2 ) {\n\n\t\t\t\tsetProjectionFromUnion( cameraXR, cameraL, cameraR );\n\n\t\t\t} else {\n\n\t\t\t\t// assume single camera setup (AR)\n\n\t\t\t\tcameraXR.projectionMatrix.copy( cameraL.projectionMatrix );\n\n\t\t\t}\n\n\t\t\t// update user camera and its children\n\n\t\t\tupdateUserCamera( camera, cameraXR, parent );\n\n\t\t};\n\n\t\tfunction updateUserCamera( camera, cameraXR, parent ) {\n\n\t\t\tif ( parent === null ) {\n\n\t\t\t\tcamera.matrix.copy( cameraXR.matrixWorld );\n\n\t\t\t} else {\n\n\t\t\t\tcamera.matrix.copy( parent.matrixWorld );\n\t\t\t\tcamera.matrix.invert();\n\t\t\t\tcamera.matrix.multiply( cameraXR.matrixWorld );\n\n\t\t\t}\n\n\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\tcamera.updateMatrixWorld( true );\n\n\t\t\tcamera.projectionMatrix.copy( cameraXR.projectionMatrix );\n\t\t\tcamera.projectionMatrixInverse.copy( cameraXR.projectionMatrixInverse );\n\n\t\t\tif ( camera.isPerspectiveCamera ) {\n\n\t\t\t\tcamera.fov = RAD2DEG * 2 * Math.atan( 1 / camera.projectionMatrix.elements[ 5 ] );\n\t\t\t\tcamera.zoom = 1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.getCamera = function () {\n\n\t\t\treturn cameraXR;\n\n\t\t};\n\n\t\tthis.getFoveation = function () {\n\n\t\t\tif ( glProjLayer === null && glBaseLayer === null ) {\n\n\t\t\t\treturn undefined;\n\n\t\t\t}\n\n\t\t\treturn foveation;\n\n\t\t};\n\n\t\tthis.setFoveation = function ( value ) {\n\n\t\t\t// 0 = no foveation = full resolution\n\t\t\t// 1 = maximum foveation = the edges render at lower resolution\n\n\t\t\tfoveation = value;\n\n\t\t\tif ( glProjLayer !== null ) {\n\n\t\t\t\tglProjLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t\tif ( glBaseLayer !== null && glBaseLayer.fixedFoveation !== undefined ) {\n\n\t\t\t\tglBaseLayer.fixedFoveation = value;\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.hasDepthSensing = function () {\n\n\t\t\treturn depthSensing.texture !== null;\n\n\t\t};\n\n\t\tthis.getDepthSensingMesh = function () {\n\n\t\t\treturn depthSensing.getMesh( cameraXR );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time, frame ) {\n\n\t\t\tpose = frame.getViewerPose( customReferenceSpace || referenceSpace );\n\t\t\txrFrame = frame;\n\n\t\t\tif ( pose !== null ) {\n\n\t\t\t\tconst views = pose.views;\n\n\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\trenderer.setRenderTargetFramebuffer( newRenderTarget, glBaseLayer.framebuffer );\n\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t\tlet cameraXRNeedsUpdate = false;\n\n\t\t\t\t// check if it's necessary to rebuild cameraXR's camera list\n\n\t\t\t\tif ( views.length !== cameraXR.cameras.length ) {\n\n\t\t\t\t\tcameraXR.cameras.length = 0;\n\t\t\t\t\tcameraXRNeedsUpdate = true;\n\n\t\t\t\t}\n\n\t\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\n\n\t\t\t\t\tconst view = views[ i ];\n\n\t\t\t\t\tlet viewport = null;\n\n\t\t\t\t\tif ( glBaseLayer !== null ) {\n\n\t\t\t\t\t\tviewport = glBaseLayer.getViewport( view );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tconst glSubImage = glBinding.getViewSubImage( glProjLayer, view );\n\t\t\t\t\t\tviewport = glSubImage.viewport;\n\n\t\t\t\t\t\t// For side-by-side projection, we only produce a single texture for both eyes.\n\t\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\t\trenderer.setRenderTargetTextures(\n\t\t\t\t\t\t\t\tnewRenderTarget,\n\t\t\t\t\t\t\t\tglSubImage.colorTexture,\n\t\t\t\t\t\t\t\tglProjLayer.ignoreDepthValues ? undefined : glSubImage.depthStencilTexture );\n\n\t\t\t\t\t\t\trenderer.setRenderTarget( newRenderTarget );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tlet camera = cameras[ i ];\n\n\t\t\t\t\tif ( camera === undefined ) {\n\n\t\t\t\t\t\tcamera = new PerspectiveCamera();\n\t\t\t\t\t\tcamera.layers.enable( i );\n\t\t\t\t\t\tcamera.viewport = new Vector4();\n\t\t\t\t\t\tcameras[ i ] = camera;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\n\t\t\t\t\tcamera.matrix.decompose( camera.position, camera.quaternion, camera.scale );\n\t\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\n\t\t\t\t\tcamera.projectionMatrixInverse.copy( camera.projectionMatrix ).invert();\n\t\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\n\n\t\t\t\t\tif ( i === 0 ) {\n\n\t\t\t\t\t\tcameraXR.matrix.copy( camera.matrix );\n\t\t\t\t\t\tcameraXR.matrix.decompose( cameraXR.position, cameraXR.quaternion, cameraXR.scale );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( cameraXRNeedsUpdate === true ) {\n\n\t\t\t\t\t\tcameraXR.cameras.push( camera );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t//\n\n\t\t\t\tconst enabledFeatures = session.enabledFeatures;\n\t\t\t\tconst gpuDepthSensingEnabled = enabledFeatures &&\n\t\t\t\t\tenabledFeatures.includes( 'depth-sensing' ) &&\n\t\t\t\t\tsession.depthUsage == 'gpu-optimized';\n\n\t\t\t\tif ( gpuDepthSensingEnabled && glBinding ) {\n\n\t\t\t\t\tconst depthData = glBinding.getDepthInformation( views[ 0 ] );\n\n\t\t\t\t\tif ( depthData && depthData.isValid && depthData.texture ) {\n\n\t\t\t\t\t\tdepthSensing.init( renderer, depthData, session.renderState );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\n\n\t\t\t\tconst inputSource = controllerInputSources[ i ];\n\t\t\t\tconst controller = controllers[ i ];\n\n\t\t\t\tif ( inputSource !== null && controller !== undefined ) {\n\n\t\t\t\t\tcontroller.update( inputSource, frame, customReferenceSpace || referenceSpace );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\n\n\t\t\tif ( frame.detectedPlanes ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'planesdetected', data: frame } );\n\n\t\t\t}\n\n\t\t\txrFrame = null;\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\n\t\t};\n\n\t\tthis.dispose = function () {};\n\n\t}\n\n}\n\nconst _e1 = /*@__PURE__*/ new Euler();\nconst _m1 = /*@__PURE__*/ new Matrix4();\n\nfunction WebGLMaterials( renderer, properties ) {\n\n\tfunction refreshTransformUniform( map, uniform ) {\n\n\t\tif ( map.matrixAutoUpdate === true ) {\n\n\t\t\tmap.updateMatrix();\n\n\t\t}\n\n\t\tuniform.value.copy( map.matrix );\n\n\t}\n\n\tfunction refreshFogUniforms( uniforms, fog ) {\n\n\t\tfog.color.getRGB( uniforms.fogColor.value, getUnlitUniformColorSpace( renderer ) );\n\n\t\tif ( fog.isFog ) {\n\n\t\t\tuniforms.fogNear.value = fog.near;\n\t\t\tuniforms.fogFar.value = fog.far;\n\n\t\t} else if ( fog.isFogExp2 ) {\n\n\t\t\tuniforms.fogDensity.value = fog.density;\n\n\t\t}\n\n\t}\n\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height, transmissionRenderTarget ) {\n\n\t\tif ( material.isMeshBasicMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshLambertMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshToonMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsToon( uniforms, material );\n\n\t\t} else if ( material.isMeshPhongMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsPhong( uniforms, material );\n\n\t\t} else if ( material.isMeshStandardMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsStandard( uniforms, material );\n\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\n\n\t\t\t\trefreshUniformsPhysical( uniforms, material, transmissionRenderTarget );\n\n\t\t\t}\n\n\t\t} else if ( material.isMeshMatcapMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsMatcap( uniforms, material );\n\n\t\t} else if ( material.isMeshDepthMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isMeshDistanceMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\t\t\trefreshUniformsDistance( uniforms, material );\n\n\t\t} else if ( material.isMeshNormalMaterial ) {\n\n\t\t\trefreshUniformsCommon( uniforms, material );\n\n\t\t} else if ( material.isLineBasicMaterial ) {\n\n\t\t\trefreshUniformsLine( uniforms, material );\n\n\t\t\tif ( material.isLineDashedMaterial ) {\n\n\t\t\t\trefreshUniformsDash( uniforms, material );\n\n\t\t\t}\n\n\t\t} else if ( material.isPointsMaterial ) {\n\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\n\n\t\t} else if ( material.isSpriteMaterial ) {\n\n\t\t\trefreshUniformsSprites( uniforms, material );\n\n\t\t} else if ( material.isShadowMaterial ) {\n\n\t\t\tuniforms.color.value.copy( material.color );\n\t\t\tuniforms.opacity.value = material.opacity;\n\n\t\t} else if ( material.isShaderMaterial ) {\n\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsCommon( uniforms, material ) {\n\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.color ) {\n\n\t\t\tuniforms.diffuse.value.copy( material.color );\n\n\t\t}\n\n\t\tif ( material.emissive ) {\n\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\n\n\t\t}\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.bumpMap ) {\n\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\n\n\t\t\trefreshTransformUniform( material.bumpMap, uniforms.bumpMapTransform );\n\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.bumpScale.value *= -1;\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.normalMap ) {\n\n\t\t\tuniforms.normalMap.value = material.normalMap;\n\n\t\t\trefreshTransformUniform( material.normalMap, uniforms.normalMapTransform );\n\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\n\n\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\tuniforms.normalScale.value.negate();\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.displacementMap ) {\n\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\n\n\t\t\trefreshTransformUniform( material.displacementMap, uniforms.displacementMapTransform );\n\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\n\n\t\t}\n\n\t\tif ( material.emissiveMap ) {\n\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\n\n\t\t\trefreshTransformUniform( material.emissiveMap, uniforms.emissiveMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularMap ) {\n\n\t\t\tuniforms.specularMap.value = material.specularMap;\n\n\t\t\trefreshTransformUniform( material.specularMap, uniforms.specularMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t\tconst materialProperties = properties.get( material );\n\n\t\tconst envMap = materialProperties.envMap;\n\t\tconst envMapRotation = materialProperties.envMapRotation;\n\n\t\tif ( envMap ) {\n\n\t\t\tuniforms.envMap.value = envMap;\n\n\t\t\t_e1.copy( envMapRotation );\n\n\t\t\t// accommodate left-handed frame\n\t\t\t_e1.x *= -1; _e1.y *= -1; _e1.z *= -1;\n\n\t\t\tif ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) {\n\n\t\t\t\t// environment maps which are not cube render targets or PMREMs follow a different convention\n\t\t\t\t_e1.y *= -1;\n\t\t\t\t_e1.z *= -1;\n\n\t\t\t}\n\n\t\t\tuniforms.envMapRotation.value.setFromMatrix4( _m1.makeRotationFromEuler( _e1 ) );\n\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? -1 : 1;\n\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\n\t\t\tuniforms.ior.value = material.ior;\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\n\n\t\t}\n\n\t\tif ( material.lightMap ) {\n\n\t\t\tuniforms.lightMap.value = material.lightMap;\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\n\n\t\t\trefreshTransformUniform( material.lightMap, uniforms.lightMapTransform );\n\n\t\t}\n\n\t\tif ( material.aoMap ) {\n\n\t\t\tuniforms.aoMap.value = material.aoMap;\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\n\n\t\t\trefreshTransformUniform( material.aoMap, uniforms.aoMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsLine( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDash( uniforms, material ) {\n\n\t\tuniforms.dashSize.value = material.dashSize;\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\n\t\tuniforms.scale.value = material.scale;\n\n\t}\n\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.size.value = material.size * pixelRatio;\n\t\tuniforms.scale.value = height * 0.5;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.uvTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsSprites( uniforms, material ) {\n\n\t\tuniforms.diffuse.value.copy( material.color );\n\t\tuniforms.opacity.value = material.opacity;\n\t\tuniforms.rotation.value = material.rotation;\n\n\t\tif ( material.map ) {\n\n\t\t\tuniforms.map.value = material.map;\n\n\t\t\trefreshTransformUniform( material.map, uniforms.mapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaMap ) {\n\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\n\n\t\t\trefreshTransformUniform( material.alphaMap, uniforms.alphaMapTransform );\n\n\t\t}\n\n\t\tif ( material.alphaTest > 0 ) {\n\n\t\t\tuniforms.alphaTest.value = material.alphaTest;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhong( uniforms, material ) {\n\n\t\tuniforms.specular.value.copy( material.specular );\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\n\n\t}\n\n\tfunction refreshUniformsToon( uniforms, material ) {\n\n\t\tif ( material.gradientMap ) {\n\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsStandard( uniforms, material ) {\n\n\t\tuniforms.metalness.value = material.metalness;\n\n\t\tif ( material.metalnessMap ) {\n\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\n\n\t\t\trefreshTransformUniform( material.metalnessMap, uniforms.metalnessMapTransform );\n\n\t\t}\n\n\t\tuniforms.roughness.value = material.roughness;\n\n\t\tif ( material.roughnessMap ) {\n\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\n\n\t\t\trefreshTransformUniform( material.roughnessMap, uniforms.roughnessMapTransform );\n\n\t\t}\n\n\t\tif ( material.envMap ) {\n\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\n\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsPhysical( uniforms, material, transmissionRenderTarget ) {\n\n\t\tuniforms.ior.value = material.ior; // also part of uniforms common\n\n\t\tif ( material.sheen > 0 ) {\n\n\t\t\tuniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );\n\n\t\t\tuniforms.sheenRoughness.value = material.sheenRoughness;\n\n\t\t\tif ( material.sheenColorMap ) {\n\n\t\t\t\tuniforms.sheenColorMap.value = material.sheenColorMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenColorMap, uniforms.sheenColorMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.sheenRoughnessMap ) {\n\n\t\t\t\tuniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.clearcoat > 0 ) {\n\n\t\t\tuniforms.clearcoat.value = material.clearcoat;\n\t\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n\n\t\t\tif ( material.clearcoatMap ) {\n\n\t\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatMap, uniforms.clearcoatMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatRoughnessMap ) {\n\n\t\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.clearcoatNormalMap ) {\n\n\t\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n\n\t\t\t\trefreshTransformUniform( material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform );\n\n\t\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\n\n\t\t\t\tif ( material.side === BackSide ) {\n\n\t\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.dispersion > 0 ) {\n\n\t\t\tuniforms.dispersion.value = material.dispersion;\n\n\t\t}\n\n\t\tif ( material.iridescence > 0 ) {\n\n\t\t\tuniforms.iridescence.value = material.iridescence;\n\t\t\tuniforms.iridescenceIOR.value = material.iridescenceIOR;\n\t\t\tuniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[ 0 ];\n\t\t\tuniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[ 1 ];\n\n\t\t\tif ( material.iridescenceMap ) {\n\n\t\t\t\tuniforms.iridescenceMap.value = material.iridescenceMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceMap, uniforms.iridescenceMapTransform );\n\n\t\t\t}\n\n\t\t\tif ( material.iridescenceThicknessMap ) {\n\n\t\t\t\tuniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tif ( material.transmission > 0 ) {\n\n\t\t\tuniforms.transmission.value = material.transmission;\n\t\t\tuniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n\t\t\tuniforms.transmissionSamplerSize.value.set( transmissionRenderTarget.width, transmissionRenderTarget.height );\n\n\t\t\tif ( material.transmissionMap ) {\n\n\t\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\n\n\t\t\t\trefreshTransformUniform( material.transmissionMap, uniforms.transmissionMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.thickness.value = material.thickness;\n\n\t\t\tif ( material.thicknessMap ) {\n\n\t\t\t\tuniforms.thicknessMap.value = material.thicknessMap;\n\n\t\t\t\trefreshTransformUniform( material.thicknessMap, uniforms.thicknessMapTransform );\n\n\t\t\t}\n\n\t\t\tuniforms.attenuationDistance.value = material.attenuationDistance;\n\t\t\tuniforms.attenuationColor.value.copy( material.attenuationColor );\n\n\t\t}\n\n\t\tif ( material.anisotropy > 0 ) {\n\n\t\t\tuniforms.anisotropyVector.value.set( material.anisotropy * Math.cos( material.anisotropyRotation ), material.anisotropy * Math.sin( material.anisotropyRotation ) );\n\n\t\t\tif ( material.anisotropyMap ) {\n\n\t\t\t\tuniforms.anisotropyMap.value = material.anisotropyMap;\n\n\t\t\t\trefreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );\n\n\t\t\t}\n\n\t\t}\n\n\t\tuniforms.specularIntensity.value = material.specularIntensity;\n\t\tuniforms.specularColor.value.copy( material.specularColor );\n\n\t\tif ( material.specularColorMap ) {\n\n\t\t\tuniforms.specularColorMap.value = material.specularColorMap;\n\n\t\t\trefreshTransformUniform( material.specularColorMap, uniforms.specularColorMapTransform );\n\n\t\t}\n\n\t\tif ( material.specularIntensityMap ) {\n\n\t\t\tuniforms.specularIntensityMap.value = material.specularIntensityMap;\n\n\t\t\trefreshTransformUniform( material.specularIntensityMap, uniforms.specularIntensityMapTransform );\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsMatcap( uniforms, material ) {\n\n\t\tif ( material.matcap ) {\n\n\t\t\tuniforms.matcap.value = material.matcap;\n\n\t\t}\n\n\t}\n\n\tfunction refreshUniformsDistance( uniforms, material ) {\n\n\t\tconst light = properties.get( material ).light;\n\n\t\tuniforms.referencePosition.value.setFromMatrixPosition( light.matrixWorld );\n\t\tuniforms.nearDistance.value = light.shadow.camera.near;\n\t\tuniforms.farDistance.value = light.shadow.camera.far;\n\n\t}\n\n\treturn {\n\t\trefreshFogUniforms: refreshFogUniforms,\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\n\t};\n\n}\n\nfunction WebGLUniformsGroups( gl, info, capabilities, state ) {\n\n\tlet buffers = {};\n\tlet updateList = {};\n\tlet allocatedBindingPoints = [];\n\n\tconst maxBindingPoints = gl.getParameter( gl.MAX_UNIFORM_BUFFER_BINDINGS ); // binding points are global whereas block indices are per shader program\n\n\tfunction bind( uniformsGroup, program ) {\n\n\t\tconst webglProgram = program.program;\n\t\tstate.uniformBlockBinding( uniformsGroup, webglProgram );\n\n\t}\n\n\tfunction update( uniformsGroup, program ) {\n\n\t\tlet buffer = buffers[ uniformsGroup.id ];\n\n\t\tif ( buffer === undefined ) {\n\n\t\t\tprepareUniformsGroup( uniformsGroup );\n\n\t\t\tbuffer = createBuffer( uniformsGroup );\n\t\t\tbuffers[ uniformsGroup.id ] = buffer;\n\n\t\t\tuniformsGroup.addEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\t}\n\n\t\t// ensure to update the binding points/block indices mapping for this program\n\n\t\tconst webglProgram = program.program;\n\t\tstate.updateUBOMapping( uniformsGroup, webglProgram );\n\n\t\t// update UBO once per frame\n\n\t\tconst frame = info.render.frame;\n\n\t\tif ( updateList[ uniformsGroup.id ] !== frame ) {\n\n\t\t\tupdateBufferData( uniformsGroup );\n\n\t\t\tupdateList[ uniformsGroup.id ] = frame;\n\n\t\t}\n\n\t}\n\n\tfunction createBuffer( uniformsGroup ) {\n\n\t\t// the setup of an UBO is independent of a particular shader program but global\n\n\t\tconst bindingPointIndex = allocateBindingPointIndex();\n\t\tuniformsGroup.__bindingPointIndex = bindingPointIndex;\n\n\t\tconst buffer = gl.createBuffer();\n\t\tconst size = uniformsGroup.__size;\n\t\tconst usage = uniformsGroup.usage;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\t\tgl.bufferData( gl.UNIFORM_BUFFER, size, usage );\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\t\tgl.bindBufferBase( gl.UNIFORM_BUFFER, bindingPointIndex, buffer );\n\n\t\treturn buffer;\n\n\t}\n\n\tfunction allocateBindingPointIndex() {\n\n\t\tfor ( let i = 0; i < maxBindingPoints; i ++ ) {\n\n\t\t\tif ( allocatedBindingPoints.indexOf( i ) === -1 ) {\n\n\t\t\t\tallocatedBindingPoints.push( i );\n\t\t\t\treturn i;\n\n\t\t\t}\n\n\t\t}\n\n\t\tconsole.error( 'THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.' );\n\n\t\treturn 0;\n\n\t}\n\n\tfunction updateBufferData( uniformsGroup ) {\n\n\t\tconst buffer = buffers[ uniformsGroup.id ];\n\t\tconst uniforms = uniformsGroup.uniforms;\n\t\tconst cache = uniformsGroup.__cache;\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, buffer );\n\n\t\tfor ( let i = 0, il = uniforms.length; i < il; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tif ( hasUniformChanged( uniform, i, j, cache ) === true ) {\n\n\t\t\t\t\tconst offset = uniform.__offset;\n\n\t\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\t\tlet arrayOffset = 0;\n\n\t\t\t\t\tfor ( let k = 0; k < values.length; k ++ ) {\n\n\t\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\t\t// TODO add integer and struct support\n\t\t\t\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value;\n\t\t\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data );\n\n\t\t\t\t\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t\t\t\t\t// manually converting 3x3 to 3x4\n\n\t\t\t\t\t\t\tuniform.__data[ 0 ] = value.elements[ 0 ];\n\t\t\t\t\t\t\tuniform.__data[ 1 ] = value.elements[ 1 ];\n\t\t\t\t\t\t\tuniform.__data[ 2 ] = value.elements[ 2 ];\n\t\t\t\t\t\t\tuniform.__data[ 3 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 4 ] = value.elements[ 3 ];\n\t\t\t\t\t\t\tuniform.__data[ 5 ] = value.elements[ 4 ];\n\t\t\t\t\t\t\tuniform.__data[ 6 ] = value.elements[ 5 ];\n\t\t\t\t\t\t\tuniform.__data[ 7 ] = 0;\n\t\t\t\t\t\t\tuniform.__data[ 8 ] = value.elements[ 6 ];\n\t\t\t\t\t\t\tuniform.__data[ 9 ] = value.elements[ 7 ];\n\t\t\t\t\t\t\tuniform.__data[ 10 ] = value.elements[ 8 ];\n\t\t\t\t\t\t\tuniform.__data[ 11 ] = 0;\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\tvalue.toArray( uniform.__data, arrayOffset );\n\n\t\t\t\t\t\t\tarrayOffset += info.storage / Float32Array.BYTES_PER_ELEMENT;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t\tgl.bufferSubData( gl.UNIFORM_BUFFER, offset, uniform.__data );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tgl.bindBuffer( gl.UNIFORM_BUFFER, null );\n\n\t}\n\n\tfunction hasUniformChanged( uniform, index, indexArray, cache ) {\n\n\t\tconst value = uniform.value;\n\t\tconst indexString = index + '_' + indexArray;\n\n\t\tif ( cache[ indexString ] === undefined ) {\n\n\t\t\t// cache entry does not exist so far\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tcache[ indexString ] = value;\n\n\t\t\t} else {\n\n\t\t\t\tcache[ indexString ] = value.clone();\n\n\t\t\t}\n\n\t\t\treturn true;\n\n\t\t} else {\n\n\t\t\tconst cachedObject = cache[ indexString ];\n\n\t\t\t// compare current value with cached entry\n\n\t\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t\tif ( cachedObject !== value ) {\n\n\t\t\t\t\tcache[ indexString ] = value;\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( cachedObject.equals( value ) === false ) {\n\n\t\t\t\t\tcachedObject.copy( value );\n\t\t\t\t\treturn true;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\tfunction prepareUniformsGroup( uniformsGroup ) {\n\n\t\t// determine total buffer size according to the STD140 layout\n\t\t// Hint: STD140 is the only supported layout in WebGL 2\n\n\t\tconst uniforms = uniformsGroup.uniforms;\n\n\t\tlet offset = 0; // global buffer offset in bytes\n\t\tconst chunkSize = 16; // size of a chunk in bytes\n\n\t\tfor ( let i = 0, l = uniforms.length; i < l; i ++ ) {\n\n\t\t\tconst uniformArray = Array.isArray( uniforms[ i ] ) ? uniforms[ i ] : [ uniforms[ i ] ];\n\n\t\t\tfor ( let j = 0, jl = uniformArray.length; j < jl; j ++ ) {\n\n\t\t\t\tconst uniform = uniformArray[ j ];\n\n\t\t\t\tconst values = Array.isArray( uniform.value ) ? uniform.value : [ uniform.value ];\n\n\t\t\t\tfor ( let k = 0, kl = values.length; k < kl; k ++ ) {\n\n\t\t\t\t\tconst value = values[ k ];\n\n\t\t\t\t\tconst info = getUniformSize( value );\n\n\t\t\t\t\tconst chunkOffset = offset % chunkSize; // offset in the current chunk\n\t\t\t\t\tconst chunkPadding = chunkOffset % info.boundary; // required padding to match boundary\n\t\t\t\t\tconst chunkStart = chunkOffset + chunkPadding; // the start position in the current chunk for the data\n\n\t\t\t\t\toffset += chunkPadding;\n\n\t\t\t\t\t// Check for chunk overflow\n\t\t\t\t\tif ( chunkStart !== 0 && ( chunkSize - chunkStart ) < info.storage ) {\n\n\t\t\t\t\t\t// Add padding and adjust offset\n\t\t\t\t\t\toffset += ( chunkSize - chunkStart );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following two properties will be used for partial buffer updates\n\t\t\t\t\tuniform.__data = new Float32Array( info.storage / Float32Array.BYTES_PER_ELEMENT );\n\t\t\t\t\tuniform.__offset = offset;\n\n\t\t\t\t\t// Update the global offset\n\t\t\t\t\toffset += info.storage;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// ensure correct final padding\n\n\t\tconst chunkOffset = offset % chunkSize;\n\n\t\tif ( chunkOffset > 0 ) offset += ( chunkSize - chunkOffset );\n\n\t\t//\n\n\t\tuniformsGroup.__size = offset;\n\t\tuniformsGroup.__cache = {};\n\n\t\treturn this;\n\n\t}\n\n\tfunction getUniformSize( value ) {\n\n\t\tconst info = {\n\t\t\tboundary: 0, // bytes\n\t\t\tstorage: 0 // bytes\n\t\t};\n\n\t\t// determine sizes according to STD140\n\n\t\tif ( typeof value === 'number' || typeof value === 'boolean' ) {\n\n\t\t\t// float/int/bool\n\n\t\t\tinfo.boundary = 4;\n\t\t\tinfo.storage = 4;\n\n\t\t} else if ( value.isVector2 ) {\n\n\t\t\t// vec2\n\n\t\t\tinfo.boundary = 8;\n\t\t\tinfo.storage = 8;\n\n\t\t} else if ( value.isVector3 || value.isColor ) {\n\n\t\t\t// vec3\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 12; // evil: vec3 must start on a 16-byte boundary but it only consumes 12 bytes\n\n\t\t} else if ( value.isVector4 ) {\n\n\t\t\t// vec4\n\n\t\t\tinfo.boundary = 16;\n\t\t\tinfo.storage = 16;\n\n\t\t} else if ( value.isMatrix3 ) {\n\n\t\t\t// mat3 (in STD140 a 3x3 matrix is represented as 3x4)\n\n\t\t\tinfo.boundary = 48;\n\t\t\tinfo.storage = 48;\n\n\t\t} else if ( value.isMatrix4 ) {\n\n\t\t\t// mat4\n\n\t\t\tinfo.boundary = 64;\n\t\t\tinfo.storage = 64;\n\n\t\t} else if ( value.isTexture ) {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.' );\n\n\t\t} else {\n\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Unsupported uniform value type.', value );\n\n\t\t}\n\n\t\treturn info;\n\n\t}\n\n\tfunction onUniformsGroupsDispose( event ) {\n\n\t\tconst uniformsGroup = event.target;\n\n\t\tuniformsGroup.removeEventListener( 'dispose', onUniformsGroupsDispose );\n\n\t\tconst index = allocatedBindingPoints.indexOf( uniformsGroup.__bindingPointIndex );\n\t\tallocatedBindingPoints.splice( index, 1 );\n\n\t\tgl.deleteBuffer( buffers[ uniformsGroup.id ] );\n\n\t\tdelete buffers[ uniformsGroup.id ];\n\t\tdelete updateList[ uniformsGroup.id ];\n\n\t}\n\n\tfunction dispose() {\n\n\t\tfor ( const id in buffers ) {\n\n\t\t\tgl.deleteBuffer( buffers[ id ] );\n\n\t\t}\n\n\t\tallocatedBindingPoints = [];\n\t\tbuffers = {};\n\t\tupdateList = {};\n\n\t}\n\n\treturn {\n\n\t\tbind: bind,\n\t\tupdate: update,\n\n\t\tdispose: dispose\n\n\t};\n\n}\n\nclass WebGLRenderer {\n\n\tconstructor( parameters = {} ) {\n\n\t\tconst {\n\t\t\tcanvas = createCanvasElement(),\n\t\t\tcontext = null,\n\t\t\tdepth = true,\n\t\t\tstencil = false,\n\t\t\talpha = false,\n\t\t\tantialias = false,\n\t\t\tpremultipliedAlpha = true,\n\t\t\tpreserveDrawingBuffer = false,\n\t\t\tpowerPreference = 'default',\n\t\t\tfailIfMajorPerformanceCaveat = false,\n\t\t\treverseDepthBuffer = false,\n\t\t} = parameters;\n\n\t\tthis.isWebGLRenderer = true;\n\n\t\tlet _alpha;\n\n\t\tif ( context !== null ) {\n\n\t\t\tif ( typeof WebGLRenderingContext !== 'undefined' && context instanceof WebGLRenderingContext ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer: WebGL 1 is not supported since r163.' );\n\n\t\t\t}\n\n\t\t\t_alpha = context.getContextAttributes().alpha;\n\n\t\t} else {\n\n\t\t\t_alpha = alpha;\n\n\t\t}\n\n\t\tconst uintClearColor = new Uint32Array( 4 );\n\t\tconst intClearColor = new Int32Array( 4 );\n\n\t\tlet currentRenderList = null;\n\t\tlet currentRenderState = null;\n\n\t\t// render() can be called from within a callback triggered by another render.\n\t\t// We track this so that the nested render call gets its list and state isolated from the parent render call.\n\n\t\tconst renderListStack = [];\n\t\tconst renderStateStack = [];\n\n\t\t// public properties\n\n\t\tthis.domElement = canvas;\n\n\t\t// Debug configuration container\n\t\tthis.debug = {\n\n\t\t\t/**\n\t\t\t * Enables error checking and reporting when shader programs are being compiled\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tcheckShaderErrors: true,\n\t\t\t/**\n\t\t\t * Callback for custom error reporting.\n\t\t\t * @type {?Function}\n\t\t\t */\n\t\t\tonShaderError: null\n\t\t};\n\n\t\t// clearing\n\n\t\tthis.autoClear = true;\n\t\tthis.autoClearColor = true;\n\t\tthis.autoClearDepth = true;\n\t\tthis.autoClearStencil = true;\n\n\t\t// scene graph\n\n\t\tthis.sortObjects = true;\n\n\t\t// user-defined clipping\n\n\t\tthis.clippingPlanes = [];\n\t\tthis.localClippingEnabled = false;\n\n\t\t// physically based shading\n\n\t\tthis._outputColorSpace = SRGBColorSpace;\n\n\t\t// tone mapping\n\n\t\tthis.toneMapping = NoToneMapping;\n\t\tthis.toneMappingExposure = 1.0;\n\n\t\t// internal properties\n\n\t\tconst _this = this;\n\n\t\tlet _isContextLost = false;\n\n\t\t// internal state cache\n\n\t\tlet _currentActiveCubeFace = 0;\n\t\tlet _currentActiveMipmapLevel = 0;\n\t\tlet _currentRenderTarget = null;\n\t\tlet _currentMaterialId = -1;\n\n\t\tlet _currentCamera = null;\n\n\t\tconst _currentViewport = new Vector4();\n\t\tconst _currentScissor = new Vector4();\n\t\tlet _currentScissorTest = null;\n\n\t\tconst _currentClearColor = new Color( 0x000000 );\n\t\tlet _currentClearAlpha = 0;\n\n\t\t//\n\n\t\tlet _width = canvas.width;\n\t\tlet _height = canvas.height;\n\n\t\tlet _pixelRatio = 1;\n\t\tlet _opaqueSort = null;\n\t\tlet _transparentSort = null;\n\n\t\tconst _viewport = new Vector4( 0, 0, _width, _height );\n\t\tconst _scissor = new Vector4( 0, 0, _width, _height );\n\t\tlet _scissorTest = false;\n\n\t\t// frustum\n\n\t\tconst _frustum = new Frustum();\n\n\t\t// clipping\n\n\t\tlet _clippingEnabled = false;\n\t\tlet _localClippingEnabled = false;\n\n\t\t// transmission render target scale\n\t\tthis.transmissionResolutionScale = 1.0;\n\n\t\t// camera matrices cache\n\n\t\tconst _currentProjectionMatrix = new Matrix4();\n\t\tconst _projScreenMatrix = new Matrix4();\n\n\t\tconst _vector3 = new Vector3();\n\n\t\tconst _vector4 = new Vector4();\n\n\t\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n\n\t\tlet _renderBackground = false;\n\n\t\tfunction getTargetPixelRatio() {\n\n\t\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\n\n\t\t}\n\n\t\t// initialize\n\n\t\tlet _gl = context;\n\n\t\tfunction getContext( contextName, contextAttributes ) {\n\n\t\t\treturn canvas.getContext( contextName, contextAttributes );\n\n\t\t}\n\n\t\ttry {\n\n\t\t\tconst contextAttributes = {\n\t\t\t\talpha: true,\n\t\t\t\tdepth,\n\t\t\t\tstencil,\n\t\t\t\tantialias,\n\t\t\t\tpremultipliedAlpha,\n\t\t\t\tpreserveDrawingBuffer,\n\t\t\t\tpowerPreference,\n\t\t\t\tfailIfMajorPerformanceCaveat,\n\t\t\t};\n\n\t\t\t// OffscreenCanvas does not have setAttribute, see #22811\n\t\t\tif ( 'setAttribute' in canvas ) canvas.setAttribute( 'data-engine', `three.js r${REVISION}` );\n\n\t\t\t// event listeners must be registered before WebGL context is created, see #12753\n\t\t\tcanvas.addEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.addEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tif ( _gl === null ) {\n\n\t\t\t\tconst contextName = 'webgl2';\n\n\t\t\t\t_gl = getContext( contextName, contextAttributes );\n\n\t\t\t\tif ( _gl === null ) {\n\n\t\t\t\t\tif ( getContext( contextName ) ) {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t} catch ( error ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\n\t\t\tthrow error;\n\n\t\t}\n\n\t\tlet extensions, capabilities, state, info;\n\t\tlet properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n\t\tlet programCache, materials, renderLists, renderStates, clipping, shadowMap;\n\n\t\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\n\n\t\tlet utils, bindingStates, uniformsGroups;\n\n\t\tfunction initGLContext() {\n\n\t\t\textensions = new WebGLExtensions( _gl );\n\t\t\textensions.init();\n\n\t\t\tutils = new WebGLUtils( _gl, extensions );\n\n\t\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters, utils );\n\n\t\t\tstate = new WebGLState( _gl, extensions );\n\n\t\t\tif ( capabilities.reverseDepthBuffer && reverseDepthBuffer ) {\n\n\t\t\t\tstate.buffers.depth.setReversed( true );\n\n\t\t\t}\n\n\t\t\tinfo = new WebGLInfo( _gl );\n\t\t\tproperties = new WebGLProperties();\n\t\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\n\t\t\tcubemaps = new WebGLCubeMaps( _this );\n\t\t\tcubeuvmaps = new WebGLCubeUVMaps( _this );\n\t\t\tattributes = new WebGLAttributes( _gl );\n\t\t\tbindingStates = new WebGLBindingStates( _gl, attributes );\n\t\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\n\t\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\n\t\t\tmorphtargets = new WebGLMorphtargets( _gl, capabilities, textures );\n\t\t\tclipping = new WebGLClipping( properties );\n\t\t\tprogramCache = new WebGLPrograms( _this, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping );\n\t\t\tmaterials = new WebGLMaterials( _this, properties );\n\t\t\trenderLists = new WebGLRenderLists();\n\t\t\trenderStates = new WebGLRenderStates( extensions );\n\t\t\tbackground = new WebGLBackground( _this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha );\n\t\t\tshadowMap = new WebGLShadowMap( _this, objects, capabilities );\n\t\t\tuniformsGroups = new WebGLUniformsGroups( _gl, info, capabilities, state );\n\n\t\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info );\n\t\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info );\n\n\t\t\tinfo.programs = programCache.programs;\n\n\t\t\t_this.capabilities = capabilities;\n\t\t\t_this.extensions = extensions;\n\t\t\t_this.properties = properties;\n\t\t\t_this.renderLists = renderLists;\n\t\t\t_this.shadowMap = shadowMap;\n\t\t\t_this.state = state;\n\t\t\t_this.info = info;\n\n\t\t}\n\n\t\tinitGLContext();\n\n\t\t// xr\n\n\t\tconst xr = new WebXRManager( _this, _gl );\n\n\t\tthis.xr = xr;\n\n\t\t// API\n\n\t\tthis.getContext = function () {\n\n\t\t\treturn _gl;\n\n\t\t};\n\n\t\tthis.getContextAttributes = function () {\n\n\t\t\treturn _gl.getContextAttributes();\n\n\t\t};\n\n\t\tthis.forceContextLoss = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.loseContext();\n\n\t\t};\n\n\t\tthis.forceContextRestore = function () {\n\n\t\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\n\t\t\tif ( extension ) extension.restoreContext();\n\n\t\t};\n\n\t\tthis.getPixelRatio = function () {\n\n\t\t\treturn _pixelRatio;\n\n\t\t};\n\n\t\tthis.setPixelRatio = function ( value ) {\n\n\t\t\tif ( value === undefined ) return;\n\n\t\t\t_pixelRatio = value;\n\n\t\t\tthis.setSize( _width, _height, false );\n\n\t\t};\n\n\t\tthis.getSize = function ( target ) {\n\n\t\t\treturn target.set( _width, _height );\n\n\t\t};\n\n\t\tthis.setSize = function ( width, height, updateStyle = true ) {\n\n\t\t\tif ( xr.isPresenting ) {\n\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\tcanvas.width = Math.floor( width * _pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * _pixelRatio );\n\n\t\t\tif ( updateStyle === true ) {\n\n\t\t\t\tcanvas.style.width = width + 'px';\n\t\t\t\tcanvas.style.height = height + 'px';\n\n\t\t\t}\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getDrawingBufferSize = function ( target ) {\n\n\t\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\n\n\t\t};\n\n\t\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\n\n\t\t\t_width = width;\n\t\t\t_height = height;\n\n\t\t\t_pixelRatio = pixelRatio;\n\n\t\t\tcanvas.width = Math.floor( width * pixelRatio );\n\t\t\tcanvas.height = Math.floor( height * pixelRatio );\n\n\t\t\tthis.setViewport( 0, 0, width, height );\n\n\t\t};\n\n\t\tthis.getCurrentViewport = function ( target ) {\n\n\t\t\treturn target.copy( _currentViewport );\n\n\t\t};\n\n\t\tthis.getViewport = function ( target ) {\n\n\t\t\treturn target.copy( _viewport );\n\n\t\t};\n\n\t\tthis.setViewport = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_viewport.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissor = function ( target ) {\n\n\t\t\treturn target.copy( _scissor );\n\n\t\t};\n\n\t\tthis.setScissor = function ( x, y, width, height ) {\n\n\t\t\tif ( x.isVector4 ) {\n\n\t\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\n\n\t\t\t} else {\n\n\t\t\t\t_scissor.set( x, y, width, height );\n\n\t\t\t}\n\n\t\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).round() );\n\n\t\t};\n\n\t\tthis.getScissorTest = function () {\n\n\t\t\treturn _scissorTest;\n\n\t\t};\n\n\t\tthis.setScissorTest = function ( boolean ) {\n\n\t\t\tstate.setScissorTest( _scissorTest = boolean );\n\n\t\t};\n\n\t\tthis.setOpaqueSort = function ( method ) {\n\n\t\t\t_opaqueSort = method;\n\n\t\t};\n\n\t\tthis.setTransparentSort = function ( method ) {\n\n\t\t\t_transparentSort = method;\n\n\t\t};\n\n\t\t// Clearing\n\n\t\tthis.getClearColor = function ( target ) {\n\n\t\t\treturn target.copy( background.getClearColor() );\n\n\t\t};\n\n\t\tthis.setClearColor = function () {\n\n\t\t\tbackground.setClearColor( ...arguments );\n\n\t\t};\n\n\t\tthis.getClearAlpha = function () {\n\n\t\t\treturn background.getClearAlpha();\n\n\t\t};\n\n\t\tthis.setClearAlpha = function () {\n\n\t\t\tbackground.setClearAlpha( ...arguments );\n\n\t\t};\n\n\t\tthis.clear = function ( color = true, depth = true, stencil = true ) {\n\n\t\t\tlet bits = 0;\n\n\t\t\tif ( color ) {\n\n\t\t\t\t// check if we're trying to clear an integer target\n\t\t\t\tlet isIntegerFormat = false;\n\t\t\t\tif ( _currentRenderTarget !== null ) {\n\n\t\t\t\t\tconst targetFormat = _currentRenderTarget.texture.format;\n\t\t\t\t\tisIntegerFormat = targetFormat === RGBAIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RGIntegerFormat ||\n\t\t\t\t\t\ttargetFormat === RedIntegerFormat;\n\n\t\t\t\t}\n\n\t\t\t\t// use the appropriate clear functions to clear the target if it's a signed\n\t\t\t\t// or unsigned integer target\n\t\t\t\tif ( isIntegerFormat ) {\n\n\t\t\t\t\tconst targetType = _currentRenderTarget.texture.type;\n\t\t\t\t\tconst isUnsignedType = targetType === UnsignedByteType ||\n\t\t\t\t\t\ttargetType === UnsignedIntType ||\n\t\t\t\t\t\ttargetType === UnsignedShortType ||\n\t\t\t\t\t\ttargetType === UnsignedInt248Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort4444Type ||\n\t\t\t\t\t\ttargetType === UnsignedShort5551Type;\n\n\t\t\t\t\tconst clearColor = background.getClearColor();\n\t\t\t\t\tconst a = background.getClearAlpha();\n\t\t\t\t\tconst r = clearColor.r;\n\t\t\t\t\tconst g = clearColor.g;\n\t\t\t\t\tconst b = clearColor.b;\n\n\t\t\t\t\tif ( isUnsignedType ) {\n\n\t\t\t\t\t\tuintClearColor[ 0 ] = r;\n\t\t\t\t\t\tuintClearColor[ 1 ] = g;\n\t\t\t\t\t\tuintClearColor[ 2 ] = b;\n\t\t\t\t\t\tuintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferuiv( _gl.COLOR, 0, uintClearColor );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tintClearColor[ 0 ] = r;\n\t\t\t\t\t\tintClearColor[ 1 ] = g;\n\t\t\t\t\t\tintClearColor[ 2 ] = b;\n\t\t\t\t\t\tintClearColor[ 3 ] = a;\n\t\t\t\t\t\t_gl.clearBufferiv( _gl.COLOR, 0, intClearColor );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\tbits |= _gl.COLOR_BUFFER_BIT;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( depth ) {\n\n\t\t\t\tbits |= _gl.DEPTH_BUFFER_BIT;\n\n\t\t\t}\n\n\t\t\tif ( stencil ) {\n\n\t\t\t\tbits |= _gl.STENCIL_BUFFER_BIT;\n\t\t\t\tthis.state.buffers.stencil.setMask( 0xffffffff );\n\n\t\t\t}\n\n\t\t\t_gl.clear( bits );\n\n\t\t};\n\n\t\tthis.clearColor = function () {\n\n\t\t\tthis.clear( true, false, false );\n\n\t\t};\n\n\t\tthis.clearDepth = function () {\n\n\t\t\tthis.clear( false, true, false );\n\n\t\t};\n\n\t\tthis.clearStencil = function () {\n\n\t\t\tthis.clear( false, false, true );\n\n\t\t};\n\n\t\t//\n\n\t\tthis.dispose = function () {\n\n\t\t\tcanvas.removeEventListener( 'webglcontextlost', onContextLost, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\n\t\t\tcanvas.removeEventListener( 'webglcontextcreationerror', onContextCreationError, false );\n\n\t\t\tbackground.dispose();\n\t\t\trenderLists.dispose();\n\t\t\trenderStates.dispose();\n\t\t\tproperties.dispose();\n\t\t\tcubemaps.dispose();\n\t\t\tcubeuvmaps.dispose();\n\t\t\tobjects.dispose();\n\t\t\tbindingStates.dispose();\n\t\t\tuniformsGroups.dispose();\n\t\t\tprogramCache.dispose();\n\n\t\t\txr.dispose();\n\n\t\t\txr.removeEventListener( 'sessionstart', onXRSessionStart );\n\t\t\txr.removeEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t\tanimation.stop();\n\n\t\t};\n\n\t\t// Events\n\n\t\tfunction onContextLost( event ) {\n\n\t\t\tevent.preventDefault();\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\n\n\t\t\t_isContextLost = true;\n\n\t\t}\n\n\t\tfunction onContextRestore( /* event */ ) {\n\n\t\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\n\n\t\t\t_isContextLost = false;\n\n\t\t\tconst infoAutoReset = info.autoReset;\n\t\t\tconst shadowMapEnabled = shadowMap.enabled;\n\t\t\tconst shadowMapAutoUpdate = shadowMap.autoUpdate;\n\t\t\tconst shadowMapNeedsUpdate = shadowMap.needsUpdate;\n\t\t\tconst shadowMapType = shadowMap.type;\n\n\t\t\tinitGLContext();\n\n\t\t\tinfo.autoReset = infoAutoReset;\n\t\t\tshadowMap.enabled = shadowMapEnabled;\n\t\t\tshadowMap.autoUpdate = shadowMapAutoUpdate;\n\t\t\tshadowMap.needsUpdate = shadowMapNeedsUpdate;\n\t\t\tshadowMap.type = shadowMapType;\n\n\t\t}\n\n\t\tfunction onContextCreationError( event ) {\n\n\t\t\tconsole.error( 'THREE.WebGLRenderer: A WebGL context could not be created. Reason: ', event.statusMessage );\n\n\t\t}\n\n\t\tfunction onMaterialDispose( event ) {\n\n\t\t\tconst material = event.target;\n\n\t\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\n\n\t\t\tdeallocateMaterial( material );\n\n\t\t}\n\n\t\t// Buffer deallocation\n\n\t\tfunction deallocateMaterial( material ) {\n\n\t\t\treleaseMaterialProgramReferences( material );\n\n\t\t\tproperties.remove( material );\n\n\t\t}\n\n\n\t\tfunction releaseMaterialProgramReferences( material ) {\n\n\t\t\tconst programs = properties.get( material ).programs;\n\n\t\t\tif ( programs !== undefined ) {\n\n\t\t\t\tprograms.forEach( function ( program ) {\n\n\t\t\t\t\tprogramCache.releaseProgram( program );\n\n\t\t\t\t} );\n\n\t\t\t\tif ( material.isShaderMaterial ) {\n\n\t\t\t\t\tprogramCache.releaseShaderCache( material );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\t// Buffer rendering\n\n\t\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\n\n\t\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\n\n\t\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\n\n\t\t\tconst program = setProgram( camera, scene, geometry, material, object );\n\n\t\t\tstate.setMaterial( material, frontFaceCW );\n\n\t\t\t//\n\n\t\t\tlet index = geometry.index;\n\t\t\tlet rangeFactor = 1;\n\n\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\tindex = geometries.getWireframeAttribute( geometry );\n\n\t\t\t\tif ( index === undefined ) return;\n\n\t\t\t\trangeFactor = 2;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tconst drawRange = geometry.drawRange;\n\t\t\tconst position = geometry.attributes.position;\n\n\t\t\tlet drawStart = drawRange.start * rangeFactor;\n\t\t\tlet drawEnd = ( drawRange.start + drawRange.count ) * rangeFactor;\n\n\t\t\tif ( group !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, group.start * rangeFactor );\n\t\t\t\tdrawEnd = Math.min( drawEnd, ( group.start + group.count ) * rangeFactor );\n\n\t\t\t}\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, index.count );\n\n\t\t\t} else if ( position !== undefined && position !== null ) {\n\n\t\t\t\tdrawStart = Math.max( drawStart, 0 );\n\t\t\t\tdrawEnd = Math.min( drawEnd, position.count );\n\n\t\t\t}\n\n\t\t\tconst drawCount = drawEnd - drawStart;\n\n\t\t\tif ( drawCount < 0 || drawCount === Infinity ) return;\n\n\t\t\t//\n\n\t\t\tbindingStates.setup( object, material, program, geometry, index );\n\n\t\t\tlet attribute;\n\t\t\tlet renderer = bufferRenderer;\n\n\t\t\tif ( index !== null ) {\n\n\t\t\t\tattribute = attributes.get( index );\n\n\t\t\t\trenderer = indexedBufferRenderer;\n\t\t\t\trenderer.setIndex( attribute );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( object.isMesh ) {\n\n\t\t\t\tif ( material.wireframe === true ) {\n\n\t\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isLine ) {\n\n\t\t\t\tlet lineWidth = material.linewidth;\n\n\t\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\n\n\t\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\n\n\t\t\t\tif ( object.isLineSegments ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINES );\n\n\t\t\t\t} else if ( object.isLineLoop ) {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_LOOP );\n\n\t\t\t\t} else {\n\n\t\t\t\t\trenderer.setMode( _gl.LINE_STRIP );\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isPoints ) {\n\n\t\t\t\trenderer.setMode( _gl.POINTS );\n\n\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\trenderer.setMode( _gl.TRIANGLES );\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tif ( object._multiDrawInstances !== null ) {\n\n\t\t\t\t\t// @deprecated, r174\n\t\t\t\t\twarnOnce( 'THREE.WebGLRenderer: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );\n\t\t\t\t\trenderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( ! extensions.get( 'WEBGL_multi_draw' ) ) {\n\n\t\t\t\t\t\tconst starts = object._multiDrawStarts;\n\t\t\t\t\t\tconst counts = object._multiDrawCounts;\n\t\t\t\t\t\tconst drawCount = object._multiDrawCount;\n\t\t\t\t\t\tconst bytesPerElement = index ? attributes.get( index ).bytesPerElement : 1;\n\t\t\t\t\t\tconst uniforms = properties.get( material ).currentProgram.getUniforms();\n\t\t\t\t\t\tfor ( let i = 0; i < drawCount; i ++ ) {\n\n\t\t\t\t\t\t\tuniforms.setValue( _gl, '_gl_DrawID', i );\n\t\t\t\t\t\t\trenderer.render( starts[ i ] / bytesPerElement, counts[ i ] );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\trenderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} else if ( object.isInstancedMesh ) {\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\n\n\t\t\t} else if ( geometry.isInstancedBufferGeometry ) {\n\n\t\t\t\tconst maxInstanceCount = geometry._maxInstanceCount !== undefined ? geometry._maxInstanceCount : Infinity;\n\t\t\t\tconst instanceCount = Math.min( geometry.instanceCount, maxInstanceCount );\n\n\t\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\n\n\t\t\t} else {\n\n\t\t\t\trenderer.render( drawStart, drawCount );\n\n\t\t\t}\n\n\t\t};\n\n\t\t// Compile\n\n\t\tfunction prepareMaterial( material, scene, object ) {\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\tgetProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.compile = function ( scene, camera, targetScene = null ) {\n\n\t\t\tif ( targetScene === null ) targetScene = scene;\n\n\t\t\tcurrentRenderState = renderStates.get( targetScene );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t// gather lights from both the target scene and the new object that will be added to the scene.\n\n\t\t\ttargetScene.traverseVisible( function ( object ) {\n\n\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tif ( scene !== targetScene ) {\n\n\t\t\t\tscene.traverseVisible( function ( object ) {\n\n\t\t\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t\tcurrentRenderState.setupLights();\n\n\t\t\t// Only initialize materials in the new scene, not the targetScene.\n\n\t\t\tconst materials = new Set();\n\n\t\t\tscene.traverse( function ( object ) {\n\n\t\t\t\tif ( ! ( object.isMesh || object.isPoints || object.isLine || object.isSprite ) ) {\n\n\t\t\t\t\treturn;\n\n\t\t\t\t}\n\n\t\t\t\tconst material = object.material;\n\n\t\t\t\tif ( material ) {\n\n\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\n\n\t\t\t\t\t\t\tconst material2 = material[ i ];\n\n\t\t\t\t\t\t\tprepareMaterial( material2, targetScene, object );\n\t\t\t\t\t\t\tmaterials.add( material2 );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tprepareMaterial( material, targetScene, object );\n\t\t\t\t\t\tmaterials.add( material );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t\tcurrentRenderState = renderStateStack.pop();\n\n\t\t\treturn materials;\n\n\t\t};\n\n\t\t// compileAsync\n\n\t\tthis.compileAsync = function ( scene, camera, targetScene = null ) {\n\n\t\t\tconst materials = this.compile( scene, camera, targetScene );\n\n\t\t\t// Wait for all the materials in the new object to indicate that they're\n\t\t\t// ready to be used before resolving the promise.\n\n\t\t\treturn new Promise( ( resolve ) => {\n\n\t\t\t\tfunction checkMaterialsReady() {\n\n\t\t\t\t\tmaterials.forEach( function ( material ) {\n\n\t\t\t\t\t\tconst materialProperties = properties.get( material );\n\t\t\t\t\t\tconst program = materialProperties.currentProgram;\n\n\t\t\t\t\t\tif ( program.isReady() ) {\n\n\t\t\t\t\t\t\t// remove any programs that report they're ready to use from the list\n\t\t\t\t\t\t\tmaterials.delete( material );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t} );\n\n\t\t\t\t\t// once the list of compiling materials is empty, call the callback\n\n\t\t\t\t\tif ( materials.size === 0 ) {\n\n\t\t\t\t\t\tresolve( scene );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// if some materials are still not ready, wait a bit and check again\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t\tif ( extensions.get( 'KHR_parallel_shader_compile' ) !== null ) {\n\n\t\t\t\t\t// If we can check the compilation status of the materials without\n\t\t\t\t\t// blocking then do so right away.\n\n\t\t\t\t\tcheckMaterialsReady();\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// Otherwise start by waiting a bit to give the materials we just\n\t\t\t\t\t// initialized a chance to finish.\n\n\t\t\t\t\tsetTimeout( checkMaterialsReady, 10 );\n\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t};\n\n\t\t// Animation Loop\n\n\t\tlet onAnimationFrameCallback = null;\n\n\t\tfunction onAnimationFrame( time ) {\n\n\t\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\n\n\t\t}\n\n\t\tfunction onXRSessionStart() {\n\n\t\t\tanimation.stop();\n\n\t\t}\n\n\t\tfunction onXRSessionEnd() {\n\n\t\t\tanimation.start();\n\n\t\t}\n\n\t\tconst animation = new WebGLAnimation();\n\t\tanimation.setAnimationLoop( onAnimationFrame );\n\n\t\tif ( typeof self !== 'undefined' ) animation.setContext( self );\n\n\t\tthis.setAnimationLoop = function ( callback ) {\n\n\t\t\tonAnimationFrameCallback = callback;\n\t\t\txr.setAnimationLoop( callback );\n\n\t\t\t( callback === null ) ? animation.stop() : animation.start();\n\n\t\t};\n\n\t\txr.addEventListener( 'sessionstart', onXRSessionStart );\n\t\txr.addEventListener( 'sessionend', onXRSessionEnd );\n\n\t\t// Rendering\n\n\t\tthis.render = function ( scene, camera ) {\n\n\t\t\tif ( camera !== undefined && camera.isCamera !== true ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( _isContextLost === true ) return;\n\n\t\t\t// update scene graph\n\n\t\t\tif ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();\n\n\t\t\t// update camera matrices and frustum\n\n\t\t\tif ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tif ( xr.cameraAutoUpdate === true ) xr.updateCamera( camera );\n\n\t\t\t\tcamera = xr.getCamera(); // use XR camera for rendering\n\n\t\t\t}\n\n\t\t\t//\n\t\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, _currentRenderTarget );\n\n\t\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\n\t\t\tcurrentRenderState.init( camera );\n\n\t\t\trenderStateStack.push( currentRenderState );\n\n\t\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\n\t\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\n\n\t\t\t_localClippingEnabled = this.localClippingEnabled;\n\t\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled );\n\n\t\t\tcurrentRenderList = renderLists.get( scene, renderListStack.length );\n\t\t\tcurrentRenderList.init();\n\n\t\t\trenderListStack.push( currentRenderList );\n\n\t\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\n\n\t\t\t\tconst depthSensingMesh = _this.xr.getDepthSensingMesh();\n\n\t\t\t\tif ( depthSensingMesh !== null ) {\n\n\t\t\t\t\tprojectObject( depthSensingMesh, camera, - Infinity, _this.sortObjects );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tprojectObject( scene, camera, 0, _this.sortObjects );\n\n\t\t\tcurrentRenderList.finish();\n\n\t\t\tif ( _this.sortObjects === true ) {\n\n\t\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\n\n\t\t\t}\n\n\t\t\t_renderBackground = xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false;\n\t\t\tif ( _renderBackground ) {\n\n\t\t\t\tbackground.addToRenderList( currentRenderList, scene );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tthis.info.render.frame ++;\n\n\t\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\n\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tshadowMap.render( shadowsArray, scene, camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.endShadows();\n\n\t\t\t//\n\n\t\t\tif ( this.info.autoReset === true ) this.info.reset();\n\n\t\t\t// render scene\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\n\t\t\tcurrentRenderState.setupLights();\n\n\t\t\tif ( camera.isArrayCamera ) {\n\n\t\t\t\tconst cameras = camera.cameras;\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) {\n\n\t\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\t\trenderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t\tfor ( let i = 0, l = cameras.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst camera2 = cameras[ i ];\n\n\t\t\t\t\trenderScene( currentRenderList, scene, camera2, camera2.viewport );\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tif ( transmissiveObjects.length > 0 ) renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera );\n\n\t\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t\trenderScene( currentRenderList, scene, camera );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( _currentRenderTarget !== null && _currentActiveMipmapLevel === 0 ) {\n\n\t\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\n\n\t\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\n\n\t\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\n\n\t\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\n\n\t\t\t// _gl.finish();\n\n\t\t\tbindingStates.resetDefaultState();\n\t\t\t_currentMaterialId = -1;\n\t\t\t_currentCamera = null;\n\n\t\t\trenderStateStack.pop();\n\n\t\t\tif ( renderStateStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\n\n\t\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, currentRenderState.state.camera );\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderState = null;\n\n\t\t\t}\n\n\t\t\trenderListStack.pop();\n\n\t\t\tif ( renderListStack.length > 0 ) {\n\n\t\t\t\tcurrentRenderList = renderListStack[ renderListStack.length - 1 ];\n\n\t\t\t} else {\n\n\t\t\t\tcurrentRenderList = null;\n\n\t\t\t}\n\n\t\t};\n\n\t\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\n\n\t\t\tif ( object.visible === false ) return;\n\n\t\t\tconst visible = object.layers.test( camera.layers );\n\n\t\t\tif ( visible ) {\n\n\t\t\t\tif ( object.isGroup ) {\n\n\t\t\t\t\tgroupOrder = object.renderOrder;\n\n\t\t\t\t} else if ( object.isLOD ) {\n\n\t\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\n\n\t\t\t\t} else if ( object.isLight ) {\n\n\t\t\t\t\tcurrentRenderState.pushLight( object );\n\n\t\t\t\t\tif ( object.castShadow ) {\n\n\t\t\t\t\t\tcurrentRenderState.pushShadow( object );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isSprite ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\t_vector4.setFromMatrixPosition( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\n\n\t\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\n\n\t\t\t\t\t\tconst geometry = objects.update( object );\n\t\t\t\t\t\tconst material = object.material;\n\n\t\t\t\t\t\tif ( sortObjects ) {\n\n\t\t\t\t\t\t\tif ( object.boundingSphere !== undefined ) {\n\n\t\t\t\t\t\t\t\tif ( object.boundingSphere === null ) object.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector4.copy( object.boundingSphere.center );\n\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\n\t\t\t\t\t\t\t\t_vector4.copy( geometry.boundingSphere.center );\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t_vector4\n\t\t\t\t\t\t\t\t.applyMatrix4( object.matrixWorld )\n\t\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ( Array.isArray( material ) ) {\n\n\t\t\t\t\t\t\tconst groups = geometry.groups;\n\n\t\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\t\t\t\tconst group = groups[ i ];\n\t\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\n\n\t\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\n\n\t\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector4.z, group );\n\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else if ( material.visible ) {\n\n\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector4.z, null );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst children = object.children;\n\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\n\n\t\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderScene( currentRenderList, scene, camera, viewport ) {\n\n\t\t\tconst opaqueObjects = currentRenderList.opaque;\n\t\t\tconst transmissiveObjects = currentRenderList.transmissive;\n\t\t\tconst transparentObjects = currentRenderList.transparent;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\tif ( viewport ) state.viewport( _currentViewport.copy( viewport ) );\n\n\t\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\n\t\t\tif ( transmissiveObjects.length > 0 ) renderObjects( transmissiveObjects, scene, camera );\n\t\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\n\n\t\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\n\n\t\t\tstate.buffers.depth.setTest( true );\n\t\t\tstate.buffers.depth.setMask( true );\n\t\t\tstate.buffers.color.setMask( true );\n\n\t\t\tstate.setPolygonOffset( false );\n\n\t\t}\n\n\t\tfunction renderTransmissionPass( opaqueObjects, transmissiveObjects, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tif ( overrideMaterial !== null ) {\n\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tif ( currentRenderState.state.transmissionRenderTarget[ camera.id ] === undefined ) {\n\n\t\t\t\tcurrentRenderState.state.transmissionRenderTarget[ camera.id ] = new WebGLRenderTarget( 1, 1, {\n\t\t\t\t\tgenerateMipmaps: true,\n\t\t\t\t\ttype: ( extensions.has( 'EXT_color_buffer_half_float' ) || extensions.has( 'EXT_color_buffer_float' ) ) ? HalfFloatType : UnsignedByteType,\n\t\t\t\t\tminFilter: LinearMipmapLinearFilter,\n\t\t\t\t\tsamples: 4,\n\t\t\t\t\tstencilBuffer: stencil,\n\t\t\t\t\tresolveDepthBuffer: false,\n\t\t\t\t\tresolveStencilBuffer: false,\n\t\t\t\t\tcolorSpace: ColorManagement.workingColorSpace,\n\t\t\t\t} );\n\n\t\t\t\t// debug\n\n\t\t\t\t/*\n\t\t\t\tconst geometry = new PlaneGeometry();\n\t\t\t\tconst material = new MeshBasicMaterial( { map: _transmissionRenderTarget.texture } );\n\n\t\t\t\tconst mesh = new Mesh( geometry, material );\n\t\t\t\tscene.add( mesh );\n\t\t\t\t*/\n\n\t\t\t}\n\n\t\t\tconst transmissionRenderTarget = currentRenderState.state.transmissionRenderTarget[ camera.id ];\n\n\t\t\tconst activeViewport = camera.viewport || _currentViewport;\n\t\t\ttransmissionRenderTarget.setSize( activeViewport.z * _this.transmissionResolutionScale, activeViewport.w * _this.transmissionResolutionScale );\n\n\t\t\t//\n\n\t\t\tconst currentRenderTarget = _this.getRenderTarget();\n\t\t\t_this.setRenderTarget( transmissionRenderTarget );\n\n\t\t\t_this.getClearColor( _currentClearColor );\n\t\t\t_currentClearAlpha = _this.getClearAlpha();\n\t\t\tif ( _currentClearAlpha < 1 ) _this.setClearColor( 0xffffff, 0.5 );\n\n\t\t\t_this.clear();\n\n\t\t\tif ( _renderBackground ) background.render( scene );\n\n\t\t\t// Turn off the features which can affect the frag color for opaque objects pass.\n\t\t\t// Otherwise they are applied twice in opaque objects pass and transmission objects pass.\n\t\t\tconst currentToneMapping = _this.toneMapping;\n\t\t\t_this.toneMapping = NoToneMapping;\n\n\t\t\t// Remove viewport from camera to avoid nested render calls resetting viewport to it (e.g Reflector).\n\t\t\t// Transmission render pass requires viewport to match the transmissionRenderTarget.\n\t\t\tconst currentCameraViewport = camera.viewport;\n\t\t\tif ( camera.viewport !== undefined ) camera.viewport = undefined;\n\n\t\t\tcurrentRenderState.setupLightsView( camera );\n\n\t\t\tif ( _clippingEnabled === true ) clipping.setGlobalState( _this.clippingPlanes, camera );\n\n\t\t\trenderObjects( opaqueObjects, scene, camera );\n\n\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === false ) { // see #28131\n\n\t\t\t\tlet renderTargetNeedsUpdate = false;\n\n\t\t\t\tfor ( let i = 0, l = transmissiveObjects.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst renderItem = transmissiveObjects[ i ];\n\n\t\t\t\t\tconst object = renderItem.object;\n\t\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\t\tconst material = renderItem.material;\n\t\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\t\tif ( material.side === DoubleSide && object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\t\tconst currentSide = material.side;\n\n\t\t\t\t\t\tmaterial.side = BackSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t\t\tmaterial.side = currentSide;\n\t\t\t\t\t\tmaterial.needsUpdate = true;\n\n\t\t\t\t\t\trenderTargetNeedsUpdate = true;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif ( renderTargetNeedsUpdate === true ) {\n\n\t\t\t\t\ttextures.updateMultisampleRenderTarget( transmissionRenderTarget );\n\t\t\t\t\ttextures.updateRenderTargetMipmap( transmissionRenderTarget );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t_this.setRenderTarget( currentRenderTarget );\n\n\t\t\t_this.setClearColor( _currentClearColor, _currentClearAlpha );\n\n\t\t\tif ( currentCameraViewport !== undefined ) camera.viewport = currentCameraViewport;\n\n\t\t\t_this.toneMapping = currentToneMapping;\n\n\t\t}\n\n\t\tfunction renderObjects( renderList, scene, camera ) {\n\n\t\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n\n\t\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\n\n\t\t\t\tconst renderItem = renderList[ i ];\n\n\t\t\t\tconst object = renderItem.object;\n\t\t\t\tconst geometry = renderItem.geometry;\n\t\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n\t\t\t\tconst group = renderItem.group;\n\n\t\t\t\tif ( object.layers.test( camera.layers ) ) {\n\n\t\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tfunction renderObject( object, scene, camera, geometry, material, group ) {\n\n\t\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\n\n\t\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\n\t\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\n\n\t\t\tmaterial.onBeforeRender( _this, scene, camera, geometry, object, group );\n\n\t\t\tif ( material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false ) {\n\n\t\t\t\tmaterial.side = BackSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = FrontSide;\n\t\t\t\tmaterial.needsUpdate = true;\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t\tmaterial.side = DoubleSide;\n\n\t\t\t} else {\n\n\t\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\n\n\t\t\t}\n\n\t\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\n\n\t\t}\n\n\t\tfunction getProgram( material, scene, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tconst lights = currentRenderState.state.lights;\n\t\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\n\n\t\t\tconst lightsStateVersion = lights.state.version;\n\n\t\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\n\t\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\n\n\t\t\tlet programs = materialProperties.programs;\n\n\t\t\t// always update environment and fog - changing these trigger an getProgram call, but it's possible that the program doesn't change\n\n\t\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tmaterialProperties.fog = scene.fog;\n\t\t\tmaterialProperties.envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || materialProperties.environment );\n\t\t\tmaterialProperties.envMapRotation = ( materialProperties.environment !== null && material.envMap === null ) ? scene.environmentRotation : material.envMapRotation;\n\n\t\t\tif ( programs === undefined ) {\n\n\t\t\t\t// new material\n\n\t\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\n\n\t\t\t\tprograms = new Map();\n\t\t\t\tmaterialProperties.programs = programs;\n\n\t\t\t}\n\n\t\t\tlet program = programs.get( programCacheKey );\n\n\t\t\tif ( program !== undefined ) {\n\n\t\t\t\t// early out if program and light state is identical\n\n\t\t\t\tif ( materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion ) {\n\n\t\t\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t\t\treturn program;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tparameters.uniforms = programCache.getUniforms( material );\n\n\t\t\t\tmaterial.onBeforeCompile( parameters, _this );\n\n\t\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\n\t\t\t\tprograms.set( programCacheKey, program );\n\n\t\t\t\tmaterialProperties.uniforms = parameters.uniforms;\n\n\t\t\t}\n\n\t\t\tconst uniforms = materialProperties.uniforms;\n\n\t\t\tif ( ( ! material.isShaderMaterial && ! material.isRawShaderMaterial ) || material.clipping === true ) {\n\n\t\t\t\tuniforms.clippingPlanes = clipping.uniform;\n\n\t\t\t}\n\n\t\t\tupdateCommonMaterialProperties( material, parameters );\n\n\t\t\t// store the light setup it was created for\n\n\t\t\tmaterialProperties.needsLights = materialNeedsLights( material );\n\t\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\n\n\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t// wire up the material to this renderer's lighting state\n\n\t\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\n\t\t\t\tuniforms.lightProbe.value = lights.state.probe;\n\t\t\t\tuniforms.directionalLights.value = lights.state.directional;\n\t\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\n\t\t\t\tuniforms.spotLights.value = lights.state.spot;\n\t\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\n\t\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\n\t\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\n\t\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\n\t\t\t\tuniforms.pointLights.value = lights.state.point;\n\t\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\n\t\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\n\n\t\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n\t\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n\t\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\n\t\t\t\tuniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n\t\t\t\tuniforms.spotLightMap.value = lights.state.spotLightMap;\n\t\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\n\t\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n\t\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\n\n\t\t\t}\n\n\t\t\tmaterialProperties.currentProgram = program;\n\t\t\tmaterialProperties.uniformsList = null;\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\tfunction getUniformList( materialProperties ) {\n\n\t\t\tif ( materialProperties.uniformsList === null ) {\n\n\t\t\t\tconst progUniforms = materialProperties.currentProgram.getUniforms();\n\t\t\t\tmaterialProperties.uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, materialProperties.uniforms );\n\n\t\t\t}\n\n\t\t\treturn materialProperties.uniformsList;\n\n\t\t}\n\n\t\tfunction updateCommonMaterialProperties( material, parameters ) {\n\n\t\t\tconst materialProperties = properties.get( material );\n\n\t\t\tmaterialProperties.outputColorSpace = parameters.outputColorSpace;\n\t\t\tmaterialProperties.batching = parameters.batching;\n\t\t\tmaterialProperties.batchingColor = parameters.batchingColor;\n\t\t\tmaterialProperties.instancing = parameters.instancing;\n\t\t\tmaterialProperties.instancingColor = parameters.instancingColor;\n\t\t\tmaterialProperties.instancingMorph = parameters.instancingMorph;\n\t\t\tmaterialProperties.skinning = parameters.skinning;\n\t\t\tmaterialProperties.morphTargets = parameters.morphTargets;\n\t\t\tmaterialProperties.morphNormals = parameters.morphNormals;\n\t\t\tmaterialProperties.morphColors = parameters.morphColors;\n\t\t\tmaterialProperties.morphTargetsCount = parameters.morphTargetsCount;\n\t\t\tmaterialProperties.numClippingPlanes = parameters.numClippingPlanes;\n\t\t\tmaterialProperties.numIntersection = parameters.numClipIntersection;\n\t\t\tmaterialProperties.vertexAlphas = parameters.vertexAlphas;\n\t\t\tmaterialProperties.vertexTangents = parameters.vertexTangents;\n\t\t\tmaterialProperties.toneMapping = parameters.toneMapping;\n\n\t\t}\n\n\t\tfunction setProgram( camera, scene, geometry, material, object ) {\n\n\t\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\n\n\t\t\ttextures.resetTextureUnits();\n\n\t\t\tconst fog = scene.fog;\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\n\t\t\tconst colorSpace = ( _currentRenderTarget === null ) ? _this.outputColorSpace : ( _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace );\n\t\t\tconst envMap = ( material.isMeshStandardMaterial ? cubeuvmaps : cubemaps ).get( material.envMap || environment );\n\t\t\tconst vertexAlphas = material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n\t\t\tconst vertexTangents = !! geometry.attributes.tangent && ( !! material.normalMap || material.anisotropy > 0 );\n\t\t\tconst morphTargets = !! geometry.morphAttributes.position;\n\t\t\tconst morphNormals = !! geometry.morphAttributes.normal;\n\t\t\tconst morphColors = !! geometry.morphAttributes.color;\n\n\t\t\tlet toneMapping = NoToneMapping;\n\n\t\t\tif ( material.toneMapped ) {\n\n\t\t\t\tif ( _currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true ) {\n\n\t\t\t\t\ttoneMapping = _this.toneMapping;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n\t\t\tconst morphTargetsCount = ( morphAttribute !== undefined ) ? morphAttribute.length : 0;\n\n\t\t\tconst materialProperties = properties.get( material );\n\t\t\tconst lights = currentRenderState.state.lights;\n\n\t\t\tif ( _clippingEnabled === true ) {\n\n\t\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\n\n\t\t\t\t\tconst useCache =\n\t\t\t\t\t\tcamera === _currentCamera &&\n\t\t\t\t\t\tmaterial.id === _currentMaterialId;\n\n\t\t\t\t\t// we might want to call this function with some ClippingGroup\n\t\t\t\t\t// object instead of the material, once it becomes feasible\n\t\t\t\t\t// (#8465, #8379)\n\t\t\t\t\tclipping.setState( material, camera, useCache );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet needsProgramChange = false;\n\n\t\t\tif ( material.version === materialProperties.__version ) {\n\n\t\t\t\tif ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.outputColorSpace !== colorSpace ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batching === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isBatchedMesh && materialProperties.batching === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batchingColor === true && object.colorTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isBatchedMesh && materialProperties.batchingColor === false && object.colorTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancing === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isInstancedMesh && materialProperties.instancing === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isSkinnedMesh && materialProperties.skinning === false ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( ! object.isSkinnedMesh && materialProperties.skinning === true ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === true && object.morphTexture === null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( object.isInstancedMesh && materialProperties.instancingMorph === false && object.morphTexture !== null ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.envMap !== envMap ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( material.fog === true && materialProperties.fog !== fog ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\n\t\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\n\t\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexAlphas !== vertexAlphas ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.vertexTangents !== vertexTangents ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargets !== morphTargets ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphNormals !== morphNormals ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphColors !== morphColors ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.toneMapping !== toneMapping ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t} else if ( materialProperties.morphTargetsCount !== morphTargetsCount ) {\n\n\t\t\t\t\tneedsProgramChange = true;\n\n\t\t\t\t}\n\n\t\t\t} else {\n\n\t\t\t\tneedsProgramChange = true;\n\t\t\t\tmaterialProperties.__version = material.version;\n\n\t\t\t}\n\n\t\t\t//\n\n\t\t\tlet program = materialProperties.currentProgram;\n\n\t\t\tif ( needsProgramChange === true ) {\n\n\t\t\t\tprogram = getProgram( material, scene, object );\n\n\t\t\t}\n\n\t\t\tlet refreshProgram = false;\n\t\t\tlet refreshMaterial = false;\n\t\t\tlet refreshLights = false;\n\n\t\t\tconst p_uniforms = program.getUniforms(),\n\t\t\t\tm_uniforms = materialProperties.uniforms;\n\n\t\t\tif ( state.useProgram( program.program ) ) {\n\n\t\t\t\trefreshProgram = true;\n\t\t\t\trefreshMaterial = true;\n\t\t\t\trefreshLights = true;\n\n\t\t\t}\n\n\t\t\tif ( material.id !== _currentMaterialId ) {\n\n\t\t\t\t_currentMaterialId = material.id;\n\n\t\t\t\trefreshMaterial = true;\n\n\t\t\t}\n\n\t\t\tif ( refreshProgram || _currentCamera !== camera ) {\n\n\t\t\t\t// common camera uniforms\n\n\t\t\t\tconst reverseDepthBuffer = state.buffers.depth.getReversed();\n\n\t\t\t\tif ( reverseDepthBuffer ) {\n\n\t\t\t\t\t_currentProjectionMatrix.copy( camera.projectionMatrix );\n\n\t\t\t\t\ttoNormalizedProjectionMatrix( _currentProjectionMatrix );\n\t\t\t\t\ttoReversedProjectionMatrix( _currentProjectionMatrix );\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', _currentProjectionMatrix );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\n\n\t\t\t\t}\n\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\n\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\n\n\t\t\t\tif ( uCamPos !== undefined ) {\n\n\t\t\t\t\tuCamPos.setValue( _gl, _vector3.setFromMatrixPosition( camera.matrixWorld ) );\n\n\t\t\t\t}\n\n\t\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\n\t\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\n\n\t\t\t\t}\n\n\t\t\t\t// consider moving isOrthographic to UniformLib and WebGLMaterials, see https://github.com/mrdoob/three.js/pull/26467#issuecomment-1645185067\n\n\t\t\t\tif ( material.isMeshPhongMaterial ||\n\t\t\t\t\tmaterial.isMeshToonMaterial ||\n\t\t\t\t\tmaterial.isMeshLambertMaterial ||\n\t\t\t\t\tmaterial.isMeshBasicMaterial ||\n\t\t\t\t\tmaterial.isMeshStandardMaterial ||\n\t\t\t\t\tmaterial.isShaderMaterial ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\n\n\t\t\t\t}\n\n\t\t\t\tif ( _currentCamera !== camera ) {\n\n\t\t\t\t\t_currentCamera = camera;\n\n\t\t\t\t\t// lighting uniforms depend on the camera so enforce an update\n\t\t\t\t\t// now, in case this material supports lights - or later, when\n\t\t\t\t\t// the next material that does gets activated:\n\n\t\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\n\t\t\t\t\trefreshLights = true;\t\t// remains set until update done\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// skinning and morph target uniforms must be set even if material didn't change\n\t\t\t// auto-setting of texture unit for bone and morph texture must go before other textures\n\t\t\t// otherwise textures used for skinning and morphing can take over texture units reserved for other material textures\n\n\t\t\tif ( object.isSkinnedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\n\n\t\t\t\tconst skeleton = object.skeleton;\n\n\t\t\t\tif ( skeleton ) {\n\n\t\t\t\t\tif ( skeleton.boneTexture === null ) skeleton.computeBoneTexture();\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tif ( object.isBatchedMesh ) {\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingTexture', object._matricesTexture, textures );\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingIdTexture' );\n\t\t\t\tp_uniforms.setValue( _gl, 'batchingIdTexture', object._indirectTexture, textures );\n\n\t\t\t\tp_uniforms.setOptional( _gl, object, 'batchingColorTexture' );\n\t\t\t\tif ( object._colorsTexture !== null ) {\n\n\t\t\t\t\tp_uniforms.setValue( _gl, 'batchingColorTexture', object._colorsTexture, textures );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tconst morphAttributes = geometry.morphAttributes;\n\n\t\t\tif ( morphAttributes.position !== undefined || morphAttributes.normal !== undefined || ( morphAttributes.color !== undefined ) ) {\n\n\t\t\t\tmorphtargets.update( object, geometry, program );\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\n\n\t\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\n\t\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\n\n\t\t\t}\n\n\t\t\t// https://github.com/mrdoob/three.js/pull/24467#issuecomment-1209031512\n\n\t\t\tif ( material.isMeshGouraudMaterial && material.envMap !== null ) {\n\n\t\t\t\tm_uniforms.envMap.value = envMap;\n\n\t\t\t\tm_uniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap.isRenderTargetTexture === false ) ? -1 : 1;\n\n\t\t\t}\n\n\t\t\tif ( material.isMeshStandardMaterial && material.envMap === null && scene.environment !== null ) {\n\n\t\t\t\tm_uniforms.envMapIntensity.value = scene.environmentIntensity;\n\n\t\t\t}\n\n\t\t\tif ( refreshMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\n\n\t\t\t\tif ( materialProperties.needsLights ) {\n\n\t\t\t\t\t// the current material requires lighting info\n\n\t\t\t\t\t// note: all lighting uniforms are always set correctly\n\t\t\t\t\t// they simply reference the renderer's state for their\n\t\t\t\t\t// values\n\t\t\t\t\t//\n\t\t\t\t\t// use the current material's .needsUpdate flags to set\n\t\t\t\t\t// the GL state when required\n\n\t\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\n\n\t\t\t\t}\n\n\t\t\t\t// refresh uniforms common to several materials\n\n\t\t\t\tif ( fog && material.fog === true ) {\n\n\t\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\n\n\t\t\t\t}\n\n\t\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height, currentRenderState.state.transmissionRenderTarget[ camera.id ] );\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\n\t\t\t}\n\n\t\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\n\n\t\t\t\tWebGLUniforms.upload( _gl, getUniformList( materialProperties ), m_uniforms, textures );\n\t\t\t\tmaterial.uniformsNeedUpdate = false;\n\n\t\t\t}\n\n\t\t\tif ( material.isSpriteMaterial ) {\n\n\t\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\n\n\t\t\t}\n\n\t\t\t// common matrices\n\n\t\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\n\t\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\n\n\t\t\t// UBOs\n\n\t\t\tif ( material.isShaderMaterial || material.isRawShaderMaterial ) {\n\n\t\t\t\tconst groups = material.uniformsGroups;\n\n\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\n\n\t\t\t\t\tconst group = groups[ i ];\n\n\t\t\t\t\tuniformsGroups.update( group, program );\n\t\t\t\t\tuniformsGroups.bind( group, program );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\treturn program;\n\n\t\t}\n\n\t\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\n\n\t\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\n\n\t\t\tuniforms.ambientLightColor.needsUpdate = value;\n\t\t\tuniforms.lightProbe.needsUpdate = value;\n\n\t\t\tuniforms.directionalLights.needsUpdate = value;\n\t\t\tuniforms.directionalLightShadows.needsUpdate = value;\n\t\t\tuniforms.pointLights.needsUpdate = value;\n\t\t\tuniforms.pointLightShadows.needsUpdate = value;\n\t\t\tuniforms.spotLights.needsUpdate = value;\n\t\t\tuniforms.spotLightShadows.needsUpdate = value;\n\t\t\tuniforms.rectAreaLights.needsUpdate = value;\n\t\t\tuniforms.hemisphereLights.needsUpdate = value;\n\n\t\t}\n\n\t\tfunction materialNeedsLights( material ) {\n\n\t\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\n\t\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\n\t\t\t\t( material.isShaderMaterial && material.lights === true );\n\n\t\t}\n\n\t\tthis.getActiveCubeFace = function () {\n\n\t\t\treturn _currentActiveCubeFace;\n\n\t\t};\n\n\t\tthis.getActiveMipmapLevel = function () {\n\n\t\t\treturn _currentActiveMipmapLevel;\n\n\t\t};\n\n\t\tthis.getRenderTarget = function () {\n\n\t\t\treturn _currentRenderTarget;\n\n\t\t};\n\n\t\tthis.setRenderTargetTextures = function ( renderTarget, colorTexture, depthTexture ) {\n\n\t\t\tproperties.get( renderTarget.texture ).__webglTexture = colorTexture;\n\t\t\tproperties.get( renderTarget.depthTexture ).__webglTexture = depthTexture;\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__hasExternalTextures = true;\n\n\t\t\trenderTargetProperties.__autoAllocateDepthBuffer = depthTexture === undefined;\n\n\t\t\tif ( ! renderTargetProperties.__autoAllocateDepthBuffer ) {\n\n\t\t\t\t// The multisample_render_to_texture extension doesn't work properly if there\n\t\t\t\t// are midframe flushes and an external depth buffer. Disable use of the extension.\n\t\t\t\tif ( extensions.has( 'WEBGL_multisampled_render_to_texture' ) === true ) {\n\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided' );\n\t\t\t\t\trenderTargetProperties.__useRenderToTexture = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.setRenderTargetFramebuffer = function ( renderTarget, defaultFramebuffer ) {\n\n\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\t\t\trenderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n\t\t\trenderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === undefined;\n\n\t\t};\n\n\t\tconst _scratchFrameBuffer = _gl.createFramebuffer();\n\t\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\n\n\t\t\t_currentRenderTarget = renderTarget;\n\t\t\t_currentActiveCubeFace = activeCubeFace;\n\t\t\t_currentActiveMipmapLevel = activeMipmapLevel;\n\n\t\t\tlet useDefaultFramebuffer = true;\n\t\t\tlet framebuffer = null;\n\t\t\tlet isCube = false;\n\t\t\tlet isRenderTarget3D = false;\n\n\t\t\tif ( renderTarget ) {\n\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\n\n\t\t\t\tif ( renderTargetProperties.__useDefaultFramebuffer !== undefined ) {\n\n\t\t\t\t\t// We need to make sure to rebind the framebuffer.\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, null );\n\t\t\t\t\tuseDefaultFramebuffer = false;\n\n\t\t\t\t} else if ( renderTargetProperties.__webglFramebuffer === undefined ) {\n\n\t\t\t\t\ttextures.setupRenderTarget( renderTarget );\n\n\t\t\t\t} else if ( renderTargetProperties.__hasExternalTextures ) {\n\n\t\t\t\t\t// Color and depth texture must be rebound in order for the swapchain to update.\n\t\t\t\t\ttextures.rebindTextures( renderTarget, properties.get( renderTarget.texture ).__webglTexture, properties.get( renderTarget.depthTexture ).__webglTexture );\n\n\t\t\t\t} else if ( renderTarget.depthBuffer ) {\n\n\t\t\t\t\t// check if the depth texture is already bound to the frame buffer and that it's been initialized\n\t\t\t\t\tconst depthTexture = renderTarget.depthTexture;\n\t\t\t\t\tif ( renderTargetProperties.__boundDepthTexture !== depthTexture ) {\n\n\t\t\t\t\t\t// check if the depth texture is compatible\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdepthTexture !== null &&\n\t\t\t\t\t\t\tproperties.has( depthTexture ) &&\n\t\t\t\t\t\t\t( renderTarget.width !== depthTexture.image.width || renderTarget.height !== depthTexture.image.height )\n\t\t\t\t\t\t) {\n\n\t\t\t\t\t\t\tthrow new Error( 'WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.' );\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Swap the depth buffer to the currently attached one\n\t\t\t\t\t\ttextures.setupDepthRenderbuffer( renderTarget );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tconst texture = renderTarget.texture;\n\n\t\t\t\tif ( texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\t\tisRenderTarget3D = true;\n\n\t\t\t\t}\n\n\t\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer[ activeCubeFace ] ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ][ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\n\n\t\t\t\t\t}\n\n\t\t\t\t\tisCube = true;\n\n\t\t\t\t} else if ( ( renderTarget.samples > 0 ) && textures.useMultisampledRTT( renderTarget ) === false ) {\n\n\t\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tif ( Array.isArray( __webglFramebuffer ) ) {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer[ activeMipmapLevel ];\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tframebuffer = __webglFramebuffer;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t_currentViewport.copy( renderTarget.viewport );\n\t\t\t\t_currentScissor.copy( renderTarget.scissor );\n\t\t\t\t_currentScissorTest = renderTarget.scissorTest;\n\n\t\t\t} else {\n\n\t\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\n\t\t\t\t_currentScissorTest = _scissorTest;\n\n\t\t\t}\n\n\t\t\t// Use a scratch frame buffer if rendering to a mip level to avoid depth buffers\n\t\t\t// being bound that are different sizes.\n\t\t\tif ( activeMipmapLevel !== 0 ) {\n\n\t\t\t\tframebuffer = _scratchFrameBuffer;\n\n\t\t\t}\n\n\t\t\tconst framebufferBound = state.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\tif ( framebufferBound && useDefaultFramebuffer ) {\n\n\t\t\t\tstate.drawBuffers( renderTarget, framebuffer );\n\n\t\t\t}\n\n\t\t\tstate.viewport( _currentViewport );\n\t\t\tstate.scissor( _currentScissor );\n\t\t\tstate.setScissorTest( _currentScissorTest );\n\n\t\t\tif ( isCube ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t} else if ( isRenderTarget3D ) {\n\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\tconst layer = activeCubeFace;\n\t\t\t\t_gl.framebufferTextureLayer( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel, layer );\n\n\t\t\t} else if ( renderTarget !== null && activeMipmapLevel !== 0 ) {\n\n\t\t\t\t// Only bind the frame buffer if we are using a scratch frame buffer to render to a mipmap.\n\t\t\t\t// If we rebind the texture when using a multi sample buffer then an error about inconsistent samples will be thrown.\n\t\t\t\tconst textureProperties = properties.get( renderTarget.texture );\n\t\t\t\t_gl.framebufferTexture2D( _gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, textureProperties.__webglTexture, activeMipmapLevel );\n\n\t\t\t}\n\n\t\t\t_currentMaterialId = -1; // reset current material to ensure correct uniform bindings\n\n\t\t};\n\n\t\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\t\t\t\treturn;\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\ttry {\n\n\t\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\t\tif ( ! capabilities.textureFormatReadable( textureFormat ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! capabilities.textureTypeReadable( textureType ) ) {\n\n\t\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\t\t\t\t\t\treturn;\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\n\n\t\t\t\t\t}\n\n\t\t\t\t} finally {\n\n\t\t\t\t\t// restore framebuffer of current render target if necessary\n\n\t\t\t\t\tconst framebuffer = ( _currentRenderTarget !== null ) ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.readRenderTargetPixelsAsync = async function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\n\n\t\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\n\n\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\n\n\t\t\t}\n\n\t\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\n\n\t\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\n\n\t\t\t}\n\n\t\t\tif ( framebuffer ) {\n\n\t\t\t\tconst texture = renderTarget.texture;\n\t\t\t\tconst textureFormat = texture.format;\n\t\t\t\tconst textureType = texture.type;\n\n\t\t\t\tif ( ! capabilities.textureFormatReadable( textureFormat ) ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' );\n\n\t\t\t\t}\n\n\t\t\t\tif ( ! capabilities.textureTypeReadable( textureType ) ) {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.' );\n\n\t\t\t\t}\n\n\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\n\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\n\n\t\t\t\t\t// set the active frame buffer to the one we want to read\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, framebuffer );\n\n\t\t\t\t\tconst glBuffer = _gl.createBuffer();\n\t\t\t\t\t_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );\n\t\t\t\t\t_gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );\n\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 );\n\n\t\t\t\t\t// reset the frame buffer to the currently set buffer before waiting\n\t\t\t\t\tconst currFramebuffer = _currentRenderTarget !== null ? properties.get( _currentRenderTarget ).__webglFramebuffer : null;\n\t\t\t\t\tstate.bindFramebuffer( _gl.FRAMEBUFFER, currFramebuffer );\n\n\t\t\t\t\t// check if the commands have finished every 8 ms\n\t\t\t\t\tconst sync = _gl.fenceSync( _gl.SYNC_GPU_COMMANDS_COMPLETE, 0 );\n\n\t\t\t\t\t_gl.flush();\n\n\t\t\t\t\tawait probeAsync( _gl, sync, 4 );\n\n\t\t\t\t\t// read the data and delete the buffer\n\t\t\t\t\t_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );\n\t\t\t\t\t_gl.getBufferSubData( _gl.PIXEL_PACK_BUFFER, 0, buffer );\n\t\t\t\t\t_gl.deleteBuffer( glBuffer );\n\t\t\t\t\t_gl.deleteSync( sync );\n\n\t\t\t\t\treturn buffer;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tthrow new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.' );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.copyFramebufferToTexture = function ( texture, position = null, level = 0 ) {\n\n\t\t\t// support previous signature with position first\n\t\t\tif ( texture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyFramebufferToTexture function signature has changed.' );\n\n\t\t\t\tposition = arguments[ 0 ] || null;\n\t\t\t\ttexture = arguments[ 1 ];\n\n\t\t\t}\n\n\t\t\tconst levelScale = Math.pow( 2, - level );\n\t\t\tconst width = Math.floor( texture.image.width * levelScale );\n\t\t\tconst height = Math.floor( texture.image.height * levelScale );\n\n\t\t\tconst x = position !== null ? position.x : 0;\n\t\t\tconst y = position !== null ? position.y : 0;\n\n\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t_gl.copyTexSubImage2D( _gl.TEXTURE_2D, level, 0, 0, x, y, width, height );\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tconst _srcFramebuffer = _gl.createFramebuffer();\n\t\tconst _dstFramebuffer = _gl.createFramebuffer();\n\t\tthis.copyTextureToTexture = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = null ) {\n\n\t\t\t// support previous signature with dstPosition first\n\t\t\tif ( srcTexture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed.' );\n\n\t\t\t\tdstPosition = arguments[ 0 ] || null;\n\t\t\t\tsrcTexture = arguments[ 1 ];\n\t\t\t\tdstTexture = arguments[ 2 ];\n\t\t\t\tdstLevel = arguments[ 3 ] || 0;\n\t\t\t\tsrcRegion = null;\n\n\t\t\t}\n\n\t\t\t// support the previous signature with just a single dst mipmap level\n\t\t\tif ( dstLevel === null ) {\n\n\t\t\t\tif ( srcLevel !== 0 ) {\n\n\t\t\t\t\t// @deprecated, r171\n\t\t\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels.' );\n\t\t\t\t\tdstLevel = srcLevel;\n\t\t\t\t\tsrcLevel = 0;\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdstLevel = 0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// gather the necessary dimensions to copy\n\t\t\tlet width, height, depth, minX, minY, minZ;\n\t\t\tlet dstX, dstY, dstZ;\n\t\t\tconst image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[ dstLevel ] : srcTexture.image;\n\t\t\tif ( srcRegion !== null ) {\n\n\t\t\t\twidth = srcRegion.max.x - srcRegion.min.x;\n\t\t\t\theight = srcRegion.max.y - srcRegion.min.y;\n\t\t\t\tdepth = srcRegion.isBox3 ? srcRegion.max.z - srcRegion.min.z : 1;\n\t\t\t\tminX = srcRegion.min.x;\n\t\t\t\tminY = srcRegion.min.y;\n\t\t\t\tminZ = srcRegion.isBox3 ? srcRegion.min.z : 0;\n\n\t\t\t} else {\n\n\t\t\t\tconst levelScale = Math.pow( 2, - srcLevel );\n\t\t\t\twidth = Math.floor( image.width * levelScale );\n\t\t\t\theight = Math.floor( image.height * levelScale );\n\t\t\t\tif ( srcTexture.isDataArrayTexture ) {\n\n\t\t\t\t\tdepth = image.depth;\n\n\t\t\t\t} else if ( srcTexture.isData3DTexture ) {\n\n\t\t\t\t\tdepth = Math.floor( image.depth * levelScale );\n\n\t\t\t\t} else {\n\n\t\t\t\t\tdepth = 1;\n\n\t\t\t\t}\n\n\t\t\t\tminX = 0;\n\t\t\t\tminY = 0;\n\t\t\t\tminZ = 0;\n\n\t\t\t}\n\n\t\t\tif ( dstPosition !== null ) {\n\n\t\t\t\tdstX = dstPosition.x;\n\t\t\t\tdstY = dstPosition.y;\n\t\t\t\tdstZ = dstPosition.z;\n\n\t\t\t} else {\n\n\t\t\t\tdstX = 0;\n\t\t\t\tdstY = 0;\n\t\t\t\tdstZ = 0;\n\n\t\t\t}\n\n\t\t\t// Set up the destination target\n\t\t\tconst glFormat = utils.convert( dstTexture.format );\n\t\t\tconst glType = utils.convert( dstTexture.type );\n\t\t\tlet glTarget;\n\n\t\t\tif ( dstTexture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_3D;\n\n\t\t\t} else if ( dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D_ARRAY;\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( dstTexture, 0 );\n\t\t\t\tglTarget = _gl.TEXTURE_2D;\n\n\t\t\t}\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment );\n\n\t\t\t// used for copying data from cpu\n\t\t\tconst currentUnpackRowLen = _gl.getParameter( _gl.UNPACK_ROW_LENGTH );\n\t\t\tconst currentUnpackImageHeight = _gl.getParameter( _gl.UNPACK_IMAGE_HEIGHT );\n\t\t\tconst currentUnpackSkipPixels = _gl.getParameter( _gl.UNPACK_SKIP_PIXELS );\n\t\t\tconst currentUnpackSkipRows = _gl.getParameter( _gl.UNPACK_SKIP_ROWS );\n\t\t\tconst currentUnpackSkipImages = _gl.getParameter( _gl.UNPACK_SKIP_IMAGES );\n\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, image.width );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, image.height );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, minX );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, minY );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, minZ );\n\n\t\t\t// set up the src texture\n\t\t\tconst isSrc3D = srcTexture.isDataArrayTexture || srcTexture.isData3DTexture;\n\t\t\tconst isDst3D = dstTexture.isDataArrayTexture || dstTexture.isData3DTexture;\n\t\t\tif ( srcTexture.isDepthTexture ) {\n\n\t\t\t\tconst srcTextureProperties = properties.get( srcTexture );\n\t\t\t\tconst dstTextureProperties = properties.get( dstTexture );\n\t\t\t\tconst srcRenderTargetProperties = properties.get( srcTextureProperties.__renderTarget );\n\t\t\t\tconst dstRenderTargetProperties = properties.get( dstTextureProperties.__renderTarget );\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, srcRenderTargetProperties.__webglFramebuffer );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, dstRenderTargetProperties.__webglFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < depth; i ++ ) {\n\n\t\t\t\t\t// if the source or destination are a 3d target then a layer needs to be bound\n\t\t\t\t\tif ( isSrc3D ) {\n\n\t\t\t\t\t\t_gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( srcTexture ).__webglTexture, srcLevel, minZ + i );\n\t\t\t\t\t\t_gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, properties.get( dstTexture ).__webglTexture, dstLevel, dstZ + i );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t_gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.DEPTH_BUFFER_BIT, _gl.NEAREST );\n\n\t\t\t\t}\n\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t} else if ( srcLevel !== 0 || srcTexture.isRenderTargetTexture || properties.has( srcTexture ) ) {\n\n\t\t\t\t// get the appropriate frame buffers\n\t\t\t\tconst srcTextureProperties = properties.get( srcTexture );\n\t\t\t\tconst dstTextureProperties = properties.get( dstTexture );\n\n\t\t\t\t// bind the frame buffer targets\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, _srcFramebuffer );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, _dstFramebuffer );\n\n\t\t\t\tfor ( let i = 0; i < depth; i ++ ) {\n\n\t\t\t\t\t// assign the correct layers and mip maps to the frame buffers\n\t\t\t\t\tif ( isSrc3D ) {\n\n\t\t\t\t\t\t_gl.framebufferTextureLayer( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, srcTextureProperties.__webglTexture, srcLevel, minZ + i );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, srcTextureProperties.__webglTexture, srcLevel );\n\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isDst3D ) {\n\n\t\t\t\t\t\t_gl.framebufferTextureLayer( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, dstTextureProperties.__webglTexture, dstLevel, dstZ + i );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.framebufferTexture2D( _gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, dstTextureProperties.__webglTexture, dstLevel );\n\n\t\t\t\t\t}\n\n\t\t\t\t\t// copy the data using the fastest function that can achieve the copy\n\t\t\t\t\tif ( srcLevel !== 0 ) {\n\n\t\t\t\t\t\t_gl.blitFramebuffer( minX, minY, width, height, dstX, dstY, width, height, _gl.COLOR_BUFFER_BIT, _gl.NEAREST );\n\n\t\t\t\t\t} else if ( isDst3D ) {\n\n\t\t\t\t\t\t_gl.copyTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ + i, minX, minY, width, height );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.copyTexSubImage2D( glTarget, dstLevel, dstX, dstY, minX, minY, width, height );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\t// unbind read, draw buffers\n\t\t\t\tstate.bindFramebuffer( _gl.READ_FRAMEBUFFER, null );\n\t\t\t\tstate.bindFramebuffer( _gl.DRAW_FRAMEBUFFER, null );\n\n\t\t\t} else {\n\n\t\t\t\tif ( isDst3D ) {\n\n\t\t\t\t\t// copy data into the 3d texture\n\t\t\t\t\tif ( srcTexture.isDataTexture || srcTexture.isData3DTexture ) {\n\n\t\t\t\t\t\t_gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image.data );\n\n\t\t\t\t\t} else if ( dstTexture.isCompressedArrayTexture ) {\n\n\t\t\t\t\t\t_gl.compressedTexSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.texSubImage3D( glTarget, dstLevel, dstX, dstY, dstZ, width, height, depth, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\n\t\t\t\t\t// copy data into the 2d texture\n\t\t\t\t\tif ( srcTexture.isDataTexture ) {\n\n\t\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image.data );\n\n\t\t\t\t\t} else if ( srcTexture.isCompressedTexture ) {\n\n\t\t\t\t\t\t_gl.compressedTexSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, image.width, image.height, glFormat, image.data );\n\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t_gl.texSubImage2D( _gl.TEXTURE_2D, dstLevel, dstX, dstY, width, height, glFormat, glType, image );\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// reset values\n\t\t\t_gl.pixelStorei( _gl.UNPACK_ROW_LENGTH, currentUnpackRowLen );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_IMAGE_HEIGHT, currentUnpackImageHeight );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_PIXELS, currentUnpackSkipPixels );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_ROWS, currentUnpackSkipRows );\n\t\t\t_gl.pixelStorei( _gl.UNPACK_SKIP_IMAGES, currentUnpackSkipImages );\n\n\t\t\t// Generate mipmaps only when copying level 0\n\t\t\tif ( dstLevel === 0 && dstTexture.generateMipmaps ) {\n\n\t\t\t\t_gl.generateMipmap( glTarget );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.copyTextureToTexture3D = function ( srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0 ) {\n\n\t\t\t// support previous signature with source box first\n\t\t\tif ( srcTexture.isTexture !== true ) {\n\n\t\t\t\t// @deprecated, r165\n\t\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture3D function signature has changed.' );\n\n\t\t\t\tsrcRegion = arguments[ 0 ] || null;\n\t\t\t\tdstPosition = arguments[ 1 ] || null;\n\t\t\t\tsrcTexture = arguments[ 2 ];\n\t\t\t\tdstTexture = arguments[ 3 ];\n\t\t\t\tlevel = arguments[ 4 ] || 0;\n\n\t\t\t}\n\n\t\t\t// @deprecated, r170\n\t\t\twarnOnce( 'WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use \"copyTextureToTexture\" instead.' );\n\n\t\t\treturn this.copyTextureToTexture( srcTexture, dstTexture, srcRegion, dstPosition, level );\n\n\t\t};\n\n\t\tthis.initRenderTarget = function ( target ) {\n\n\t\t\tif ( properties.get( target ).__webglFramebuffer === undefined ) {\n\n\t\t\t\ttextures.setupRenderTarget( target );\n\n\t\t\t}\n\n\t\t};\n\n\t\tthis.initTexture = function ( texture ) {\n\n\t\t\tif ( texture.isCubeTexture ) {\n\n\t\t\t\ttextures.setTextureCube( texture, 0 );\n\n\t\t\t} else if ( texture.isData3DTexture ) {\n\n\t\t\t\ttextures.setTexture3D( texture, 0 );\n\n\t\t\t} else if ( texture.isDataArrayTexture || texture.isCompressedArrayTexture ) {\n\n\t\t\t\ttextures.setTexture2DArray( texture, 0 );\n\n\t\t\t} else {\n\n\t\t\t\ttextures.setTexture2D( texture, 0 );\n\n\t\t\t}\n\n\t\t\tstate.unbindTexture();\n\n\t\t};\n\n\t\tthis.resetState = function () {\n\n\t\t\t_currentActiveCubeFace = 0;\n\t\t\t_currentActiveMipmapLevel = 0;\n\t\t\t_currentRenderTarget = null;\n\n\t\t\tstate.reset();\n\t\t\tbindingStates.reset();\n\n\t\t};\n\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\n\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) );\n\n\t\t}\n\n\t}\n\n\tget coordinateSystem() {\n\n\t\treturn WebGLCoordinateSystem;\n\n\t}\n\n\tget outputColorSpace() {\n\n\t\treturn this._outputColorSpace;\n\n\t}\n\n\tset outputColorSpace( colorSpace ) {\n\n\t\tthis._outputColorSpace = colorSpace;\n\n\t\tconst gl = this.getContext();\n\t\tgl.drawingBufferColorspace = ColorManagement._getDrawingBufferColorSpace( colorSpace );\n\t\tgl.unpackColorSpace = ColorManagement._getUnpackColorSpace();\n\n\t}\n\n}\n\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, ArrayCamera, BackSide, BoxGeometry, BufferAttribute, BufferGeometry, ByteType, CineonToneMapping, ClampToEdgeWrapping, Color, ColorManagement, ConstantAlphaFactor, ConstantColorFactor, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeUVReflectionMapping, CullFaceBack, CullFaceFront, CullFaceNone, CustomBlending, CustomToneMapping, Data3DTexture, DataArrayTexture, DepthFormat, DepthStencilFormat, DepthTexture, DoubleSide, DstAlphaFactor, DstColorFactor, EqualCompare, EqualDepth, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, FloatType, FrontSide, Frustum, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, HalfFloatType, IntType, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LinearFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, LuminanceAlphaFormat, LuminanceFormat, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NoBlending, NoColorSpace, NoToneMapping, NormalBlending, NotEqualCompare, NotEqualDepth, ObjectSpaceNormalMap, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, PerspectiveCamera, Plane, PlaneGeometry, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReverseSubtractEquation, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SRGBColorSpace, SRGBTransfer, ShaderChunk, ShaderLib, ShaderMaterial, ShortType, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, SubtractEquation, SubtractiveBlending, TangentSpaceNormalMap, Texture, Uint16BufferAttribute, Uint32BufferAttribute, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, WebGLCoordinateSystem, WebGLCubeRenderTarget, WebGLRenderTarget, WebGLRenderer, WebGLUtils, WebXRController, ZeroFactor, createCanvasElement };\n","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState,useCallback}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{ComponentMessage}from\"https://framer.com/m/Utils-FINc.js\";import{useMotionValue,animate,useMotionValueEvent}from\"framer-motion\";// Three.js imports from CDN\nimport{Scene,PerspectiveCamera,WebGLRenderer,BoxGeometry,SkinnedMesh,MeshStandardMaterial,Texture,Vector3,Quaternion,Bone,Skeleton,Float32BufferAttribute,Uint16BufferAttribute,FrontSide,RepeatWrapping,LinearFilter,SRGBColorSpace,RGBAFormat,Color,DirectionalLight,AmbientLight,PlaneGeometry,Mesh,Group,ShadowMaterial,PCFSoftShadowMap}from\"https://cdn.jsdelivr.net/npm/three@0.174.0/build/three.module.js\";// Simple image source resolution\nconst resolveImageSource=input=>{if(!input)return undefined;if(typeof input===\"string\")return input.trim()||undefined;return input.src||undefined;};// ============================================================================\n// CONSTANTS\n// ============================================================================\n// Camera settings\nconst CAMERA_DISTANCE=1200;const CAMERA_NEAR=100;const CAMERA_FAR=2e3;// Sticker geometry - same as Reference for smoothness\nconst STICKER_DEPTH=.003;// Canvas scale - small padding for shadows while staying responsive\nconst CANVAS_SCALE=4// 400% extra space for shadows\n;// 2D Bone Grid settings\nconst BONE_GRID_X=60// Performance-safe bone count for hardware skinning\n;const BONE_GRID_Y=60;// ============================================================================\n// UTILITY FUNCTIONS\n// ============================================================================\nfunction calculateCameraFov(width,height,distance){const aspect=width/height;return 2*Math.atan(width/aspect/(2*distance))*(180/Math.PI);}function mapLinear(value,inMin,inMax,outMin,outMax){if(inMax===inMin)return outMin;const t=(value-inMin)/(inMax-inMin);return outMin+t*(outMax-outMin);}function mapInteralRadiusToUIValue(ui){const clamped=Math.max(.1,Math.min(1,ui));return mapLinear(clamped,.1,1,.05,1/Math.PI);}/**\n * Calculates contained dimensions (like CSS object-fit: contain)\n * Maintains image aspect ratio while fitting within container bounds\n */function calculateContainedDimensions(containerWidth,containerHeight,imageAspectRatio){// If no image aspect ratio yet, use container dimensions (will be updated when image loads)\nif(!imageAspectRatio){return{width:containerWidth,height:containerHeight};}const containerAspect=containerWidth/containerHeight;if(containerAspect>imageAspectRatio){// Container is wider than image: fit to height\nreturn{width:containerHeight*imageAspectRatio,height:containerHeight};}else{// Container is taller than image: fit to width\nreturn{width:containerWidth,height:containerWidth/imageAspectRatio};}}// CSS variable token and color parsing (hex/rgba/var())\nconst cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;function extractDefaultValue(cssVar){if(!cssVar||!cssVar.startsWith(\"var(\"))return cssVar;const match=cssVariableRegex.exec(cssVar);if(!match)return cssVar;const fallback=(match[2]||\"\").trim();if(fallback.startsWith(\"var(\"))return extractDefaultValue(fallback);return fallback||cssVar;}function resolveTokenColor(input){if(typeof input!==\"string\")return input;if(!input.startsWith(\"var(\"))return input;return extractDefaultValue(input);}function parseColorToRgba(input){if(!input)return{r:0,g:0,b:0,a:1};const str=input.trim();// Handle rgba() format\nconst rgbaMatch=str.match(/rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/i);if(rgbaMatch){const r=Math.max(0,Math.min(255,parseFloat(rgbaMatch[1])))/255;const g=Math.max(0,Math.min(255,parseFloat(rgbaMatch[2])))/255;const b=Math.max(0,Math.min(255,parseFloat(rgbaMatch[3])))/255;const a=rgbaMatch[4]!==undefined?Math.max(0,Math.min(1,parseFloat(rgbaMatch[4]))):1;return{r,g,b,a};}// Handle hex formats\nconst hex=str.replace(/^#/,\"\");if(hex.length===8){return{r:parseInt(hex.slice(0,2),16)/255,g:parseInt(hex.slice(2,4),16)/255,b:parseInt(hex.slice(4,6),16)/255,a:parseInt(hex.slice(6,8),16)/255};}if(hex.length===6){return{r:parseInt(hex.slice(0,2),16)/255,g:parseInt(hex.slice(2,4),16)/255,b:parseInt(hex.slice(4,6),16)/255,a:1};}if(hex.length===4){return{r:parseInt(hex[0]+hex[0],16)/255,g:parseInt(hex[1]+hex[1],16)/255,b:parseInt(hex[2]+hex[2],16)/255,a:parseInt(hex[3]+hex[3],16)/255};}if(hex.length===3){return{r:parseInt(hex[0]+hex[0],16)/255,g:parseInt(hex[1]+hex[1],16)/255,b:parseInt(hex[2]+hex[2],16)/255,a:1};}return{r:0,g:0,b:0,a:1};}/**\n * When you show the same image on the back of a thin surface, it must be mirrored\n * to look consistent to the viewer when the sticker flips/curls.\n *\n * Important: never mutate the front texture. If `tex` is the same as `frontTex`,\n * we clone before mirroring.\n */function makeBackTextureViewConsistent(tex,frontTex){if(!tex)return null;const out=tex===frontTex&&typeof tex.clone===\"function\"?tex.clone():tex;out.wrapS=RepeatWrapping;out.repeat.x=-1;out.offset.x=1;out.needsUpdate=true;return out;}// ============================================================================\n// FRAMER ANNOTATIONS\n// ============================================================================\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n * @framerDisableUnlink\n */export default function Sticker({image,curlRotation=0,curlMode=\"spiral\",animation={show:\"initial\",curlAmountStart:.6,curlAmountEnd:.6,curlRadiusStart:.15,curlRadiusEnd:1,curlStartStart:.5,curlStartEnd:1},transition={type:\"tween\",duration:.6,ease:\"easeInOut\"},backColor=\"rgba(255, 255, 255, 1)\",animationDuration=.6,shadowPositionX=-400,shadowPositionY=0,shadowBgColor=\"rgba(0, 0, 0, 0)\",castShadowOpacity=.3,refresh=false,style,borderRadius,backgroundColor=\"transparent\"}){// Refs\nconst containerRef=useRef(null);const canvasRef=useRef(null);const sceneRef=useRef(null);const rendererRef=useRef(null);const cameraRef=useRef(null);const meshRef=useRef(null);const groupRef=useRef(null)// Group for rotation around center\n;const bonesRef=useRef([]);const bonesInitialPositionsRef=useRef([]);const zoomProbeRef=useRef(null);const lastSizeRef=useRef({width:0,height:0,zoom:0,aspect:0,ts:0});const animationFrameRef=useRef(null);const loadedImageRef=useRef(null);const imageLoadAbortRef=useRef(false)// Track if component is unmounting\n;// Detect environment\nconst resolvedImageUrl=resolveImageSource(image);const isCanvas=RenderTarget.current()===RenderTarget.canvas;// In Canvas mode, use the show prop to determine initial state\n// In preview/live mode, always start with initial values\nconst shouldShowFinal=isCanvas&&animation.show===\"final\";// Use Framer Motion values for animated properties\nconst initialCurlAmount=shouldShowFinal?animation.curlAmountEnd:animation.curlAmountStart;const initialCurlStart=shouldShowFinal?animation.curlStartEnd:animation.curlStartStart;const initialCurlRadius=shouldShowFinal?animation.curlRadiusEnd:animation.curlRadiusStart;const curlAmountMotion=useMotionValue(initialCurlAmount);const curlStartMotion=useMotionValue(initialCurlStart);const curlRadiusMotion=useMotionValue(initialCurlRadius);// Keep refs for quick access in updateBones (motion values are read synchronously)\nconst animatedCurlRef=useRef({amount:initialCurlAmount});const animatedCurlStartRef=useRef({start:initialCurlStart});const animatedCurlRadiusRef=useRef({radius:initialCurlRadius});const isHoveringRef=useRef(false)// Track if currently hovering over sticker\n;const lightRef=useRef(null);const ambientLightRef=useRef(null);const backgroundPlaneRef=useRef(null);const curlRotationRef=useRef(curlRotation)// Store curlRotation in ref so updateBones always reads current value\n;const imageAspectRatioRef=useRef(null)// Store image aspect ratio for contain behavior\n;const lastMeshDimensionsRef=useRef(null)// Track mesh dimensions to avoid unnecessary recreation\n;const pendingUpdateRef=useRef(false)// Flag to batch bone updates into single RAF\n;const lastRetryAttemptRef=useRef(0)// Track last retry attempt to prevent rapid retries\n;const previousRefreshRef=useRef(undefined)// Track previous refresh value to detect changes\n;// State\nconst[textureLoaded,setTextureLoaded]=useState(false);// Track WebGL context loss (happens when too many WebGL contexts are active)\n// Browser limit is typically 8-16 contexts depending on the browser and hardware\nconst[contextLost,setContextLost]=useState(false);// Track when scene is ready to trigger re-renders (refs don't trigger re-renders)\nconst[sceneReady,setSceneReady]=useState(false);const hasContent=!!resolvedImageUrl;// ========================================================================\n// CREATE STICKER GEOMETRY WITH 2D BILINEAR SKINNING\n// ========================================================================\nconst createStickerGeometry=useCallback((width,height,gridX,gridY)=>{// High resolution geometry for smooth curves, independent of bone count\nconst xSegments=150;const ySegments=100;const geometry=new BoxGeometry(width,height,STICKER_DEPTH,xSegments,ySegments,1);// Geometry is centered at origin (no translation needed for 2D grid approach)\n// This keeps the sticker centered and simplifies fold line calculations\n// Add 2D bilinear skinning attributes\nconst position=geometry.attributes.position;const vertex=new Vector3;const skinIndexes=[];const skinWeights=[];// Bone grid spacing\nconst boneSpacingX=width/(gridX-1);const boneSpacingY=height/(gridY-1);for(let i=0;i<position.count;i++){vertex.fromBufferAttribute(position,i);// Convert vertex position to grid coordinates (0 to gridX-1, 0 to gridY-1)\n// Geometry is centered, so vertex.x ranges from -width/2 to width/2\nconst normalizedX=(vertex.x+width/2)/width// 0 to 1\n;const normalizedY=(vertex.y+height/2)/height// 0 to 1\n;// Find the 4 nearest bones (bilinear interpolation)\nconst gridXPos=normalizedX*(gridX-1);const gridYPos=normalizedY*(gridY-1);const x0=Math.floor(gridXPos);const y0=Math.floor(gridYPos);const x1=Math.min(x0+1,gridX-1);const y1=Math.min(y0+1,gridY-1);// Bilinear interpolation weights\nconst tx=gridXPos-x0;const ty=gridYPos-y0;// Four bone indices in the grid (row-major order)\nconst idx00=y0*gridX+x0// bottom-left\n;const idx10=y0*gridX+x1// bottom-right\n;const idx01=y1*gridX+x0// top-left\n;const idx11=y1*gridX+x1// top-right\n;// Bilinear weights\nconst w00=(1-tx)*(1-ty);const w10=tx*(1-ty);const w01=(1-tx)*ty;const w11=tx*ty;skinIndexes.push(idx00,idx10,idx01,idx11);skinWeights.push(w00,w10,w01,w11);}geometry.setAttribute(\"skinIndex\",new Uint16BufferAttribute(skinIndexes,4));geometry.setAttribute(\"skinWeight\",new Float32BufferAttribute(skinWeights,4));// Compute smooth normals AFTER skinning attributes to eliminate striations\ngeometry.computeVertexNormals();return geometry;},[]);// ========================================================================\n// SCENE SETUP\n// ========================================================================\nconst setupScene=useCallback(()=>{if(!canvasRef.current||!containerRef.current){return null;}const container=containerRef.current;const containerWidth=container.clientWidth||container.offsetWidth||1;const containerHeight=container.clientHeight||container.offsetHeight||1;// Ensure we have valid dimensions (at least 1px)\nif(containerWidth<=0||containerHeight<=0){return null;}const dpr=Math.min(window.devicePixelRatio||1,2);// Calculate contained dimensions (maintains image aspect ratio)\nconst contained=calculateContainedDimensions(containerWidth,containerHeight,imageAspectRatioRef.current);const width=contained.width;const height=contained.height;// Canvas with small padding for shadows\nconst canvasWidth=containerWidth*CANVAS_SCALE;const canvasHeight=containerHeight*CANVAS_SCALE;// Create scene\nconst scene=new Scene;sceneRef.current=scene;// Create camera\nconst camera=new PerspectiveCamera(calculateCameraFov(canvasWidth,canvasHeight,CAMERA_DISTANCE),canvasWidth/canvasHeight,CAMERA_NEAR,CAMERA_FAR);camera.position.set(0,0,CAMERA_DISTANCE);camera.lookAt(0,0,0);cameraRef.current=camera;// Dispose old renderer if it exists (prevent WebGL context accumulation)\nif(rendererRef.current){try{rendererRef.current.dispose();}catch(error){// Silently handle disposal errors\n}rendererRef.current=null;}// Create renderer\nlet renderer;try{renderer=new WebGLRenderer({canvas:canvasRef.current,alpha:true,antialias:true});// Check if context was actually created\nconst gl=renderer.getContext();if(!gl||gl.isContextLost()){console.error(\"WebGL context is lost or unavailable\");setContextLost(true);renderer.dispose();return null;}renderer.setSize(Math.round(canvasWidth*dpr),Math.round(canvasHeight*dpr),false);renderer.setPixelRatio(1);// Enable high-quality shadow maps (shadows always enabled)\nrenderer.shadowMap.enabled=true;renderer.shadowMap.type=PCFSoftShadowMap// High quality soft shadows\n;rendererRef.current=renderer;}catch(error){// WebGL context creation failed (too many contexts)\nconsole.error(\"Failed to create WebGL context:\",error);setContextLost(true);return null;}canvasRef.current.style.width=`${canvasWidth}px`;canvasRef.current.style.height=`${canvasHeight}px`;// Create geometry with base dimensions (1:1 or image aspect ratio if known)\n// We'll scale the mesh uniformly to fit the container while maintaining aspect ratio\nconst baseSize=Math.min(containerWidth,containerHeight);const geometry=createStickerGeometry(baseSize,baseSize,BONE_GRID_X,BONE_GRID_Y);// Create 2D bone grid\n// Bones are independent (not parented) - each bone controls a region of the sticker\n// Position bones relative to geometry size (baseSize), not contained dimensions\n// When mesh is scaled, bones will scale with it through the skeleton system\nconst bones=[];const boneSpacingX=baseSize/(BONE_GRID_X-1);const boneSpacingY=baseSize/(BONE_GRID_Y-1);for(let y=0;y<BONE_GRID_Y;y++){for(let x=0;x<BONE_GRID_X;x++){const bone=new Bone;// Position bones in a grid, centered at origin (relative to geometry size)\nbone.position.x=-baseSize/2+x*boneSpacingX;bone.position.y=-baseSize/2+y*boneSpacingY;bone.position.z=0;bones.push(bone);}}bonesRef.current=bones;bonesInitialPositionsRef.current=bones.map(b=>b.position.clone());const skeleton=new Skeleton(bones);// Create materials for front and back\n// Use MeshStandardMaterial with low roughness (0.1) like Reference.tsx for smoothness\n// This prevents striations while still casting shadows\n// Parse back color for side material (border) - use color but always 100% opaque\nconst resolvedBackColor=resolveTokenColor(backColor);const backColorRgba=parseColorToRgba(resolvedBackColor);// All faces use MeshStandardMaterial with smooth roughness (shadows always enabled)\nconst frontMaterial=new MeshStandardMaterial({color:16777215,side:FrontSide,transparent:true,roughness:.2,metalness:.4,// Add emissive to reduce lighting dependency and striations\nemissive:16777215,emissiveIntensity:.8});// Back face: transparent with image texture, but darker with shadow overlay\nconst backMaterial=new MeshStandardMaterial({color:16777215,side:FrontSide,transparent:true,roughness:.3,metalness:0,// Lower emissive than front to allow shadow/lighting overlay\nemissive:16777215,emissiveIntensity:.3});// Side material: will use front texture when loaded (blends with front image), back color as fallback\nconst sideMaterial=new MeshStandardMaterial({color:new Color(backColorRgba.r,backColorRgba.g,backColorRgba.b),transparent:true,opacity:1,roughness:.1,metalness:0});// Materials array for BoxGeometry faces\n// Order: +X, -X, +Y, -Y, +Z (front), -Z (back)\nconst materials=[sideMaterial,sideMaterial,sideMaterial,sideMaterial,frontMaterial,backMaterial];// Create skinned mesh\nconst mesh=new SkinnedMesh(geometry,materials);mesh.frustumCulled=false;// Add all bones to the mesh and initialize their matrices\nbones.forEach(bone=>{mesh.add(bone);// Initialize bone matrix to ensure it's ready for skeleton\nbone.updateMatrixWorld(true);});// Bind skeleton AFTER bones are added and initialized\nmesh.bind(skeleton);// Update mesh and skeleton matrices\nmesh.updateMatrixWorld(true);// Update skeleton AFTER mesh matrix world is computed\n// This ensures all bone matrices are ready\nskeleton.update();// Enable shadows (always enabled)\n// According to Three.js forum: setting both castShadow and receiveShadow can cause acne\n// The sticker casts shadows onto the background plane, but doesn't need to receive them\nmesh.castShadow=true;mesh.receiveShadow=false// Don't receive shadows to avoid acne\n;// Calculate initial scale to fit container with aspect ratio (if image aspect ratio is known)\n// Otherwise, use container dimensions\nlet initialScaleX=1;let initialScaleY=1;if(imageAspectRatioRef.current){const contained=calculateContainedDimensions(containerWidth,containerHeight,imageAspectRatioRef.current);initialScaleX=contained.width/baseSize;initialScaleY=contained.height/baseSize;}else{// No image yet - use container dimensions\ninitialScaleX=containerWidth/baseSize;initialScaleY=containerHeight/baseSize;}mesh.scale.set(initialScaleX,initialScaleY,1);// Create a group (no rotation - image stays upright, curl direction is handled by bone rotation axis)\nconst group=new Group;groupRef.current=group;// Mesh is centered at origin (no position offset needed with 2D grid approach)\nmesh.position.set(0,0,0);group.add(mesh);meshRef.current=mesh;// Initialize last mesh dimensions\nlastMeshDimensionsRef.current={width:baseSize,height:baseSize};scene.add(group);// Ensure mesh is immediately visible (will show back color until texture loads)\n// This prevents the \"white plane only\" issue\n// No group rotation - curlRotation is handled by rotating the fold line axis in updateBones()\n// Add lighting (shadows always enabled with intensity = 1)\n// Calculate initial light intensities for shadowIntensity = 1\n// High shadowIntensity = strong directional, low ambient = dark shadows\n// At shadowIntensity = 1, make shadows very dramatic (strong directional, low ambient)\nconst shadowIntensity=1// Hardcoded\n;const initialLightIntensity=.3+shadowIntensity*1.7// 0.3 to 2.0 (more dramatic at max)\n;const initialAmbientIntensity=Math.max(1-shadowIntensity*.6,.4)// 1.0 to 0.4 (lower at max for drama)\n;// Ambient light for overall scene illumination\n// Lower ambient allows shadows to be more visible\nconst ambientLight=new AmbientLight(16777215,initialAmbientIntensity);ambientLightRef.current=ambientLight;scene.add(ambientLight);// Directional light for shadows (reduced intensity to minimize band contrast)\nconst directionalLight=new DirectionalLight(16777215,initialLightIntensity);directionalLight.position.set(shadowPositionX,shadowPositionY,400);directionalLight.castShadow=true;// Configure shadow map for high-quality, soft shadows\ndirectionalLight.shadow.mapSize.width=4096;directionalLight.shadow.mapSize.height=4096;directionalLight.shadow.camera.near=1;directionalLight.shadow.camera.far=2e3;// Shadow camera bounds need to account for:\n// 1. Canvas size (which includes CANVAS_SCALE padding for shadows)\n// 2. Light position offset (shadowPositionX/Y can be -500 to 500)\n// 3. Shadow projection area (shadows extend in the direction opposite to light)\n// Use canvas dimensions to ensure shadows don't clip\n// Shadow camera should be at least as large as the canvas to prevent clipping\n// The 3.5 multiplier provides padding for light offsets, but it was relative to container\n// Now we scale it relative to canvas: use canvas size * (3.5 / CANVAS_SCALE) to maintain same padding ratio\n// But to prevent clipping, ensure it's at least canvas size\nconst baseShadowSize=Math.max(canvasWidth,canvasHeight);const shadowCameraSize=Math.max(baseShadowSize,baseShadowSize*(3.5/CANVAS_SCALE)// Or use scaled padding (maintains same absolute padding)\n);const shadowOffsetX=shadowPositionX*.3// Account for light position\n;const shadowOffsetY=shadowPositionY*.3;directionalLight.shadow.camera.left=-shadowCameraSize/2+shadowOffsetX;directionalLight.shadow.camera.right=shadowCameraSize/2+shadowOffsetX;directionalLight.shadow.camera.top=shadowCameraSize/2+shadowOffsetY;directionalLight.shadow.camera.bottom=-shadowCameraSize/2+shadowOffsetY;// Very small bias to prevent acne while keeping shadow visible\ndirectionalLight.shadow.bias=-1e-5;directionalLight.shadow.radius=8// Softer shadow edges\n;lightRef.current=directionalLight;scene.add(directionalLight);// Add background plane to receive shadows\n// Add shadow-only plane (transparent background with visible shadow)\n// ShadowMaterial shows ONLY shadows on transparent background\nconst shadowMat=new ShadowMaterial({opacity:castShadowOpacity,color:0});// Create plane sized to cover shadow camera area (larger to prevent clipping)\n// Match shadow camera bounds to ensure all shadows are captured\n// Use same calculation as shadow camera to ensure plane covers all shadows\nconst planeSize=shadowCameraSize;const planeGeometry=new PlaneGeometry(planeSize,planeSize);const backgroundPlane=new Mesh(planeGeometry,shadowMat);backgroundPlane.receiveShadow=true;// Position very slightly behind sticker\nbackgroundPlane.position.set(0,0,-1);backgroundPlaneRef.current=backgroundPlane;scene.add(backgroundPlane);// Initial render to show mesh immediately (even without texture)\nif(renderer&&scene&&camera){renderer.render(scene,camera);}// Mark scene as ready to trigger re-render and show canvas\nsetSceneReady(true);return{scene,camera,renderer,mesh,bones};},[createStickerGeometry,shadowPositionX,shadowPositionY,castShadowOpacity,backColor]);// ========================================================================\n// RENDERING\n// ========================================================================\nconst renderFrame=useCallback(()=>{if(!rendererRef.current||!sceneRef.current||!cameraRef.current)return;// Check if WebGL context is lost - but don't update state here to avoid infinite loops\nconst gl=rendererRef.current.getContext();if(!gl||gl.isContextLost()){return;}// Ensure world matrices and skeleton are updated before rendering\n// This prevents \"Cannot read properties of undefined (reading 'matrixWorld')\" errors\nif(meshRef.current&&meshRef.current.skeleton){meshRef.current.updateMatrixWorld(true);// Ensure all bones have valid matrices before skeleton update\nconst bones=meshRef.current.skeleton.bones;if(bones&&bones.length>0){// Update bone matrices individually to ensure they're ready\nbones.forEach(bone=>{if(bone&&typeof bone.updateMatrixWorld===\"function\"){bone.updateMatrixWorld(true);}});}meshRef.current.skeleton.update();}rendererRef.current.render(sceneRef.current,cameraRef.current);},[]);// ========================================================================\n// BACK TEXTURE CREATION\n// ========================================================================\n/**\n     * Creates a back texture that blends backColor with the front image\n     * If backColor is 100% opaque, shows just the color\n     * If backColor has transparency, blends it with the front image\n     */const createBackTexture=useCallback((img,backColorValue)=>{const backCanvas=document.createElement(\"canvas\");backCanvas.width=img.width;backCanvas.height=img.height;const backCtx=backCanvas.getContext(\"2d\");if(!backCtx)return null;// Parse back color\nconst resolvedBackColor=resolveTokenColor(backColorValue);const backColorRgba=parseColorToRgba(resolvedBackColor);// Draw the front image first (as base)\nbackCtx.drawImage(img,0,0);const imageData=backCtx.getImageData(0,0,img.width,img.height);// Blend backColor with the image based on opacity\n// If opacity is 1.0, replace image with color\n// If opacity < 1.0, blend color over image\nconst backR=Math.round(backColorRgba.r*255);const backG=Math.round(backColorRgba.g*255);const backB=Math.round(backColorRgba.b*255);const backA=backColorRgba.a;for(let i=0;i<imageData.data.length;i+=4){const imgR=imageData.data[i];const imgG=imageData.data[i+1];const imgB=imageData.data[i+2];const imgA=imageData.data[i+3]/255// Normalize alpha\n;if(backA>=1){// Fully opaque: replace with back color (but preserve image alpha shape)\nimageData.data[i]=backR;imageData.data[i+1]=backG;imageData.data[i+2]=backB;// Keep original alpha to maintain image shape\n}else if(backA>0){// Semi-transparent: blend back color over image\n// Alpha blending: result = backColor * backA + image * (1 - backA)\nimageData.data[i]=Math.round(backR*backA+imgR*(1-backA));imageData.data[i+1]=Math.round(backG*backA+imgG*(1-backA));imageData.data[i+2]=Math.round(backB*backA+imgB*(1-backA));// Keep original alpha to maintain image shape\n}// If backA is 0, keep original image (fully transparent back color)\n}backCtx.putImageData(imageData,0,0);const backTexture=new Texture(backCanvas);backTexture.needsUpdate=true;backTexture.minFilter=LinearFilter;backTexture.colorSpace=SRGBColorSpace;backTexture.format=RGBAFormat;return backTexture;},[]);// ========================================================================\n// MESH RECREATION WITH ASPECT RATIO\n// ========================================================================\n// Function to recreate geometry and mesh with correct aspect ratio\nconst recreateMeshWithAspectRatio=useCallback(aspectRatio=>{if(!sceneRef.current||!containerRef.current||!rendererRef.current||!cameraRef.current)return;const container=containerRef.current;const containerWidth=container.clientWidth||container.offsetWidth||1;const containerHeight=container.clientHeight||container.offsetHeight||1;// Calculate contained dimensions\nconst contained=calculateContainedDimensions(containerWidth,containerHeight,aspectRatio);// Preserve textures before disposing materials\nlet preservedTextures={};if(meshRef.current){const oldMesh=meshRef.current;const oldMaterials=oldMesh.material;if(Array.isArray(oldMaterials)){// Preserve textures before disposal\nif(oldMaterials[4]?.map)preservedTextures.front=oldMaterials[4].map;if(oldMaterials[5]?.map)preservedTextures.back=oldMaterials[5].map;if(oldMaterials[0]?.map)preservedTextures.side=oldMaterials[0].map;}// Remove from scene and group first\nif(groupRef.current){groupRef.current.remove(oldMesh);}sceneRef.current.remove(oldMesh);// Dispose geometry\nif(oldMesh.geometry){oldMesh.geometry.dispose();}// Dispose materials and textures\nif(Array.isArray(oldMesh.material)){oldMesh.material.forEach(mat=>{// Don't dispose textures - they're preserved\nif(mat.map&&mat.map!==preservedTextures.front&&mat.map!==preservedTextures.back&&mat.map!==preservedTextures.side){mat.map.dispose();}mat.dispose();});}else if(oldMesh.material){oldMesh.material.dispose();}// Clear old skeleton bones (they're children of the mesh)\nif(oldMesh.skeleton){oldMesh.skeleton.bones.forEach(bone=>{if(bone.parent){bone.parent.remove(bone);}});}}// Create new geometry with correct aspect ratio using 2D bone grid\nconst geometry=createStickerGeometry(contained.width,contained.height,BONE_GRID_X,BONE_GRID_Y);// Recreate 2D bone grid\nconst bones=[];const boneSpacingX=contained.width/(BONE_GRID_X-1);const boneSpacingY=contained.height/(BONE_GRID_Y-1);for(let y=0;y<BONE_GRID_Y;y++){for(let x=0;x<BONE_GRID_X;x++){const bone=new Bone;// Position bones in a grid, centered at origin\nbone.position.x=-contained.width/2+x*boneSpacingX;bone.position.y=-contained.height/2+y*boneSpacingY;bone.position.z=0;bones.push(bone);}}bonesRef.current=bones;bonesInitialPositionsRef.current=bones.map(b=>b.position.clone());const skeleton=new Skeleton(bones);// Recreate materials (reuse existing material setup logic from setupScene)\n// Parse back color for side material (border) - use color but always 100% opaque\nconst resolvedBackColor=resolveTokenColor(backColor);const backColorRgba=parseColorToRgba(resolvedBackColor);// All materials use MeshStandardMaterial (shadows always enabled)\nconst frontMaterial=new MeshStandardMaterial({color:16777215,side:FrontSide,transparent:true,roughness:.2,metalness:.4,emissive:16777215,emissiveIntensity:.8});const backMaterial=new MeshStandardMaterial({color:16777215,side:FrontSide,transparent:true,roughness:.3,metalness:0,emissive:16777215,emissiveIntensity:.3});// Side material: will use front texture when loaded (blends with front image), back color as fallback\nconst sideMaterial=new MeshStandardMaterial({color:new Color(backColorRgba.r,backColorRgba.g,backColorRgba.b),transparent:true,opacity:1,roughness:.1,metalness:0});const materials=[sideMaterial,sideMaterial,sideMaterial,sideMaterial,frontMaterial,backMaterial];// Create new mesh\nconst mesh=new SkinnedMesh(geometry,materials);mesh.frustumCulled=false;// Add all bones to the mesh and initialize their matrices\nbones.forEach(bone=>{mesh.add(bone);// Initialize bone matrix to ensure it's ready for skeleton\nbone.updateMatrixWorld(true);});// Bind skeleton AFTER bones are added and initialized\nmesh.bind(skeleton);// Update mesh and skeleton matrices\nmesh.updateMatrixWorld(true);// Update skeleton AFTER mesh matrix world is computed\n// This ensures all bone matrices are ready\nskeleton.update();// Shadows always enabled\nmesh.castShadow=true;mesh.receiveShadow=false;// Mesh is centered at origin (no position offset needed with 2D grid approach)\nmesh.position.set(0,0,0);// Create or get group (no rotation - image stays upright)\nlet group=groupRef.current;if(!group){group=new Group;groupRef.current=group;sceneRef.current.add(group);}else{// Remove old mesh from group if it exists\nconst oldMesh=group.children.find(child=>child===meshRef.current);if(oldMesh){group.remove(oldMesh);}}group.add(mesh);// No group rotation - curlRotation is handled by bone rotation axis in updateBones()\nmeshRef.current=mesh;// Update last mesh dimensions\nlastMeshDimensionsRef.current={width:contained.width,height:contained.height};// Apply textures if they're already loaded\n// Reuse preserved textures if available, otherwise create new ones\nif(loadedImageRef.current){const img=loadedImageRef.current;// Reuse preserved texture if available, otherwise create new one\nconst texture=preservedTextures.front||new Texture(img);if(!preservedTextures.front){texture.needsUpdate=true;texture.minFilter=LinearFilter;texture.colorSpace=SRGBColorSpace;texture.format=RGBAFormat;}// Create back texture: blend backColor with front image\n// If backColor is fully transparent (0% opacity), use front texture directly\nconst resolvedBackColor=resolveTokenColor(backColor);const backColorRgba=parseColorToRgba(resolvedBackColor);// Reuse preserved back texture if available and backColor hasn't changed\nlet rawBackTexture=preservedTextures.back;if(!rawBackTexture){rawBackTexture=backColorRgba.a<=0?texture:createBackTexture(img,backColor);}const backTexture=makeBackTextureViewConsistent(rawBackTexture,texture);const meshMaterials=mesh.material;if(Array.isArray(meshMaterials)){if(meshMaterials[4]){meshMaterials[4].map=texture;meshMaterials[4].transparent=true;meshMaterials[4].alphaTest=.01;if(meshMaterials[4].emissiveIntensity!==undefined){meshMaterials[4].emissiveMap=texture;meshMaterials[4].emissive=new Color(16777215);meshMaterials[4].emissiveIntensity=.8;}meshMaterials[4].needsUpdate=true;}if(meshMaterials[5]){const resolvedBackColor=resolveTokenColor(backColor);const backColorRgba=parseColorToRgba(resolvedBackColor);// With shadows: use texture (MeshStandardMaterial)\nif(backTexture){meshMaterials[5].map=backTexture;meshMaterials[5].transparent=true;meshMaterials[5].alphaTest=.01;// When using front texture (0% opacity), match front material properties for identical appearance\nif(backColorRgba.a<=0&&meshMaterials[5].emissiveIntensity!==undefined){meshMaterials[5].emissiveMap=texture;meshMaterials[5].emissive=new Color(16777215);meshMaterials[5].emissiveIntensity=.8// Match front material\n;}}meshMaterials[5].needsUpdate=true;}// Side faces (border): use front face texture - blends with front image, not background\n// Reuse preserved side texture if available\nconst sideTexture=preservedTextures.side||texture;for(let i=0;i<4;i++){if(meshMaterials[i]&&sideTexture){// Use front face texture so border blends with front image\nmeshMaterials[i].map=sideTexture;meshMaterials[i].transparent=true;meshMaterials[i].alphaTest=.01;// Match front material properties if using MeshStandardMaterial\nif(meshMaterials[i].emissiveIntensity!==undefined&&meshMaterials[4]?.emissiveIntensity!==undefined){meshMaterials[i].emissiveMap=sideTexture;meshMaterials[i].emissive=meshMaterials[4].emissive||new Color(16777215);meshMaterials[i].emissiveIntensity=meshMaterials[4].emissiveIntensity||.8;}meshMaterials[i].needsUpdate=true;}}}}// Mark scene as ready and render after mesh recreation to ensure it's visible\nsetSceneReady(true);// Use requestAnimationFrame to ensure textures are uploaded to GPU before rendering\nrequestAnimationFrame(()=>{if(!meshRef.current)return;// Force material updates to ensure textures are ready\nconst meshMaterials=mesh.material;if(Array.isArray(meshMaterials)){meshMaterials.forEach(mat=>{if(mat&&mat.needsUpdate!==undefined){mat.needsUpdate=true;}});}// Update skeleton and bones to ensure everything is in sync\nif(mesh.skeleton){mesh.updateMatrixWorld(true);mesh.skeleton.update();}// Render after texture is ready\nrenderFrame();// Second frame: final render to ensure everything is displayed\nrequestAnimationFrame(()=>{if(meshRef.current){renderFrame();}});});},[createStickerGeometry,backColor,createBackTexture,renderFrame]);// Expose a function to trigger resize after mesh recreation\n// This is needed to ensure responsiveness when image loads/changes\nconst triggerResizeRef=useRef(null);// ========================================================================\n// TEXTURE LOADING\n// ========================================================================\nconst loadTexture=useCallback(()=>{if(!resolvedImageUrl||!meshRef.current){setTextureLoaded(false);return;}setTextureLoaded(false);imageLoadAbortRef.current=false// Reset abort flag\n;const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{// Check if component was unmounted during load\nif(imageLoadAbortRef.current||!meshRef.current)return;// Store reference for border color updates\nloadedImageRef.current=img;// Detect and store image aspect ratio for contain behavior\nif(img.width&&img.height){const aspectRatio=img.width/img.height;imageAspectRatioRef.current=aspectRatio;// Recreate mesh with correct aspect ratio geometry\nrecreateMeshWithAspectRatio(aspectRatio);// Wait for next frame to ensure mesh is fully initialized before updating bones and triggering resize\n// This prevents race conditions where skeleton isn't ready yet\nrequestAnimationFrame(()=>{// Check if component unmounted during the frame delay\nif(imageLoadAbortRef.current)return;if(meshRef.current&&groupRef.current&&meshRef.current.skeleton){try{// Ensure skeleton is fully initialized before updating bones\nconst bones=meshRef.current.skeleton.bones;if(bones&&bones.length>0&&bonesRef.current.length>0){// Double-check bones are ready\nmeshRef.current.updateMatrixWorld(true);meshRef.current.skeleton.update();updateBones();}}catch(error){// Silently handle initialization errors\n}}// Trigger resize to ensure mesh is properly sized for current container\n// This is critical for responsiveness when image first loads or changes\nif(triggerResizeRef.current&&containerRef.current){triggerResizeRef.current();}});}// Check mesh is still valid after potential recreation\nif(!meshRef.current?.material)return;// Check if textures are already applied (from recreateMeshWithAspectRatio)\n// If so, we just need to ensure a render happens\nconst materials=meshRef.current.material;const hasTexture=Array.isArray(materials)&&materials[4]?.map;// Only create new textures if they don't exist yet\nlet texture;if(hasTexture&&Array.isArray(materials)){// Reuse existing texture, but ensure it's marked for update\ntexture=materials[4].map;if(texture&&texture.needsUpdate!==undefined){texture.needsUpdate=true;}}else{// Create main texture for front face\ntexture=new Texture(img);texture.needsUpdate=true;texture.minFilter=LinearFilter;texture.colorSpace=SRGBColorSpace;texture.format=RGBAFormat;}// Create back face texture: blend backColor with front image\n// If backColor is fully transparent (0% opacity), use front texture directly\nconst resolvedBackColor=resolveTokenColor(backColor);const backColorRgba=parseColorToRgba(resolvedBackColor);const rawBackTexture=backColorRgba.a<=0?texture:createBackTexture(img,backColor);const backTexture=makeBackTextureViewConsistent(rawBackTexture,texture);// Apply textures to materials (only if not already applied)\nif(Array.isArray(materials)){// Front face: image texture, use alphaTest for clean cutout\n// When using MeshStandardMaterial, also set emissiveMap so colors stay bright\nif(materials[4]){// Only apply if texture is different or not set\nif(materials[4].map!==texture){materials[4].map=texture;// Ensure texture is marked for update\nif(texture.needsUpdate!==undefined){texture.needsUpdate=true;}}materials[4].transparent=true;materials[4].alphaTest=.01// Discard nearly-transparent pixels\n;// If MeshStandardMaterial, use emissiveMap to keep image bright and reduce striations\nif(materials[4].emissiveIntensity!==undefined){materials[4].emissiveMap=texture// Emit the image colors\n;materials[4].emissive=new Color(16777215)// Allow full emissive color\n;// Increase emissive intensity to reduce lighting dependency and striations\nmaterials[4].emissiveIntensity=.8;}materials[4].needsUpdate=true;}// Back face: apply texture or color based on backColor\nif(materials[5]){const resolvedBackColor=resolveTokenColor(backColor);const backColorRgba=parseColorToRgba(resolvedBackColor);// With shadows: use texture (MeshStandardMaterial)\nif(backTexture){materials[5].map=backTexture;materials[5].transparent=true;materials[5].alphaTest=.01;// When using front texture (0% opacity), match front material properties for identical appearance\nif(backColorRgba.a<=0&&materials[5].emissiveIntensity!==undefined){materials[5].emissiveMap=texture;materials[5].emissive=new Color(16777215);materials[5].emissiveIntensity=.8// Match front material\n;}}materials[5].needsUpdate=true;}// Side faces (border): use front face texture - blends with front image, not background\nfor(let i=0;i<4;i++){if(materials[i]&&texture){// Use front face texture so border blends with front image\nmaterials[i].map=texture;materials[i].transparent=true;materials[i].alphaTest=.01;// Match front material properties if using MeshStandardMaterial\nif(materials[i].emissiveIntensity!==undefined&&materials[4]?.emissiveIntensity!==undefined){materials[i].emissiveMap=texture;materials[i].emissive=materials[4].emissive||new Color(16777215);materials[i].emissiveIntensity=materials[4].emissiveIntensity||.8;}materials[i].needsUpdate=true;}}}setTextureLoaded(true);// Ensure scene is marked as ready (triggers re-render to show canvas)\nsetSceneReady(true);// Always render after textures are applied (only if still mounted)\n// Use multiple requestAnimationFrame calls to ensure texture has uploaded to GPU\nif(!imageLoadAbortRef.current&&meshRef.current){// First frame: ensure materials and textures are marked for update\nrequestAnimationFrame(()=>{if(imageLoadAbortRef.current||!meshRef.current)return;// Force material and texture updates to ensure they're ready\nconst materials=meshRef.current.material;if(Array.isArray(materials)){materials.forEach(mat=>{if(mat){if(mat.needsUpdate!==undefined){mat.needsUpdate=true;}// Ensure texture is marked for update\nif(mat.map&&mat.map.needsUpdate!==undefined){mat.map.needsUpdate=true;}}});}// Update skeleton and bones to ensure everything is in sync\nif(meshRef.current.skeleton){meshRef.current.updateMatrixWorld(true);meshRef.current.skeleton.update();}// Second frame: render after texture upload has been triggered\nrequestAnimationFrame(()=>{if(imageLoadAbortRef.current||!meshRef.current)return;// Render to trigger texture upload\nrenderFrame();// Third frame: final render to ensure texture is displayed\nrequestAnimationFrame(()=>{if(!imageLoadAbortRef.current&&meshRef.current){renderFrame();// Trigger resize after textures are applied to ensure proper sizing\nif(triggerResizeRef.current&&containerRef.current){triggerResizeRef.current();}}});});});}};img.onerror=()=>{if(!imageLoadAbortRef.current){console.error(\"Texture loading error\");}setTextureLoaded(false);// Still render even if texture fails (will show back color) - only if still mounted\nif(!imageLoadAbortRef.current&&meshRef.current){renderFrame();}};img.src=resolvedImageUrl;},[resolvedImageUrl,backColor,createBackTexture,renderFrame,recreateMeshWithAspectRatio]);// Note: updateBones is called in setTimeout inside loadTexture, so it doesn't need to be a dependency\n// It will be available at runtime when the setTimeout executes\n// ========================================================================\n// BONE ANIMATION (2D Bone Grid with Fold Line)\n// ========================================================================\nconst updateBones=useCallback(()=>{if(!bonesRef.current.length||!meshRef.current||!bonesInitialPositionsRef.current.length)return;// Check if skeleton exists and has valid bones\nif(!meshRef.current.skeleton)return;const skeletonBones=meshRef.current.skeleton.bones;if(!skeletonBones||skeletonBones.length===0)return;// Force computation of world matrices BEFORE modifying bones\n// This prevents \"Cannot read properties of undefined (reading 'matrixWorld')\" errors\n// especially when curlRotation != 0 and bones have quaternion rotations\nmeshRef.current.updateMatrixWorld(true);// Ensure all bones have valid matrices before skeleton update\nskeletonBones.forEach(bone=>{if(bone&&typeof bone.updateMatrixWorld===\"function\"){bone.updateMatrixWorld(true);}});meshRef.current.skeleton.update();const bones=bonesRef.current;const initialPositions=bonesInitialPositionsRef.current;const curlFactor=Math.max(1e-4,animatedCurlRef.current.amount);// Use animated radius value instead of internalRadiusRef\nconst r=mapInteralRadiusToUIValue(animatedCurlRadiusRef.current.radius);const mesh=meshRef.current;// Use BASE geometry dimensions (without scale) for curl calculations\n// This ensures curl appearance stays visually consistent when component is resized\n// The scale is automatically applied through bone positions being children of the scaled mesh\nconst width=mesh.geometry.parameters.width;const height=mesh.geometry.parameters.height;// Use ref to always get current curlRotation value (avoids stale closure issues in Canvas mode)\nconst curlRotationRad=curlRotationRef.current*Math.PI/180;const dirX=Math.cos(curlRotationRad);const dirY=Math.sin(curlRotationRad);const axisX=-dirY;const axisY=dirX;const rotationAxis=new Vector3(axisX,axisY,0).normalize();// Calculate the actual maximum distance along the curl direction\n// For a rectangle, we need to find which corner is furthest along the direction vector\n// The rectangle extends from -halfWidth to +halfWidth in X and -halfHeight to +halfHeight in Y\nconst halfWidth=width/2;const halfHeight=height/2;// Check all 4 corners to find the maximum distance along the curl direction\n// Corner coordinates: (w, h), (w, -h), (-w, h), (-w, -h)\n// Distance along direction (dirX, dirY) = x * dirX + y * dirY\nconst corner1=halfWidth*dirX+halfHeight*dirY// (w, h)\n;const corner2=halfWidth*dirX-halfHeight*dirY// (w, -h)\n;const corner3=-halfWidth*dirX+halfHeight*dirY// (-w, h)\n;const corner4=-halfWidth*dirX-halfHeight*dirY// (-w, -h)\n;// Maximum distance along curl direction (furthest corner in that direction)\nconst maxDistAlongDir=Math.max(corner1,corner2,corner3,corner4);// Keep maxDistFromCenter for radius calculations (uses diagonal for smooth curves)\nconst diagonalLength=Math.sqrt(width*width+height*height);const maxDistFromCenter=diagonalLength/2;// foldOffset: position of the fold line along the 'dir' axis\n// Use animated curlStart value for smooth animations\n// Use maxDistAlongDir to keep fold line within sticker bounds (0 = left/top edge, 1 = right/bottom edge)\nconst animatedStart=animatedCurlStartRef.current.start;const foldOffset=-maxDistAlongDir+animatedStart*2*maxDistAlongDir;const radiusWorld=r*maxDistFromCenter;// RPrime is the current bending radius. As f -> 0, RPrime -> infinity (flat)\nconst RPrime=radiusWorld/curlFactor;const arcLimit=Math.PI*radiusWorld;for(let i=0;i<bones.length;i++){const bone=bones[i];const initialPos=initialPositions[i];const distOnDir=initialPos.x*dirX+initialPos.y*dirY;const signedDist=distOnDir-foldOffset;if(signedDist>0){let xRel,zRel,finalAngle;if(curlMode===\"semicircle\"){// Semicircle: follow arc of radius RPrime for arcLimit distance, then go straight\nconst angle_s=signedDist*curlFactor/radiusWorld;if(signedDist<=arcLimit){xRel=RPrime*Math.sin(angle_s);zRel=RPrime*(1-Math.cos(angle_s));finalAngle=angle_s;}else{const Phi=Math.PI*curlFactor;const xArcEnd=RPrime*Math.sin(Phi);const zArcEnd=RPrime*(1-Math.cos(Phi));const extra=signedDist-arcLimit;// Part past the arc is straight along the tangent at Phi\nxRel=xArcEnd+extra*Math.cos(Phi);zRel=zArcEnd+extra*Math.sin(Phi);finalAngle=Phi;}}else{// Spiral mode: tighten the radius as we wrap\nconst angle_sp=signedDist*curlFactor/radiusWorld;const spiralDecay=.85;const effectiveR=radiusWorld*Math.pow(spiralDecay,angle_sp/Math.PI);const effectiveRPrime=effectiveR/curlFactor;xRel=effectiveRPrime*Math.sin(angle_sp);zRel=effectiveRPrime*(1-Math.cos(angle_sp));finalAngle=angle_sp;}const dx=xRel-signedDist;bone.position.x=initialPos.x+dx*dirX;bone.position.y=initialPos.y+dx*dirY;bone.position.z=initialPos.z+zRel;const quat=new Quaternion;quat.setFromAxisAngle(rotationAxis,-finalAngle);bone.quaternion.copy(quat);}else{bone.position.copy(initialPos);bone.quaternion.identity();}}if(meshRef.current.skeleton){meshRef.current.skeleton.update();}renderFrame();},[curlMode,renderFrame])// curlRotation removed from deps - we use ref instead\n;// Batched bone update - only runs once per frame even if multiple values change\n// This prevents 3x redundant updateBones() calls when all 3 motion values animate together\nconst scheduleBoneUpdate=useCallback(()=>{if(pendingUpdateRef.current)return;// Already scheduled\npendingUpdateRef.current=true;requestAnimationFrame(()=>{pendingUpdateRef.current=false;updateBones();});},[updateBones]);// Set up motion value event listeners to sync with refs and schedule batched update\n// These must be after updateBones is defined\nuseMotionValueEvent(curlAmountMotion,\"change\",latest=>{animatedCurlRef.current.amount=latest;scheduleBoneUpdate();});useMotionValueEvent(curlStartMotion,\"change\",latest=>{animatedCurlStartRef.current.start=latest;scheduleBoneUpdate();});useMotionValueEvent(curlRadiusMotion,\"change\",latest=>{animatedCurlRadiusRef.current.radius=latest;scheduleBoneUpdate();});// ========================================================================\n// HOVER ANIMATION WITH FRAMER MOTION\n// ========================================================================\n// Store animation controls refs to allow cancellation\nconst animationControlsRef=useRef({});// Helper function to build transition config from ControlType.Transition\n// Handles both tween and spring animation types with all their properties\nconst buildTransitionConfig=useCallback((transitionValue,fallbackDuration=animationDuration,defaultEase)=>{const config={...transitionValue?.type&&{type:transitionValue.type}};// For tween animations\nif(!transitionValue?.type||transitionValue.type===\"tween\"){// ControlType.Transition already provides duration in seconds\n// fallbackDuration (animationDuration) is also in seconds\nconst duration=transitionValue?.duration??fallbackDuration;config.duration=duration;if(transitionValue?.ease){config.ease=transitionValue.ease;}else if(defaultEase){config.ease=defaultEase;}if(transitionValue?.delay!==undefined)config.delay=transitionValue.delay;}// For spring animations\nif(transitionValue?.type===\"spring\"){if(transitionValue.stiffness!==undefined)config.stiffness=transitionValue.stiffness;if(transitionValue.damping!==undefined)config.damping=transitionValue.damping;if(transitionValue.mass!==undefined)config.mass=transitionValue.mass;if(transitionValue.bounce!==undefined)config.bounce=transitionValue.bounce;if(transitionValue.restDelta!==undefined)config.restDelta=transitionValue.restDelta;if(transitionValue.restSpeed!==undefined)config.restSpeed=transitionValue.restSpeed;// Spring can also have duration if provided (already in seconds from ControlType.Transition)\nif(transitionValue.duration!==undefined){config.duration=transitionValue.duration;}}return config;},[animationDuration]);// Pointer enter handler: trigger animation forward when mouse enters container\nconst handleMouseEnter=useCallback(()=>{if(!isHoveringRef.current){isHoveringRef.current=true;// Update cursor\nif(containerRef.current){containerRef.current.style.cursor=\"pointer\";}// Stop any existing animations\nif(animationControlsRef.current.curlAmount)animationControlsRef.current.curlAmount.stop();if(animationControlsRef.current.curlStart)animationControlsRef.current.curlStart.stop();if(animationControlsRef.current.curlRadius)animationControlsRef.current.curlRadius.stop();// Build transition config\nconst transitionConfig=buildTransitionConfig(transition);// Animate to end states\nanimationControlsRef.current.curlAmount=animate(curlAmountMotion,animation.curlAmountEnd,transitionConfig);animationControlsRef.current.curlStart=animate(curlStartMotion,animation.curlStartEnd,transitionConfig);animationControlsRef.current.curlRadius=animate(curlRadiusMotion,animation.curlRadiusEnd,transitionConfig);}},[animation,transition,curlAmountMotion,curlStartMotion,curlRadiusMotion,buildTransitionConfig]);// Pointer leave handler: reverse animation when leaving container\nconst handleMouseLeave=useCallback(()=>{if(isHoveringRef.current){isHoveringRef.current=false;// Update cursor\nif(containerRef.current){containerRef.current.style.cursor=\"auto\";}// Stop any existing animations\nif(animationControlsRef.current.curlAmount)animationControlsRef.current.curlAmount.stop();if(animationControlsRef.current.curlStart)animationControlsRef.current.curlStart.stop();if(animationControlsRef.current.curlRadius)animationControlsRef.current.curlRadius.stop();// Build transition config (use easeOut for mouse leave)\nconst transitionConfig=buildTransitionConfig(transition,animationDuration,\"easeOut\");// Animate back to start states\nanimationControlsRef.current.curlAmount=animate(curlAmountMotion,animation.curlAmountStart,transitionConfig);animationControlsRef.current.curlStart=animate(curlStartMotion,animation.curlStartStart,transitionConfig);animationControlsRef.current.curlRadius=animate(curlRadiusMotion,animation.curlRadiusStart,transitionConfig);}},[animation,transition,animationDuration,curlAmountMotion,curlStartMotion,curlRadiusMotion,buildTransitionConfig]);// ========================================================================\n// RESIZE HANDLING\n// ========================================================================\nconst updateSize=useCallback((containerWidth,containerHeight)=>{if(!cameraRef.current||!rendererRef.current||!meshRef.current||!canvasRef.current)return;const dpr=Math.min(window.devicePixelRatio||1,2);// Canvas with small padding for shadows\nconst canvasWidth=containerWidth*CANVAS_SCALE;const canvasHeight=containerHeight*CANVAS_SCALE;// Calculate contained dimensions (maintains image aspect ratio)\nconst contained=calculateContainedDimensions(containerWidth,containerHeight,imageAspectRatioRef.current);const width=contained.width;const height=contained.height;// Update camera\ncameraRef.current.aspect=canvasWidth/canvasHeight;cameraRef.current.fov=calculateCameraFov(canvasWidth,canvasHeight,CAMERA_DISTANCE);cameraRef.current.updateProjectionMatrix();// Update renderer\nrendererRef.current.setSize(Math.round(canvasWidth*dpr),Math.round(canvasHeight*dpr),false);canvasRef.current.style.width=`${canvasWidth}px`;canvasRef.current.style.height=`${canvasHeight}px`;// Always scale the mesh to fit contained dimensions\n// Only recreate if aspect ratio changed significantly (to avoid unnecessary recreation)\nif(meshRef.current){const geometry=meshRef.current.geometry;const baseWidth=geometry.parameters.width;const baseHeight=geometry.parameters.height;// Check if aspect ratio changed significantly (needs recreation)\nconst aspectRatioChanged=imageAspectRatioRef.current&&lastMeshDimensionsRef.current&&Math.abs(lastMeshDimensionsRef.current.width/lastMeshDimensionsRef.current.height-width/height)>.01;if(aspectRatioChanged&&imageAspectRatioRef.current){// Recreate mesh with new aspect ratio\nrecreateMeshWithAspectRatio(imageAspectRatioRef.current);lastMeshDimensionsRef.current={width,height};// Restore curl after mesh recreation\nsetTimeout(()=>{if(meshRef.current&&bonesRef.current.length>0){// Ensure skeleton is initialized before updating bones\nif(meshRef.current.skeleton){meshRef.current.skeleton.update();}updateBones();renderFrame();}},10);}else{// Scale existing mesh to fit contained dimensions\n// This preserves textures and is much faster\nconst scaleX=width/baseWidth;const scaleY=height/baseHeight;meshRef.current.scale.set(scaleX,scaleY,1);// Mesh stays centered at origin (no position offset with 2D grid)\nmeshRef.current.position.set(0,0,0);// Update last dimensions\nlastMeshDimensionsRef.current={width,height};// Update bones to reflect new scale\nupdateBones();renderFrame();}}// Update shadow camera (shadows always enabled)\nif(lightRef.current){// Match shadow camera bounds from setupScene - use canvas dimensions\nconst baseShadowSize=Math.max(canvasWidth,canvasHeight);const shadowCameraSize=Math.max(baseShadowSize,baseShadowSize*(3.5/CANVAS_SCALE)// Or use scaled padding\n);const shadowOffsetX=shadowPositionX*.3;const shadowOffsetY=shadowPositionY*.3;lightRef.current.shadow.camera.left=-shadowCameraSize/2+shadowOffsetX;lightRef.current.shadow.camera.right=shadowCameraSize/2+shadowOffsetX;lightRef.current.shadow.camera.top=shadowCameraSize/2+shadowOffsetY;lightRef.current.shadow.camera.bottom=-shadowCameraSize/2+shadowOffsetY;lightRef.current.shadow.camera.updateProjectionMatrix();}},[recreateMeshWithAspectRatio,updateBones,renderFrame]);// ========================================================================\n// EFFECTS\n// ========================================================================\n// WebGL context loss detection - set up early\nuseEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;const handleContextLost=event=>{event.preventDefault()// Prevent default behavior\n;console.warn(\"WebGL context lost event fired. Too many WebGL contexts active. Try reducing the number of 3D components on the page.\");setContextLost(true);};const handleContextRestored=()=>{console.log(\"WebGL context restored event fired\");setContextLost(false);setSceneReady(false)// Reset before re-initialization\n;// Re-initialize the scene when context is restored\nif(hasContent){const sceneSetup=setupScene();if(sceneSetup&&meshRef.current){if(meshRef.current.skeleton){meshRef.current.skeleton.update();}updateBones();renderFrame();loadTexture();}}};canvas.addEventListener(\"webglcontextlost\",handleContextLost,false);canvas.addEventListener(\"webglcontextrestored\",handleContextRestored,false);return()=>{canvas.removeEventListener(\"webglcontextlost\",handleContextLost);canvas.removeEventListener(\"webglcontextrestored\",handleContextRestored);};},[hasContent,setupScene,updateBones,renderFrame,loadTexture]);// Retry initialization when props change and context was lost\n// This allows the component to recover when user tweaks props\nuseEffect(()=>{if(contextLost&&hasContent){// Prevent rapid retry attempts - only allow once per 2 seconds\nconst now=Date.now();if(now-lastRetryAttemptRef.current<2e3){return;}lastRetryAttemptRef.current=now;console.log(\"Props changed while context lost - attempting to reinitialize...\");// Reset context lost state and scene ready state, then attempt to reinitialize\nsetContextLost(false);setSceneReady(false);imageLoadAbortRef.current=false;// Attempt to recreate the scene with a slight delay to ensure cleanup\nconst retryTimeout=setTimeout(()=>{console.log(\"Retrying scene setup after context loss...\");const sceneSetup=setupScene();if(sceneSetup&&meshRef.current){// Successfully created new context\nconsole.log(\"Successfully recreated WebGL context!\");if(meshRef.current.skeleton){meshRef.current.skeleton.update();}updateBones();renderFrame();loadTexture();}else{console.warn(\"Failed to recreate WebGL context - still unavailable\");}},100);return()=>clearTimeout(retryTimeout);}},[resolvedImageUrl,curlRotation,curlMode,backColor,shadowPositionX,shadowPositionY,castShadowOpacity,animation.curlAmountStart,animation.curlAmountEnd,animation.curlRadiusStart,animation.curlRadiusEnd,animation.curlStartStart,animation.curlStartEnd,animation.show,contextLost,hasContent,setupScene,updateBones,renderFrame,loadTexture]);// Reset aspect ratio when image changes\nuseEffect(()=>{imageAspectRatioRef.current=null;},[resolvedImageUrl]);// Refresh toggle - force complete re-initialization when toggled\nuseEffect(()=>{// Only run when refresh value actually changes (not on initial mount)\nif(previousRefreshRef.current===undefined){previousRefreshRef.current=refresh;return;}// If refresh value hasn't changed, do nothing\nif(previousRefreshRef.current===refresh){return;}// Update the previous value\npreviousRefreshRef.current=refresh;if(!hasContent)return;// Clean up existing scene completely\nif(rendererRef.current){try{rendererRef.current.dispose();}catch(error){// Silently handle disposal errors\n}rendererRef.current=null;}if(sceneRef.current){try{// Remove all children before clearing\nwhile(sceneRef.current.children.length>0){const child=sceneRef.current.children[0];sceneRef.current.remove(child);}sceneRef.current.clear();}catch(error){// Silently handle cleanup errors\n}sceneRef.current=null;}if(meshRef.current){const oldMesh=meshRef.current;if(groupRef.current){groupRef.current.remove(oldMesh);}// Dispose skeleton bones\nif(oldMesh.skeleton){oldMesh.skeleton.bones.forEach(bone=>{if(bone&&bone.parent){bone.parent.remove(bone);}});}if(oldMesh.geometry){oldMesh.geometry.dispose();}if(Array.isArray(oldMesh.material)){oldMesh.material.forEach(mat=>{if(mat.map)mat.map.dispose();mat.dispose();});}meshRef.current=null;}groupRef.current=null;bonesRef.current=[];bonesInitialPositionsRef.current=[];lightRef.current=null;ambientLightRef.current=null;backgroundPlaneRef.current=null;loadedImageRef.current=null;// Reset context lost state and scene ready state\nsetContextLost(false);setSceneReady(false);imageLoadAbortRef.current=false;// Reinitialize scene after a brief delay to ensure cleanup is complete\nsetTimeout(()=>{const sceneSetup=setupScene();if(sceneSetup&&meshRef.current){if(meshRef.current.skeleton){meshRef.current.skeleton.update();}updateBones();renderFrame();loadTexture();}},50);},[refresh,hasContent,setupScene,updateBones,renderFrame,loadTexture]);// Initialize scene\nuseEffect(()=>{if(!hasContent){imageLoadAbortRef.current=true// Mark as aborting\n;setSceneReady(false)// Reset scene ready state\n;if(rendererRef.current){try{rendererRef.current.dispose();}catch(error){// Silently handle disposal errors\n}rendererRef.current=null;}if(sceneRef.current){try{sceneRef.current.clear();}catch(error){// Silently handle cleanup errors\n}sceneRef.current=null;}meshRef.current=null;bonesRef.current=[];bonesInitialPositionsRef.current=[];lightRef.current=null;ambientLightRef.current=null;backgroundPlaneRef.current=null;imageAspectRatioRef.current=null;loadedImageRef.current=null;return;}imageLoadAbortRef.current=false// Reset abort flag when content is available\n;const sceneSetup=setupScene();if(!sceneSetup){// If setupScene returns null, it might be:\n// 1. Container not ready (retry)\n// 2. WebGL context failed (contextLost already set in setupScene)\n// Try again after a short delay\nconst retryTimeout=setTimeout(()=>{const retrySetup=setupScene();if(retrySetup&&meshRef.current){// Initialize skeleton and bones immediately\nif(meshRef.current.skeleton){meshRef.current.skeleton.update();}updateBones();// Render immediately to show mesh (even without texture)\nrenderFrame();// Load texture asynchronously\nloadTexture();}else if(!retrySetup){// Retry failed - if contextLost isn't already set, this might be a context issue\nconsole.warn(\"Scene setup failed on retry - context may be unavailable\");}},100);return()=>clearTimeout(retryTimeout);}// Initialize immediately - no setTimeout delays\nif(meshRef.current){// Initialize skeleton and bones\nif(meshRef.current.skeleton){meshRef.current.skeleton.update();}updateBones();// Render immediately to show mesh (even without texture - will show back color)\nrenderFrame();// Load texture asynchronously - it will trigger another render when done\nloadTexture();// Trigger initial resize to ensure proper sizing\n// This ensures component is responsive from the start\nrequestAnimationFrame(()=>{if(!imageLoadAbortRef.current&&triggerResizeRef.current&&containerRef.current){triggerResizeRef.current();}});}return()=>{if(animationFrameRef.current){cancelAnimationFrame(animationFrameRef.current);animationFrameRef.current=null;}// Reset scene ready state\nsetSceneReady(false);// Dispose mesh and all its resources\nif(meshRef.current){const oldMesh=meshRef.current;// Remove from scene and group\nif(groupRef.current){groupRef.current.remove(oldMesh);}if(sceneRef.current){sceneRef.current.remove(oldMesh);}// Dispose geometry\nif(oldMesh.geometry){oldMesh.geometry.dispose();}// Dispose materials and textures\nif(Array.isArray(oldMesh.material)){oldMesh.material.forEach(mat=>{if(mat.map)mat.map.dispose();mat.dispose();});}else if(oldMesh.material){if(oldMesh.material.map){oldMesh.material.map.dispose();}oldMesh.material.dispose();}// Clear skeleton bones\nif(oldMesh.skeleton){oldMesh.skeleton.bones.forEach(bone=>{if(bone&&bone.parent){bone.parent.remove(bone);}});}meshRef.current=null;}// Clear bones refs\nbonesRef.current=[];bonesInitialPositionsRef.current=[];groupRef.current=null;// Dispose renderer (this also disposes of its WebGL context)\nif(rendererRef.current){try{rendererRef.current.dispose();}catch(error){// Silently handle disposal errors\n}rendererRef.current=null;}// Clear scene\nif(sceneRef.current){try{// Remove all remaining objects\nwhile(sceneRef.current.children.length>0){const child=sceneRef.current.children[0];sceneRef.current.remove(child);// Dispose if it has dispose method\nif(child.dispose&&typeof child.dispose===\"function\"){child.dispose();}}sceneRef.current.clear();}catch(error){// Silently handle cleanup errors\n}sceneRef.current=null;}// Clear refs\ncameraRef.current=null;lightRef.current=null;ambientLightRef.current=null;backgroundPlaneRef.current=null;loadedImageRef.current=null;imageAspectRatioRef.current=null;// Stop any running animations\nif(animationControlsRef.current.curlAmount)animationControlsRef.current.curlAmount.stop();if(animationControlsRef.current.curlStart)animationControlsRef.current.curlStart.stop();if(animationControlsRef.current.curlRadius)animationControlsRef.current.curlRadius.stop();animationControlsRef.current={};// Mark image loading as aborted to prevent callbacks from running after unmount\nimageLoadAbortRef.current=true;};},[hasContent,setupScene,loadTexture,updateBones,renderFrame]);// Sync animated refs with animation prop changes (only when not hovering)\nuseEffect(()=>{// Only update if not currently animating (not hovering)\nif(!isHoveringRef.current){// In Canvas mode, respect the show prop to determine which state to display\n// In preview/live mode, always use start values\nconst shouldShowFinal=isCanvas&&animation.show===\"final\";const targetCurlAmount=shouldShowFinal?animation.curlAmountEnd:animation.curlAmountStart;const targetCurlStart=shouldShowFinal?animation.curlStartEnd:animation.curlStartStart;const targetCurlRadius=shouldShowFinal?animation.curlRadiusEnd:animation.curlRadiusStart;// Set motion values directly (no animation when props change)\n// Note: .set() doesn't trigger useMotionValueEvent, so we update refs manually\ncurlAmountMotion.set(targetCurlAmount);curlStartMotion.set(targetCurlStart);curlRadiusMotion.set(targetCurlRadius);// Update refs directly and call updateBones\nanimatedCurlRef.current.amount=targetCurlAmount;animatedCurlStartRef.current.start=targetCurlStart;animatedCurlRadiusRef.current.radius=targetCurlRadius;updateBones();}},[animation,isCanvas,curlAmountMotion,curlStartMotion,curlRadiusMotion,updateBones]);// Update bones when curlMode changes\n// Note: curlAmount and curlStart are handled by GSAP animations via animated refs\nuseEffect(()=>{updateBones();},[curlMode,updateBones]);// Update bones when curlRotation changes (fold line direction)\nuseEffect(()=>{// Update ref immediately so updateBones always uses current value\ncurlRotationRef.current=curlRotation;if(!meshRef.current||!bonesRef.current.length)return;updateBones();// In Canvas mode, explicitly render to ensure the change is visible\nif(isCanvas&&rendererRef.current&&sceneRef.current&&cameraRef.current){renderFrame();}},[curlRotation,updateBones,isCanvas,renderFrame]);// Update back color - recreate back texture when backColor changes\nuseEffect(()=>{if(!meshRef.current?.material||!loadedImageRef.current)return;const img=loadedImageRef.current;const materials=meshRef.current.material;if(!Array.isArray(materials))return;// Check if backColor is fully transparent (0% opacity)\nconst resolvedBackColor=resolveTokenColor(backColor);const backColorRgba=parseColorToRgba(resolvedBackColor);// Get front texture to reuse if backColor is fully transparent\nconst frontTexture=materials[4]?.map;// If backColor is fully transparent, use front texture directly\n// Otherwise, create blended back texture\nconst rawBackTexture=backColorRgba.a<=0&&frontTexture?frontTexture:createBackTexture(img,backColor);const backTexture=makeBackTextureViewConsistent(rawBackTexture,frontTexture);if(materials[5]){// Only dispose if it's a different texture (not the front texture)\nif(materials[5].map&&materials[5].map!==frontTexture&&materials[5].map!==backTexture){materials[5].map.dispose();}// With shadows: use texture (MeshStandardMaterial)\nif(backTexture){materials[5].map=backTexture;materials[5].transparent=true;materials[5].alphaTest=.01;// When using front texture (0% opacity), match front material properties more closely\nif(backColorRgba.a<=0&&materials[5].emissiveIntensity!==undefined){// Match front material emissive for identical appearance\nmaterials[5].emissiveIntensity=materials[4]?.emissiveIntensity??.8;materials[5].emissive=materials[4]?.emissive??new Color(16777215);}}materials[5].needsUpdate=true;}// Update side faces (border) to use front face texture - blends with front image, not background\nfor(let i=0;i<4;i++){if(materials[i]){// Use front face texture so border blends with front image\nif(frontTexture){materials[i].map=frontTexture;materials[i].transparent=true;materials[i].alphaTest=.01;// Match front material properties if using MeshStandardMaterial\nif(materials[i].emissiveIntensity!==undefined&&materials[4]?.emissiveIntensity!==undefined){materials[i].emissiveMap=frontTexture;materials[i].emissive=materials[4].emissive||new Color(16777215);materials[i].emissiveIntensity=materials[4].emissiveIntensity||.8;}}else{// No texture yet - use back color as fallback\nmaterials[i].map=null;materials[i].color.setRGB(backColorRgba.r,backColorRgba.g,backColorRgba.b);materials[i].transparent=true;materials[i].opacity=1;}materials[i].needsUpdate=true;}}renderFrame();},[backColor,createBackTexture,renderFrame]);// Update shadow position when settings change (debounced to prevent lag)\nuseEffect(()=>{// Debounce shadow position updates to improve performance when dragging sliders\nconst timeoutId=setTimeout(()=>{if(!lightRef.current||!containerRef.current)return;lightRef.current.position.set(shadowPositionX,shadowPositionY,400);lightRef.current.shadow.mapSize.width=4096;lightRef.current.shadow.mapSize.height=4096;lightRef.current.shadow.bias=-1e-5;lightRef.current.shadow.radius=8;// Update shadow camera bounds to account for new light position (use canvas dimensions)\nconst container=containerRef.current;const containerWidth=container.clientWidth||container.offsetWidth||1;const containerHeight=container.clientHeight||container.offsetHeight||1;const canvasWidth=containerWidth*CANVAS_SCALE;const canvasHeight=containerHeight*CANVAS_SCALE;const baseShadowSize=Math.max(canvasWidth,canvasHeight);const shadowCameraSize=Math.max(baseShadowSize,baseShadowSize*(3.5/CANVAS_SCALE)// Or use scaled padding\n);const shadowOffsetX=shadowPositionX*.3;const shadowOffsetY=shadowPositionY*.3;lightRef.current.shadow.camera.left=-shadowCameraSize/2+shadowOffsetX;lightRef.current.shadow.camera.right=shadowCameraSize/2+shadowOffsetX;lightRef.current.shadow.camera.top=shadowCameraSize/2+shadowOffsetY;lightRef.current.shadow.camera.bottom=-shadowCameraSize/2+shadowOffsetY;lightRef.current.shadow.camera.updateProjectionMatrix();lightRef.current.shadow.needsUpdate=true;renderFrame();},50)// 50ms debounce to prevent lag when dragging sliders\n;return()=>clearTimeout(timeoutId);},[shadowPositionX,shadowPositionY,renderFrame]);// Update shadow intensity (darkness) - hardcoded to 1\nuseEffect(()=>{if(!lightRef.current||!ambientLightRef.current)return;// Shadow darkness is controlled by the ratio of directional to ambient light\n// shadowIntensity = 1 (hardcoded), make shadows very dramatic\nconst shadowIntensity=1// Hardcoded\n;// Directional light: 0.3 to 2.0 (more dramatic at max)\nconst adjustedLightIntensity=.3+shadowIntensity*1.7;lightRef.current.intensity=adjustedLightIntensity;// Ambient light: 1.0 to 0.4 (lower at max for dramatic shadows)\nconst adjustedAmbientIntensity=1-shadowIntensity*.6;ambientLightRef.current.intensity=Math.max(adjustedAmbientIntensity,.4);renderFrame();},[renderFrame]);// Update cast shadow opacity when it changes (debounced to prevent lag)\nuseEffect(()=>{// Debounce shadow opacity updates to improve performance when dragging sliders\nconst timeoutId=setTimeout(()=>{if(!backgroundPlaneRef.current||!containerRef.current)return;const material=backgroundPlaneRef.current.material;// ShadowMaterial: adjust opacity based on castShadowOpacity\nmaterial.opacity=castShadowOpacity;material.needsUpdate=true;// Update plane size to match shadow camera bounds (use canvas dimensions)\nconst container=containerRef.current;const containerWidth=container.clientWidth||container.offsetWidth||1;const containerHeight=container.clientHeight||container.offsetHeight||1;const canvasWidth=containerWidth*CANVAS_SCALE;const canvasHeight=containerHeight*CANVAS_SCALE;const baseShadowSize=Math.max(canvasWidth,canvasHeight);const planeSize=Math.max(baseShadowSize,baseShadowSize*(3.5/CANVAS_SCALE)// Or use scaled padding to match shadow camera\n);// Dispose old geometry and create new one with updated size\nconst oldGeometry=backgroundPlaneRef.current.geometry;const newGeometry=new PlaneGeometry(planeSize,planeSize);backgroundPlaneRef.current.geometry=newGeometry;oldGeometry.dispose();renderFrame();},50)// 50ms debounce to prevent lag when dragging sliders\n;return()=>clearTimeout(timeoutId);},[castShadowOpacity,renderFrame]);// Size monitoring - optimized for Framer canvas\n// Re-run when image changes to ensure responsiveness\nuseEffect(()=>{const container=containerRef.current;if(!container)return;const handleResize=()=>{const width=container.clientWidth||container.offsetWidth||1;const height=container.clientHeight||container.offsetHeight||1;// For preview/live mode, always update if dimensions are valid\n// For canvas mode, only update if scene is initialized\nif(width>0&&height>0){const last=lastSizeRef.current;const sizeChanged=Math.abs(width-last.width)>.5||Math.abs(height-last.height)>.5;if(sizeChanged||!last.width||!last.height){// In preview/live mode, update immediately\n// In canvas mode, only update if scene is ready\nif(!isCanvas||rendererRef.current&&cameraRef.current&&meshRef.current){last.width=width;last.height=height;updateSize(width,height);renderFrame();}}}};// Store handleResize in ref so it can be called from image load callback\ntriggerResizeRef.current=handleResize;// Initial resize - delay to ensure scene is set up\n// In preview mode, the scene might not be ready immediately\n// Use multiple attempts to catch when container gets dimensions\nlet attemptCount=0;const maxAttempts=10;const attemptResize=()=>{if(attemptCount<maxAttempts){attemptCount++;handleResize();// If scene isn't ready yet, try again\nif(!rendererRef.current||!sceneRef.current){setTimeout(attemptResize,isCanvas?50:100);}}};// Trigger immediately, then also schedule delayed attempts\nhandleResize();const initialResizeTimeout=setTimeout(attemptResize,isCanvas?0:50);// Use requestAnimationFrame-based monitoring for canvas mode (like interactive-thermal3.tsx)\nconst resizeCleanup=isCanvas?(()=>{let rafId=0;const TICK_MS=250;const EPS_ASPECT=.001;const tick=now=>{if(!container)return;const probe=zoomProbeRef.current;if(!probe){rafId=requestAnimationFrame(tick);return;}const cw=container.clientWidth||container.offsetWidth||1;const ch=container.clientHeight||container.offsetHeight||1;const aspect=cw/ch;const zoom=probe.getBoundingClientRect().width/20;const timeOk=!lastSizeRef.current.ts||(now||performance.now())-lastSizeRef.current.ts>=TICK_MS;const aspectChanged=Math.abs(aspect-lastSizeRef.current.aspect)>EPS_ASPECT;const sizeChanged=Math.abs(cw-lastSizeRef.current.width)>1||Math.abs(ch-lastSizeRef.current.height)>1;if(timeOk&&(aspectChanged||sizeChanged)){// Only update lastSizeRef if scene is ready (canvas mode requirement)\nif(rendererRef.current&&cameraRef.current&&meshRef.current){lastSizeRef.current={width:cw,height:ch,aspect,zoom,ts:now||performance.now()};updateSize(cw,ch);renderFrame();}}rafId=requestAnimationFrame(tick);};rafId=requestAnimationFrame(tick);return()=>cancelAnimationFrame(rafId);})():(()=>{// For preview/published mode, use ResizeObserver + window resize\nconst resizeObserver=new ResizeObserver(handleResize);resizeObserver.observe(container);window.addEventListener(\"resize\",handleResize);return()=>{resizeObserver.disconnect();window.removeEventListener(\"resize\",handleResize);};})();return()=>{clearTimeout(initialResizeTimeout);resizeCleanup();triggerResizeRef.current=null;};},[updateSize,renderFrame,isCanvas,hasContent,resolvedImageUrl]);// Periodic check for context loss (in case event doesn't fire)\n// IMPORTANT: Must be before any conditional returns to follow React's rules of hooks\nuseEffect(()=>{if(!hasContent||contextLost)return;let checkCount=0;const maxFastChecks=5// First 5 checks are faster\n;const checkContext=()=>{if(rendererRef.current){const gl=rendererRef.current.getContext();if(!gl||gl.isContextLost()){console.warn(\"Detected context loss via periodic check\");setContextLost(true);}}checkCount++;};// Start with faster checks (every 500ms for first 2.5 seconds)\n// Then slow down to every 3 seconds\nconst fastInterval=setInterval(()=>{if(checkCount>=maxFastChecks){clearInterval(fastInterval);}else{checkContext();}},500);const slowInterval=setInterval(()=>{if(checkCount>=maxFastChecks){checkContext();}},3e3);return()=>{clearInterval(fastInterval);clearInterval(slowInterval);};},[hasContent,contextLost]);// If we have content but no scene after a delay, assume context loss\n// IMPORTANT: Must be before any conditional returns to follow React's rules of hooks\nuseEffect(()=>{if(!hasContent||contextLost||sceneReady)return;// After 2 seconds, if still no scene, assume WebGL context issue\nconst checkTimeout=setTimeout(()=>{if(!sceneRef.current&&!contextLost){console.warn(\"Scene failed to initialize after 2 seconds - assuming WebGL context unavailable\");setContextLost(true);}},2e3);return()=>clearTimeout(checkTimeout);},[hasContent,contextLost,sceneReady]);// ========================================================================\n// RENDER\n// ========================================================================\nif(!hasContent){return /*#__PURE__*/_jsx(ComponentMessage,{style:{position:\"relative\",width:\"100%\",height:\"100%\",minWidth:0,minHeight:0},title:\"3D Sticker\",subtitle:\"Add an image to see the sticker effect\"});}// Show error message when WebGL context is lost\nif(contextLost){return /*#__PURE__*/_jsx(ComponentMessage,{title:\"⚠️ Don't worry, this is normal.\",subtitle:\"There are currently more stickers in Canvas than Browsers can handle. Tweak Refresh to see the sticker re-appear. If you don't add too many stickers, you won't have issues in preview or deployed website.\"});}// Calculate offset to center the larger canvas within the container\n// This gives extra space for shadows while keeping the sticker centered\nconst offsetPercent=(CANVAS_SCALE-1)/2*100;return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,onPointerEnter:handleMouseEnter,onPointerLeave:handleMouseLeave,style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"visible\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",margin:0,padding:0,borderRadius:borderRadius,backgroundColor:backgroundColor?backgroundColor:\"transparent\"},children:[/*#__PURE__*/_jsx(\"div\",{ref:zoomProbeRef,style:{position:\"absolute\",width:20,height:20,opacity:0,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{position:\"absolute\",top:`-${offsetPercent}%`,left:`-${offsetPercent}%`,// In canvas mode, use explicit dimensions for better responsiveness\n// In preview/live mode, let JavaScript set dimensions\n...isCanvas?{width:`${CANVAS_SCALE*100}%`,height:`${CANVAS_SCALE*100}%`}:{},display:\"block\",pointerEvents:\"none\",cursor:\"auto\",opacity:sceneReady?1:0}})]});}// ============================================================================\n// PROPERTY CONTROLS\n// ============================================================================\naddPropertyControls(Sticker,{refresh:{type:ControlType.Boolean,title:\"Refresh\",defaultValue:false,enabledTitle:\"•\",disabledTitle:\"•\",description:\"Toggle if the sticker is showing an error to see it again\"},image:{type:ControlType.ResponsiveImage,title:\"Image\"},curlMode:{type:ControlType.Enum,title:\"Mode\",options:[\"semicircle\",\"spiral\"],optionTitles:[\"Semicircle\",\"Spiral\"],defaultValue:\"spiral\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},animation:{type:ControlType.Object,title:\"Animation\",controls:{show:{type:ControlType.Enum,title:\"Show\",options:[\"initial\",\"final\"],optionTitles:[\"Initial\",\"Final\"],defaultValue:\"final\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\",description:\"The state to show in the canvas\"},curlAmountStart:{type:ControlType.Number,title:\"Curl Start\",min:0,max:1,step:.05,defaultValue:.45},curlRadiusStart:{type:ControlType.Number,title:\"Radius Start\",min:0,max:1,step:.05,defaultValue:.15},curlStartStart:{type:ControlType.Number,title:\"Start Start\",min:0,max:1,step:.05,defaultValue:.8},curlAmountEnd:{type:ControlType.Number,title:\"Curl Final\",min:0,max:1,step:.05,defaultValue:.45},curlRadiusEnd:{type:ControlType.Number,title:\"Radius Final\",min:0,max:1,step:.05,defaultValue:.15},curlStartEnd:{type:ControlType.Number,title:\"Start Final\",min:0,max:1,step:.05,defaultValue:.55}}},curlRotation:{type:ControlType.Number,title:\"Direction\",min:0,max:360,step:15,defaultValue:315,unit:\"\\xb0\"},shadowPositionX:{type:ControlType.Number,title:\"Light X\",min:-500,max:500,step:10,defaultValue:-400},shadowPositionY:{type:ControlType.Number,title:\"Light Y\",min:-500,max:500,step:10,defaultValue:0},castShadowOpacity:{type:ControlType.Number,title:\"Shadow\",min:0,max:1,step:.05,defaultValue:.3},shadowBgColor:{type:ControlType.Color,title:\"Shadow Bg\",defaultValue:\"rgba(0, 0, 0, 0)\",hidden:()=>true},backColor:{type:ControlType.Color,title:\"Back Color\",defaultValue:\"rgba(255, 255, 255, 1)\"},borderRadius:{//@ts-ignore - BorderRadius exists in the latest versions of Framer\ntype:ControlType.BorderRadius,defaultValue:\"0px\",title:\"Radius\"},backgroundColor:{type:ControlType.Color,title:\"Background\",optional:true},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:{type:\"tween\",duration:.6,ease:\"easeInOut\"},description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// ============================================================================\n// DISPLAY NAME\n// ============================================================================\nSticker.displayName=\"Sticker Peeling\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Sticker\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"400\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Sticker_prod.map","import { ControlType } from \"framer\";\nexport const fontStack = `\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nexport const containerStyles = {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(136, 85, 255, 0.3)\",\n    color: \"#85F\",\n    border: \"1px dashed #85F\",\n    flexDirection: \"column\"\n};\nexport const defaultEvents = {\n    onClick: {\n        type: ControlType.EventHandler\n    },\n    onMouseEnter: {\n        type: ControlType.EventHandler\n    },\n    onMouseLeave: {\n        type: ControlType.EventHandler\n    }\n};\nexport const fontSizeOptions = {\n    type: ControlType.Number,\n    title: \"Font Size\",\n    min: 2,\n    max: 200,\n    step: 1,\n    displayStepper: true\n};\nexport const fontControls = {\n    font: {\n        type: ControlType.Boolean,\n        title: \"Font\",\n        defaultValue: false,\n        disabledTitle: \"Default\",\n        enabledTitle: \"Custom\"\n    },\n    fontFamily: {\n        type: ControlType.String,\n        title: \"Family\",\n        placeholder: \"Inter\",\n        hidden: ({ font  })=>!font\n    },\n    fontWeight: {\n        type: ControlType.Enum,\n        title: \"Weight\",\n        options: [\n            100,\n            200,\n            300,\n            400,\n            500,\n            600,\n            700,\n            800,\n            900\n        ],\n        optionTitles: [\n            \"Thin\",\n            \"Extra-light\",\n            \"Light\",\n            \"Regular\",\n            \"Medium\",\n            \"Semi-bold\",\n            \"Bold\",\n            \"Extra-bold\",\n            \"Black\", \n        ],\n        hidden: ({ font  })=>!font\n    }\n};\n// @TODO check if we're missing anything here — there doesn't seem to be a reliable browser API for this\nexport const localeOptions = {\n    af: \"Afrikaans\",\n    sq: \"Albanian\",\n    an: \"Aragonese\",\n    ar: \"Arabic (Standard)\",\n    \"ar-dz\": \"Arabic (Algeria)\",\n    \"ar-bh\": \"Arabic (Bahrain)\",\n    \"ar-eg\": \"Arabic (Egypt)\",\n    \"ar-iq\": \"Arabic (Iraq)\",\n    \"ar-jo\": \"Arabic (Jordan)\",\n    \"ar-kw\": \"Arabic (Kuwait)\",\n    \"ar-lb\": \"Arabic (Lebanon)\",\n    \"ar-ly\": \"Arabic (Libya)\",\n    \"ar-ma\": \"Arabic (Morocco)\",\n    \"ar-om\": \"Arabic (Oman)\",\n    \"ar-qa\": \"Arabic (Qatar)\",\n    \"ar-sa\": \"Arabic (Saudi Arabia)\",\n    \"ar-sy\": \"Arabic (Syria)\",\n    \"ar-tn\": \"Arabic (Tunisia)\",\n    \"ar-ae\": \"Arabic (U.A.E.)\",\n    \"ar-ye\": \"Arabic (Yemen)\",\n    hy: \"Armenian\",\n    as: \"Assamese\",\n    ast: \"Asturian\",\n    az: \"Azerbaijani\",\n    eu: \"Basque\",\n    bg: \"Bulgarian\",\n    be: \"Belarusian\",\n    bn: \"Bengali\",\n    bs: \"Bosnian\",\n    br: \"Breton\",\n    my: \"Burmese\",\n    ca: \"Catalan\",\n    ch: \"Chamorro\",\n    ce: \"Chechen\",\n    zh: \"Chinese\",\n    \"zh-hk\": \"Chinese (Hong Kong)\",\n    \"zh-cn\": \"Chinese (PRC)\",\n    \"zh-sg\": \"Chinese (Singapore)\",\n    \"zh-tw\": \"Chinese (Taiwan)\",\n    cv: \"Chuvash\",\n    co: \"Corsican\",\n    cr: \"Cree\",\n    hr: \"Croatian\",\n    cs: \"Czech\",\n    da: \"Danish\",\n    nl: \"Dutch (Standard)\",\n    \"nl-be\": \"Dutch (Belgian)\",\n    en: \"English\",\n    \"en-au\": \"English (Australia)\",\n    \"en-bz\": \"English (Belize)\",\n    \"en-ca\": \"English (Canada)\",\n    \"en-ie\": \"English (Ireland)\",\n    \"en-jm\": \"English (Jamaica)\",\n    \"en-nz\": \"English (New Zealand)\",\n    \"en-ph\": \"English (Philippines)\",\n    \"en-za\": \"English (South Africa)\",\n    \"en-tt\": \"English (Trinidad & Tobago)\",\n    \"en-gb\": \"English (United Kingdom)\",\n    \"en-us\": \"English (United States)\",\n    \"en-zw\": \"English (Zimbabwe)\",\n    eo: \"Esperanto\",\n    et: \"Estonian\",\n    fo: \"Faeroese\",\n    fa: \"Farsi\",\n    fj: \"Fijian\",\n    fi: \"Finnish\",\n    fr: \"French (Standard)\",\n    \"fr-be\": \"French (Belgium)\",\n    \"fr-ca\": \"French (Canada)\",\n    \"fr-fr\": \"French (France)\",\n    \"fr-lu\": \"French (Luxembourg)\",\n    \"fr-mc\": \"French (Monaco)\",\n    \"fr-ch\": \"French (Switzerland)\",\n    fy: \"Frisian\",\n    fur: \"Friulian\",\n    gd: \"Gaelic (Scots)\",\n    \"gd-ie\": \"Gaelic (Irish)\",\n    gl: \"Galacian\",\n    ka: \"Georgian\",\n    de: \"German (Standard)\",\n    \"de-at\": \"German (Austria)\",\n    \"de-de\": \"German (Germany)\",\n    \"de-li\": \"German (Liechtenstein)\",\n    \"de-lu\": \"German (Luxembourg)\",\n    \"de-ch\": \"German (Switzerland)\",\n    el: \"Greek\",\n    gu: \"Gujurati\",\n    ht: \"Haitian\",\n    he: \"Hebrew\",\n    hi: \"Hindi\",\n    hu: \"Hungarian\",\n    is: \"Icelandic\",\n    id: \"Indonesian\",\n    iu: \"Inuktitut\",\n    ga: \"Irish\",\n    it: \"Italian (Standard)\",\n    \"it-ch\": \"Italian (Switzerland)\",\n    ja: \"Japanese\",\n    kn: \"Kannada\",\n    ks: \"Kashmiri\",\n    kk: \"Kazakh\",\n    km: \"Khmer\",\n    ky: \"Kirghiz\",\n    tlh: \"Klingon\",\n    ko: \"Korean\",\n    \"ko-kp\": \"Korean (North Korea)\",\n    \"ko-kr\": \"Korean (South Korea)\",\n    la: \"Latin\",\n    lv: \"Latvian\",\n    lt: \"Lithuanian\",\n    lb: \"Luxembourgish\",\n    mk: \"FYRO Macedonian\",\n    ms: \"Malay\",\n    ml: \"Malayalam\",\n    mt: \"Maltese\",\n    mi: \"Maori\",\n    mr: \"Marathi\",\n    mo: \"Moldavian\",\n    nv: \"Navajo\",\n    ng: \"Ndonga\",\n    ne: \"Nepali\",\n    no: \"Norwegian\",\n    nb: \"Norwegian (Bokmal)\",\n    nn: \"Norwegian (Nynorsk)\",\n    oc: \"Occitan\",\n    or: \"Oriya\",\n    om: \"Oromo\",\n    \"fa-ir\": \"Persian/Iran\",\n    pl: \"Polish\",\n    pt: \"Portuguese\",\n    \"pt-br\": \"Portuguese (Brazil)\",\n    pa: \"Punjabi\",\n    \"pa-in\": \"Punjabi (India)\",\n    \"pa-pk\": \"Punjabi (Pakistan)\",\n    qu: \"Quechua\",\n    rm: \"Rhaeto-Romanic\",\n    ro: \"Romanian\",\n    \"ro-mo\": \"Romanian (Moldavia)\",\n    ru: \"Russian\",\n    \"ru-mo\": \"Russian (Moldavia)\",\n    sz: \"Sami (Lappish)\",\n    sg: \"Sango\",\n    sa: \"Sanskrit\",\n    sc: \"Sardinian\",\n    sd: \"Sindhi\",\n    si: \"Singhalese\",\n    sr: \"Serbian\",\n    sk: \"Slovak\",\n    sl: \"Slovenian\",\n    so: \"Somani\",\n    sb: \"Sorbian\",\n    es: \"Spanish\",\n    \"es-ar\": \"Spanish (Argentina)\",\n    \"es-bo\": \"Spanish (Bolivia)\",\n    \"es-cl\": \"Spanish (Chile)\",\n    \"es-co\": \"Spanish (Colombia)\",\n    \"es-cr\": \"Spanish (Costa Rica)\",\n    \"es-do\": \"Spanish (Dominican Republic)\",\n    \"es-ec\": \"Spanish (Ecuador)\",\n    \"es-sv\": \"Spanish (El Salvador)\",\n    \"es-gt\": \"Spanish (Guatemala)\",\n    \"es-hn\": \"Spanish (Honduras)\",\n    \"es-mx\": \"Spanish (Mexico)\",\n    \"es-ni\": \"Spanish (Nicaragua)\",\n    \"es-pa\": \"Spanish (Panama)\",\n    \"es-py\": \"Spanish (Paraguay)\",\n    \"es-pe\": \"Spanish (Peru)\",\n    \"es-pr\": \"Spanish (Puerto Rico)\",\n    \"es-es\": \"Spanish (Spain)\",\n    \"es-uy\": \"Spanish (Uruguay)\",\n    \"es-ve\": \"Spanish (Venezuela)\",\n    sx: \"Sutu\",\n    sw: \"Swahili\",\n    sv: \"Swedish\",\n    \"sv-fi\": \"Swedish (Finland)\",\n    \"sv-sv\": \"Swedish (Sweden)\",\n    ta: \"Tamil\",\n    tt: \"Tatar\",\n    te: \"Teluga\",\n    th: \"Thai\",\n    tig: \"Tigre\",\n    ts: \"Tsonga\",\n    tn: \"Tswana\",\n    tr: \"Turkish\",\n    tk: \"Turkmen\",\n    uk: \"Ukrainian\",\n    hsb: \"Upper Sorbian\",\n    ur: \"Urdu\",\n    ve: \"Venda\",\n    vi: \"Vietnamese\",\n    vo: \"Volapuk\",\n    wa: \"Walloon\",\n    cy: \"Welsh\",\n    xh: \"Xhosa\",\n    ji: \"Yiddish\",\n    zu: \"Zulu\"\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./constants.map","import { useIsInCurrentNavigationTarget } from \"framer\";\nimport { useEffect } from \"react\";\nexport function useOnEnter(onEnter, enabled) {\n    return useOnSpecificTargetChange(true, onEnter, enabled);\n}\nexport function useOnExit(onExit, enabled) {\n    return useOnSpecificTargetChange(false, onExit, enabled);\n}\nfunction useOnSpecificTargetChange(goal, callback, enabled = true) {\n    const isInTarget = useIsInCurrentNavigationTarget();\n    useEffect(()=>{\n        if (enabled && isInTarget === goal) callback();\n    }, [\n        isInTarget\n    ]);\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useOnEnter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnNavigationTargetChange.map","import { useRef } from \"react\";\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */ export function useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useConstant.map","import { Color } from \"framer\";\nexport function colorFromToken(color) {\n    if (color.startsWith(\"var(--token-\")) return \"rgb\" + color.split(\") /*\")[0].split(\", rgb\")[1];\n    return color;\n}\nexport function colorTokentoValue(color) {\n    return Color(colorFromToken(color)).toValue();\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"colorFromToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./colorFromToken.map","import { MotionValue } from \"framer\";\nexport const isMotionValue = (v)=>v instanceof MotionValue\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isMotionValue.map","import * as React from \"react\";\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nconst l = ()=>letters[Math.floor(Math.random() * letters.length)]\n;\nexport const randomID = ()=>l() + l() + l() + l() + l() + l() + l() + l() + l()\n;\nfunction createUniqueClass(suffix) {\n    return `framer-${suffix}-${randomID()}`;\n}\nexport function useUniqueClassName(suffix, deps) {\n    const [className, setClassName] = React.useState(createUniqueClass(suffix));\n    React.useEffect(()=>{\n        setClassName(createUniqueClass(suffix));\n    }, [\n        suffix,\n        ...deps\n    ]);\n    return className;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useUniqueClassName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useUniqueClassName.map","import { ControlType } from \"framer\";\n// I realize this only applies to select right now\n// but we can work on it in here\nexport function getVariantControls(Component, variant, additionalControls = {\n}) {\n    return {\n        [`${variant}TextColor`]: {\n            type: ControlType.Color,\n            title: \"Text Color\",\n            defaultValue: Component.defaultProps[`${variant}TextColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}IconColor`]: {\n            type: ControlType.Color,\n            title: \"Icon Color\",\n            defaultValue: Component.defaultProps[`${variant}IconColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BackgroundColor`]: {\n            type: ControlType.Color,\n            title: \"Bg Color\",\n            defaultValue: Component.defaultProps[`${variant}BackgroundColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderColor`]: {\n            type: ControlType.Color,\n            title: \"Border Color\",\n            defaultValue: Component.defaultProps[`${variant}BorderColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderWidth`]: {\n            type: ControlType.Number,\n            title: \" \",\n            min: 0,\n            max: 5,\n            displayStepper: true,\n            defaultValue: Component.defaultProps[`${variant}BorderWidth`],\n            hidden: (props)=>props.variant !== variant\n        },\n        ...additionalControls\n    };\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"getVariantControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./variantUtils.map","import { useMemo } from \"react\";\nexport const isBrowserSafari = ()=>{\n    if (typeof navigator !== `undefined`) {\n        const userAgent = navigator.userAgent.toLowerCase();\n        const isSafari = (userAgent.indexOf(\"safari\") > -1 || userAgent.indexOf(\"framermobile\") > -1 || userAgent.indexOf(\"framerx\") > -1) && userAgent.indexOf(\"chrome\") < 0;\n        return isSafari;\n    } else return false;\n};\nexport const useIsBrowserSafari = ()=>useMemo(()=>isBrowserSafari()\n    , [])\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isBrowser.map","import { useEffect } from \"react\";\n//@ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\nexport function useOnChange(value, callback) {\n    useEffect(()=>// @ts-ignore this should be detected as a MV :shrug:\n        isMotionValue(value) ? value.onChange(callback) : undefined\n    );\n}\nexport function useMultiOnChange(values, handler) {\n    useEffect(()=>{\n        const subscriptions = values.map((value)=>value.onChange(handler)\n        );\n        return ()=>subscriptions.forEach((unsubscribe)=>unsubscribe()\n            )\n        ;\n    });\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"Subscriber\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnChange.map","import { useCallback, useEffect, useRef } from \"react\";\nimport { motionValue, animate, RenderTarget } from \"framer\";\n// @ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\n// @ts-ignore\nimport { useConstant } from \"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";\nexport function useAutoMotionValue(inputValue, options) {\n    var ref;\n    // Put options on a local ref\n    // Might wanna just memo instead but it works for now\n    const optionsRef = useRef(options);\n    const animation = useRef();\n    const didInitialMount = useRef(false);\n    const isOnCanvas = RenderTarget.current() === RenderTarget.canvas;\n    // in-progress - trying to figure out effect hooks\n    const onChangeDeps = (options === null || options === void 0 ? void 0 : options.onChangeDeps) ? options.onChangeDeps : [];\n    // Memoize the onChange handler\n    const onChange = useCallback(options === null || options === void 0 ? void 0 : options.onChange, [\n        ...onChangeDeps, \n    ]);\n    // Optionally scale the value from props\n    const transformer = useCallback((value)=>((ref = optionsRef.current) === null || ref === void 0 ? void 0 : ref.transform) ? optionsRef.current.transform(value) : value\n    , []);\n    // Create new MotionValue from inputValue\n    const value = useConstant(()=>isMotionValue(inputValue) ? inputValue : motionValue(transformer(inputValue))\n    );\n    // Setting value from prop change\n    useEffect(()=>{\n        if (!isMotionValue(inputValue) && didInitialMount.current) {\n            var ref1, ref2;\n            const newValue = transformer(inputValue);\n            (ref1 = animation.current) === null || ref1 === void 0 ? void 0 : ref1.stop();\n            // Call change callback\n            if (onChange) onChange(newValue, value);\n            // Trigger animation to new value\n            if (((ref2 = optionsRef.current) === null || ref2 === void 0 ? void 0 : ref2.animate) && !isOnCanvas) {\n                var ref3;\n                // @ts-ignore\n                animation.current = animate(value, newValue, (ref3 = optionsRef.current) === null || ref3 === void 0 ? void 0 : ref3.transition);\n            } else {\n                value.set(newValue);\n            }\n        }\n        didInitialMount.current = true;\n    }, [\n        inputValue,\n        ...onChangeDeps\n    ]);\n    return value;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useAutoMotionValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","// @ts-ignore\nimport{fontStore}from\"framer\";import{useEffect}from\"react\";import{fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";const fontWeights={100:\"Thin\",200:\"Extra-light\",300:\"Light\",400:\"Regular\",500:\"Medium\",600:\"Semi-bold\",700:\"Bold\",800:\"Extra-bold\",900:\"Black\"};export function useFontControls(props){const{fontFamily=\"Inter\",fontSize=16,fontWeight=400,font=false}=props;const fontWeightName=fontWeights[fontWeight];const customFontStack=`\"${fontFamily} ${fontWeightName}\", \"${fontFamily}\", ${fontStack}`;const fontFamilyStyle=fontFamily?{fontSize,fontWeight,fontFamily:customFontStack}:{fontSize,fontWeight};const fetchCustomFonts=async()=>{await fontStore.loadWebFontsFromSelectors([`CUSTOM;${fontFamily}`,`CUSTOM;${fontFamily} ${fontWeightName}`,`GF;${fontFamily}-${fontWeightName.toLowerCase()}`,]).catch(e=>console.error(e));};useEffect(()=>{if(font)fetchCustomFonts();},[font,fontFamily,fontWeight]);return fontFamilyStyle;}\nexport const __FramerMetadata__ = {\"exports\":{\"useFontControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useFontControls.map","import { useMemo } from \"react\";\nimport { RenderTarget } from \"framer\";\nexport function useRenderTarget() {\n    const currentRenderTarget = useMemo(()=>RenderTarget.current()\n    , []);\n    return currentRenderTarget;\n}\nexport function useIsInPreview() {\n    const inPreview = useMemo(()=>RenderTarget.current() === RenderTarget.preview\n    , []);\n    return inPreview;\n}\nexport function useIsOnCanvas() {\n    const onCanvas = useMemo(()=>RenderTarget.current() === RenderTarget.canvas\n    , []);\n    return onCanvas;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsInPreview\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useRenderTarget.map","import * as React from \"react\";\nexport function useControlledState(value) {\n    const [controlledValue, setValue] = React.useState(value);\n    React.useEffect(()=>{\n        setValue(value);\n    }, [\n        value\n    ]);\n    return [\n        controlledValue,\n        setValue\n    ];\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useControlledState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useControlledState.map","import { useMemo } from \"react\";\nimport { ControlType } from \"framer\";\nexport function useRadius(props) {\n    const { borderRadius , isMixedBorderRadius , topLeftRadius , topRightRadius , bottomRightRadius , bottomLeftRadius ,  } = props;\n    const radiusValue = useMemo(()=>isMixedBorderRadius ? `${topLeftRadius}px ${topRightRadius}px ${bottomRightRadius}px ${bottomLeftRadius}px` : `${borderRadius}px`\n    , [\n        borderRadius,\n        isMixedBorderRadius,\n        topLeftRadius,\n        topRightRadius,\n        bottomRightRadius,\n        bottomLeftRadius, \n    ]);\n    return radiusValue;\n}\nexport const borderRadiusControl = {\n    borderRadius: {\n        title: \"Radius\",\n        type: ControlType.FusedNumber,\n        toggleKey: \"isMixedBorderRadius\",\n        toggleTitles: [\n            \"Radius\",\n            \"Radius per corner\"\n        ],\n        valueKeys: [\n            \"topLeftRadius\",\n            \"topRightRadius\",\n            \"bottomRightRadius\",\n            \"bottomLeftRadius\", \n        ],\n        valueLabels: [\n            \"TL\",\n            \"TR\",\n            \"BR\",\n            \"BL\"\n        ],\n        min: 0\n    }\n};\nexport function usePadding(props) {\n    const { padding , paddingPerSide , paddingTop , paddingRight , paddingBottom , paddingLeft ,  } = props;\n    const paddingValue = useMemo(()=>paddingPerSide ? `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px` : padding\n    , [\n        padding,\n        paddingPerSide,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft, \n    ]);\n    return paddingValue;\n}\nexport const paddingControl = {\n    padding: {\n        type: ControlType.FusedNumber,\n        toggleKey: \"paddingPerSide\",\n        toggleTitles: [\n            \"Padding\",\n            \"Padding per side\"\n        ],\n        valueKeys: [\n            \"paddingTop\",\n            \"paddingRight\",\n            \"paddingBottom\",\n            \"paddingLeft\", \n        ],\n        valueLabels: [\n            \"T\",\n            \"R\",\n            \"B\",\n            \"L\"\n        ],\n        min: 0,\n        title: \"Padding\"\n    }\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RadiusProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaddingProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./propUtils.map","import{defaultEvents,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";import{useOnEnter,useOnExit}from\"https://framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js\";import{useConstant}from\"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";import{colorTokentoValue,colorFromToken}from\"https://framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js\";import{isMotionValue}from\"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";import{useUniqueClassName,randomID}from\"https://framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js\";import{getVariantControls}from\"https://framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js\";import{useIsBrowserSafari}from\"https://framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js\";import{useMultiOnChange,useOnChange}from\"https://framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js\";import{mstoMinAndSec,secondsToMinutes}from\"https://framerusercontent.com/modules/4zHZnO5JojN1PrIbu2jm/revv9QCWpkh8lPzi2jje/time.js\";import{useAutoMotionValue}from\"https://framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js\";import{useFontControls}from\"https://framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js\";import{useRenderTarget,useIsInPreview,useIsOnCanvas}from\"https://framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js\";import{useControlledState}from\"https://framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js\";import{usePadding,useRadius,paddingControl,borderRadiusControl}from\"https://framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js\";import{detectAutoSizingAxis}from\"https://framerusercontent.com/modules/8CkHAZatUz1UR8jNTcfD/HwbnIAZlUmQ2oTpcLkaH/detectAutoSizingAxis.js\";export{useOnEnter,useOnExit,defaultEvents,isMotionValue,colorFromToken,colorTokentoValue,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack,useUniqueClassName,getVariantControls,useIsBrowserSafari,randomID,useConstant,useMultiOnChange,useOnChange,usePadding,useRadius,paddingControl,borderRadiusControl,mstoMinAndSec,useFontControls,secondsToMinutes,useAutoMotionValue,useRenderTarget,useIsInPreview,useControlledState,detectAutoSizingAxis,useIsOnCanvas,};\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useUniqueClassName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getVariantControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorFromToken\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useControlledState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAutoMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsInPreview\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectAutoSizingAxis\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mstoMinAndSec\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnEnter\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"secondsToMinutes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","// ⚠️⚠️⚠️⚠️⚠️\n// Edit these files in https://github.com/framer/FramerCodeComponents\n// ⚠️⚠️⚠️⚠️⚠️\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useIsInCurrentNavigationTarget,RenderTarget}from\"framer\";import{isMotionValue,useInView}from\"framer-motion\";import{borderRadiusControl,defaultEvents,useIsBrowserSafari,useIsOnCanvas,useOnEnter,useOnExit,useRadius,useRenderTarget}from\"https://framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js\";// https://framer.com/m/framer/default-utils.js@^0.45.0\nimport{memo,useCallback,useEffect,useMemo,useRef,useState}from\"react\";var ObjectFitType;(function(ObjectFitType){ObjectFitType[\"Fill\"]=\"fill\";ObjectFitType[\"Contain\"]=\"contain\";ObjectFitType[\"Cover\"]=\"cover\";ObjectFitType[\"None\"]=\"none\";ObjectFitType[\"ScaleDown\"]=\"scale-down\";})(ObjectFitType||(ObjectFitType={}));var SrcType;(function(SrcType){SrcType[\"Video\"]=\"Upload\";SrcType[\"Url\"]=\"URL\";})(SrcType||(SrcType={}));const defaultVideo=\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\";// Reduce renders\nfunction getProps(props){const{width,height,topLeft,topRight,bottomRight,bottomLeft,id,children,...rest}=props;return rest;}/**\n * VIDEO\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 112\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *\n * @framerComponentPresetProps borderRadius, backgroundColor\n */export function Video(props){const newProps=getProps(props);return /*#__PURE__*/_jsx(VideoMemo,{...newProps});}function usePlaybackControls(videoRef){const isInCurrentNavigationTarget=useIsInCurrentNavigationTarget();const requestingPlay=useRef(false);const isPlayingRef=useRef(false);const setProgress=useCallback(rawProgress=>{if(!videoRef.current)return;const newProgress=(rawProgress===1?.999:rawProgress)*videoRef.current.duration;const isAlreadySet=Math.abs(videoRef.current.currentTime-newProgress)<.1;if(videoRef.current.duration>0&&!isAlreadySet){videoRef.current.currentTime=newProgress;}},[]);const play=useCallback(()=>{const video=videoRef.current;if(!video)return;video.preload=\"auto\"// makes sure browsers don't throttle: https://html.spec.whatwg.org/multipage/media.html#:~:text=When%20the%20media%20resource%20is%20playing%2C%20hints%20to%20the%20user%20agent%20that%20bandwidth%20is%20to%20be%20considered%20scarce%2C%20e.g.%20suggesting%20throttling%20the%20download%20so%20that%20the%20media%20data%20is%20obtained%20at%20the%20slowest%20possible%20rate%20that%20still%20maintains%20consistent%20playback.\n;const isPlaying=video.currentTime>0&&video.onplaying&&!video.paused&&!video.ended&&video.readyState>=video.HAVE_CURRENT_DATA;if(!isPlaying&&video&&!requestingPlay.current&&isInCurrentNavigationTarget){requestingPlay.current=true;isPlayingRef.current=true;video.play().catch(e=>{})// It's likely fine, swallow error\n.finally(()=>requestingPlay.current=false);}},[]);const pause=useCallback(()=>{if(!videoRef.current||requestingPlay.current)return;videoRef.current.pause();isPlayingRef.current=false;},[]);return{play,pause,setProgress,isPlaying:isPlayingRef};}function useAutoplayBehavior({playingProp,muted,loop,playsinline,controls}){const[initialPlayingProp]=useState(playingProp);const[hasPlayingPropChanged,setHasPlayingPropChanged]=useState(false);if(playingProp!==initialPlayingProp&&!hasPlayingPropChanged){setHasPlayingPropChanged(true);}const behavesAsGif=// passing `playing === true` on mount indicates that the video should\n// autoplay, like a GIF\ninitialPlayingProp&&muted&&loop&&playsinline&&!controls&&// Some users of the <Video> component use it by wrapping it with\n// another smart component and adding their own controls on top. (The\n// controls use transitions to control the video: e.g., when clicking\n// the play button, the smart component will transition to a state with\n// <Video playing={true} />.) In this case, we don't want the video to\n// behave as a gif, as it will be weird if the video suddenly started\n// acting as such (and auto-pausing when leaving the viewport) as soon\n// as the site visitor mutes it and clicks “Play”.\n!hasPlayingPropChanged;let autoplay;if(behavesAsGif)autoplay=\"on-viewport\";else if(initialPlayingProp)autoplay=\"on-mount\";else autoplay=\"no-autoplay\";return autoplay;}const VideoMemo=/*#__PURE__*/memo(function VideoInner(props){const{// default props\nsrcType=\"URL\",srcUrl,srcFile=\"\",posterEnabled=false,controls=false,playing=true,loop=true,muted=true,playsinline=true,restartOnEnter=false,objectFit=\"cover\",backgroundColor=\"rgba(0,0,0,0)\",radius=0,volume=25,startTime:startTimeProp=0,poster,playing:playingProp,progress,onSeeked,onPause,onPlay,onEnd,onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp}=props;const videoRef=useRef();const isSafari=useIsBrowserSafari();const wasPausedOnLeave=useRef(null);const wasEndedOnLeave=useRef(null);const isOnCanvas=useIsOnCanvas();const renderTarget=useRenderTarget();const isStaticRenderer=isOnCanvas||renderTarget===RenderTarget.export;const borderRadius=useRadius(props);// Hard-coding `autoplayBehavior` and `isInViewport` when on canvas as a\n// tiny perf optimization. isStaticRenderer won’t change through the lifecycle of\n// the component, so using these hooks conditionally should be safe\nconst autoplayBehavior=isStaticRenderer?\"no-autoplay\":useAutoplayBehavior({playingProp,muted,loop,playsinline,controls});const isInViewport=isStaticRenderer?true:useInView(videoRef);const isCloseToViewport=isStaticRenderer?false:useInView(videoRef,{margin:\"10%\",once:true});// Video elements behave oddly at 100% duration\nconst startTime=startTimeProp===100?99.9:startTimeProp;const{play,pause,setProgress,isPlaying}=usePlaybackControls(videoRef);// Pause/play via props\nuseEffect(()=>{if(isStaticRenderer)return;if(autoplayBehavior===\"on-viewport\")return;if(playingProp)play();else pause();},[autoplayBehavior,playingProp]);// Pause/play via viewport\nuseEffect(()=>{if(isStaticRenderer)return;// this also explicitly retries playing for videos that play on-mount, which could fail if they're not muted for example\nif(isInViewport&&playingProp&&autoplayBehavior!==\"no-autoplay\")play();if(autoplayBehavior!==\"on-viewport\")return;pause();},[autoplayBehavior,isInViewport,playingProp]);useEffect(()=>{if(!isOnCanvas||poster||posterEnabled||startTime||!videoRef.current)return;// forces a poster to show up when the video is in an iframe; this is needed when `poster` changes\nvideoRef.current.currentTime=.01;},[posterEnabled,poster,startTime]);/**\n     * The Video component has some effects that sync the video element with props\n     * like `startTime`, `progress`, etc. React calls these effects whenever these\n     * props change. However, it also calls them on the first mount, and this is\n     * troublesome – if we’re doing SSR, and the user changed the video state before\n     * the video was hydrated, the initial `useEffect` call will reset the video\n     * state. To avoid this, we use this flag.\n     */const isMountedAndReadyForProgressChanges=useRef(false);// Allow scrubbling via progress prop\n// 1) Handle cases when the progress prop itself changes\nuseEffect(()=>{if(!isMountedAndReadyForProgressChanges.current){isMountedAndReadyForProgressChanges.current=true;return;}const rawProgressValue=isMotionValue(progress)?progress.get():(progress??0)*.01;setProgress(// When the progress value exists (e.g. <Video startTime={10}\n// progress={50} />), we respect the `progress` value over\n// `startTime`, even if `startTime` changes. That’s because\n// `startTime` == start == changing it shouldn’t affect the current\n// progress\n(rawProgressValue??0)||// Then why fall back to `startTime` when `progress` doesn’t exist,\n// you might ask? Now, that’s for\n// - canvas UX: we want the video progress to change when the user\n//   is scrobbling the “Start Time” in component settings.\n// - backwards compatibility: maybe some users *are* scrobbling\n//   using `startTime` instead of `progress`? We don’t know, and it\n//   always supported it, so let’s not break it\n(startTime??0)/100);},[startTime,srcFile,srcUrl,progress]);// 2) Handle cases when the motion value inside the progress prop changes\nuseEffect(()=>{if(!isMotionValue(progress))return;return progress.on(\"change\",value=>setProgress(value));},[progress]);// (Prototyping) Checking if we need to play on navigation enter\nuseOnEnter(()=>{if(wasPausedOnLeave.current===null)return;if(videoRef.current){// if (restartOnEnter) setProgress(0)\nif(!wasEndedOnLeave&&loop||!wasPausedOnLeave.current)play();}});// (Prototyping) Pausing & saving playing state on navigation exit\nuseOnExit(()=>{if(videoRef.current){wasEndedOnLeave.current=videoRef.current.ended;wasPausedOnLeave.current=videoRef.current.paused;pause();}});const src=useMemo(()=>{let fragment=\"\";// if (\n//     startTime > 0 &&\n//     videoRef.current &&\n//     !isNaN(videoRef.current.duration) &&\n//     !isStaticRenderer\n// ) {\n//     console.log(startTime, videoRef.current.duration)\n//     fragment = `#t=${startTime * videoRef.current.duration}`\n// }\nif(srcType===\"URL\")return srcUrl+fragment;if(srcType===\"Upload\")return srcFile+fragment;},[srcType,srcFile,srcUrl,startTime]);// Autoplay via JS to work in Safari\nuseEffect(()=>{if(isSafari&&videoRef.current&&autoplayBehavior===\"on-mount\"){setTimeout(()=>play(),50);}},[]);// Volume Control\nuseEffect(()=>{if(videoRef.current&&!muted)videoRef.current.volume=(volume??0)/100;},[volume]);// When video is ready, set start-time, then autoplay if needed\nconst handleReady=()=>{const video=videoRef.current;if(!video)return;if(video.currentTime<.3&&startTime>0)setProgress((startTime??0)*.01);if(// when the component updates (e.g. only srcFile/url changes), and the video was already playing, keep playing\nisPlaying.current||autoplayBehavior===\"on-mount\"||playingProp&&autoplayBehavior===\"on-viewport\"&&isInViewport)play();};return /*#__PURE__*/_jsx(\"video\",{onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,src:src,loop:loop,ref:videoRef,onSeeked:e=>onSeeked?.(e),onPause:e=>onPause?.(e),onPlay:e=>onPlay?.(e),onEnded:e=>onEnd?.(e),autoPlay:isPlaying.current||autoplayBehavior===\"on-mount\"||playingProp&&autoplayBehavior===\"on-viewport\"&&isInViewport,preload:isPlaying.current?\"auto\":isStaticRenderer&&!poster?\"metadata\":autoplayBehavior!==\"on-mount\"&&!isCloseToViewport?\"none\":// `autoplay` overrides this too\n\"metadata\",poster:posterEnabled&&!srcFile&&srcUrl===defaultVideo?\"https://framerusercontent.com/images/5ILRvlYXf72kHSVHqpa3snGzjU.jpg\":posterEnabled&&poster?poster:undefined,onLoadedData:handleReady,controls:controls,muted:isStaticRenderer?true:muted,playsInline:playsinline,style:{cursor:!!onClick?\"pointer\":\"auto\",width:\"100%\",height:\"100%\",borderRadius,display:\"block\",objectFit:objectFit,backgroundColor:backgroundColor,objectPosition:\"50% 50%\"}});});Video.displayName=\"Video\";function capitalizeFirstLetter(value){return value.charAt(0).toUpperCase()+value.slice(1);}export function titleCase(value){const groups=value.match(/[A-Z]{2,}|[A-Z][a-z]+|[a-z]+|[A-Z]|\\d+/gu)||[];return groups.map(capitalizeFirstLetter).join(\" \");}const objectFitOptions=[\"cover\",\"fill\",\"contain\",\"scale-down\",\"none\"];addPropertyControls(Video,{srcType:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Source\",options:[\"URL\",\"Upload\"]},srcUrl:{type:ControlType.String,title:\"URL\",defaultValue:\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",hidden(props){return props.srcType===\"Upload\";}},srcFile:{type:ControlType.File,title:\"File\",allowedFileTypes:[\"mp4\",\"webm\"],hidden(props){return props.srcType===\"URL\";}},...borderRadiusControl,loop:{type:ControlType.Boolean,title:\"Loop\",enabledTitle:\"Yes\",disabledTitle:\"No\"},posterEnabled:{type:ControlType.Boolean,title:\"Poster\",enabledTitle:\"Yes\",disabledTitle:\"No\",hiddenWhenUnset:true,defaultValue:true},poster:{type:ControlType.Image,title:\"Image\",hidden:({posterEnabled})=>!posterEnabled,description:\"We recommend adding a poster. [Learn more](https://www.framer.com/help/articles/how-are-videos-optimized-in-framer/).\"},controls:{type:ControlType.Boolean,title:\"Controls\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:false,hiddenWhenUnset:true},muted:{type:ControlType.Boolean,title:\"Muted\",enabledTitle:\"Yes\",disabledTitle:\"No\",hiddenWhenUnset:true},objectFit:{type:ControlType.Enum,title:\"Fit\",options:objectFitOptions,optionTitles:objectFitOptions.map(titleCase),hiddenWhenUnset:true},playing:{type:ControlType.Boolean,title:\"Playing\",enabledTitle:\"Yes\",disabledTitle:\"No\",hiddenWhenUnset:true},backgroundColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"rgba(0,0,0,0)\"},startTime:{title:\"Start Time\",type:ControlType.Number,min:0,max:100,step:.1,unit:\"%\",hiddenWhenUnset:true},// restartOnEnter: {\n//     type: ControlType.Boolean,\n//     title: \"On ReEnter\",\n//     enabledTitle: \"Restart\",\n//     disabledTitle: \"Resume\",\n// },\nvolume:{type:ControlType.Number,max:100,min:0,unit:\"%\",hidden:({muted})=>muted,defaultValue:25,hiddenWhenUnset:true},onEnd:{type:ControlType.EventHandler},onSeeked:{type:ControlType.EventHandler},onPause:{type:ControlType.EventHandler},onPlay:{type:ControlType.EventHandler},...defaultEvents});\nexport const __FramerMetadata__ = {\"exports\":{\"VideoProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"titleCase\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Video\":{\"type\":\"reactComponent\",\"name\":\"Video\",\"slots\":[],\"annotations\":{\"framerComponentPresetProps\":\"borderRadius, backgroundColor\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"200\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicHeight\":\"112\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Video.map","// Generated by Framer (90e1d28)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getLoadingLazyAtYPosition,getPropertyControls,Image as Image1,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Video}from\"https://framerusercontent.com/modules/lRDHiNWNVWmE0lqtoVHP/I6H5ZhUPA8PwvfVPIGXQ/Video.js\";const VideoFonts=getFonts(Video);const VideoControls=getPropertyControls(Video);const cycleOrder=[\"fc7oJA1q6\",\"qnypXK2s7\"];const serializationHash=\"framer-Q8TOW\";const variantClassNames={fc7oJA1q6:\"framer-v-1qofgny\",qnypXK2s7:\"framer-v-8k3cea\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const Ub_giI5Ap=undefined;const dW8U4s1In=undefined;const MVr9FbgTN=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const toResponsiveImage=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value;}return typeof value===\"string\"?{src:value}:undefined;};const toImageSrc=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value.src;}return typeof value===\"string\"?value:undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Image:\"fc7oJA1q6\",Video:\"qnypXK2s7\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,imagePoster,video,videoSound,width,...props})=>{return{...props,dW8U4s1In:video??props.dW8U4s1In,MVr9FbgTN:videoSound??props.MVr9FbgTN??true,Ub_giI5Ap:imagePoster??props.Ub_giI5Ap,variant:humanReadableVariantMap[props.variant]??props.variant??\"fc7oJA1q6\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,Ub_giI5Ap,dW8U4s1In,MVr9FbgTN,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"fc7oJA1q6\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(baseVariant===\"qnypXK2s7\")return false;return true;};const isDisplayed1=()=>{if(baseVariant===\"qnypXK2s7\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1qofgny\",className,classNames),\"data-framer-name\":\"Image\",layoutDependency:layoutDependency,layoutId:\"fc7oJA1q6\",ref:refBinding,style:{...style},...addPropertyOverrides({qnypXK2s7:{\"data-framer-name\":\"Video\"}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(Image1,{background:{alt:\"works image\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(0+((componentViewport?.height||200)-0-600)/2)),pixelHeight:960,pixelWidth:1272,sizes:`max(${componentViewport?.width||\"100vw\"}, 1px)`,...toResponsiveImage(Ub_giI5Ap)},className:\"framer-khkhdu\",fitImageDimension:\"height\",layoutDependency:layoutDependency,layoutId:\"NeAsoPPDW\"}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1yt8ofy-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"xbpmA6oOI-container\",nodeId:\"xbpmA6oOI\",rendersWithMotion:true,scopeId:\"zF1nofZnl\",children:/*#__PURE__*/_jsx(Video,{backgroundColor:\"rgba(0, 0, 0, 0)\",borderRadius:0,bottomLeftRadius:0,bottomRightRadius:0,controls:false,height:\"100%\",id:\"xbpmA6oOI\",isMixedBorderRadius:false,layoutId:\"xbpmA6oOI\",loop:true,muted:MVr9FbgTN,objectFit:\"cover\",playing:true,poster:toImageSrc(Ub_giI5Ap),posterEnabled:true,srcFile:dW8U4s1In,srcType:\"Upload\",srcUrl:\"https://framerusercontent.com/assets/MLWPbW1dUQawJLhhun3dBwpgJak.mp4\",startTime:0,style:{width:\"100%\"},topLeftRadius:0,topRightRadius:0,volume:25,width:\"100%\"})})})]})})})});});const css=[\".framer-Q8TOW.framer-1daw9t6, .framer-Q8TOW .framer-1daw9t6 { display: block; }\",\".framer-Q8TOW.framer-1qofgny { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 780px; }\",\".framer-Q8TOW .framer-khkhdu { flex: 1 0 0px; height: auto; overflow: hidden; position: relative; width: 1px; will-change: var(--framer-will-change-filter-override, filter); z-index: 1; }\",\".framer-Q8TOW .framer-1yt8ofy-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 588\n * @framerIntrinsicWidth 780\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"qnypXK2s7\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"Ub_giI5Ap\":\"imagePoster\",\"dW8U4s1In\":\"video\",\"MVr9FbgTN\":\"videoSound\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerzF1nofZnl=withCSS(Component,css,\"framer-Q8TOW\");export default FramerzF1nofZnl;FramerzF1nofZnl.displayName=\"Image or Video\";FramerzF1nofZnl.defaultProps={height:588,width:780};addPropertyControls(FramerzF1nofZnl,{variant:{options:[\"fc7oJA1q6\",\"qnypXK2s7\"],optionTitles:[\"Image\",\"Video\"],title:\"Variant\",type:ControlType.Enum},Ub_giI5Ap:{description:\"If you're using a video, it's recommended to add a poster image (thumbnail) to improve loading performance and provide a fallback while the video loads.\",title:\"Image / Poster\",type:ControlType.ResponsiveImage},dW8U4s1In:VideoControls?.[\"srcFile\"]&&{...VideoControls[\"srcFile\"],__defaultAssetReference:\"\",description:undefined,hidden:undefined,title:\"Video\"},ondW8U4s1InChange:{changes:\"dW8U4s1In\",type:ControlType.ChangeHandler},MVr9FbgTN:{defaultValue:true,description:\"Not available for cover videos, since most browsers block autoplay when sound is on.\",title:\"Video Sound\",type:ControlType.Boolean},onMVr9FbgTNChange:{changes:\"MVr9FbgTN\",type:ControlType.ChangeHandler}});addFonts(FramerzF1nofZnl,[{explicitInter:true,fonts:[]},...VideoFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerzF1nofZnl\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"588\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"780\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"Ub_giI5Ap\\\":\\\"imagePoster\\\",\\\"dW8U4s1In\\\":\\\"video\\\",\\\"MVr9FbgTN\\\":\\\"videoSound\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"qnypXK2s7\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./zF1nofZnl.map","// Generated by Framer (091dd3a)\nimport{fontStore}from\"framer\";fontStore.loadFonts([]);export const fonts=[{explicitInter:true,fonts:[]}];export const css=[\".framer-1i2Vu .framer-styles-preset-oi9w0o:not(.rich-text-wrapper), .framer-1i2Vu .framer-styles-preset-oi9w0o.rich-text-wrapper a { --framer-link-text-decoration: underline; }\"];export const className=\"framer-1i2Vu\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,forwardLoader,getFonts,getFontsFromSharedStyle,Link,RichText,runTasksWithYield,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import ImageOrVideo from\"https://framerusercontent.com/modules/6a55BpVDpKc43yB6oyqF/0UCzURSZXkMamlkv1D1I/zF1nofZnl.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/SVc078NjbsUQ3C2VaErD/BbMhThOyTzMqgsiHo4bq/syzFyH9j3.js\";const ImageOrVideoFonts=getFonts(ImageOrVideo);const serializationHash=\"framer-6Z3DA\";const variantClassNames={sxWAcPYSB:\"framer-v-192pdj2\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const lqU1nNvsdNOocd7B8h=undefined;const kY7nmnFudNOocd7B8h=undefined;const I8y0iIzj4NOocd7B8h=undefined;const lyTIulmznNOocd7B8h=undefined;const IliT5YzpNNOocd7B8h=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const convertFromEnum=(value,activeLocale)=>{return undefined;};const addImageAlt=(image,alt)=>{if(!image||typeof image!==\"object\"){return;}return{...image,alt};};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"sxWAcPYSB\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-192pdj2\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"sxWAcPYSB\",ref:refBinding,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"rgba(0, 0, 0, 0.12)\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgb(246, 246, 246)\",boxShadow:\"0px 0px 20px 0px rgba(0, 0, 0, 0.15), 0px 25px 30px 0px rgba(0, 0, 0, 0.35)\",...style},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1s20xpa\",\"data-framer-name\":\"Main\",layoutDependency:layoutDependency,layoutId:\"Y5WBnnsVE\",children:/*#__PURE__*/_jsxs(motion.section,{className:\"framer-6izv7q\",layoutDependency:layoutDependency,layoutId:\"fUFj2WA48\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-5uiup7\",layoutDependency:layoutDependency,layoutId:\"hB68PT8nh\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-48tggb\",layoutDependency:layoutDependency,layoutId:\"qZILJG4AG\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-jbipte\",layoutDependency:layoutDependency,layoutId:\"z5eOnSbVE\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBCb2xk\",\"--framer-font-family\":'\"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 3)\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"1.15em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-gdpscs, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Pagoda Travel\"})}),className:\"framer-1r86nav\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOMV2;PP Neue Montreal Bold\"],layoutDependency:layoutDependency,layoutId:\"hQRMpwQt8\",style:{\"--extracted-gdpscs\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1xbh5k2\",layoutDependency:layoutDependency,layoutId:\"NphwUoUkC\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-rpy5uf\",layoutDependency:layoutDependency,layoutId:\"v3LVY9X5d\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Overview\"})}),className:\"framer-10yojzo\",\"data-framer-name\":\"Overview\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"jiDFL1Xs8\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Travel agencies and local guides in Japan had no straightforward way to find each other. Pagoda Travel gives both sides a directory built around specialism rather than location — guides list what they actually know, with rates and availability, and agencies search the way they think. The work covered the site and the full application, from the profile structure up to the flows that turn a search into a booked guide.\"})}),className:\"framer-1ue6h31\",\"data-framer-name\":\"Text\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"i6NR59avq\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1o0lixa\",layoutDependency:layoutDependency,layoutId:\"MuAGqkACt\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1dns3ig\",layoutDependency:layoutDependency,layoutId:\"zfTjscAdo\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Services\"})}),className:\"framer-ygckg7\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"ftyrcygNs\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-19fegp5\",layoutDependency:layoutDependency,layoutId:\"YalEUDHP0\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Product Design\"})}),className:\"framer-1vta14p\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"mpFyEqEeX\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Web Design\"})}),className:\"framer-1xl91xh\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"XEXw5vEc5\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-x20nvc\",layoutDependency:layoutDependency,layoutId:\"rwUkpUNpz\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Year\"})}),className:\"framer-195p9ig\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"hYo3nUJPr\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"2026\"})}),className:\"framer-1oazawf\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"Xv7wKPPdD\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1jq0oll\",layoutDependency:layoutDependency,layoutId:\"sCDk1bNUv\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Link\"})}),className:\"framer-1d6x8xh\",\"data-framer-name\":\"Title\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"ZLsu2o5aJ\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:/*#__PURE__*/_jsx(Link,{href:\"http://pagoda.travel/\",motionChild:true,nodeId:\"GIKaKu5kc\",openInNewTab:true,relValues:[],scopeId:\"bg2TieKfw\",smoothScroll:false,children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-styles-preset-oi9w0o\",\"data-styles-preset\":\"syzFyH9j3\",children:\"Live Preview\"})})})}),className:\"framer-nc4bvk\",\"data-framer-name\":\"Index\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"GIKaKu5kc\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\"},verticalAlignment:\"top\",withExternalLayout:true})]})]})]})]})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1u3vkwo\",layoutDependency:layoutDependency,layoutId:\"Zj1z3faYq\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-18ejx21\",\"data-framer-name\":\"Media Grid\",layoutDependency:layoutDependency,layoutId:\"oFGzmUOXj\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1rwm3ml-container\",\"data-framer-name\":\"Media Item\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"NBz53KAQZ-container\",name:\"Media Item\",nodeId:\"NBz53KAQZ\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"NBz53KAQZ\",layoutId:\"NBz53KAQZ\",MVr9FbgTN:true,name:\"Media Item\",style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:667,pixelWidth:1058,src:\"https://framerusercontent.com/images/iOYo4gqNjCs658w7ZLfSvF9iyg.png?width=1058&height=667\",srcSet:\"https://framerusercontent.com/images/iOYo4gqNjCs658w7ZLfSvF9iyg.png?scale-down-to=512&width=1058&height=667 512w,https://framerusercontent.com/images/iOYo4gqNjCs658w7ZLfSvF9iyg.png?scale-down-to=1024&width=1058&height=667 1024w,https://framerusercontent.com/images/iOYo4gqNjCs658w7ZLfSvF9iyg.png?width=1058&height=667 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lqU1nNvsdNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsxs(motion.section,{className:\"framer-1mruzo4\",layoutDependency:layoutDependency,layoutId:\"Lw7vgZJMx\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+606+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-kb5p6m-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Q9YeCNZCW-container\",nodeId:\"Q9YeCNZCW\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"Q9YeCNZCW\",layoutId:\"Q9YeCNZCW\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:587,pixelWidth:525,src:\"https://framerusercontent.com/images/Tdg8H1p2LhkSI6JPeX3e7ax33yA.png?width=525&height=587\",srcSet:\"https://framerusercontent.com/images/Tdg8H1p2LhkSI6JPeX3e7ax33yA.png?width=525&height=587 525w\"},\"\"),variant:matchVariant(convertFromEnum(kY7nmnFudNOocd7B8h,activeLocale)),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+606+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1akx8ao-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"LWwdGbXQK-container\",nodeId:\"LWwdGbXQK\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"LWwdGbXQK\",layoutId:\"LWwdGbXQK\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:587,pixelWidth:525,src:\"https://framerusercontent.com/images/2E0qn9BHkAXYQa5fREwh4lgEK1c.png?width=525&height=587\",srcSet:\"https://framerusercontent.com/images/2E0qn9BHkAXYQa5fREwh4lgEK1c.png?width=525&height=587 525w\"},\"\"),variant:matchVariant(convertFromEnum(I8y0iIzj4NOocd7B8h,activeLocale)),width:\"100%\"})})})]}),/*#__PURE__*/_jsxs(motion.section,{className:\"framer-1hp0mxr\",layoutDependency:layoutDependency,layoutId:\"c7PJVoCzG\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+1212+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1ijz6x3-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"oXYV1uv8q-container\",nodeId:\"oXYV1uv8q\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"oXYV1uv8q\",layoutId:\"oXYV1uv8q\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:525,src:\"https://framerusercontent.com/images/KolbMJ8SgfwJdtVsVta4CWnRx0M.png?width=525&height=566\",srcSet:\"https://framerusercontent.com/images/KolbMJ8SgfwJdtVsVta4CWnRx0M.png?width=525&height=566 525w\"},\"\"),variant:matchVariant(convertFromEnum(kY7nmnFudNOocd7B8h,activeLocale)),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+1212+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-v2rx3n-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"MfwlsEitq-container\",nodeId:\"MfwlsEitq\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"MfwlsEitq\",layoutId:\"MfwlsEitq\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:525,src:\"https://framerusercontent.com/images/coxKmGdOBnwnqW5o1LfxKbqH0A.png?width=525&height=566\",srcSet:\"https://framerusercontent.com/images/coxKmGdOBnwnqW5o1LfxKbqH0A.png?width=525&height=566 525w\"},\"\"),variant:matchVariant(convertFromEnum(I8y0iIzj4NOocd7B8h,activeLocale)),width:\"100%\"})})})]}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-1647v3z\",layoutDependency:layoutDependency,layoutId:\"ubfqS8Vxb\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+1818+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-vqvr8q-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"bkG3vL2DQ-container\",nodeId:\"bkG3vL2DQ\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"bkG3vL2DQ\",layoutId:\"bkG3vL2DQ\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/9l9nSk78hcPorexxu4pfUBwLWg.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/9l9nSk78hcPorexxu4pfUBwLWg.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/9l9nSk78hcPorexxu4pfUBwLWg.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/9l9nSk78hcPorexxu4pfUBwLWg.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lyTIulmznNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-1wxe53j\",layoutDependency:layoutDependency,layoutId:\"s5Lx0Tra_\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+2424+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1d3hzur-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"UCD7u4u4K-container\",nodeId:\"UCD7u4u4K\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"UCD7u4u4K\",layoutId:\"UCD7u4u4K\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:564,pixelWidth:1058,src:\"https://framerusercontent.com/images/eHYoqJxyGgjpuyC357YOhBveyR4.png?width=1058&height=564\",srcSet:\"https://framerusercontent.com/images/eHYoqJxyGgjpuyC357YOhBveyR4.png?scale-down-to=512&width=1058&height=564 512w,https://framerusercontent.com/images/eHYoqJxyGgjpuyC357YOhBveyR4.png?scale-down-to=1024&width=1058&height=564 1024w,https://framerusercontent.com/images/eHYoqJxyGgjpuyC357YOhBveyR4.png?width=1058&height=564 1058w\"},\"\"),variant:matchVariant(convertFromEnum(IliT5YzpNNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-w8r0sk\",layoutDependency:layoutDependency,layoutId:\"pEEqGBSZT\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+3030+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-xh2wlr-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"hTTbZZ0kg-container\",nodeId:\"hTTbZZ0kg\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"hTTbZZ0kg\",layoutId:\"hTTbZZ0kg\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/rQnyvVxhAkzD1al7Wls0QYu5xQ4.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/rQnyvVxhAkzD1al7Wls0QYu5xQ4.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/rQnyvVxhAkzD1al7Wls0QYu5xQ4.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/rQnyvVxhAkzD1al7Wls0QYu5xQ4.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(IliT5YzpNNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-f9dflq\",layoutDependency:layoutDependency,layoutId:\"c2HRX4V0P\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+3636+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-c5jcmg-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Xbi9FdGt8-container\",nodeId:\"Xbi9FdGt8\",rendersWithMotion:true,scopeId:\"bg2TieKfw\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"Xbi9FdGt8\",layoutId:\"Xbi9FdGt8\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/ATkvy39rS6CYhdp82IROZaD6sVI.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/ATkvy39rS6CYhdp82IROZaD6sVI.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/ATkvy39rS6CYhdp82IROZaD6sVI.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/ATkvy39rS6CYhdp82IROZaD6sVI.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(IliT5YzpNNOocd7B8h,activeLocale)),width:\"100%\"})})})})]})]})})})})})});});const css=[\".framer-6Z3DA.framer-iycfxr, .framer-6Z3DA .framer-iycfxr { display: block; }\",\".framer-6Z3DA.framer-192pdj2 { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px 0px 26px 0px; position: relative; width: 1200px; }\",\".framer-6Z3DA .framer-1s20xpa { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: flex-start; overflow: visible; padding: 76px 35px 0px 35px; position: relative; width: 100%; }\",\".framer-6Z3DA .framer-6izv7q { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 72px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1160px; z-index: 1; }\",\".framer-6Z3DA .framer-5uiup7 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-6Z3DA .framer-48tggb { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: flex-start; max-width: 1920px; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-6Z3DA .framer-jbipte { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-6Z3DA .framer-1r86nav { flex: 1 0 0px; height: auto; max-width: 900px; overflow: visible; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-6Z3DA .framer-1xbh5k2 { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-6Z3DA .framer-rpy5uf { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; z-index: 5; }\",\".framer-6Z3DA .framer-10yojzo { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-6Z3DA .framer-1ue6h31 { --framer-text-wrap: balance; flex: none; height: auto; max-width: 520px; overflow: visible; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\".framer-6Z3DA .framer-1o0lixa { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-6Z3DA .framer-1dns3ig { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-6Z3DA .framer-ygckg7, .framer-6Z3DA .framer-195p9ig, .framer-6Z3DA .framer-1d6x8xh { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-6Z3DA .framer-19fegp5 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-6Z3DA .framer-1vta14p { --framer-text-wrap: balance; flex: none; height: auto; overflow: visible; position: relative; white-space: pre-wrap; width: 108px; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\".framer-6Z3DA .framer-1xl91xh, .framer-6Z3DA .framer-1oazawf, .framer-6Z3DA .framer-nc4bvk { flex: none; height: auto; overflow: visible; position: relative; white-space: pre; width: auto; z-index: 1; }\",\".framer-6Z3DA .framer-x20nvc, .framer-6Z3DA .framer-1jq0oll { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-6Z3DA .framer-1u3vkwo { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 18px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-6Z3DA .framer-18ejx21, .framer-6Z3DA .framer-1mruzo4, .framer-6Z3DA .framer-1hp0mxr, .framer-6Z3DA .framer-1647v3z, .framer-6Z3DA .framer-1wxe53j, .framer-6Z3DA .framer-w8r0sk, .framer-6Z3DA .framer-f9dflq { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-6Z3DA .framer-1rwm3ml-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; z-index: 1; }\",\".framer-6Z3DA .framer-kb5p6m-container, .framer-6Z3DA .framer-1akx8ao-container, .framer-6Z3DA .framer-1ijz6x3-container, .framer-6Z3DA .framer-v2rx3n-container, .framer-6Z3DA .framer-vqvr8q-container, .framer-6Z3DA .framer-1d3hzur-container, .framer-6Z3DA .framer-xh2wlr-container, .framer-6Z3DA .framer-c5jcmg-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",...sharedStyle.css,'.framer-6Z3DA[data-border=\"true\"]::after, .framer-6Z3DA [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 4988.5\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framerbg2TieKfw=withCSS(Component,css,\"framer-6Z3DA\");export default Framerbg2TieKfw;Framerbg2TieKfw.displayName=\"Case_Nebularis\";Framerbg2TieKfw.defaultProps={height:4988.5,width:1200};addFonts(Framerbg2TieKfw,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/eiALb3Ac2OPorMgJIBVNZMBzpg.woff2\",weight:\"700\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v6/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"},{cssFamilyName:\"PP Neue Montreal Medium\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]},...ImageOrVideoFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});Framerbg2TieKfw.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(ImageOrVideo,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerbg2TieKfw\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"4988.5\",\"framerIntrinsicWidth\":\"1200\",\"framerAutoSizeImages\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./bg2TieKfw.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{forwardRef,useEffect,useLayoutEffect,useMemo,useRef,useState}from\"react\";import{motion,useMotionValue,useSpring}from\"framer-motion\";const RAD=Math.PI/180;const DEG=180/Math.PI;// Controlled behaviour when the pivot is above the centre of mass.\nconst TOP_GRAVITY=450;const TOP_ROTATION_SPRING=20;const TOP_DAMPING=7;const TOP_MAX_ROTATION=14*RAD;// Free pendulum behaviour when the pivot is below the centre of mass.\nconst BOTTOM_GRAVITY=1800;const BOTTOM_DAMPING=3.2;const BOTTOM_MAX_ROTATION=205*RAD;// The cursor must be this far below the visual centre to trigger a flip.\nconst BOTTOM_THRESHOLD_RATIO=.05;const BOTTOM_THRESHOLD_MIN=8;const MAX_ACC=6500;const MAX_ANGULAR_SPEED=5;const V_SMOOTH=.45;const A_SMOOTH=.28;const SUB_STEP=.004;const MAX_FRAME=.05;const IDLE_LERP=.18;const DRAG_THRESHOLD=4;const LIFT_SCALE=1.03;const HOVER_TILT=-1;// ── TAP OPENS THE ABOUT WINDOW ───────────────────────────────────────────\n//\n// §20.41 — one override per layer, and this layer already has this one. The\n// Polaroid cannot also carry openAbout from WindowTriggers, and wrapping it in\n// a Frame to get a second slot breaks the drag. So the open lives here.\n//\n// A dragged object cannot use a plain click: EVERY DRAG ENDS IN A POINTER-UP,\n// so an unguarded handler would open About every time the photo is set down.\n// This file already distinguishes the two — `dragging.current` only becomes\n// true once the pointer has travelled DRAG_THRESHOLD. If it is still false at\n// pointer-up, the press was a tap.\n//\n// THE CLICK IS THE PRIMARY ACTION, so the resting cursor is `pointer`, not\n// `grab`. `grab` promised a drag and said nothing about opening, which left\n// About undiscoverable on the one object most likely to be picked up and put\n// straight back down. The drag is the reward for messing with it, and\n// `grabbing` still appears the moment one starts.\n//\n// The affordance is stated rather than implied: CursorTip carries the desk's\n// voice (§12.4) and this is exactly what it is for — one line naming both\n// actions, no permanent UI on the desk.\nconst OPEN_WINDOW_ID=\"about\";const TIP_TEXT=\"open \\xb7 or drag it\";const CURSOR_TIP_VERSION=2;function showTip(text){try{const tip=window.__cursorTip;if(tip&&tip.version===CURSOR_TIP_VERSION)tip.show(text);}catch(error){// CursorTip is optional. Its absence must not break the drag.\n}}function hideTip(){try{const tip=window.__cursorTip;if(tip&&tip.version===CURSOR_TIP_VERSION)tip.hide();}catch(error){}}function openDeskWindow(id){try{const store=window.__deskWindow;if(!store||typeof store.open!==\"function\"){console.warn(\"[DragPhysics_7] no DeskWindow instance with Window Id '\"+id+\"' is on this page.\");return;}store.open(id);}catch(error){console.warn(\"[DragPhysics_7] open failed\",error);}}// ── NIGHT (§6.8) — DONE ──────────────────────────────────────────────────\n//\n// Both photos are mounted inside Variant 1 and crossfaded by opacity. The\n// night layer is a HoverReveal INSTANCE, not an image — which does not matter,\n// because the selector matches on the layer NAME, not on what the layer is.\n//\n// ── THE VARIANT ROUTE IS DEAD. FOUR ATTEMPTS, LOGGED SO IT IS NOT RETRIED ──\n//\n//   1. variant=\"Night Variant\"            nothing\n//   2. + a retry for the __deskLight mount race    store attached, still\n//      nothing — the race was real but was not this bug\n//   3. variant=\"e4zk_YXw1\", the real variant node id off the canvas XML\n//      badge read `store OK / night T / sending e4zk_YXw1`, still the day photo\n//   4. printed the props Framer actually passes:\n//\n//        children onMouseEnter onMouseLeave className\n//        data-framer-name layoutDependency layoutId\n//\n//      `children` is present and `variant` is absent. AN OVERRIDE RECEIVES A\n//      DESIGN COMPONENT'S ALREADY-RENDERED OUTPUT. The variant was chosen\n//      before the override ran, so no value of `variant=` could ever have\n//      worked. This is different from a CODE component, where an override does\n//      get the real props — which is why PlantNight.tsx can write inputsJSON\n//      and this file cannot write a variant.\n//\n// §6.8 had already locked the right answer — one instance, both photos\n// mounted, crossfaded — before the night variant existed. Four rounds went\n// into rediscovering a decision that was written down. Read the brief first.\n//\n// ── THE LAYER NAMES ARE THE CONTRACT ──\n//\n// Framer writes a layer's name into `data-framer-name`. Inside Variant 1:\n//\n//   NightPhoto   the night image, opacity 0, above the day photo\n//   Sticker      the tape — day only, fades out at night\n//\n// Rename either and night silently stops working. There is no error.\nconst DEBUG=false;const DESK_LIGHT_VERSION=1;const ATTACH_INTERVAL=120;const ATTACH_TIMEOUT=6e3;const useIsoLayoutEffect=typeof window!==\"undefined\"?useLayoutEffect:useEffect;function clamp(value,min,max){return Math.max(min,Math.min(max,value));}function readRotation(style){if(!style)return 0;if(typeof style.rotate===\"number\"){return style.rotate;}if(typeof style.rotate===\"string\"){const value=parseFloat(style.rotate);if(!Number.isNaN(value))return value;}if(typeof style.transform===\"string\"){const match=style.transform.match(/rotate\\(\\s*(-?[\\d.]+)deg\\s*\\)/);if(match)return parseFloat(match[1]);}return 0;}function stripRotation(transform){if(typeof transform!==\"string\")return undefined;const result=transform.replace(/rotate\\([^)]*\\)/g,\"\").trim();return result.length?result:undefined;}export function withDragPhysics(Component){return /*#__PURE__*/forwardRef((props,forwardedRef)=>{const{style,...passthrough}=props;const baseRotation=useMemo(()=>readRotation(style),[style]);const outerStyle=useMemo(()=>{const{rotate:_rotate,transform,...remainingStyle}=style||{};const transformWithoutRotation=stripRotation(transform);return transformWithoutRotation?{...remainingStyle,transform:transformWithoutRotation}:remainingStyle;},[style]);const[state,setState]=useState(\"idle\");const[elevated,setElevated]=useState(false);// §6.8 — reads the SWITCH (isNight), not the grade (progress): the\n// photo changes AT the press, it does not fade with the room.\nconst[isNight,setIsNight]=useState(false);const[attached,setAttached]=useState(false);useEffect(()=>{if(typeof window===\"undefined\")return;let unsubscribe=null;let timer=null;let waited=0;let cancelled=false;// DeskLight creates the store in a useEffect, and React runs CHILD\n// effects before PARENT effects — so a plain guard fails closed on\n// a race it should have survived. Wait, then give up loudly.\nconst attach=()=>{if(cancelled)return true;const store=window.__deskLight;if(!store||store.version!==DESK_LIGHT_VERSION){return false;}const read=()=>setIsNight(!!store.isNight);read();setAttached(true);unsubscribe=store.subscribe(read);return true;};if(!attach()){timer=setInterval(()=>{waited+=ATTACH_INTERVAL;if(attach()||waited>=ATTACH_TIMEOUT){clearInterval(timer);timer=null;}},ATTACH_INTERVAL);}return()=>{cancelled=true;if(timer)clearInterval(timer);if(unsubscribe)unsubscribe();};},[]);// The pill must not survive the object unmounting mid-hover.\nuseEffect(()=>hideTip,[]);const moverRef=useRef(null);const pivotRef=useRef(null);const contentRef=useRef(null);const size=useRef({width:0,height:0});const pivot=useRef(null);const position=useRef({x:0,y:0});const dragStart=useRef({screenX:0,screenY:0,positionX:0,positionY:0,scaleX:1,scaleY:1});const pointer=useRef({x:0,y:0});const previousPointer=useRef({x:0,y:0});const velocity=useRef({x:0,y:0});const previousVelocity=useRef({x:0,y:0});const acceleration=useRef({x:0,y:0});const theta=useRef(0);const thetaStart=useRef(0);const angularVelocity=useRef(0);const rotationStart=useRef(baseRotation);const rodLength=useRef(0);const bottomGrabMode=useRef(false);const radiusOfGyrationSquared=useRef(1);const restAngle=useRef(baseRotation);const idleTarget=useRef(baseRotation);const armed=useRef(false);const dragging=useRef(false);const hovering=useRef(false);const reducedMotion=useRef(false);const rafId=useRef(null);const lastFrame=useRef(0);const x=useMotionValue(0);const y=useMotionValue(0);const rotation=useMotionValue(baseRotation);const scaleTarget=useMotionValue(1);const scale=useSpring(scaleTarget,{stiffness:380,damping:30,mass:.7});const setRefs=node=>{moverRef.current=node;if(typeof forwardedRef===\"function\"){forwardedRef(node);}else if(forwardedRef&&typeof forwardedRef===\"object\"){try{forwardedRef.current=node;}catch{// Ignore immutable forwarded refs.\n}}};const measure=()=>{const mover=moverRef.current;const content=contentRef.current;if(!mover||!content)return;const width=mover.offsetWidth||mover.clientWidth;const height=mover.offsetHeight||mover.clientHeight;if(!width||!height)return;size.current={width,height};content.style.width=`${width}px`;content.style.height=`${height}px`;radiusOfGyrationSquared.current=(width*width+height*height)/12;};const placePivot=(grabX,grabY,compensate)=>{const pivotElement=pivotRef.current;const content=contentRef.current;if(!pivotElement||!content)return;const previousPivot=pivot.current;if(compensate&&previousPivot){const dx=grabX-previousPivot.x;const dy=grabY-previousPivot.y;const angle=rotation.get()*RAD;const cosine=Math.cos(angle);const sine=Math.sin(angle);const currentScale=scale.get()||1;const rotatedX=currentScale*(cosine*dx-sine*dy);const rotatedY=currentScale*(sine*dx+cosine*dy);position.current.x+=rotatedX-dx;position.current.y+=rotatedY-dy;x.set(position.current.x);y.set(position.current.y);}pivot.current={x:grabX,y:grabY};pivotElement.style.left=`${grabX}px`;pivotElement.style.top=`${grabY}px`;content.style.left=`${-grabX}px`;content.style.top=`${-grabY}px`;};const clientToContentPoint=(clientX,clientY)=>{const mover=moverRef.current;if(!mover){return{x:0,y:0,scaleX:1,scaleY:1};}const rect=mover.getBoundingClientRect();const localWidth=size.current.width||1;const localHeight=size.current.height||1;const viewportScaleX=Math.abs(rect.width/localWidth)||1;const viewportScaleY=Math.abs(rect.height/localHeight)||1;const moverX=(clientX-rect.left)/viewportScaleX;const moverY=(clientY-rect.top)/viewportScaleY;const currentPivot=pivot.current??{x:localWidth/2,y:localHeight/2};const currentScale=scale.get()||1;const angle=rotation.get()*RAD;const cosine=Math.cos(angle);const sine=Math.sin(angle);const scaledX=(moverX-currentPivot.x)/currentScale;const scaledY=(moverY-currentPivot.y)/currentScale;const contentX=currentPivot.x+cosine*scaledX+sine*scaledY;const contentY=currentPivot.y-sine*scaledX+cosine*scaledY;return{x:contentX,y:contentY,scaleX:viewportScaleX,scaleY:viewportScaleY};};useIsoLayoutEffect(()=>{measure();if(!pivot.current&&size.current.width){placePivot(size.current.width/2,size.current.height/2,false);}const mover=moverRef.current;if(!mover||typeof ResizeObserver===\"undefined\"){return;}const observer=new ResizeObserver(measure);observer.observe(mover);return()=>observer.disconnect();},[]);useEffect(()=>{if(typeof window===\"undefined\")return;const media=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const updateReducedMotion=()=>{reducedMotion.current=media.matches;if(media.matches&&!dragging.current){idleTarget.current=restAngle.current;rotation.set(restAngle.current);scaleTarget.set(1);}};updateReducedMotion();media.addEventListener(\"change\",updateReducedMotion);return()=>{media.removeEventListener(\"change\",updateReducedMotion);};},[rotation,scaleTarget]);useEffect(()=>{const element=moverRef.current;if(!element)return;const frame=now=>{let deltaTime=(now-lastFrame.current)/1e3;lastFrame.current=now;if(!(deltaTime>0)){deltaTime=1/60;}deltaTime=Math.min(deltaTime,MAX_FRAME);if(dragging.current){if(reducedMotion.current){rotation.set(rotationStart.current);rafId.current=requestAnimationFrame(frame);return;}const velocityXNow=(pointer.current.x-previousPointer.current.x)/deltaTime;const velocityYNow=(pointer.current.y-previousPointer.current.y)/deltaTime;previousPointer.current={...pointer.current};const velocityBlend=1-Math.pow(1-V_SMOOTH,deltaTime*60);velocity.current.x+=(velocityXNow-velocity.current.x)*velocityBlend;velocity.current.y+=(velocityYNow-velocity.current.y)*velocityBlend;const accelerationXNow=(velocity.current.x-previousVelocity.current.x)/deltaTime;const accelerationYNow=(velocity.current.y-previousVelocity.current.y)/deltaTime;previousVelocity.current={...velocity.current};const accelerationBlend=1-Math.pow(1-A_SMOOTH,deltaTime*60);acceleration.current.x=clamp(acceleration.current.x+(accelerationXNow-acceleration.current.x)*accelerationBlend,-MAX_ACC,MAX_ACC);acceleration.current.y=clamp(acceleration.current.y+(accelerationYNow-acceleration.current.y)*accelerationBlend,-MAX_ACC,MAX_ACC);const steps=Math.max(1,Math.ceil(deltaTime/SUB_STEP));const stepTime=deltaTime/steps;const radius=rodLength.current;const denominator=radiusOfGyrationSquared.current+radius*radius;const isBottomGrab=bottomGrabMode.current;const gravity=isBottomGrab?BOTTOM_GRAVITY:TOP_GRAVITY;const rotationSpring=isBottomGrab?0:TOP_ROTATION_SPRING;const damping=isBottomGrab?BOTTOM_DAMPING:TOP_DAMPING;const maximumRotation=isBottomGrab?BOTTOM_MAX_ROTATION:TOP_MAX_ROTATION;for(let step=0;step<steps;step++){const sine=Math.sin(theta.current);const cosine=Math.cos(theta.current);const angleDelta=theta.current-thetaStart.current;const inertialTorque=radius*(-gravity*sine+acceleration.current.x*cosine+acceleration.current.y*sine)/denominator;const angularAcceleration=inertialTorque-rotationSpring*angleDelta-damping*angularVelocity.current;angularVelocity.current=clamp(angularVelocity.current+angularAcceleration*stepTime,-MAX_ANGULAR_SPEED,MAX_ANGULAR_SPEED);let nextTheta=theta.current+angularVelocity.current*stepTime;const minimumTheta=thetaStart.current-maximumRotation;const maximumTheta=thetaStart.current+maximumRotation;if(nextTheta<minimumTheta){nextTheta=minimumTheta;if(angularVelocity.current<0){angularVelocity.current=0;}}if(nextTheta>maximumTheta){nextTheta=maximumTheta;if(angularVelocity.current>0){angularVelocity.current=0;}}theta.current=nextTheta;}rotation.set(rotationStart.current+(theta.current-thetaStart.current)*DEG);rafId.current=requestAnimationFrame(frame);return;}const current=rotation.get();const difference=idleTarget.current-current;if(Math.abs(difference)<.02){rotation.set(idleTarget.current);rafId.current=null;return;}rotation.set(current+difference*IDLE_LERP);rafId.current=requestAnimationFrame(frame);};const startLoop=()=>{if(rafId.current!==null)return;lastFrame.current=performance.now();rafId.current=requestAnimationFrame(frame);};const stopLoop=()=>{if(rafId.current===null)return;cancelAnimationFrame(rafId.current);rafId.current=null;};const endDrag=()=>{armed.current=false;dragging.current=false;angularVelocity.current=0;bottomGrabMode.current=false;restAngle.current=rotation.get();idleTarget.current=restAngle.current;setState(\"idle\");setElevated(false);scaleTarget.set(1);stopLoop();};const handlePointerDown=event=>{if(event.button!==0||armed.current||dragging.current){return;}event.stopPropagation();event.preventDefault();measure();if(!size.current.width||!size.current.height){return;}try{element.setPointerCapture(event.pointerId);}catch{// Pointer capture may be unavailable.\n}const hit=clientToContentPoint(event.clientX,event.clientY);const grabX=hit.x;const grabY=hit.y;const centerOffsetX=size.current.width/2-grabX;const centerOffsetY=size.current.height/2-grabY;rodLength.current=Math.hypot(centerOffsetX,centerOffsetY);placePivot(grabX,grabY,true);const currentRotation=rotation.get();const angle=currentRotation*RAD;const cosine=Math.cos(angle);const sine=Math.sin(angle);// Vector from the grabbed point to the centre,\n// expressed in the current screen orientation.\nconst worldOffsetX=centerOffsetX*cosine-centerOffsetY*sine;const worldOffsetY=centerOffsetX*sine+centerOffsetY*cosine;// Screen Y grows downward.\n//\n// If worldOffsetY is negative, the centre of the\n// Polaroid is above the pointer. The pointer is\n// therefore holding the current visual bottom,\n// regardless of the corner's original local name.\nconst bottomThreshold=Math.max(BOTTOM_THRESHOLD_MIN,size.current.height*BOTTOM_THRESHOLD_RATIO);bottomGrabMode.current=worldOffsetY<-bottomThreshold;let initialTheta=Math.atan2(-worldOffsetX,worldOffsetY);// An exact bottom-centre grab is an unstable\n// equilibrium. Add a tiny deterministic bias so\n// it falls instead of balancing forever.\nif(bottomGrabMode.current&&Math.abs(Math.sin(initialTheta))<.035){initialTheta+=.035;}theta.current=initialTheta;thetaStart.current=initialTheta;rotationStart.current=currentRotation;angularVelocity.current=0;const localPointer={x:event.clientX/hit.scaleX,y:event.clientY/hit.scaleY};pointer.current=localPointer;previousPointer.current=localPointer;velocity.current={x:0,y:0};previousVelocity.current={x:0,y:0};acceleration.current={x:0,y:0};armed.current=true;dragging.current=false;dragStart.current={screenX:event.clientX,screenY:event.clientY,positionX:position.current.x,positionY:position.current.y,scaleX:hit.scaleX,scaleY:hit.scaleY};};const handlePointerMove=event=>{if(!armed.current&&!dragging.current){return;}if(!element.hasPointerCapture(event.pointerId)){return;}event.stopPropagation();event.preventDefault();const screenDeltaX=event.clientX-dragStart.current.screenX;const screenDeltaY=event.clientY-dragStart.current.screenY;if(!dragging.current){if(Math.hypot(screenDeltaX,screenDeltaY)<DRAG_THRESHOLD){return;}dragging.current=true;setState(\"drag\");setElevated(true);// The pill named both actions. One has been chosen.\nhideTip();scaleTarget.set(reducedMotion.current?1:LIFT_SCALE);stopLoop();if(!reducedMotion.current){startLoop();}}const localDeltaX=screenDeltaX/dragStart.current.scaleX;const localDeltaY=screenDeltaY/dragStart.current.scaleY;position.current.x=dragStart.current.positionX+localDeltaX;position.current.y=dragStart.current.positionY+localDeltaY;x.set(position.current.x);y.set(position.current.y);pointer.current={x:event.clientX/dragStart.current.scaleX,y:event.clientY/dragStart.current.scaleY};};const handlePointerEnd=event=>{if(!armed.current&&!dragging.current){return;}// A TAP, NOT A DRAG. `dragging` only becomes true once the\n// pointer has travelled DRAG_THRESHOLD, so this is the one\n// place the two can be told apart. Read it BEFORE endDrag\n// resets it.\nconst wasTap=!dragging.current;event.stopPropagation();endDrag();try{if(element.hasPointerCapture(event.pointerId)){element.releasePointerCapture(event.pointerId);}}catch{// Capture may already have been released.\n}if(wasTap){hideTip();openDeskWindow(OPEN_WINDOW_ID);}else if(hovering.current){// Dropped it and still over the photo — offer it again.\nshowTip(TIP_TEXT);}};const handleLostPointerCapture=()=>{if(!armed.current&&!dragging.current){return;}endDrag();};element.addEventListener(\"pointerdown\",handlePointerDown);element.addEventListener(\"pointermove\",handlePointerMove);element.addEventListener(\"pointerup\",handlePointerEnd);element.addEventListener(\"pointercancel\",handlePointerEnd);element.addEventListener(\"lostpointercapture\",handleLostPointerCapture);return()=>{stopLoop();element.removeEventListener(\"pointerdown\",handlePointerDown);element.removeEventListener(\"pointermove\",handlePointerMove);element.removeEventListener(\"pointerup\",handlePointerEnd);element.removeEventListener(\"pointercancel\",handlePointerEnd);element.removeEventListener(\"lostpointercapture\",handleLostPointerCapture);};},[x,y,rotation,scale,scaleTarget]);const isDragging=state===\"drag\";const nudgeIdle=target=>{if(reducedMotion.current){rotation.set(restAngle.current);idleTarget.current=restAngle.current;return;}idleTarget.current=target;if(rafId.current!==null)return;lastFrame.current=performance.now();const tick=()=>{const current=rotation.get();const difference=idleTarget.current-current;if(dragging.current||Math.abs(difference)<.02){if(!dragging.current){rotation.set(idleTarget.current);}rafId.current=null;return;}rotation.set(current+difference*IDLE_LERP);rafId.current=requestAnimationFrame(tick);};rafId.current=requestAnimationFrame(tick);};return /*#__PURE__*/_jsxs(\"div\",{style:{...outerStyle},children:[DEBUG?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:-58,left:0,zIndex:9999,maxWidth:420,padding:\"4px 7px\",background:\"#000\",color:\"#D0FF00\",font:\"500 10px/1.45 ui-monospace, monospace\",whiteSpace:\"pre-wrap\",pointerEvents:\"none\"},children:\"store \"+(attached?\"OK\":\"MISSING\")+\"  night \"+(isNight?\"T\":\"F\")+\"\\nprops \"+(Object.keys(passthrough).join(\" \")||\"none\")}):null,/*#__PURE__*/_jsx(motion.div,{ref:setRefs,onHoverStart:()=>{hovering.current=true;if(dragging.current)return;setState(\"hover\");showTip(TIP_TEXT);nudgeIdle(restAngle.current+HOVER_TILT);},onHoverEnd:()=>{hovering.current=false;hideTip();if(dragging.current)return;setState(\"idle\");nudgeIdle(restAngle.current);},style:{position:\"relative\",width:\"100%\",height:\"100%\",x,y,// The click is the primary action, so the resting\n// cursor is `pointer`. `grabbing` still appears the\n// moment a drag actually starts.\ncursor:isDragging?\"grabbing\":\"pointer\",userSelect:\"none\",WebkitUserSelect:\"none\",touchAction:\"none\",WebkitTouchCallout:\"none\",zIndex:isDragging?100:elevated?10:undefined},children:/*#__PURE__*/_jsxs(motion.div,{ref:pivotRef,style:{position:\"absolute\",left:0,top:0,width:0,height:0,rotate:rotation,scale,transformOrigin:\"0px 0px\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                            [data-drag-root],\n                            [data-drag-root] img,\n                            [data-drag-root] [style*=\"background-image\"] {\n                                -webkit-user-drag: none !important;\n                                user-drag: none !important;\n                            }\n\n                            /* ── NIGHT, \\xa76.8 ──\n                               Both photos mounted, opacity crossfades them.\n                               Selectors match LAYER NAMES via data-framer-name.\n                               Rename a layer and night silently stops. */\n\n                            [data-drag-root]\n                            [data-framer-name=\"NightPhoto\"] {\n                                opacity: 0 !important;\n                                transition: opacity 260ms ease !important;\n                            }\n\n                            [data-drag-root][data-night=\"true\"]\n                            [data-framer-name=\"NightPhoto\"] {\n                                opacity: 1 !important;\n                            }\n\n                            [data-drag-root]\n                            [data-framer-name=\"Sticker\"] {\n                                transition: opacity 260ms ease !important;\n                            }\n\n                            [data-drag-root][data-night=\"true\"]\n                            [data-framer-name=\"Sticker\"] {\n                                opacity: 0 !important;\n                            }\n\n                            [data-drag-root][data-state=\"drag\"]\n                            [data-framer-name*=\"Mockup Polaroid\"] {\n                                box-shadow:\n                                    -1px 2px 10px 2px\n                                    rgba(0, 0, 0, 0.35) !important;\n                                transition:\n                                    box-shadow 0.2s ease !important;\n                            }\n\n                            [data-drag-root]:not([data-state=\"drag\"])\n                            [data-framer-name*=\"Mockup Polaroid\"] {\n                                box-shadow:\n                                    -1px 2px 4px 2px\n                                    rgba(0, 0, 0, 0.15) !important;\n                                transition:\n                                    box-shadow 0.3s ease !important;\n                            }\n\n                            @media (prefers-reduced-motion: reduce) {\n                                [data-drag-root]\n                                [data-framer-name*=\"Mockup Polaroid\"] {\n                                    transition: none !important;\n                                }\n                            }\n                        `}),/*#__PURE__*/_jsx(\"div\",{ref:contentRef,\"data-drag-root\":true,\"data-state\":state,\"data-night\":isNight?\"true\":\"false\",style:{position:\"absolute\",left:0,top:0},children:/*#__PURE__*/_jsx(Component,{...passthrough})})]})})]});});}\nexport const __FramerMetadata__ = {\"exports\":{\"withDragPhysics\":{\"type\":\"reactHoc\",\"name\":\"withDragPhysics\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DragPhysics_7.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";function srcOf(v){if(!v)return\"\";if(typeof v===\"string\")return v;return v.src||\"\";}function loadImage(src){return new Promise(resolve=>{if(!src)return resolve(null);const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>resolve(img);img.onerror=()=>resolve(null);img.src=src;});}// Static noise tile used to chew the soft edge of the mask.\nfunction makeNoise(size=96){const c=document.createElement(\"canvas\");c.width=size;c.height=size;const ctx=c.getContext(\"2d\");const d=ctx.createImageData(size,size);for(let i=0;i<size*size;i++){d.data[i*4+0]=0;d.data[i*4+1]=0;d.data[i*4+2]=0;d.data[i*4+3]=Math.random()*255;}ctx.putImageData(d,0,0);return c;}/**\n * @framerIntrinsicWidth 255\n * @framerIntrinsicHeight 235\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function HoverReveal(props){const{front,back,size,hardness,wobble,flow,speedBoost,grain,returnTime,snap,preview,style}=props;const wrapRef=useRef(null);const viewRef=useRef(null);const S=useRef({splats:[],last:null,lastT:0,speed:0,hovering:false,raf:0,frontImg:null,backImg:null,mask:null,reveal:null,noise:null}).current;const frontSrc=srcOf(front);const backSrc=srcOf(back);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const live=!isCanvas||preview;useEffect(()=>{let dead=false;Promise.all([loadImage(frontSrc),loadImage(backSrc)]).then(([f,b])=>{if(dead)return;S.frontImg=f;S.backImg=b;kick();});return()=>{dead=true;};// eslint-disable-next-line\n},[frontSrc,backSrc]);// ---- geometry -------------------------------------------------------\nfunction coverRect(iw,ih,w,h){const s=Math.max(w/iw,h/ih);const dw=iw*s;const dh=ih*s;return[(w-dw)/2,(h-dh)/2,dw,dh];}function ensureBuffers(w,h){if(!S.mask)S.mask=document.createElement(\"canvas\");if(!S.reveal)S.reveal=document.createElement(\"canvas\");if(!S.noise)S.noise=makeNoise();for(const c of[S.mask,S.reveal]){if(c.width!==w||c.height!==h){c.width=w;c.height=h;}}}// ---- splats ---------------------------------------------------------\nfunction addSplat(x,y,r){S.splats.push({x,y,r,born:performance.now(),seed:Math.random()*100,spin:(Math.random()-.5)*1.6});if(S.splats.length>600)S.splats.splice(0,S.splats.length-600);}function stampPath(x,y,r){const last=S.last;if(!last){addSplat(x,y,r);}else{const dx=x-last.x;const dy=y-last.y;const dist=Math.hypot(dx,dy);const step=Math.max(2,r*.3);const n=Math.min(30,Math.floor(dist/step));for(let i=1;i<=n;i++){addSplat(last.x+dx*i/n,last.y+dy*i/n,r);}if(n===0&&dist>.5)addSplat(x,y,r);}S.last={x,y};}// Organic outline: radius modulated by a few sine harmonics that drift\n// with time, so the edge keeps moving instead of sitting as a circle.\nfunction blobPath(ctx,x,y,r,seed,t,amp,spin){const N=22;ctx.beginPath();for(let i=0;i<=N;i++){const a=i/N*Math.PI*2+spin*t*.4;const w=1+amp*(Math.sin(a*3+seed+t*1.9)*.45+Math.sin(a*5-seed*1.3+t*2.7)*.28+Math.sin(a*2+seed*2.1-t*1.3)*.42);const rr=r*Math.max(.15,w);const px=x+Math.cos(a)*rr;const py=y+Math.sin(a)*rr;if(i===0)ctx.moveTo(px,py);else ctx.lineTo(px,py);}ctx.closePath();}function blob(ctx,s,r,a,t){if(r<=.5||a<=.01)return;const outer=r*(1+wobble*1.15);const g=ctx.createRadialGradient(s.x,s.y,0,s.x,s.y,outer);const stop=Math.min(.98,Math.max(0,hardness));g.addColorStop(0,`rgba(255,255,255,${a})`);g.addColorStop(stop,`rgba(255,255,255,${a})`);g.addColorStop(1,\"rgba(255,255,255,0)\");ctx.fillStyle=g;blobPath(ctx,s.x,s.y,r,s.seed,t,wobble,s.spin);ctx.fill();}// ---- frame ----------------------------------------------------------\nfunction frame(){S.raf=0;const view=viewRef.current;const wrap=wrapRef.current;if(!view||!wrap)return;const dpr=Math.min(2,window.devicePixelRatio||1);const cw=Math.max(1,Math.round(wrap.clientWidth*dpr));const ch=Math.max(1,Math.round(wrap.clientHeight*dpr));if(view.width!==cw||view.height!==ch){view.width=cw;view.height=ch;}ensureBuffers(cw,ch);const ctx=view.getContext(\"2d\");ctx.clearRect(0,0,cw,ch);// 1. front layer, cover fit\nif(S.frontImg){const rect=coverRect(S.frontImg.naturalWidth,S.frontImg.naturalHeight,cw,ch);ctx.drawImage(S.frontImg,...rect);}// 2. mask field\nconst now=performance.now();const t=now/1e3*flow;const life=Math.max(.1,returnTime)*1e3;const alive=[];const mctx=S.mask.getContext(\"2d\");mctx.clearRect(0,0,cw,ch);mctx.globalCompositeOperation=\"lighter\";// snap: >1 shrinks fast then trails off, <1 holds then drops away\nconst curve=Math.max(.2,snap);for(const s of S.splats){const age=(now-s.born)/life;if(age>=1)continue;alive.push(s);const k=1-age;const r=s.r*Math.pow(k,curve);const a=Math.min(1,k*3.2);blob(mctx,s,r,a,t+s.seed*.1);}S.splats=alive;mctx.globalCompositeOperation=\"source-over\";// 3. grain eats the soft edge\nif(grain>0&&alive.length){mctx.globalCompositeOperation=\"destination-out\";mctx.globalAlpha=grain;mctx.fillStyle=mctx.createPattern(S.noise,\"repeat\");mctx.fillRect(0,0,cw,ch);mctx.globalAlpha=1;mctx.globalCompositeOperation=\"source-over\";}// 4. back image, clipped to the mask, same cover rect as the front\nif(alive.length&&S.backImg){const rctx=S.reveal.getContext(\"2d\");rctx.clearRect(0,0,cw,ch);rctx.globalCompositeOperation=\"source-over\";rctx.drawImage(S.mask,0,0);rctx.globalCompositeOperation=\"source-in\";const brect=coverRect(S.backImg.naturalWidth,S.backImg.naturalHeight,cw,ch);rctx.drawImage(S.backImg,...brect);rctx.globalCompositeOperation=\"source-over\";ctx.drawImage(S.reveal,0,0);}if(alive.length||S.hovering)kick();}function kick(){if(!S.raf)S.raf=requestAnimationFrame(()=>frame());}// ---- pointer --------------------------------------------------------\nuseEffect(()=>{const wrap=wrapRef.current;if(!wrap)return;kick();if(!live)return;const onMove=e=>{const rect=wrap.getBoundingClientRect();const d=Math.min(2,window.devicePixelRatio||1);const x=(e.clientX-rect.left)*d;const y=(e.clientY-rect.top)*d;// pointer speed in px/ms, smoothed\nconst now=performance.now();if(S.last&&S.lastT){const dt=Math.max(1,now-S.lastT);const v=Math.hypot(x-S.last.x,y-S.last.y)/dt;S.speed=S.speed*.7+v*.3;}S.lastT=now;const base=Math.max(4,size*Math.min(rect.width,rect.height)*d);const boost=1+Math.min(1,S.speed/1.6)*speedBoost;S.hovering=true;stampPath(x,y,base*boost);kick();};const onLeave=()=>{S.hovering=false;S.last=null;S.lastT=0;S.speed=0;};wrap.addEventListener(\"pointermove\",onMove);wrap.addEventListener(\"pointerleave\",onLeave);wrap.addEventListener(\"pointerdown\",onMove);const ro=new ResizeObserver(()=>kick());ro.observe(wrap);return()=>{wrap.removeEventListener(\"pointermove\",onMove);wrap.removeEventListener(\"pointerleave\",onLeave);wrap.removeEventListener(\"pointerdown\",onMove);ro.disconnect();if(S.raf)cancelAnimationFrame(S.raf);S.raf=0;};// eslint-disable-next-line\n},[live,size,hardness,wobble,flow,speedBoost,grain,returnTime,snap]);return /*#__PURE__*/_jsx(\"div\",{ref:wrapRef,style:{...style,position:\"relative\",overflow:\"hidden\",touchAction:\"none\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:viewRef,style:{display:\"block\",width:\"100%\",height:\"100%\"}})});}HoverReveal.defaultProps={size:.15,hardness:.7,wobble:.3,flow:1.4,speedBoost:.55,grain:.15,returnTime:.9,snap:1.5,preview:true};addPropertyControls(HoverReveal,{front:{type:ControlType.Image,title:\"Front\"},back:{type:ControlType.Image,title:\"Back\"},size:{type:ControlType.Number,title:\"Brush\",min:.02,max:.6,step:.01,displayStepper:false},hardness:{type:ControlType.Number,title:\"Hardness\",min:0,max:.95,step:.05},wobble:{type:ControlType.Number,title:\"Wobble\",min:0,max:.7,step:.02},flow:{type:ControlType.Number,title:\"Flow\",min:0,max:4,step:.1},speedBoost:{type:ControlType.Number,title:\"Speed grow\",min:0,max:1.5,step:.05},grain:{type:ControlType.Number,title:\"Grain\",min:0,max:.8,step:.05},returnTime:{type:ControlType.Number,title:\"Return\",min:.2,max:12,step:.1,unit:\"s\"},snap:{type:ControlType.Number,title:\"Snap\",min:.3,max:3,step:.1},preview:{type:ControlType.Boolean,title:\"Preview\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HoverReveal\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"235\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"255\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./HoverReveal.map","// Generated by Framer (a322632)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getLoadingLazyAtYPosition,Image as Image1,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{withDragPhysics}from\"https://framerusercontent.com/modules/oR7hmpMJhHauyYjOe9pm/oNbLrfbSnOKruFPtLrbP/DragPhysics_7.js\";import HoverReveal from\"https://framerusercontent.com/modules/IY58ppeKimCmneHKfx1K/VajG83u7IWYEau4Q0yWE/HoverReveal.js\";const HoverRevealFonts=getFonts(HoverReveal);const MotionDivWithDragPhysics2tt85f=withCodeBoundaryForOverrides(motion.div,{nodeId:\"dy4miUGva\",override:withDragPhysics,scopeId:\"CN54g_ttF\"});const cycleOrder=[\"dy4miUGva\",\"e4zk_YXw1\"];const serializationHash=\"framer-XI3jQ\";const variantClassNames={dy4miUGva:\"framer-v-2tt85f\",e4zk_YXw1:\"framer-v-1pamumv\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const transformTemplate1=(_,t)=>`translateX(-50%) ${t}`;const transformTemplate2=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Night Variant\":\"e4zk_YXw1\",\"Variant 1\":\"dy4miUGva\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"dy4miUGva\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"dy4miUGva\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(MotionDivWithDragPhysics2tt85f,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-2tt85f\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"dy4miUGva\",ref:refBinding,style:{...style},...addPropertyOverrides({e4zk_YXw1:{\"data-framer-name\":\"Night Variant\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:310,intrinsicWidth:336,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||249)-234.75),pixelHeight:620,pixelWidth:672,sizes:componentViewport?.width||\"100vw\",src:\"https://framerusercontent.com/images/9B26qauL8IwV80k71JM8HW7P2JQ.png?width=672&height=620\",srcSet:\"https://framerusercontent.com/images/9B26qauL8IwV80k71JM8HW7P2JQ.png?scale-down-to=512&width=672&height=620 512w,https://framerusercontent.com/images/9B26qauL8IwV80k71JM8HW7P2JQ.png?width=672&height=620 672w\"},className:\"framer-rnt5sp\",\"data-framer-name\":\"Mockup Polaroid no shadow\",layoutDependency:layoutDependency,layoutId:\"r98cI_T1N\",style:{boxShadow:\"-0.75px 1.5px 4px 1.5px rgba(0, 0, 0, 0.15)\",opacity:1},variants:{e4zk_YXw1:{opacity:0}},...addPropertyOverrides({e4zk_YXw1:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:310,intrinsicWidth:336,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||248)-234.75),pixelHeight:620,pixelWidth:672,sizes:componentViewport?.width||\"100vw\",src:\"https://framerusercontent.com/images/9B26qauL8IwV80k71JM8HW7P2JQ.png?width=672&height=620\",srcSet:\"https://framerusercontent.com/images/9B26qauL8IwV80k71JM8HW7P2JQ.png?scale-down-to=512&width=672&height=620 512w,https://framerusercontent.com/images/9B26qauL8IwV80k71JM8HW7P2JQ.png?width=672&height=620 672w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-dppd9j-container\",\"data-code-component-plugin-id\":\"mcp001\",\"data-framer-name\":\"NightPhoto\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"VopbXALT_-container\",name:\"NightPhoto\",nodeId:\"VopbXALT_\",rendersWithMotion:true,scopeId:\"CN54g_ttF\",style:{opacity:0},variants:{e4zk_YXw1:{opacity:1}},children:/*#__PURE__*/_jsx(HoverReveal,{back:\"https://framerusercontent.com/images/emC12NxpXIRslnZVbbL8sVrJ12U.png?width=255&height=235\",flow:2.6,front:\"https://framerusercontent.com/images/RjjCxLFoowVVveNaExQIkQ4Syxk.png?width=255&height=235\",grain:.45,hardness:.7,height:\"100%\",id:\"VopbXALT_\",layoutId:\"VopbXALT_\",name:\"NightPhoto\",preview:true,returnTime:1,size:.17,snap:1.5,speedBoost:.55,style:{height:\"100%\",width:\"100%\"},width:\"100%\",wobble:.3})})}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:44.5,intrinsicWidth:113,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),pixelHeight:89,pixelWidth:226,sizes:\"84.75px\",src:\"https://framerusercontent.com/images/IZszwzPENZ5KTOYbH1U1pBUGZQ.png?width=226&height=89\"},className:\"framer-1vl6wm\",\"data-framer-name\":\"Sticker\",layoutDependency:layoutDependency,layoutId:\"p2hfngIDe\",style:{opacity:1},transformTemplate:transformTemplate1,variants:{e4zk_YXw1:{opacity:0}}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1yqiksc\",layoutDependency:layoutDependency,layoutId:\"egrj7ZBMt\",style:{opacity:1},variants:{e4zk_YXw1:{opacity:0}},children:[/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:35,intrinsicWidth:114,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||249)-97.5+17.625),pixelHeight:70,pixelWidth:228,sizes:\"85.5px\",src:\"https://framerusercontent.com/images/uBnY0N7jI6RE1mopcWGLmkP6xuw.png?width=228&height=70\"},className:\"framer-nxqh55\",\"data-framer-name\":\"Not a Robot Sticker\",layoutDependency:layoutDependency,layoutId:\"bZcgXVl8t\",style:{rotate:-27},transformTemplate:transformTemplate2,...addPropertyOverrides({e4zk_YXw1:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:35,intrinsicWidth:114,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||248)-97.5+17.625),pixelHeight:70,pixelWidth:228,sizes:\"85.5px\",src:\"https://framerusercontent.com/images/uBnY0N7jI6RE1mopcWGLmkP6xuw.png?width=228&height=70\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:61,intrinsicWidth:36,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||249)-97.5+63.75-49.5),pixelHeight:122,pixelWidth:72,sizes:\"27px\",src:\"https://framerusercontent.com/images/PbesEnxpQOHBKjyUi1BzUgaFes.png?width=72&height=122\"},className:\"framer-u4y4r3\",\"data-framer-name\":\"Paperclip\",layoutDependency:layoutDependency,layoutId:\"Y86LHlw0N\",style:{rotate:-27},...addPropertyOverrides({e4zk_YXw1:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:61,intrinsicWidth:36,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||248)-97.5+63.75-49.5),pixelHeight:122,pixelWidth:72,sizes:\"27px\",src:\"https://framerusercontent.com/images/PbesEnxpQOHBKjyUi1BzUgaFes.png?width=72&height=122\"}}},baseVariant,gestureVariant)})]})]})})})});});const css=[\".framer-XI3jQ.framer-k2r1v5, .framer-XI3jQ .framer-k2r1v5 { display: block; }\",\".framer-XI3jQ.framer-2tt85f { height: 249px; overflow: visible; position: relative; width: 255px; }\",\".framer-XI3jQ .framer-rnt5sp { aspect-ratio: 1.0838709677419356 / 1; bottom: 0px; flex: none; height: auto; left: 0px; overflow: visible; position: absolute; right: 0px; }\",\".framer-XI3jQ .framer-dppd9j-container { flex: none; height: 235px; left: 0px; position: absolute; right: 0px; top: calc(49.79919678714862% - 235px / 2); }\",\".framer-XI3jQ .framer-1vl6wm { aspect-ratio: 2.539325842696629 / 1; flex: none; height: auto; left: 49%; overflow: visible; position: absolute; top: 0px; width: 85px; }\",\".framer-XI3jQ .framer-1yqiksc { bottom: 34px; flex: none; height: 64px; left: -38px; overflow: var(--overflow-clip-fallback, clip); position: absolute; width: 89px; }\",\".framer-XI3jQ .framer-nxqh55 { aspect-ratio: 3.257142857142857 / 1; flex: none; height: auto; left: 50%; overflow: visible; position: absolute; top: 48%; width: 86px; }\",\".framer-XI3jQ .framer-u4y4r3 { aspect-ratio: 0.5901639344262295 / 1; bottom: 4px; flex: none; height: auto; left: 37px; overflow: visible; position: absolute; width: 27px; }\",\".framer-XI3jQ.framer-v-1pamumv.framer-2tt85f { height: 248px; width: 254px; }\",\".framer-XI3jQ.framer-v-1pamumv .framer-dppd9j-container { top: calc(49.59677419354841% - 235px / 2); }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 249\n * @framerIntrinsicWidth 255\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"e4zk_YXw1\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerCN54g_ttF=withCSS(Component,css,\"framer-XI3jQ\");export default FramerCN54g_ttF;FramerCN54g_ttF.displayName=\"Polaroid\";FramerCN54g_ttF.defaultProps={height:249,width:255};addPropertyControls(FramerCN54g_ttF,{variant:{options:[\"dy4miUGva\",\"e4zk_YXw1\"],optionTitles:[\"Variant 1\",\"Night Variant\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerCN54g_ttF,[{explicitInter:true,fonts:[]},...HoverRevealFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerCN54g_ttF\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"e4zk_YXw1\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicHeight\":\"249\",\"framerAutoSizeImages\":\"true\",\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"255\",\"framerDisplayContentsDiv\":\"false\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";/**\n * WindowTriggers.tsx — the overrides that open a DeskWindow. v7.\n *\n * Apply one of these to the layer that should open a window. Overrides are\n * assigned in the panel — §20.13, they cannot be set over MCP.\n *\n *   openCase01   case01   Team Lausanne\n *   openCase02   case02   Streva AI\n *   openCase03   case03   Nebularis Cloud\n *   openCase04   case04   MultichainZ — reserved, no window built yet\n *   openAbout    about    About\n *   closeWindow           closes whatever is open\n *\n * An id only exists once a DeskWindow instance on the page carries it as its\n * Window Id. openCase04 will warn in the console until that instance exists,\n * which is the intended behaviour: a missing window should be loud.\n *\n * ── WHERE THE OVERRIDE GOES ──\n *\n * FRAMER VARIANTS SHARE LAYERS. A layer shown in four variants has ONE\n * override slot, so Main_HIT cannot open a different case per variant. Use a\n * dedicated hit rectangle per case (Open_Streva, Open_Lausanne,\n * Open_Nebularis) and set Visible = No on each in the variants where it does\n * not apply.\n *\n * Do NOT reuse a layer that already carries a Framer tap interaction — the\n * tab hits switch variant, and Framer's own handler owns that click.\n *\n * §20.41 — ONE OVERRIDE PER LAYER. THE POLAROID already carries\n * DragPhysics_7; stacking a second override or wrapping it in a Frame breaks\n * the drag. Its open belongs inside DragPhysics_7, which already knows the\n * drag distance.\n *\n * ── WHY onClick AND NOT onPointerUp ──\n *\n * OpenManifesto.tsx has opened the floppy's window from onClick for months.\n * The pointer handlers here only VETO a click that travelled more than\n * TAP_SLOP, which is how a canvas pan is stopped from counting as a tap. If\n * they never attach, the veto never fires and the click still opens — it\n * fails open, which is right for a nav control.\n *\n * ── WHY THIS FILE IS ONLY TRIGGERS ──\n *\n * AN OVERRIDE FILE CANNOT IMPORT `react-dom` OR `framer`. No createPortal, no\n * RenderTarget — so the modal cannot live here. It is DeskWindow.tsx, a code\n * COMPONENT, which can import both.\n *\n * ── EXPORT FORM ──\n *\n * Overrides must be declared as FUNCTIONS, like OpenManifesto.tsx does.\n */const TAP_SLOP=6;const LOG=false;function log(...args){if(LOG)console.log(\"[WindowTriggers]\",...args);}function openWindow(id){try{const s=window.__deskWindow;if(!s||typeof s.open!==\"function\"){console.warn(\"[WindowTriggers] no DeskWindow instance with Window Id '\"+id+\"' is on this page. The store is created by DeskWindow, not by this override.\");return;}s.open(id);log(\"opened\",id);}catch(e){console.warn(\"[WindowTriggers] open failed\",e);}}function Trigger(props){const{id,Component,inner}=props;const start=React.useRef(null);const dragged=React.useRef(false);return /*#__PURE__*/_jsx(Component,{...inner,onPointerDown:event=>{start.current={x:event.clientX,y:event.clientY};dragged.current=false;if(inner.onPointerDown)inner.onPointerDown(event);},onPointerMove:event=>{const from=start.current;if(from&&!dragged.current){const dx=event.clientX-from.x;const dy=event.clientY-from.y;if(Math.sqrt(dx*dx+dy*dy)>TAP_SLOP)dragged.current=true;}if(inner.onPointerMove)inner.onPointerMove(event);},onClick:event=>{// Fails OPEN: if the pointer handlers never attached,\n// dragged stays false and the click still opens.\nif(!dragged.current)openWindow(id);start.current=null;dragged.current=false;if(inner.onClick)inner.onClick(event);},style:{...inner.style,cursor:\"pointer\"}});}export function openAbout(Component){return props=>/*#__PURE__*/_jsx(Trigger,{id:\"about\",Component:Component,inner:props});}export function openCase01(Component){return props=>/*#__PURE__*/_jsx(Trigger,{id:\"case01\",Component:Component,inner:props});}export function openCase02(Component){return props=>/*#__PURE__*/_jsx(Trigger,{id:\"case02\",Component:Component,inner:props});}export function openCase03(Component){return props=>/*#__PURE__*/_jsx(Trigger,{id:\"case03\",Component:Component,inner:props});}/** MultichainZ. Reserved — build a DeskWindow with Window Id `case04`. */export function openCase04(Component){return props=>/*#__PURE__*/_jsx(Trigger,{id:\"case04\",Component:Component,inner:props});}/** Closes whatever is open. The backdrop and Escape already do this. */export function closeWindow(Component){return props=>/*#__PURE__*/_jsx(Component,{...props,onClick:event=>{try{const s=window.__deskWindow;if(s)s.close();}catch(e){}if(props.onClick)props.onClick(event);}});}\nexport const __FramerMetadata__ = {\"exports\":{\"closeWindow\":{\"type\":\"reactHoc\",\"name\":\"closeWindow\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openAbout\":{\"type\":\"reactHoc\",\"name\":\"openAbout\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openCase03\":{\"type\":\"reactHoc\",\"name\":\"openCase03\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openCase04\":{\"type\":\"reactHoc\",\"name\":\"openCase04\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openCase02\":{\"type\":\"reactHoc\",\"name\":\"openCase02\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openCase01\":{\"type\":\"reactHoc\",\"name\":\"openCase01\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./WindowTriggers.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getLoadingLazyAtYPosition,Image as Image1,RichText,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"HRxivR3qN\",\"VEFmDge0Q\"];const serializationHash=\"framer-y9E1X\";const variantClassNames={HRxivR3qN:\"framer-v-vk1y7l\",VEFmDge0Q:\"framer-v-1bhr3zr\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.6,type:\"spring\"};const transformTemplate1=(_,t)=>`translateY(-50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Rest:\"HRxivR3qN\",Revealed:\"VEFmDge0Q\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"HRxivR3qN\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"HRxivR3qN\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-vk1y7l\",className,classNames),\"data-framer-name\":\"Rest\",layoutDependency:layoutDependency,layoutId:\"HRxivR3qN\",ref:refBinding,style:{...style},...addPropertyOverrides({VEFmDge0Q:{\"data-framer-name\":\"Revealed\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-107),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?width=1254&height=1254 1254w\"},className:\"framer-18b1vqd\",\"data-framer-name\":\"Nebularis_Cloud\",layoutDependency:layoutDependency,layoutId:\"pxkMruruA\",style:{filter:\"none\",rotate:4,WebkitFilter:\"none\"},variants:{VEFmDge0Q:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",rotate:-6,WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({VEFmDge0Q:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-47),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/X7iMDodAvkVCcaDAmN5e4fUdwM.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-107),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?width=1254&height=1254 1254w\"},className:\"framer-51zr68\",\"data-framer-name\":\"Nebularis_Kchain\",layoutDependency:layoutDependency,layoutId:\"lDeZoYyAF\",style:{filter:\"none\",rotate:-4,WebkitFilter:\"none\"},variants:{VEFmDge0Q:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",rotate:6,WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({VEFmDge0Q:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-163),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/ftBLnCsHQD7xpCsvrLpRdicF258.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-107),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?width=1254&height=1254 1254w\"},className:\"framer-1wwrp2z\",\"data-framer-name\":\"Nebularis_ball\",layoutDependency:layoutDependency,layoutId:\"eJ_lWCPaU\",style:{filter:\"none\",rotate:2,WebkitFilter:\"none\"},variants:{VEFmDge0Q:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",rotate:-4,WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({VEFmDge0Q:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-99),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/1XOnMjw9i1Hea4erSh7VWKrip7g.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1rdhb93\",layoutDependency:layoutDependency,layoutId:\"NJgj9_0d7\",radius:{bottomLeft:0,bottomRight:12,topLeft:0,topRight:12},requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 289 436\" overflow=\"visible\"><path d=\"M 0 0 C 0 0 222.389 0 276.999 0 C 283.627 0 289 5.373 289 12.001 C 289 74.428 289 361.571 289 423.999 C 289 430.627 283.627 436 276.999 436 C 222.388 436 0 436 0 436 Z\" fill=\"rgb(235, 232, 228)\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-14oajb7\",layoutDependency:layoutDependency,layoutId:\"jU2vaxrBo\",children:[/*#__PURE__*/_jsxs(SVG,{className:\"framer-1c1f99w\",layoutDependency:layoutDependency,layoutId:\"AEsMPt5mx\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 129\" overflow=\"visible\"><g><defs><path d=\"M 20 100.624 C 20 104.194 17.85 107.211 14.906 108.168 C 14.721 108.216 14.536 108.269 14.354 108.323 C 6.09 110.742 0 119.085 0 129 L 0 89.266 L 20 89.266 Z M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1200z\"></path><filter id=\"a1202z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1205z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1205z\" result=\"a1206z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1207z\"></feFlood><feComposite in=\"a1207z\" in2=\"a1206z\" operator=\"in\" result=\"a1203z\"></feComposite></filter></defs><mask id=\"a1204z\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><rect x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\" fill=\"white\"></rect><use href=\"#a1200z\" fill=\"black\"></use></mask><g filter=\"url(#a1202z)\" mask=\"url(#a1204z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1200z\" clip-path=\"url(#a1201z)\"></use></g><use xlink:href=\"#a1200z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1201z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({VEFmDge0Q:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 129\" overflow=\"visible\"><g><defs><path d=\"M 20 100.624 C 20 104.194 17.85 107.211 14.906 108.168 C 14.721 108.216 14.536 108.269 14.354 108.323 C 6.09 110.742 0 119.085 0 129 L 0 89.266 L 20 89.266 Z M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1208z\"></path><filter id=\"a1210z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1213z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1213z\" result=\"a1214z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1215z\"></feFlood><feComposite in=\"a1215z\" in2=\"a1214z\" operator=\"in\" result=\"a1211z\"></feComposite></filter></defs><mask id=\"a1212z\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><rect x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\" fill=\"white\"></rect><use href=\"#a1208z\" fill=\"black\"></use></mask><g filter=\"url(#a1210z)\" mask=\"url(#a1212z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1208z\" clip-path=\"url(#a1209z)\"></use></g><use xlink:href=\"#a1208z\" fill=\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0)) /* {&quot;name&quot;:&quot;Cyber Lime&quot;} */\" clip-path=\"url(#a1209z)\"></use></g></svg>'}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-1usp62z\",layoutDependency:layoutDependency,layoutId:\"XZ4XNQtnk\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 39.734\" overflow=\"visible\"><g><defs><path d=\"M 20 11.358 C 20 14.928 17.85 17.945 14.906 18.902 C 14.721 18.95 14.536 19.003 14.354 19.057 C 6.09 21.476 0 29.819 0 39.734 L 0 0 L 20 0 Z\" id=\"a1216z\"></path><filter id=\"a1218z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1221z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1221z\" result=\"a1222z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1223z\"></feFlood><feComposite in=\"a1223z\" in2=\"a1222z\" operator=\"in\" result=\"a1219z\"></feComposite></filter></defs><mask id=\"a1220z\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><rect x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\" fill=\"white\"></rect><use href=\"#a1216z\" fill=\"black\"></use></mask><g filter=\"url(#a1218z)\" mask=\"url(#a1220z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1216z\" clip-path=\"url(#a1217z)\"></use></g><use xlink:href=\"#a1216z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1217z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({VEFmDge0Q:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 39.734\" overflow=\"visible\"><g><defs><path d=\"M 20 11.358 C 20 14.928 17.85 17.945 14.906 18.902 C 14.721 18.95 14.536 19.003 14.354 19.057 C 6.09 21.476 0 29.819 0 39.734 L 0 0 L 20 0 Z\" id=\"a1224z\"></path><filter id=\"a1226z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1229z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1229z\" result=\"a1230z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1231z\"></feFlood><feComposite in=\"a1231z\" in2=\"a1230z\" operator=\"in\" result=\"a1227z\"></feComposite></filter></defs><mask id=\"a1228z\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><rect x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\" fill=\"white\"></rect><use href=\"#a1224z\" fill=\"black\"></use></mask><g filter=\"url(#a1226z)\" mask=\"url(#a1228z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1224z\" clip-path=\"url(#a1225z)\"></use></g><use xlink:href=\"#a1224z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1225z)\"></use></g></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-145t7pq\",layoutDependency:layoutDependency,layoutId:\"nFdAcxVu9\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 89.265\" overflow=\"visible\"><g><defs><path d=\"M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1232z\"></path><filter id=\"a1234z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1237z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1237z\" result=\"a1238z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1239z\"></feFlood><feComposite in=\"a1239z\" in2=\"a1238z\" operator=\"in\" result=\"a1235z\"></feComposite></filter></defs><mask id=\"a1236z\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><rect x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\" fill=\"white\"></rect><use href=\"#a1232z\" fill=\"black\"></use></mask><g filter=\"url(#a1234z)\" mask=\"url(#a1236z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1232z\" clip-path=\"url(#a1233z)\"></use></g><use xlink:href=\"#a1232z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1233z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({VEFmDge0Q:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 89.265\" overflow=\"visible\"><g><defs><path d=\"M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1240z\"></path><filter id=\"a1242z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1245z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1245z\" result=\"a1246z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1247z\"></feFlood><feComposite in=\"a1247z\" in2=\"a1246z\" operator=\"in\" result=\"a1243z\"></feComposite></filter></defs><mask id=\"a1244z\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><rect x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\" fill=\"white\"></rect><use href=\"#a1240z\" fill=\"black\"></use></mask><g filter=\"url(#a1242z)\" mask=\"url(#a1244z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1240z\" clip-path=\"url(#a1241z)\"></use></g><use xlink:href=\"#a1240z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1241z)\"></use></g></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 0.55)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Pagoda Travel\"})}),className:\"framer-1wqshla\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"gQihDeeDi\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",rotate:90},transformTemplate:transformTemplate1,verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1402,intrinsicWidth:1122,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),pixelHeight:1402,pixelWidth:1122,positionX:\"right\",positionY:\"center\",sizes:\"289px\",src:\"https://framerusercontent.com/images/YvsjsCKgiLgVZ6M3cCZPNtFnU.png?width=1122&height=1402\",srcSet:\"https://framerusercontent.com/images/YvsjsCKgiLgVZ6M3cCZPNtFnU.png?scale-down-to=1024&width=1122&height=1402 819w,https://framerusercontent.com/images/YvsjsCKgiLgVZ6M3cCZPNtFnU.png?width=1122&height=1402 1122w\"},className:\"framer-17o3wu2\",\"data-framer-name\":\"Cloudb\",layoutDependency:layoutDependency,layoutId:\"RO3HBkrte\",style:{borderBottomRightRadius:12,borderTopRightRadius:12}})]})})})});});const css=[\".framer-y9E1X.framer-k15hpc, .framer-y9E1X .framer-k15hpc { display: block; }\",\".framer-y9E1X.framer-vk1y7l { height: 436px; overflow: visible; position: relative; width: 312px; }\",\".framer-y9E1X .framer-18b1vqd, .framer-y9E1X .framer-51zr68, .framer-y9E1X .framer-1wwrp2z { aspect-ratio: 1 / 1; bottom: 41px; flex: none; height: auto; overflow: visible; position: absolute; right: 61px; width: 66px; }\",\".framer-y9E1X .framer-1rdhb93 { height: 436px; left: 0px; position: absolute; top: 0px; width: 289px; }\",\".framer-y9E1X .framer-14oajb7 { align-content: center; align-items: center; bottom: 4px; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: absolute; right: 0px; width: 23px; }\",\".framer-y9E1X .framer-1c1f99w { height: 129px; position: relative; width: 20px; }\",\".framer-y9E1X .framer-1usp62z { height: 40px; left: 0px; position: absolute; top: 89px; width: 20px; }\",\".framer-y9E1X .framer-145t7pq { height: 90px; left: 0px; position: absolute; top: 0px; width: 20px; }\",\".framer-y9E1X .framer-1wqshla { -webkit-user-select: none; flex: none; height: auto; left: -17px; position: absolute; top: 50%; user-select: none; white-space: pre; width: auto; z-index: 1; }\",\".framer-y9E1X .framer-17o3wu2 { aspect-ratio: 0.6636212624584718 / 1; flex: none; height: auto; left: 0px; overflow: visible; position: absolute; top: 0px; width: 289px; }\",\".framer-y9E1X.framer-v-1bhr3zr .framer-18b1vqd { bottom: -19px; right: -66px; }\",\".framer-y9E1X.framer-v-1bhr3zr .framer-51zr68 { bottom: 97px; right: -69px; }\",\".framer-y9E1X.framer-v-1bhr3zr .framer-1wwrp2z { bottom: 33px; right: -98px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 436\n * @framerIntrinsicWidth 312\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"VEFmDge0Q\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerCSjIChuq3=withCSS(Component,css,\"framer-y9E1X\");export default FramerCSjIChuq3;FramerCSjIChuq3.displayName=\"Project_Page1\";FramerCSjIChuq3.defaultProps={height:436,width:312};addPropertyControls(FramerCSjIChuq3,{variant:{options:[\"HRxivR3qN\",\"VEFmDge0Q\"],optionTitles:[\"Rest\",\"Revealed\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerCSjIChuq3,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerCSjIChuq3\",\"slots\":[],\"annotations\":{\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"VEFmDge0Q\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"436\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"312\",\"framerContractVersion\":\"1\",\"framerAutoSizeImages\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CSjIChuq3.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getLoadingLazyAtYPosition,Image as Image1,RichText,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"kdSVcDaoS\",\"b9NsuDndJ\"];const serializationHash=\"framer-IO65m\";const variantClassNames={b9NsuDndJ:\"framer-v-1uq58or\",kdSVcDaoS:\"framer-v-ntpbnu\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.6,type:\"spring\"};const transformTemplate1=(_,t)=>`translateY(-50%) ${t}`;const transformTemplate2=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Rest:\"kdSVcDaoS\",Revealed:\"b9NsuDndJ\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"kdSVcDaoS\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"kdSVcDaoS\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-ntpbnu\",className,classNames),\"data-framer-name\":\"Rest\",layoutDependency:layoutDependency,layoutId:\"kdSVcDaoS\",ref:refBinding,style:{...style},...addPropertyOverrides({b9NsuDndJ:{\"data-framer-name\":\"Revealed\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1247,intrinsicWidth:1261,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+127.5),pixelHeight:1247,pixelWidth:1261,sizes:\"67px\",src:\"https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?width=1261&height=1247\",srcSet:\"https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?scale-down-to=512&width=1261&height=1247 512w,https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?scale-down-to=1024&width=1261&height=1247 1024w,https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?width=1261&height=1247 1261w\"},className:\"framer-7hvo44\",\"data-framer-name\":\"Streva gmail_tile_neongreen 1\",layoutDependency:layoutDependency,layoutId:\"lQaTne_d9\",style:{filter:\"none\",rotate:-4,WebkitFilter:\"none\"},variants:{b9NsuDndJ:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({b9NsuDndJ:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1247,intrinsicWidth:1261,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+((componentViewport?.height||436)*.504587155963303-33.5)),pixelHeight:1247,pixelWidth:1261,sizes:\"67px\",src:\"https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?width=1261&height=1247\",srcSet:\"https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?scale-down-to=512&width=1261&height=1247 512w,https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?scale-down-to=1024&width=1261&height=1247 1024w,https://framerusercontent.com/images/WGmj6nRvPWMP1Cw7ZRFG6M9bWTQ.png?width=1261&height=1247 1261w\"},transformTemplate:transformTemplate1}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+127.5),pixelHeight:1254,pixelWidth:1254,sizes:\"67px\",src:\"https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?width=1254&height=1254 1254w\"},className:\"framer-1s79y8q\",\"data-framer-name\":\"Streva ring_neongreen 1\",layoutDependency:layoutDependency,layoutId:\"eNBSU87Jr\",style:{filter:\"none\",rotate:-4,WebkitFilter:\"none\"},variants:{b9NsuDndJ:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",rotate:16,WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({b9NsuDndJ:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+130.5),pixelHeight:1254,pixelWidth:1254,sizes:\"67px\",src:\"https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/gwPDp2iKFn4jP7bYEg14I8WI1U.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+134.5001),pixelHeight:1254,pixelWidth:1254,sizes:\"48px\",src:\"https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?width=1254&height=1254 1254w\"},className:\"framer-m7tdaw\",\"data-framer-name\":\"Streva translation_bubble_neongreen 1\",layoutDependency:layoutDependency,layoutId:\"yaHADucIt\",style:{filter:\"none\",rotate:-2,WebkitFilter:\"none\"},variants:{b9NsuDndJ:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",rotate:-12,WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({b9NsuDndJ:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+80.5),pixelHeight:1254,pixelWidth:1254,sizes:\"48px\",src:\"https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/vQ9o3MNm4t0Nqwot5nPxjdmz7s.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-7kj6r2\",layoutDependency:layoutDependency,layoutId:\"nxQlXhb8I\",radius:{bottomLeft:0,bottomRight:12,topLeft:0,topRight:12},requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 289 436\" overflow=\"visible\"><path d=\"M 0 0 C 0 0 222.389 0 276.999 0 C 283.627 0 289 5.373 289 12.001 C 289 74.428 289 361.571 289 423.999 C 289 430.627 283.627 436 276.999 436 C 222.388 436 0 436 0 436 Z\" fill=\"rgb(235, 232, 228)\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-wvwvya\",layoutDependency:layoutDependency,layoutId:\"wJjUlkzLV\",children:[/*#__PURE__*/_jsxs(SVG,{className:\"framer-rmc1tq\",layoutDependency:layoutDependency,layoutId:\"el9hMp_Zx\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 129\" overflow=\"visible\"><g><defs><path d=\"M 20 100.624 C 20 104.194 17.85 107.211 14.906 108.168 C 14.721 108.216 14.536 108.269 14.354 108.323 C 6.09 110.742 0 119.085 0 129 L 0 89.266 L 20 89.266 Z M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1148z\"></path><filter id=\"a1150z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1153z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1153z\" result=\"a1154z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1155z\"></feFlood><feComposite in=\"a1155z\" in2=\"a1154z\" operator=\"in\" result=\"a1151z\"></feComposite></filter></defs><mask id=\"a1152z\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><rect x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\" fill=\"white\"></rect><use href=\"#a1148z\" fill=\"black\"></use></mask><g filter=\"url(#a1150z)\" mask=\"url(#a1152z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1148z\" clip-path=\"url(#a1149z)\"></use></g><use xlink:href=\"#a1148z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1149z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({b9NsuDndJ:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 129\" overflow=\"visible\"><g><defs><path d=\"M 20 100.624 C 20 104.194 17.85 107.211 14.906 108.168 C 14.721 108.216 14.536 108.269 14.354 108.323 C 6.09 110.742 0 119.085 0 129 L 0 89.266 L 20 89.266 Z M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1156z\"></path><filter id=\"a1158z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1161z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1161z\" result=\"a1162z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1163z\"></feFlood><feComposite in=\"a1163z\" in2=\"a1162z\" operator=\"in\" result=\"a1159z\"></feComposite></filter></defs><mask id=\"a1160z\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><rect x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\" fill=\"white\"></rect><use href=\"#a1156z\" fill=\"black\"></use></mask><g filter=\"url(#a1158z)\" mask=\"url(#a1160z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1156z\" clip-path=\"url(#a1157z)\"></use></g><use xlink:href=\"#a1156z\" fill=\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0)) /* {&quot;name&quot;:&quot;Cyber Lime&quot;} */\" clip-path=\"url(#a1157z)\"></use></g></svg>'}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-c0mfn5\",layoutDependency:layoutDependency,layoutId:\"T6RpgsQno\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 39.734\" overflow=\"visible\"><g><defs><path d=\"M 20 11.358 C 20 14.928 17.85 17.945 14.906 18.902 C 14.721 18.95 14.536 19.003 14.354 19.057 C 6.09 21.476 0 29.819 0 39.734 L 0 0 L 20 0 Z\" id=\"a1164z\"></path><filter id=\"a1166z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1169z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1169z\" result=\"a1170z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1171z\"></feFlood><feComposite in=\"a1171z\" in2=\"a1170z\" operator=\"in\" result=\"a1167z\"></feComposite></filter></defs><mask id=\"a1168z\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><rect x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\" fill=\"white\"></rect><use href=\"#a1164z\" fill=\"black\"></use></mask><g filter=\"url(#a1166z)\" mask=\"url(#a1168z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1164z\" clip-path=\"url(#a1165z)\"></use></g><use xlink:href=\"#a1164z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1165z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({b9NsuDndJ:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 39.734\" overflow=\"visible\"><g><defs><path d=\"M 20 11.358 C 20 14.928 17.85 17.945 14.906 18.902 C 14.721 18.95 14.536 19.003 14.354 19.057 C 6.09 21.476 0 29.819 0 39.734 L 0 0 L 20 0 Z\" id=\"a1172z\"></path><filter id=\"a1174z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1177z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1177z\" result=\"a1178z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1179z\"></feFlood><feComposite in=\"a1179z\" in2=\"a1178z\" operator=\"in\" result=\"a1175z\"></feComposite></filter></defs><mask id=\"a1176z\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><rect x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\" fill=\"white\"></rect><use href=\"#a1172z\" fill=\"black\"></use></mask><g filter=\"url(#a1174z)\" mask=\"url(#a1176z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1172z\" clip-path=\"url(#a1173z)\"></use></g><use xlink:href=\"#a1172z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1173z)\"></use></g></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-wi1g3b\",layoutDependency:layoutDependency,layoutId:\"CHqcaKBzg\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 89.265\" overflow=\"visible\"><g><defs><path d=\"M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1180z\"></path><filter id=\"a1182z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1185z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1185z\" result=\"a1186z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1187z\"></feFlood><feComposite in=\"a1187z\" in2=\"a1186z\" operator=\"in\" result=\"a1183z\"></feComposite></filter></defs><mask id=\"a1184z\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><rect x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\" fill=\"white\"></rect><use href=\"#a1180z\" fill=\"black\"></use></mask><g filter=\"url(#a1182z)\" mask=\"url(#a1184z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1180z\" clip-path=\"url(#a1181z)\"></use></g><use xlink:href=\"#a1180z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1181z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({b9NsuDndJ:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 89.265\" overflow=\"visible\"><g><defs><path d=\"M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1188z\"></path><filter id=\"a1190z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1193z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1193z\" result=\"a1194z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1195z\"></feFlood><feComposite in=\"a1195z\" in2=\"a1194z\" operator=\"in\" result=\"a1191z\"></feComposite></filter></defs><mask id=\"a1192z\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><rect x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\" fill=\"white\"></rect><use href=\"#a1188z\" fill=\"black\"></use></mask><g filter=\"url(#a1190z)\" mask=\"url(#a1192z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1188z\" clip-path=\"url(#a1189z)\"></use></g><use xlink:href=\"#a1188z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1189z)\"></use></g></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 0.55)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"MultichainZ\"})}),className:\"framer-7p4v80\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"GMju_ArBE\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",rotate:90},transformTemplate:transformTemplate2,verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1536,intrinsicWidth:1024,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),pixelHeight:1536,pixelWidth:1024,sizes:`calc(${(componentViewport?.height||436)-0} * 0.6636)`,src:\"https://framerusercontent.com/images/RgYIOdtibirs4wy5r2QbhBvSsCQ.png?width=1024&height=1536\",srcSet:\"https://framerusercontent.com/images/RgYIOdtibirs4wy5r2QbhBvSsCQ.png?scale-down-to=1024&width=1024&height=1536 682w,https://framerusercontent.com/images/RgYIOdtibirs4wy5r2QbhBvSsCQ.png?width=1024&height=1536 1024w\"},className:\"framer-8lylzt\",\"data-framer-name\":\"Streva\",layoutDependency:layoutDependency,layoutId:\"HDq29Ih70\",style:{borderBottomRightRadius:12,borderTopRightRadius:12}})]})})})});});const css=[\".framer-IO65m.framer-qyth6a, .framer-IO65m .framer-qyth6a { display: block; }\",\".framer-IO65m.framer-ntpbnu { height: 436px; overflow: visible; position: relative; width: 312px; }\",\".framer-IO65m .framer-7hvo44, .framer-IO65m .framer-1s79y8q { aspect-ratio: 1 / 1; flex: none; height: auto; overflow: visible; position: absolute; right: 56px; top: 128px; width: 67px; }\",\".framer-IO65m .framer-m7tdaw { aspect-ratio: 1.1133460179396575 / 1; flex: none; height: auto; overflow: visible; position: absolute; right: 73px; top: 135px; width: 48px; }\",\".framer-IO65m .framer-7kj6r2 { height: 436px; left: 0px; position: absolute; top: 0px; width: 289px; }\",\".framer-IO65m .framer-wvwvya { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: absolute; right: 0px; top: 101px; width: 23px; }\",\".framer-IO65m .framer-rmc1tq { height: 129px; position: relative; width: 20px; }\",\".framer-IO65m .framer-c0mfn5 { height: 40px; left: 0px; position: absolute; top: 89px; width: 20px; }\",\".framer-IO65m .framer-wi1g3b { height: 90px; left: 0px; position: absolute; top: 0px; width: 20px; }\",\".framer-IO65m .framer-7p4v80 { -webkit-user-select: none; flex: none; height: auto; left: 48%; position: absolute; top: 50%; user-select: none; white-space: pre; width: auto; z-index: 1; }\",\".framer-IO65m .framer-8lylzt { aspect-ratio: 0.6636212624584718 / 1; bottom: 0px; flex: none; gap: 10px; left: 0px; mix-blend-mode: darken; overflow: visible; position: absolute; top: 0px; width: auto; }\",\".framer-IO65m.framer-v-1uq58or .framer-7hvo44 { right: -54px; top: 50%; }\",\".framer-IO65m.framer-v-1uq58or .framer-1s79y8q { right: -96px; top: 131px; }\",\".framer-IO65m.framer-v-1uq58or .framer-m7tdaw { right: -49px; top: 81px; }\",\".framer-IO65m.framer-v-1uq58or .framer-8lylzt { mix-blend-mode: unset; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 436\n * @framerIntrinsicWidth 312\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"b9NsuDndJ\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerPpzAzD1yq=withCSS(Component,css,\"framer-IO65m\");export default FramerPpzAzD1yq;FramerPpzAzD1yq.displayName=\"MultichainZ\";FramerPpzAzD1yq.defaultProps={height:436,width:312};addPropertyControls(FramerPpzAzD1yq,{variant:{options:[\"kdSVcDaoS\",\"b9NsuDndJ\"],optionTitles:[\"Rest\",\"Revealed\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerPpzAzD1yq,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerPpzAzD1yq\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"436\",\"framerIntrinsicWidth\":\"312\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"b9NsuDndJ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PpzAzD1yq.map","// Generated by Framer (4d662f6)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getLoadingLazyAtYPosition,Image as Image1,RichText,SVG,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"yg2RaJsGq\",\"ZQev3AZaO\"];const serializationHash=\"framer-rdIAM\";const variantClassNames={yg2RaJsGq:\"framer-v-1ql5xoh\",ZQev3AZaO:\"framer-v-eqxdof\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.6,type:\"spring\"};const transformTemplate1=(_,t)=>`translateY(-50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Rest:\"yg2RaJsGq\",Revealed:\"ZQev3AZaO\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"yg2RaJsGq\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"yg2RaJsGq\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1ql5xoh\",className,classNames),\"data-framer-name\":\"Rest\",layoutDependency:layoutDependency,layoutId:\"yg2RaJsGq\",ref:refBinding,style:{...style},...addPropertyOverrides({ZQev3AZaO:{\"data-framer-name\":\"Revealed\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:627,intrinsicWidth:627,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-208),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?width=1254&height=1254 1254w\"},className:\"framer-1t2geq0\",\"data-framer-name\":\"Lausanne_Patch\",layoutDependency:layoutDependency,layoutId:\"y0Ec8PCDI\",style:{filter:\"none\",rotate:3,WebkitFilter:\"none\"},variants:{ZQev3AZaO:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({ZQev3AZaO:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:627,intrinsicWidth:627,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-204),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/48ehfT5u5AduEBbE8E6biLosXrA.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:627,intrinsicWidth:627,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-208),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?width=1254&height=1254 1254w\"},className:\"framer-21dp1j\",\"data-framer-name\":\"Lausanne_ball\",layoutDependency:layoutDependency,layoutId:\"RMvlW04vC\",style:{filter:\"none\",rotate:7,WebkitFilter:\"none\"},variants:{ZQev3AZaO:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({ZQev3AZaO:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:627,intrinsicWidth:627,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-138),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/yHiFcxqeCdtp5fTOmcbtjQsvYe4.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:627,intrinsicWidth:627,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||436)-208),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?width=1254&height=1254 1254w\"},className:\"framer-1uqo0pl\",\"data-framer-name\":\"Lausanne_Hat\",layoutDependency:layoutDependency,layoutId:\"aqsFZRvq1\",style:{filter:\"none\",rotate:1,WebkitFilter:\"none\"},variants:{ZQev3AZaO:{filter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\",rotate:-13,WebkitFilter:\"drop-shadow(3px 1px 3px rgba(0, 0, 0, 0.28))\"}},...addPropertyOverrides({ZQev3AZaO:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:627,intrinsicWidth:627,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+((componentViewport?.height||436)*.4954128440366975-33)),pixelHeight:1254,pixelWidth:1254,sizes:\"66px\",src:\"https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/cyq78WVlVPSrIz9N6fbEchnO5BA.png?width=1254&height=1254 1254w\"},transformTemplate:transformTemplate1}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-3ua1xz\",layoutDependency:layoutDependency,layoutId:\"RwmcJPW2w\",radius:{bottomLeft:0,bottomRight:12,topLeft:0,topRight:12},requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 289 436\" overflow=\"visible\"><path d=\"M 0 0 C 0 0 222.389 0 276.999 0 C 283.627 0 289 5.373 289 12.001 C 289 74.428 289 361.571 289 423.999 C 289 430.627 283.627 436 276.999 436 C 222.388 436 0 436 0 436 Z\" fill=\"rgb(235, 232, 228)\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-10vrpr5\",layoutDependency:layoutDependency,layoutId:\"r8YoCb8Nb\",children:[/*#__PURE__*/_jsxs(SVG,{className:\"framer-ybe8i2\",layoutDependency:layoutDependency,layoutId:\"x16jATFJm\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 129\" overflow=\"visible\"><g><defs><path d=\"M 20 100.624 C 20 104.194 17.85 107.211 14.906 108.168 C 14.721 108.216 14.536 108.269 14.354 108.323 C 6.09 110.742 0 119.085 0 129 L 0 89.266 L 20 89.266 Z M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1064z\"></path><filter id=\"a1066z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1069z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1069z\" result=\"a1070z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1071z\"></feFlood><feComposite in=\"a1071z\" in2=\"a1070z\" operator=\"in\" result=\"a1067z\"></feComposite></filter></defs><mask id=\"a1068z\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><rect x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\" fill=\"white\"></rect><use href=\"#a1064z\" fill=\"black\"></use></mask><g filter=\"url(#a1066z)\" mask=\"url(#a1068z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1064z\" clip-path=\"url(#a1065z)\"></use></g><use xlink:href=\"#a1064z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1065z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({ZQev3AZaO:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 129\" overflow=\"visible\"><g><defs><path d=\"M 20 100.624 C 20 104.194 17.85 107.211 14.906 108.168 C 14.721 108.216 14.536 108.269 14.354 108.323 C 6.09 110.742 0 119.085 0 129 L 0 89.266 L 20 89.266 Z M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1072z\"></path><filter id=\"a1074z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1077z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1077z\" result=\"a1078z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1079z\"></feFlood><feComposite in=\"a1079z\" in2=\"a1078z\" operator=\"in\" result=\"a1075z\"></feComposite></filter></defs><mask id=\"a1076z\" x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\"><rect x=\"-52.5%\" y=\"-9.7%\" width=\"205.0%\" height=\"119.4%\" fill=\"white\"></rect><use href=\"#a1072z\" fill=\"black\"></use></mask><g filter=\"url(#a1074z)\" mask=\"url(#a1076z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1072z\" clip-path=\"url(#a1073z)\"></use></g><use xlink:href=\"#a1072z\" fill=\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0)) /* {&quot;name&quot;:&quot;Cyber Lime&quot;} */\" clip-path=\"url(#a1073z)\"></use></g></svg>'}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-1sodpen\",layoutDependency:layoutDependency,layoutId:\"NeeqQx9xr\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 39.734\" overflow=\"visible\"><g><defs><path d=\"M 20 11.358 C 20 14.928 17.85 17.945 14.906 18.902 C 14.721 18.95 14.536 19.003 14.354 19.057 C 6.09 21.476 0 29.819 0 39.734 L 0 0 L 20 0 Z\" id=\"a1080z\"></path><filter id=\"a1082z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1085z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1085z\" result=\"a1086z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1087z\"></feFlood><feComposite in=\"a1087z\" in2=\"a1086z\" operator=\"in\" result=\"a1083z\"></feComposite></filter></defs><mask id=\"a1084z\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><rect x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\" fill=\"white\"></rect><use href=\"#a1080z\" fill=\"black\"></use></mask><g filter=\"url(#a1082z)\" mask=\"url(#a1084z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1080z\" clip-path=\"url(#a1081z)\"></use></g><use xlink:href=\"#a1080z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1081z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({ZQev3AZaO:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 39.734\" overflow=\"visible\"><g><defs><path d=\"M 20 11.358 C 20 14.928 17.85 17.945 14.906 18.902 C 14.721 18.95 14.536 19.003 14.354 19.057 C 6.09 21.476 0 29.819 0 39.734 L 0 0 L 20 0 Z\" id=\"a1088z\"></path><filter id=\"a1090z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1093z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1093z\" result=\"a1094z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1095z\"></feFlood><feComposite in=\"a1095z\" in2=\"a1094z\" operator=\"in\" result=\"a1091z\"></feComposite></filter></defs><mask id=\"a1092z\" x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\"><rect x=\"-52.5%\" y=\"-31.5%\" width=\"205.0%\" height=\"162.9%\" fill=\"white\"></rect><use href=\"#a1088z\" fill=\"black\"></use></mask><g filter=\"url(#a1090z)\" mask=\"url(#a1092z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1088z\" clip-path=\"url(#a1089z)\"></use></g><use xlink:href=\"#a1088z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1089z)\"></use></g></svg>'}},baseVariant,gestureVariant)}),/*#__PURE__*/_jsx(SVG,{className:\"framer-fk6em9\",layoutDependency:layoutDependency,layoutId:\"iugZZ2aMR\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 89.265\" overflow=\"visible\"><g><defs><path d=\"M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1096z\"></path><filter id=\"a1098z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1101z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1101z\" result=\"a1102z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1103z\"></feFlood><feComposite in=\"a1103z\" in2=\"a1102z\" operator=\"in\" result=\"a1099z\"></feComposite></filter></defs><mask id=\"a1100z\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><rect x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\" fill=\"white\"></rect><use href=\"#a1096z\" fill=\"black\"></use></mask><g filter=\"url(#a1098z)\" mask=\"url(#a1100z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1096z\" clip-path=\"url(#a1097z)\"></use></g><use xlink:href=\"#a1096z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1097z)\"></use></g></svg>',withExternalLayout:true,...addPropertyOverrides({ZQev3AZaO:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 20 89.265\" overflow=\"visible\"><g><defs><path d=\"M 0 0 C 0 9.915 6.09 18.258 14.354 20.677 C 14.536 20.731 14.721 20.784 14.906 20.831 C 17.85 21.788 20 24.806 20 28.376 L 20 39.735 L 19.998 39.735 L 19.998 89.265 L 0 89.265 Z\" id=\"a1104z\"></path><filter id=\"a1106z\" filterUnits=\"objectBoundingBox\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><feOffset dx=\"0\" dy=\"2\" in=\"SourceAlpha\" result=\"a1109z\"></feOffset><feGaussianBlur stdDeviation=\"2.5\" in=\"a1109z\" result=\"a1110z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.11)\" result=\"a1111z\"></feFlood><feComposite in=\"a1111z\" in2=\"a1110z\" operator=\"in\" result=\"a1107z\"></feComposite></filter></defs><mask id=\"a1108z\" x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\"><rect x=\"-52.5%\" y=\"-14.0%\" width=\"205.0%\" height=\"128.0%\" fill=\"white\"></rect><use href=\"#a1104z\" fill=\"black\"></use></mask><g filter=\"url(#a1106z)\" mask=\"url(#a1108z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1104z\" clip-path=\"url(#a1105z)\"></use></g><use xlink:href=\"#a1104z\" fill=\"rgb(235, 232, 228)\" clip-path=\"url(#a1105z)\"></use></g></svg>'}},baseVariant,gestureVariant)})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 0.55)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Team Lausanne\"})}),className:\"framer-1pct9ax\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"fGcHtba5n\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",rotate:90},transformTemplate:transformTemplate1,verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1204,intrinsicWidth:799,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0),pixelHeight:1204,pixelWidth:799,sizes:`calc(${(componentViewport?.height||436)- -1} * 0.6636)`,src:\"https://framerusercontent.com/images/tSAZ95Bras7QftreV4uOxIBDiM.png?width=799&height=1204\",srcSet:\"https://framerusercontent.com/images/tSAZ95Bras7QftreV4uOxIBDiM.png?scale-down-to=1024&width=799&height=1204 679w,https://framerusercontent.com/images/tSAZ95Bras7QftreV4uOxIBDiM.png?width=799&height=1204 799w\"},className:\"framer-sv3ln4\",\"data-framer-name\":\"Lausane\",layoutDependency:layoutDependency,layoutId:\"Ua9s2KqaF\",style:{borderBottomRightRadius:12,borderTopRightRadius:12}})]})})})});});const css=[\".framer-rdIAM.framer-v3eq5g, .framer-rdIAM .framer-v3eq5g { display: block; }\",\".framer-rdIAM.framer-1ql5xoh { height: 436px; overflow: visible; position: relative; width: 312px; }\",\".framer-rdIAM .framer-1t2geq0, .framer-rdIAM .framer-21dp1j, .framer-rdIAM .framer-1uqo0pl { aspect-ratio: 1 / 1; bottom: 142px; flex: none; gap: 10px; height: auto; overflow: visible; position: absolute; right: 49px; width: 66px; }\",\".framer-rdIAM .framer-3ua1xz { height: 436px; left: 0px; position: absolute; top: 0px; width: 289px; }\",\".framer-rdIAM .framer-10vrpr5 { align-content: center; align-items: center; bottom: 104px; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: absolute; right: 0px; width: 23px; }\",\".framer-rdIAM .framer-ybe8i2 { height: 129px; position: relative; width: 20px; }\",\".framer-rdIAM .framer-1sodpen { height: 40px; left: 0px; position: absolute; top: 89px; width: 20px; }\",\".framer-rdIAM .framer-fk6em9 { height: 90px; left: 0px; position: absolute; top: 0px; width: 20px; }\",\".framer-rdIAM .framer-1pct9ax { -webkit-user-select: none; flex: none; height: auto; left: -20px; position: absolute; top: 50%; user-select: none; white-space: pre; width: auto; z-index: 1; }\",\".framer-rdIAM .framer-sv3ln4 { aspect-ratio: 0.6636212624584718 / 1; bottom: -1px; flex: none; left: 0px; mix-blend-mode: darken; overflow: visible; position: absolute; top: 0px; width: auto; }\",\".framer-rdIAM.framer-v-eqxdof .framer-1t2geq0 { bottom: 138px; right: -101px; }\",\".framer-rdIAM.framer-v-eqxdof .framer-21dp1j { bottom: 72px; right: -71px; }\",\".framer-rdIAM.framer-v-eqxdof .framer-1uqo0pl { bottom: unset; right: -69px; top: 50%; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 436\n * @framerIntrinsicWidth 312\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"ZQev3AZaO\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerpyGFDNCIC=withCSS(Component,css,\"framer-rdIAM\");export default FramerpyGFDNCIC;FramerpyGFDNCIC.displayName=\"TeamLausanne\";FramerpyGFDNCIC.defaultProps={height:436,width:312};addPropertyControls(FramerpyGFDNCIC,{variant:{options:[\"yg2RaJsGq\",\"ZQev3AZaO\"],optionTitles:[\"Rest\",\"Revealed\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerpyGFDNCIC,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerpyGFDNCIC\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"436\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"312\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"ZQev3AZaO\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./pyGFDNCIC.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,forwardLoader,getFonts,getLoadingLazyAtYPosition,Image as Image1,RichText,runTasksWithYield,SmartComponentScopedContainer,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCodeBoundaryForOverrides,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{openCase01,openCase02,openCase03}from\"https://framerusercontent.com/modules/zqgIQBXawqypSbToMYTz/YvFAycqftQJTi25KMR95/WindowTriggers.js\";import Project_Page1 from\"https://framerusercontent.com/modules/i0iTvNIfp0wh7pNurpJN/a9EBPiNqPGTKNEHXGSYZ/CSjIChuq3.js\";import MultichainZ from\"https://framerusercontent.com/modules/YZTZr6GJ4Q9UCh5zjoIb/PLaoTDr3Aujuji7jr3cp/PpzAzD1yq.js\";import TeamLausanne from\"https://framerusercontent.com/modules/U9uTSpRsnBRWJTvrurlr/rUabSwIwTiCBLbzeZj55/pyGFDNCIC.js\";const Project_Page1Fonts=getFonts(Project_Page1);const TeamLausanneFonts=getFonts(TeamLausanne);const MultichainZFonts=getFonts(MultichainZ);const MotionDivOpenCase021vxd1ks=withCodeBoundaryForOverrides(motion.div,{nodeId:\"h0TgsaosC\",override:openCase02,scopeId:\"E1OqLRJyc\"});const MotionDivOpenCase015b089q=withCodeBoundaryForOverrides(motion.div,{nodeId:\"FT99_9Py8\",override:openCase01,scopeId:\"E1OqLRJyc\"});const MotionDivOpenCase0385k06d=withCodeBoundaryForOverrides(motion.div,{nodeId:\"UutwHhJ_t\",override:openCase03,scopeId:\"E1OqLRJyc\"});const cycleOrder=[\"gBXh4jR0d\",\"sDIzZS3sM\",\"oupuNuaqR\",\"B4VQDifUn\"];const serializationHash=\"framer-wpQes\";const variantClassNames={B4VQDifUn:\"framer-v-gp8la0\",gBXh4jR0d:\"framer-v-1jsd5vm\",oupuNuaqR:\"framer-v-3tf7y3\",sDIzZS3sM:\"framer-v-bd7k8p\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const pzqliodNV=undefined;const l4NOIjfaM=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={CLOSED:\"gBXh4jR0d\",LAUSANNE:\"oupuNuaqR\",NEBULARIS:\"B4VQDifUn\",STREVA:\"sDIzZS3sM\"};const Variants=motion.create(React.Fragment);const getProps=({enter,height,id,leave,width,...props})=>{return{...props,l4NOIjfaM:enter??props.l4NOIjfaM,pzqliodNV:leave??props.pzqliodNV,variant:humanReadableVariantMap[props.variant]??props.variant??\"gBXh4jR0d\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,pzqliodNV,l4NOIjfaM,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"gBXh4jR0d\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onMouseEnter1ituxa2=activeVariantCallback(async(...args)=>{setGestureState({isHovered:true});setVariant(\"sDIzZS3sM\");});const onMouseLeavexst9lv=activeVariantCallback(async(...args)=>{setGestureState({isHovered:false});if(pzqliodNV){const res=await pzqliodNV(...args);if(res===false)return false;}});const onMouseLeavep04td1=activeVariantCallback(async(...args)=>{setGestureState({isHovered:false});if(pzqliodNV){const res=await pzqliodNV(...args);if(res===false)return false;}setVariant(\"gBXh4jR0d\");});const onMouseEnter1wofv32=activeVariantCallback(async(...args)=>{if(l4NOIjfaM){const res=await l4NOIjfaM(...args);if(res===false)return false;}});const onMouseEnter9go4qg=activeVariantCallback(async(...args)=>{setVariant(\"sDIzZS3sM\");});const onMouseEnter19koy0t=activeVariantCallback(async(...args)=>{setVariant(\"oupuNuaqR\");});const onMouseEnteriww196=activeVariantCallback(async(...args)=>{setVariant(\"B4VQDifUn\");});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1jsd5vm\",className,classNames),\"data-framer-name\":\"CLOSED\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"gBXh4jR0d\",onMouseEnter:onMouseEnter1ituxa2,onMouseLeave:onMouseLeavexst9lv,ref:refBinding,style:{...style},...addPropertyOverrides({B4VQDifUn:{\"data-framer-name\":\"NEBULARIS\",onMouseLeave:onMouseLeavep04td1},oupuNuaqR:{\"data-framer-name\":\"LAUSANNE\",onMouseLeave:onMouseLeavep04td1},sDIzZS3sM:{\"data-framer-name\":\"STREVA\",onMouseLeave:onMouseLeavep04td1}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-bl9bj\",\"data-framer-name\":\"3D Folder\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"xGS_Nh4pC\",onMouseEnter:onMouseEnter1wofv32,style:{transformPerspective:1500},children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-18el70m\",\"data-framer-name\":\"Front\",layoutDependency:layoutDependency,layoutId:\"xobxrN8oK\",style:{originX:0,rotateY:-1,z:1},variants:{B4VQDifUn:{rotateY:-55},oupuNuaqR:{rotateY:-55},sDIzZS3sM:{rotateY:-55}},children:[/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"stretch\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+0+0+0),pixelHeight:2184,pixelWidth:1444,positionX:\"center\",positionY:\"center\",sizes:\"289px\",src:\"https://framerusercontent.com/images/dlUJu9zazAQMG3vBmzXi0Hn45M.png?width=1444&height=2184\",srcSet:\"https://framerusercontent.com/images/dlUJu9zazAQMG3vBmzXi0Hn45M.png?scale-down-to=1024&width=1444&height=2184 677w,https://framerusercontent.com/images/dlUJu9zazAQMG3vBmzXi0Hn45M.png?scale-down-to=2048&width=1444&height=2184 1354w,https://framerusercontent.com/images/dlUJu9zazAQMG3vBmzXi0Hn45M.png?width=1444&height=2184 1444w\"},className:\"framer-1kv3ucy\",\"data-framer-name\":\"image 1673\",layoutDependency:layoutDependency,layoutId:\"tdkOTuM8g\"}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-2nbq8u\",\"data-framer-name\":\"Folder Label\",layoutDependency:layoutDependency,layoutId:\"lX8pELrDG\",style:{rotate:360},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-c3e4m9\",layoutDependency:layoutDependency,layoutId:\"MS26zHfqP\",children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1fhwls0\",layoutDependency:layoutDependency,layoutId:\"L8po4Ss3L\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 6 6\" overflow=\"visible\"><path d=\"M 3 0 C 4.657 0 6 1.343 6 3 C 6 4.657 4.657 6 3 6 C 1.343 6 0 4.657 0 3 C 0 1.343 1.343 0 3 0 Z\" fill=\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0)) /* {&quot;name&quot;:&quot;Cyber Lime&quot;} */\"></path></svg>',withExternalLayout:true})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBSZWd1bGFy\",\"--framer-font-family\":'\"PP Neue Montreal Regular\", \"PP Neue Montreal Regular Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 0.68)\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Projects\"}),/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBSZWd1bGFy\",\"--framer-font-family\":'\"PP Neue Montreal Regular\", \"PP Neue Montreal Regular Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 0.68)\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-2gxw0f, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Folder\"})]}),className:\"framer-o2zksf\",fonts:[\"CUSTOMV2;PP Neue Montreal Regular\"],layoutDependency:layoutDependency,layoutId:\"VUR_4J9cT\",style:{\"--extracted-2gxw0f\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",opacity:.5},verticalAlignment:\"top\",withExternalLayout:true})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-12vi2vd\",\"data-framer-name\":\"Projects\",layoutDependency:layoutDependency,layoutId:\"Te9Y5kGro\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:436,width:\"312px\",y:(componentViewport?.y||0)+0+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-n02555-container\",\"data-framer-name\":\"NebularisCloud\",layoutDependency:layoutDependency,layoutId:\"QwEJ73kMN-container\",name:\"NebularisCloud\",nodeId:\"QwEJ73kMN\",rendersWithMotion:true,scopeId:\"E1OqLRJyc\",children:/*#__PURE__*/_jsx(Project_Page1,{height:\"100%\",id:\"QwEJ73kMN\",layoutId:\"QwEJ73kMN\",name:\"NebularisCloud\",style:{height:\"100%\",width:\"100%\"},variant:matchVariant(\"HRxivR3qN\"),width:\"100%\",...addPropertyOverrides({B4VQDifUn:{variant:matchVariant(\"VEFmDge0Q\")}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:436,width:\"312px\",y:(componentViewport?.y||0)+0+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1qf8qps-container\",layoutDependency:layoutDependency,layoutId:\"K2OWYO3Oi-container\",nodeId:\"K2OWYO3Oi\",rendersWithMotion:true,scopeId:\"E1OqLRJyc\",style:{scale:1},variants:{B4VQDifUn:{scale:1},oupuNuaqR:{scale:1.02}},children:/*#__PURE__*/_jsx(TeamLausanne,{height:\"100%\",id:\"K2OWYO3Oi\",layoutId:\"K2OWYO3Oi\",style:{height:\"100%\",width:\"100%\"},variant:matchVariant(\"yg2RaJsGq\"),width:\"100%\",...addPropertyOverrides({oupuNuaqR:{variant:matchVariant(\"ZQev3AZaO\")}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:436,width:\"312px\",y:(componentViewport?.y||0)+0+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1x2ikw2-container\",layoutDependency:layoutDependency,layoutId:\"nrVmfRulS-container\",nodeId:\"nrVmfRulS\",rendersWithMotion:true,scopeId:\"E1OqLRJyc\",style:{scale:1},variants:{B4VQDifUn:{scale:1},oupuNuaqR:{scale:1},sDIzZS3sM:{scale:1.02}},children:/*#__PURE__*/_jsx(MultichainZ,{height:\"100%\",id:\"nrVmfRulS\",layoutId:\"nrVmfRulS\",style:{height:\"100%\",width:\"100%\"},variant:matchVariant(\"kdSVcDaoS\"),width:\"100%\",...addPropertyOverrides({sDIzZS3sM:{variant:matchVariant(\"b9NsuDndJ\")}},baseVariant,gestureVariant)})})})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1w86hj0\",\"data-framer-name\":\"Back\",layoutDependency:layoutDependency,layoutId:\"QHi_jUEa6\",style:{backgroundColor:\"rgb(217, 213, 210)\",borderBottomRightRadius:12,borderTopRightRadius:12,boxShadow:\"1px 1px 3px 0px rgba(0, 0, 0, 0.18), 3px 4px 8px 4px rgba(0, 0, 0, 0.17)\"}})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1wy6y0g\",\"data-framer-name\":\"Main_HIT\",layoutDependency:layoutDependency,layoutId:\"jwIjANiMP\",style:{backgroundColor:\"rgb(204, 204, 204)\",opacity:0}}),/*#__PURE__*/_jsx(MotionDivOpenCase021vxd1ks,{className:\"framer-1vxd1ks\",\"data-framer-name\":\"Open_Streva\",layoutDependency:layoutDependency,layoutId:\"h0TgsaosC\",style:{backgroundColor:\"rgb(54, 104, 255)\",opacity:0}}),/*#__PURE__*/_jsx(MotionDivOpenCase015b089q,{className:\"framer-5b089q\",\"data-framer-name\":\"Open_Lausanne\",layoutDependency:layoutDependency,layoutId:\"FT99_9Py8\",style:{backgroundColor:\"rgb(232, 19, 19)\",opacity:0}}),/*#__PURE__*/_jsx(MotionDivOpenCase0385k06d,{className:\"framer-85k06d\",\"data-framer-name\":\"Open_Nebularis\",layoutDependency:layoutDependency,layoutId:\"UutwHhJ_t\",style:{backgroundColor:\"rgb(204, 204, 204)\",opacity:0}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-xl4mhb\",\"data-framer-name\":\"Hit_Streva\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"ySPJWbgT5\",onMouseEnter:onMouseEnter9go4qg,style:{backgroundColor:\"rgb(204, 204, 204)\",opacity:0}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-hz668b\",\"data-framer-name\":\"Hit_Lausanne\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"KllE9kekr\",onMouseEnter:onMouseEnter19koy0t,style:{backgroundColor:\"rgb(204, 204, 204)\",opacity:0}}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-14863e2\",\"data-framer-name\":\"Nebularis\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"C9Dj2UJcL\",onMouseEnter:onMouseEnteriww196,style:{backgroundColor:\"rgb(204, 204, 204)\",opacity:0}})]})})})});});const css=[\".framer-wpQes.framer-g3xxj1, .framer-wpQes .framer-g3xxj1 { display: block; }\",\".framer-wpQes.framer-1jsd5vm { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: 437px; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 322px; }\",\".framer-wpQes .framer-bl9bj { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 437px; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; transform-style: preserve-3d; width: 322px; }\",\".framer-wpQes .framer-18el70m { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: 437px; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; transform-style: preserve-3d; width: 289px; z-index: 3; }\",\".framer-wpQes .framer-1kv3ucy { aspect-ratio: 0.6611721611721612 / 1; flex: none; height: auto; position: relative; width: 289px; }\",\".framer-wpQes .framer-2nbq8u { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: absolute; right: 22px; top: 16px; width: min-content; z-index: 1; }\",\".framer-wpQes .framer-c3e4m9 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 3px 0px 0px 0px; position: relative; width: min-content; }\",\".framer-wpQes .framer-1fhwls0 { height: 6px; position: relative; width: 6px; }\",\".framer-wpQes .framer-o2zksf { -webkit-user-select: none; flex: none; height: auto; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-wpQes .framer-12vi2vd { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: 436px; justify-content: center; left: calc(48.44720496894412% - 312px / 2); overflow: visible; padding: 0px; position: absolute; top: calc(49.88558352402748% - 436px / 2); width: 312px; z-index: 2; }\",\".framer-wpQes .framer-n02555-container { bottom: 0px; flex: none; left: -1px; position: absolute; top: 0px; width: 312px; z-index: 1; }\",\".framer-wpQes .framer-1qf8qps-container { bottom: 0px; flex: none; left: -1px; position: absolute; top: 0px; width: 312px; z-index: 2; }\",\".framer-wpQes .framer-1x2ikw2-container { bottom: 0px; flex: none; left: -1px; position: absolute; top: 0px; width: 312px; z-index: 3; }\",\".framer-wpQes .framer-1w86hj0 { align-content: center; align-items: center; bottom: 0px; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: 437px; justify-content: center; left: calc(45.03105590062114% - 289px / 2); overflow: visible; padding: 0px; position: absolute; width: 289px; z-index: 1; }\",\".framer-wpQes .framer-1wy6y0g { bottom: -7px; flex: none; left: -4px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: -25px; top: -6px; z-index: 8; }\",\".framer-wpQes .framer-1vxd1ks { bottom: -7px; flex: none; left: -4px; overflow: var(--overflow-clip-fallback, clip); position: absolute; top: -6px; width: 320px; z-index: 1; }\",\".framer-wpQes .framer-5b089q { bottom: -7px; flex: none; left: -4px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: 0px; top: -6px; z-index: 1; }\",\".framer-wpQes .framer-85k06d { bottom: -7px; flex: none; left: -4px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: -1px; top: -6px; z-index: 1; }\",\".framer-wpQes .framer-xl4mhb { flex: none; height: 112px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: 8px; top: 100px; width: 30px; z-index: 9; }\",\".framer-wpQes .framer-hz668b { bottom: 112px; flex: none; height: 112px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: 8px; width: 30px; z-index: 9; }\",\".framer-wpQes .framer-14863e2 { bottom: -1px; flex: none; height: 112px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: 8px; width: 30px; z-index: 9; }\",\".framer-wpQes.framer-v-bd7k8p .framer-12vi2vd, .framer-wpQes.framer-v-3tf7y3 .framer-12vi2vd, .framer-wpQes.framer-v-gp8la0 .framer-12vi2vd { left: calc(57.763975155279525% - 312px / 2); }\",\".framer-wpQes.framer-v-bd7k8p .framer-1vxd1ks { bottom: -13px; left: 0px; top: 0px; z-index: 9; }\",\".framer-wpQes.framer-v-bd7k8p .framer-xl4mhb, .framer-wpQes.framer-v-bd7k8p .framer-hz668b, .framer-wpQes.framer-v-bd7k8p .framer-14863e2, .framer-wpQes.framer-v-3tf7y3 .framer-xl4mhb, .framer-wpQes.framer-v-3tf7y3 .framer-hz668b, .framer-wpQes.framer-v-3tf7y3 .framer-14863e2, .framer-wpQes.framer-v-gp8la0 .framer-xl4mhb, .framer-wpQes.framer-v-gp8la0 .framer-hz668b, .framer-wpQes.framer-v-gp8la0 .framer-14863e2 { right: -23px; }\",\".framer-wpQes.framer-v-3tf7y3 .framer-1x2ikw2-container, .framer-wpQes.framer-v-gp8la0 .framer-1x2ikw2-container { z-index: 1; }\",\".framer-wpQes.framer-v-3tf7y3 .framer-5b089q, .framer-wpQes.framer-v-gp8la0 .framer-85k06d { z-index: 9; }\",\".framer-wpQes.framer-v-gp8la0 .framer-n02555-container { z-index: 3; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 437\n * @framerIntrinsicWidth 322\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"sDIzZS3sM\":{\"layout\":[\"fixed\",\"fixed\"]},\"oupuNuaqR\":{\"layout\":[\"fixed\",\"fixed\"]},\"B4VQDifUn\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerVariables {\"pzqliodNV\":\"leave\",\"l4NOIjfaM\":\"enter\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerE1OqLRJyc=withCSS(Component,css,\"framer-wpQes\");export default FramerE1OqLRJyc;FramerE1OqLRJyc.displayName=\"Portefolio_V2\";FramerE1OqLRJyc.defaultProps={height:437,width:322};addPropertyControls(FramerE1OqLRJyc,{variant:{options:[\"gBXh4jR0d\",\"sDIzZS3sM\",\"oupuNuaqR\",\"B4VQDifUn\"],optionTitles:[\"CLOSED\",\"STREVA\",\"LAUSANNE\",\"NEBULARIS\"],title:\"Variant\",type:ControlType.Enum},pzqliodNV:{title:\"Leave\",type:ControlType.EventHandler},l4NOIjfaM:{title:\"Enter\",type:ControlType.EventHandler}});addFonts(FramerE1OqLRJyc,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Regular\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/3gm4DsZ7u2KhLZZCBZesuW1ClMw.woff2\",weight:\"400\"}]},...Project_Page1Fonts,...TeamLausanneFonts,...MultichainZFonts],{supportsExplicitInterCodegen:true});FramerE1OqLRJyc.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(Project_Page1,{},context),()=>forwardLoader(TeamLausanne,{},context),()=>forwardLoader(MultichainZ,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerE1OqLRJyc\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"sDIzZS3sM\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"oupuNuaqR\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"B4VQDifUn\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"322\",\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"437\",\"framerDisplayContentsDiv\":\"false\",\"framerColorSyntax\":\"true\",\"framerVariables\":\"{\\\"pzqliodNV\\\":\\\"leave\\\",\\\"l4NOIjfaM\\\":\\\"enter\\\"}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./E1OqLRJyc.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,forwardLoader,getFonts,RichText,runTasksWithYield,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import ImageOrVideo from\"https://framerusercontent.com/modules/6a55BpVDpKc43yB6oyqF/0UCzURSZXkMamlkv1D1I/zF1nofZnl.js\";const ImageOrVideoFonts=getFonts(ImageOrVideo);const serializationHash=\"framer-fQn3f\";const variantClassNames={dWuGHa2OZ:\"framer-v-ogpxcu\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const lqU1nNvsdNOocd7B8h=undefined;const lyTIulmznNOocd7B8h=undefined;const kY7nmnFudNOocd7B8h=undefined;const I8y0iIzj4NOocd7B8h=undefined;const acFZVSvRrNOocd7B8h=undefined;const FjdNqGGZKNOocd7B8h=undefined;const IliT5YzpNNOocd7B8h=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const convertFromEnum=(value,activeLocale)=>{return undefined;};const addImageAlt=(image,alt)=>{if(!image||typeof image!==\"object\"){return;}return{...image,alt};};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"dWuGHa2OZ\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-ogpxcu\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"dWuGHa2OZ\",ref:refBinding,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"rgba(0, 0, 0, 0.12)\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgb(246, 246, 246)\",boxShadow:\"0px 0px 20px 0px rgba(0, 0, 0, 0.15), 0px 25px 30px 0px rgba(0, 0, 0, 0.35)\",...style},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1y0z0q2\",\"data-framer-name\":\"Main\",layoutDependency:layoutDependency,layoutId:\"UiSZWNBWO\",children:/*#__PURE__*/_jsxs(motion.section,{className:\"framer-x035o1\",layoutDependency:layoutDependency,layoutId:\"aD8vBNWgO\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-sl4mea\",layoutDependency:layoutDependency,layoutId:\"YWopnIYB0\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ll770c\",layoutDependency:layoutDependency,layoutId:\"Z2poROZLD\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-hkls4f\",layoutDependency:layoutDependency,layoutId:\"np3XFrIvT\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBCb2xk\",\"--framer-font-family\":'\"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 3)\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"1.15em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-gdpscs, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"MultichainZ\"})}),className:\"framer-k5o9go\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOMV2;PP Neue Montreal Bold\"],layoutDependency:layoutDependency,layoutId:\"t1JJ3L1o0\",style:{\"--extracted-gdpscs\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-fdw1qv\",layoutDependency:layoutDependency,layoutId:\"t6Nln7yON\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1sxveqe\",layoutDependency:layoutDependency,layoutId:\"YTHl5elb1\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Overview\"})}),className:\"framer-jtldsj\",\"data-framer-name\":\"Overview\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"OiDEcb3IF\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"A Web3 lending platform that needed a full surface built from nothing: the brand, the marketing site, the dApp, the mobile app and everything posted around them. The design system was the load-bearing decision one set of rules that held across a landing page, a trading interface and a phone screen, so the product could ship on three fronts without drifting. I owned all of it, end to end.\"})}),className:\"framer-1samgj4\",\"data-framer-name\":\"Text\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"xmk6iG7dm\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-n2g0rt\",layoutDependency:layoutDependency,layoutId:\"zdaIkQPFt\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-klekc7\",layoutDependency:layoutDependency,layoutId:\"pZlIxfjXj\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Services\"})}),className:\"framer-aojpfk\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"G1QF8nox3\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-pmobf6\",layoutDependency:layoutDependency,layoutId:\"M0GI7M8tX\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Branding\"})}),className:\"framer-vh0ahe\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"Id9nYbDhd\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Web Design\"})}),className:\"framer-oh6qg\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"HnFAtmbmw\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"UI/UX\"})}),className:\"framer-1qy9ft3\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"ZcYdK9KKz\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-5s4n9a\",layoutDependency:layoutDependency,layoutId:\"K62bm3T_7\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Year\"})}),className:\"framer-1etz324\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"KEe3nZiFP\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"2024\"})}),className:\"framer-1yqk8pq\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"uUM5fuDdg\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})]})]})]})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-hp6lux\",layoutDependency:layoutDependency,layoutId:\"M3jy1TDTl\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-32qh6o\",\"data-framer-name\":\"Media Grid\",layoutDependency:layoutDependency,layoutId:\"TsHSV4Ytt\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+0+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-12yrbm2-container\",\"data-framer-name\":\"Media Item\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"WPaEd3sTG-container\",name:\"Media Item\",nodeId:\"WPaEd3sTG\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"WPaEd3sTG\",layoutId:\"WPaEd3sTG\",MVr9FbgTN:true,name:\"Media Item\",style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:667,pixelWidth:1058,src:\"https://framerusercontent.com/images/10YNdXwjW3oX6E9RseurZmOCQ.png?width=1058&height=667\",srcSet:\"https://framerusercontent.com/images/10YNdXwjW3oX6E9RseurZmOCQ.png?scale-down-to=512&width=1058&height=667 512w,https://framerusercontent.com/images/10YNdXwjW3oX6E9RseurZmOCQ.png?scale-down-to=1024&width=1058&height=667 1024w,https://framerusercontent.com/images/10YNdXwjW3oX6E9RseurZmOCQ.png?width=1058&height=667 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lqU1nNvsdNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-b9kmos\",layoutDependency:layoutDependency,layoutId:\"xfOzV7Ecm\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+606+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-g743lj-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Ebk1GcHku-container\",nodeId:\"Ebk1GcHku\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"Ebk1GcHku\",layoutId:\"Ebk1GcHku\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/k7uB9Wjs2tuTd4f3xtICiQDifu8.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/k7uB9Wjs2tuTd4f3xtICiQDifu8.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/k7uB9Wjs2tuTd4f3xtICiQDifu8.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/k7uB9Wjs2tuTd4f3xtICiQDifu8.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lyTIulmznNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-1d8r0xn\",layoutDependency:layoutDependency,layoutId:\"AEOpXFAXC\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+1212+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-fyy3ni-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Xy3dDF8P8-container\",nodeId:\"Xy3dDF8P8\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"Xy3dDF8P8\",layoutId:\"Xy3dDF8P8\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:564,pixelWidth:1058,src:\"https://framerusercontent.com/images/gKe3aqUKtRFXALyF7uSinyr8.png?width=1058&height=564\",srcSet:\"https://framerusercontent.com/images/gKe3aqUKtRFXALyF7uSinyr8.png?scale-down-to=512&width=1058&height=564 512w,https://framerusercontent.com/images/gKe3aqUKtRFXALyF7uSinyr8.png?scale-down-to=1024&width=1058&height=564 1024w,https://framerusercontent.com/images/gKe3aqUKtRFXALyF7uSinyr8.png?width=1058&height=564 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lyTIulmznNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-1k48qam\",layoutDependency:layoutDependency,layoutId:\"XxtzAeGxV\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+1818+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-ksiv4h-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"bInkU5nQu-container\",nodeId:\"bInkU5nQu\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"bInkU5nQu\",layoutId:\"bInkU5nQu\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:933,pixelWidth:1058,src:\"https://framerusercontent.com/images/ZEZBXiXDs0jARarE7cyQEvxGMnE.png?width=1058&height=933\",srcSet:\"https://framerusercontent.com/images/ZEZBXiXDs0jARarE7cyQEvxGMnE.png?scale-down-to=512&width=1058&height=933 512w,https://framerusercontent.com/images/ZEZBXiXDs0jARarE7cyQEvxGMnE.png?scale-down-to=1024&width=1058&height=933 1024w,https://framerusercontent.com/images/ZEZBXiXDs0jARarE7cyQEvxGMnE.png?width=1058&height=933 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lyTIulmznNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsxs(motion.section,{className:\"framer-1qbwghh\",layoutDependency:layoutDependency,layoutId:\"nkTWx61aw\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:570,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+2424+9,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-2m8560-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"YxkhjZ6QJ-container\",nodeId:\"YxkhjZ6QJ\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"YxkhjZ6QJ\",layoutId:\"YxkhjZ6QJ\",MVr9FbgTN:true,style:{height:\"100%\",width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:525,src:\"https://framerusercontent.com/images/rEjjlBUtT9GQ2tY5YFkw349Efg.png?width=525&height=566\",srcSet:\"https://framerusercontent.com/images/rEjjlBUtT9GQ2tY5YFkw349Efg.png?width=525&height=566 525w\"},\"\"),variant:matchVariant(convertFromEnum(kY7nmnFudNOocd7B8h,activeLocale)),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+2424+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1q8yc8k-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"XzRSQxuGG-container\",nodeId:\"XzRSQxuGG\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"XzRSQxuGG\",layoutId:\"XzRSQxuGG\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:1254,pixelWidth:1254,src:\"https://framerusercontent.com/images/PFNoRYeMHHBgstEhgKCVwJxeQ.gif?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/PFNoRYeMHHBgstEhgKCVwJxeQ.gif?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/PFNoRYeMHHBgstEhgKCVwJxeQ.gif?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/PFNoRYeMHHBgstEhgKCVwJxeQ.gif?width=1254&height=1254 1254w\"},\"\"),variant:matchVariant(convertFromEnum(I8y0iIzj4NOocd7B8h,activeLocale)),width:\"100%\"})})})]}),/*#__PURE__*/_jsxs(motion.section,{className:\"framer-1tor2j7\",layoutDependency:layoutDependency,layoutId:\"rIotmwYFl\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+3030+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-11ftiiz-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"wGrYqXrre-container\",nodeId:\"wGrYqXrre\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"wGrYqXrre\",layoutId:\"wGrYqXrre\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:587,pixelWidth:525,src:\"https://framerusercontent.com/images/qY7PR070D6bOWxFWBe7OxitdE.png?width=525&height=587\",srcSet:\"https://framerusercontent.com/images/qY7PR070D6bOWxFWBe7OxitdE.png?width=525&height=587 525w\"},\"\"),variant:matchVariant(convertFromEnum(acFZVSvRrNOocd7B8h,activeLocale)),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"570px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+3030+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1vg0q2k-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"TXSeoyA9t-container\",nodeId:\"TXSeoyA9t\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"TXSeoyA9t\",layoutId:\"TXSeoyA9t\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:587,pixelWidth:525,src:\"https://framerusercontent.com/images/30m4leJ8FT1Gcj3qs9bBpzZQfZY.png?width=525&height=587\",srcSet:\"https://framerusercontent.com/images/30m4leJ8FT1Gcj3qs9bBpzZQfZY.png?width=525&height=587 525w\"},\"\"),variant:matchVariant(convertFromEnum(FjdNqGGZKNOocd7B8h,activeLocale)),width:\"100%\"})})})]}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-1h7y767\",layoutDependency:layoutDependency,layoutId:\"hp1AsMFwe\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+3636+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1v67zre-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"ePl4ek0Wj-container\",nodeId:\"ePl4ek0Wj\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"ePl4ek0Wj\",layoutId:\"ePl4ek0Wj\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/BFoz3YtZIW8pnbgRImcYh7271NA.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/BFoz3YtZIW8pnbgRImcYh7271NA.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/BFoz3YtZIW8pnbgRImcYh7271NA.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/BFoz3YtZIW8pnbgRImcYh7271NA.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(IliT5YzpNNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-v0vafj\",layoutDependency:layoutDependency,layoutId:\"LF9bkOjhD\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",y:(componentViewport?.y||0)+0+0+76+0+0+371.2+0+4242+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1wzxp0x-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"St8BgXGHM-container\",nodeId:\"St8BgXGHM\",rendersWithMotion:true,scopeId:\"EKP6NpKo4\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"St8BgXGHM\",layoutId:\"St8BgXGHM\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/4vhGZuTOQsdKlZbiZs3OZhL9y7U.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/4vhGZuTOQsdKlZbiZs3OZhL9y7U.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/4vhGZuTOQsdKlZbiZs3OZhL9y7U.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/4vhGZuTOQsdKlZbiZs3OZhL9y7U.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(IliT5YzpNNOocd7B8h,activeLocale)),width:\"100%\"})})})})]})]})})})})})});});const css=[\".framer-fQn3f.framer-1pwfd82, .framer-fQn3f .framer-1pwfd82 { display: block; }\",\".framer-fQn3f.framer-ogpxcu { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px 0px 26px 0px; position: relative; width: 1200px; }\",\".framer-fQn3f .framer-1y0z0q2 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: flex-start; overflow: visible; padding: 76px 35px 0px 35px; position: relative; width: 100%; }\",\".framer-fQn3f .framer-x035o1 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 72px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1160px; z-index: 1; }\",\".framer-fQn3f .framer-sl4mea { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-fQn3f .framer-1ll770c { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: flex-start; max-width: 1920px; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-fQn3f .framer-hkls4f { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-fQn3f .framer-k5o9go { flex: 1 0 0px; height: auto; max-width: 900px; overflow: visible; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-fQn3f .framer-fdw1qv { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-fQn3f .framer-1sxveqe { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: 1px; z-index: 5; }\",\".framer-fQn3f .framer-jtldsj { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-fQn3f .framer-1samgj4 { --framer-text-wrap: balance; flex: none; height: auto; max-width: 520px; overflow: visible; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\".framer-fQn3f .framer-n2g0rt { align-content: flex-end; align-items: flex-end; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 120px; height: min-content; justify-content: flex-end; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-fQn3f .framer-klekc7 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-fQn3f .framer-aojpfk, .framer-fQn3f .framer-1etz324 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-fQn3f .framer-pmobf6 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-fQn3f .framer-vh0ahe { --framer-text-wrap: balance; flex: none; height: auto; overflow: visible; position: relative; white-space: pre; width: auto; z-index: 1; }\",\".framer-fQn3f .framer-oh6qg, .framer-fQn3f .framer-1qy9ft3, .framer-fQn3f .framer-1yqk8pq { flex: none; height: auto; overflow: visible; position: relative; white-space: pre; width: auto; z-index: 1; }\",\".framer-fQn3f .framer-5s4n9a { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-fQn3f .framer-hp6lux { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 18px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-fQn3f .framer-32qh6o, .framer-fQn3f .framer-b9kmos, .framer-fQn3f .framer-1d8r0xn, .framer-fQn3f .framer-1k48qam, .framer-fQn3f .framer-1qbwghh, .framer-fQn3f .framer-1tor2j7, .framer-fQn3f .framer-1h7y767, .framer-fQn3f .framer-v0vafj { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-fQn3f .framer-12yrbm2-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; z-index: 1; }\",\".framer-fQn3f .framer-g743lj-container, .framer-fQn3f .framer-fyy3ni-container, .framer-fQn3f .framer-ksiv4h-container, .framer-fQn3f .framer-1q8yc8k-container, .framer-fQn3f .framer-11ftiiz-container, .framer-fQn3f .framer-1vg0q2k-container, .framer-fQn3f .framer-1v67zre-container, .framer-fQn3f .framer-1wzxp0x-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-fQn3f .framer-2m8560-container { flex: 1 0 0px; height: 570px; position: relative; width: 1px; }\",'.framer-fQn3f[data-border=\"true\"]::after, .framer-fQn3f [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 5964\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerEKP6NpKo4=withCSS(Component,css,\"framer-fQn3f\");export default FramerEKP6NpKo4;FramerEKP6NpKo4.displayName=\"Case_Streva\";FramerEKP6NpKo4.defaultProps={height:5964,width:1200};addFonts(FramerEKP6NpKo4,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/eiALb3Ac2OPorMgJIBVNZMBzpg.woff2\",weight:\"700\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v6/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"},{cssFamilyName:\"PP Neue Montreal Medium\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]},...ImageOrVideoFonts],{supportsExplicitInterCodegen:true});FramerEKP6NpKo4.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(ImageOrVideo,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerEKP6NpKo4\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicWidth\":\"1200\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"5964\",\"framerDisplayContentsDiv\":\"false\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./EKP6NpKo4.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * CaseMedia.tsx — one media slot for the case studies. v2.\n *\n * ── v2.1: AN OVERLAY ON TOP OF THE VIDEO ──\n *\n * A logo or lockup that sits over moving footage cannot be baked into the\n * export — Figma flattens it to a still. So the PNG is a separate layer here,\n * drawn above the video, with its own width and opacity. Change the footage\n * or the logo independently; neither re-export touches the other.\n *\n * The overlay is `contain` and centred by default: a lockup must never crop,\n * whatever the video's aspect ratio turns out to be.\n *\n * ── v2.2: PLAY ONCE, AND MEAN IT ──\n *\n * `Loop` off is not enough on its own. When a video has ENDED, calling play()\n * again seeks back to zero and replays — so the off-screen pause below would\n * restart it every time the slot scrolled back into view.\n *\n * So `ended` is tracked, and once it fires nothing calls play() again. The\n * clip runs once per mount. A window close and reopen remounts the component,\n * which is exactly the \"re-enter\" behaviour wanted — scrolling past it twice\n * is not.\n *\n * ── AUTOPLAY IS A CONTRACT, NOT A PREFERENCE ──\n *\n * Every browser blocks autoplay unless the video is MUTED and playsInline.\n * Both are set in code and not exposed, because a \"sound on\" toggle on an\n * autoplaying video is a switch whose only function is to stop it playing.\n *\n * ── THE POSTER IS THE FIRST FRAME, FOR FREE ──\n *\n * `preload=\"metadata\"` paints frame one as soon as the header arrives — no\n * poster upload, nothing to keep in sync. The Poster control exists only for\n * when frame one is black.\n *\n * ── IT FILLS ITS PARENT ──\n *\n * 100% x 100%, object-fit cover. `...style` LAST so Framer's size wins.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 400\n */export default function CaseMedia(props){const{video,poster,image,overlay,overlayWidth=40,overlayOpacity=1,overlayFit=\"contain\",alt=\"\",fit=\"cover\",radius=0,loop=true,pauseOffscreen=true,style}=props;const hostRef=useRef(null);const videoRef=useRef(null);const ended=useRef(false);const[onScreen,setOnScreen]=useState(true);const onCanvas=RenderTarget.current()===RenderTarget.canvas;const src=typeof video===\"string\"?video:video?.src||\"\";const posterSrc=typeof poster===\"string\"?poster:poster?.src||undefined;const imgSrc=typeof image===\"string\"?image:image?.src||\"\";const overSrc=typeof overlay===\"string\"?overlay:overlay?.src||\"\";// A new file is a new clip — let it play again.\nuseEffect(()=>{ended.current=false;},[src,loop]);useEffect(()=>{if(onCanvas||!pauseOffscreen||!src)return;const el=hostRef.current;if(!el||typeof IntersectionObserver===\"undefined\")return;const obs=new IntersectionObserver(entries=>setOnScreen(!!entries[0]?.isIntersecting),{rootMargin:\"200px\"});obs.observe(el);return()=>obs.disconnect();},[onCanvas,pauseOffscreen,src]);useEffect(()=>{const v=videoRef.current;if(!v||onCanvas)return;if(onScreen){// A finished, non-looping clip must stay finished. play() on an\n// ended element seeks to 0 and replays it.\nif(ended.current)return;const p=v.play();if(p&&typeof p.catch===\"function\")p.catch(()=>{});}else{try{v.pause();}catch(e){}}},[onScreen,onCanvas,src]);const fill={display:\"block\",width:\"100%\",height:\"100%\",objectFit:fit,borderRadius:radius};return /*#__PURE__*/_jsxs(\"div\",{ref:hostRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"hidden\",borderRadius:radius,// LAST — Framer's size for the instance must win.\n...style},children:[src?/*#__PURE__*/_jsx(\"video\",{ref:videoRef,src:src,poster:posterSrc,autoPlay:true,muted:true,playsInline:true,loop:loop,preload:\"metadata\",controls:false,disablePictureInPicture:true,onEnded:()=>{ended.current=true;},style:fill}):imgSrc?/*#__PURE__*/_jsx(\"img\",{src:imgSrc,alt:alt,draggable:false,style:fill}):/*#__PURE__*/_jsx(\"div\",{style:{...fill,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"rgba(0,0,0,0.05)\",font:\"500 11px/1.4 ui-monospace, monospace\",color:\"#888\"},children:\"drop a video or an image\"}),overSrc&&/*#__PURE__*/_jsx(\"img\",{src:overSrc,alt:\"\",\"aria-hidden\":true,draggable:false,style:{position:\"absolute\",left:\"50%\",top:\"50%\",transform:\"translate(-50%, -50%)\",width:overlayWidth+\"%\",height:overlayFit===\"cover\"?\"100%\":\"auto\",maxHeight:\"100%\",objectFit:overlayFit,opacity:overlayOpacity,pointerEvents:\"none\"}})]});}CaseMedia.displayName=\"Case Media\";addPropertyControls(CaseMedia,{video:{type:ControlType.File,title:\"Video\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"],description:\"Autoplays muted. First frame is the thumbnail — no poster needed.\"},image:{type:ControlType.Image,title:\"Image\",description:\"Used only when Video is empty.\"},overlay:{type:ControlType.Image,title:\"Overlay\",description:\"PNG drawn ON TOP of the video — a logo or lockup. Transparent background.\"},overlayWidth:{type:ControlType.Number,title:\"Overlay size\",defaultValue:40,min:5,max:100,step:1,unit:\"%\",hidden:p=>!p.overlay},overlayOpacity:{type:ControlType.Number,title:\"Overlay opacity\",defaultValue:1,min:0,max:1,step:.02,hidden:p=>!p.overlay},overlayFit:{type:ControlType.Enum,title:\"Overlay fit\",options:[\"contain\",\"cover\"],optionTitles:[\"Contain\",\"Cover\"],defaultValue:\"contain\",description:\"Contain never crops a lockup. Cover fills the frame.\",hidden:p=>!p.overlay},poster:{type:ControlType.Image,title:\"Poster\",description:\"Optional. Only if the video's first frame is black.\"},fit:{type:ControlType.Enum,title:\"Fit\",options:[\"cover\",\"contain\"],optionTitles:[\"Cover\",\"Contain\"],defaultValue:\"cover\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:64,step:1,unit:\"px\"},loop:{type:ControlType.Boolean,title:\"Loop\",enabledTitle:\"Loop\",disabledTitle:\"Play once\",defaultValue:true,description:\"Play once means once per mount — it replays when the window is reopened, not when you scroll past it.\"},pauseOffscreen:{type:ControlType.Boolean,title:\"Pause off-screen\",defaultValue:true,description:\"Stops decoding video nobody is looking at.\"},alt:{type:ControlType.String,title:\"Alt\",defaultValue:\"\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CaseMedia\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CaseMedia.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,forwardLoader,getFonts,RichText,runTasksWithYield,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import ImageOrVideo from\"https://framerusercontent.com/modules/6a55BpVDpKc43yB6oyqF/0UCzURSZXkMamlkv1D1I/zF1nofZnl.js\";import CaseMedia from\"https://framerusercontent.com/modules/Dj2xoLlKT2pWyE9x2GFn/UfRPPfXUJBGdKusumfY4/CaseMedia.js\";const CaseMediaFonts=getFonts(CaseMedia);const ImageOrVideoFonts=getFonts(ImageOrVideo);const serializationHash=\"framer-aAfgh\";const variantClassNames={nEqvOkmyq:\"framer-v-735nn\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const lyTIulmznNOocd7B8h=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const convertFromEnum=(value,activeLocale)=>{return undefined;};const addImageAlt=(image,alt)=>{if(!image||typeof image!==\"object\"){return;}return{...image,alt};};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"nEqvOkmyq\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-735nn\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"nEqvOkmyq\",ref:refBinding,style:{backgroundColor:\"rgb(246, 246, 246)\",boxShadow:\"0px 0px 20px 0px rgba(0, 0, 0, 0.15), 0px 25px 30px 0px rgba(0, 0, 0, 0.35)\",...style},children:/*#__PURE__*/_jsx(motion.div,{className:\"framer-1aqrycj\",\"data-framer-name\":\"Main\",layoutDependency:layoutDependency,layoutId:\"NkmXDw3Kv\",children:/*#__PURE__*/_jsxs(motion.section,{className:\"framer-18vndxz\",layoutDependency:layoutDependency,layoutId:\"SXnAh6xVK\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-17ge7hg\",layoutDependency:layoutDependency,layoutId:\"bU4psZnXP\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1sikbsi\",layoutDependency:layoutDependency,layoutId:\"CfCzvxciF\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1w8zn8m\",layoutDependency:layoutDependency,layoutId:\"bgQrD8fp3\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBCb2xk\",\"--framer-font-family\":'\"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 3)\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"1.15em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-gdpscs, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Team Lausanne\"})}),className:\"framer-ddl2ua\",\"data-framer-name\":\"Title\",fonts:[\"CUSTOMV2;PP Neue Montreal Bold\"],layoutDependency:layoutDependency,layoutId:\"NJgmKivKl\",style:{\"--extracted-gdpscs\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-ejavu1\",layoutDependency:layoutDependency,layoutId:\"MYiRiR8AI\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-xgyc4f\",layoutDependency:layoutDependency,layoutId:\"CDlTbNtE9\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Overview\"})}),className:\"framer-14vfb2j\",\"data-framer-name\":\"Overview\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"dJrlsVQWx\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"A tennis academy that had to speak to two people at once: the kids who train there and the parents who pay for it. The identity runs bright and high-contrast so it holds a teenager's attention, while the typography and layout stay disciplined enough to read as a serious institution. The design system carries both registers without either one winning, and the site puts the programmes, the coaches and the schedule one decision away.\"})}),className:\"framer-325oy4\",\"data-framer-name\":\"Text\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"asi1L1qF_\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-w60b2h\",layoutDependency:layoutDependency,layoutId:\"dsRCihFWV\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-sww28x\",layoutDependency:layoutDependency,layoutId:\"ZgxbekfmP\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Services\"})}),className:\"framer-1q264bh\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"V2d0VvW0R\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-eebpty\",layoutDependency:layoutDependency,layoutId:\"datkpsHYm\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Branding\"})}),className:\"framer-10abv3m\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"MYn_45CYk\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Web Design\"})}),className:\"framer-71l6kq\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"zbpLF1Clj\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-ua83nq\",layoutDependency:layoutDependency,layoutId:\"jQ27RP2El\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130)))\"},children:\"Year\"})}),className:\"framer-tx3ltx\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"KM1FZefU6\",style:{\"--extracted-r6o4lv\":\"var(--token-2f7954e4-428b-42b0-995b-3ae754ed8adb, rgb(122, 127, 130))\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"2026\"})}),className:\"framer-1xidu5j\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"RAaE65wj_\",style:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})]})]})]})]})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-ds45xv\",layoutDependency:layoutDependency,layoutId:\"gm9sEXHWu\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-bywix1\",\"data-framer-name\":\"Media Grid\",layoutDependency:layoutDependency,layoutId:\"v957MfaPu\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-ua5ge4-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"TYa9LgTIQ-container\",nodeId:\"TYa9LgTIQ\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(CaseMedia,{alt:\"\",fit:\"cover\",height:\"100%\",id:\"TYa9LgTIQ\",layoutId:\"TYa9LgTIQ\",loop:false,overlay:\"https://framerusercontent.com/images/pJgh9lfGrjcwuJfwwur65oyLOzs.png?width=164&height=170\",overlayFit:\"contain\",overlayOpacity:1,overlayWidth:12,pauseOffscreen:true,radius:0,style:{height:\"100%\",width:\"100%\"},video:\"https://framerusercontent.com/assets/B4jacQIgN8gTGkGYBmkGFJqh44.mp4\",width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-1ukpj4k\",layoutDependency:layoutDependency,layoutId:\"Rd8DpfMAy\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1giih6x-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"TMINGYRgN-container\",nodeId:\"TMINGYRgN\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"TMINGYRgN\",layoutId:\"TMINGYRgN\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/4CK4cUW47IN1YKy2UAQYuA9tF8c.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/4CK4cUW47IN1YKy2UAQYuA9tF8c.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/4CK4cUW47IN1YKy2UAQYuA9tF8c.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/4CK4cUW47IN1YKy2UAQYuA9tF8c.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lyTIulmznNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsxs(motion.section,{className:\"framer-1b0omoj\",layoutDependency:layoutDependency,layoutId:\"TlmUpRN7u\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-dac385-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"eUQZaRO1z-container\",nodeId:\"eUQZaRO1z\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"eUQZaRO1z\",layoutId:\"eUQZaRO1z\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:525,src:\"https://framerusercontent.com/images/4D2maZLeoZVNR5jrjW3MWdOBUg.png?width=525&height=566\",srcSet:\"https://framerusercontent.com/images/4D2maZLeoZVNR5jrjW3MWdOBUg.png?width=525&height=566 525w\"},\"\"),variant:matchVariant(\"fc7oJA1q6\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-tlvqu0-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"m5bMrm6LY-container\",nodeId:\"m5bMrm6LY\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(CaseMedia,{alt:\"\",fit:\"cover\",height:\"100%\",id:\"m5bMrm6LY\",layoutId:\"m5bMrm6LY\",loop:true,overlayFit:\"contain\",overlayOpacity:1,overlayWidth:40,pauseOffscreen:true,radius:0,style:{height:\"100%\",width:\"100%\"},video:\"https://framerusercontent.com/assets/ZcWhDsQQKBMD6lRx5vpgrPJP50E.mp4\",width:\"100%\"})})})]}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-11os1oa\",layoutDependency:layoutDependency,layoutId:\"q_2q95J2F\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-132tg59-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"tRoV1lRJP-container\",nodeId:\"tRoV1lRJP\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"tRoV1lRJP\",layoutId:\"tRoV1lRJP\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:564,pixelWidth:1058,src:\"https://framerusercontent.com/images/P0zMxbuyQlcMpwx3LJuWevjf87E.png?width=1058&height=564\",srcSet:\"https://framerusercontent.com/images/P0zMxbuyQlcMpwx3LJuWevjf87E.png?scale-down-to=512&width=1058&height=564 512w,https://framerusercontent.com/images/P0zMxbuyQlcMpwx3LJuWevjf87E.png?scale-down-to=1024&width=1058&height=564 1024w,https://framerusercontent.com/images/P0zMxbuyQlcMpwx3LJuWevjf87E.png?width=1058&height=564 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lyTIulmznNOocd7B8h,activeLocale)),width:\"100%\"})})})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-19tod2w\",layoutDependency:layoutDependency,layoutId:\"aoa6_ewq5\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1pejqiv-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"AWOhG7Bbp-container\",nodeId:\"AWOhG7Bbp\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(CaseMedia,{alt:\"\",fit:\"cover\",height:\"100%\",id:\"AWOhG7Bbp\",layoutId:\"AWOhG7Bbp\",loop:true,overlayFit:\"contain\",overlayOpacity:1,overlayWidth:40,pauseOffscreen:true,radius:0,style:{height:\"100%\",width:\"100%\"},video:\"https://framerusercontent.com/assets/8gtaDjJHUirtfTSIQ2jJk0fisKY.mp4\",width:\"100%\"})})})}),/*#__PURE__*/_jsxs(motion.section,{className:\"framer-1lk5za1\",layoutDependency:layoutDependency,layoutId:\"EMm4OSFBI\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-ulchmz-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"QCQvHjmWU-container\",nodeId:\"QCQvHjmWU\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"QCQvHjmWU\",layoutId:\"QCQvHjmWU\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:587,pixelWidth:525,src:\"https://framerusercontent.com/images/0ugsSto2Y9o7T3MgL5fzIAQa558.png?width=525&height=587\",srcSet:\"https://framerusercontent.com/images/0ugsSto2Y9o7T3MgL5fzIAQa558.png?width=525&height=587 525w\"},\"\"),variant:matchVariant(\"fc7oJA1q6\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-ctx6ml-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"MafDXztmw-container\",nodeId:\"MafDXztmw\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"MafDXztmw\",layoutId:\"MafDXztmw\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:587,pixelWidth:525,src:\"https://framerusercontent.com/images/4cxVrF7vw5i413HuMDVjQuVOu4I.png?width=525&height=587\",srcSet:\"https://framerusercontent.com/images/4cxVrF7vw5i413HuMDVjQuVOu4I.png?width=525&height=587 525w\"},\"\"),variant:matchVariant(\"fc7oJA1q6\"),width:\"100%\"})})})]}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-mvrq29\",layoutDependency:layoutDependency,layoutId:\"mxVQOm1Yw\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:588,width:\"1160px\",children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1jv4syp-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"BZoN7rfoj-container\",nodeId:\"BZoN7rfoj\",rendersWithMotion:true,scopeId:\"FM4N8dqRT\",children:/*#__PURE__*/_jsx(ImageOrVideo,{height:\"100%\",id:\"BZoN7rfoj\",layoutId:\"BZoN7rfoj\",MVr9FbgTN:true,style:{width:\"100%\"},Ub_giI5Ap:addImageAlt({pixelHeight:566,pixelWidth:1058,src:\"https://framerusercontent.com/images/s3iWwEvR2jCy9jXoDHuGGawdXHQ.png?width=1058&height=566\",srcSet:\"https://framerusercontent.com/images/s3iWwEvR2jCy9jXoDHuGGawdXHQ.png?scale-down-to=512&width=1058&height=566 512w,https://framerusercontent.com/images/s3iWwEvR2jCy9jXoDHuGGawdXHQ.png?scale-down-to=1024&width=1058&height=566 1024w,https://framerusercontent.com/images/s3iWwEvR2jCy9jXoDHuGGawdXHQ.png?width=1058&height=566 1058w\"},\"\"),variant:matchVariant(convertFromEnum(lyTIulmznNOocd7B8h,activeLocale)),width:\"100%\"})})})})]})]})})})})})});});const css=[\".framer-aAfgh.framer-145p326, .framer-aAfgh .framer-145p326 { display: block; }\",\".framer-aAfgh.framer-735nn { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px 0px 26px 0px; position: relative; width: 1200px; }\",\".framer-aAfgh .framer-1aqrycj { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: flex-start; overflow: visible; padding: 76px 35px 0px 35px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-18vndxz { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 72px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1160px; z-index: 1; }\",\".framer-aAfgh .framer-17ge7hg { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 48px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-1sikbsi { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: flex-start; max-width: 1920px; overflow: hidden; padding: 0px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-1w8zn8m { align-content: flex-end; align-items: flex-end; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-ddl2ua { flex: 1 0 0px; height: auto; max-width: 900px; overflow: visible; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-aAfgh .framer-ejavu1 { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: wrap; gap: 20px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-xgyc4f { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; min-width: 320px; overflow: visible; padding: 0px; position: relative; width: 1px; z-index: 5; }\",\".framer-aAfgh .framer-14vfb2j { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-aAfgh .framer-325oy4 { --framer-text-wrap: balance; flex: none; height: auto; max-width: 520px; overflow: visible; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\".framer-aAfgh .framer-w60b2h { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: wrap; gap: 48px; height: min-content; justify-content: flex-start; min-width: 320px; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-aAfgh .framer-sww28x { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: hidden; padding: 0px; position: relative; width: min-content; }\",\".framer-aAfgh .framer-1q264bh, .framer-aAfgh .framer-tx3ltx { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-aAfgh .framer-eebpty { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: min-content; }\",\".framer-aAfgh .framer-10abv3m { --framer-text-wrap: balance; flex: none; height: auto; overflow: visible; position: relative; white-space: pre; width: auto; z-index: 1; }\",\".framer-aAfgh .framer-71l6kq, .framer-aAfgh .framer-1xidu5j { flex: none; height: auto; overflow: visible; position: relative; white-space: pre; width: auto; z-index: 1; }\",\".framer-aAfgh .framer-ua83nq { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-aAfgh .framer-ds45xv { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-bywix1 { align-content: center; align-items: center; aspect-ratio: 1.7058823529411764 / 1; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 20px; height: auto; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-ua5ge4-container { flex: 1 0 0px; height: 100%; position: relative; width: 1px; }\",\".framer-aAfgh .framer-1ukpj4k, .framer-aAfgh .framer-1b0omoj, .framer-aAfgh .framer-11os1oa, .framer-aAfgh .framer-19tod2w, .framer-aAfgh .framer-1lk5za1, .framer-aAfgh .framer-mvrq29 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: wrap; gap: 8px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-aAfgh .framer-1giih6x-container, .framer-aAfgh .framer-dac385-container, .framer-aAfgh .framer-132tg59-container, .framer-aAfgh .framer-ulchmz-container, .framer-aAfgh .framer-ctx6ml-container, .framer-aAfgh .framer-1jv4syp-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-aAfgh .framer-tlvqu0-container, .framer-aAfgh .framer-1pejqiv-container { flex: 1 0 0px; height: 615px; position: relative; width: 1px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 4932\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerFM4N8dqRT=withCSS(Component,css,\"framer-aAfgh\");export default FramerFM4N8dqRT;FramerFM4N8dqRT.displayName=\"Case_Lausanne\";FramerFM4N8dqRT.defaultProps={height:4932,width:1200};addFonts(FramerFM4N8dqRT,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/eiALb3Ac2OPorMgJIBVNZMBzpg.woff2\",weight:\"700\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v6/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"},{cssFamilyName:\"PP Neue Montreal Medium\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]},...CaseMediaFonts,...ImageOrVideoFonts],{supportsExplicitInterCodegen:true});FramerFM4N8dqRT.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(ImageOrVideo,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerFM4N8dqRT\",\"slots\":[],\"annotations\":{\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"4932\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FM4N8dqRT.map","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport * as React from \"react\";\nexport const containerStyles = {\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nconst nullIconStyle = {\n    minWidth: \"10px\",\n    minHeight: \"10px\",\n    maxWidth: \"20px\",\n    maxHeight: \"20px\",\n    width: \"60%\",\n    height: \"60%\"\n};\nconst emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(149, 149, 149, 0.1)\",\n    border: \"1px dashed rgba(149, 149, 149, 0.15)\",\n    color: \"#a5a5a5\",\n    flexDirection: \"column\"\n};\nexport const NullState = /*#__PURE__*/ React.forwardRef((_, ref)=>{\n    return(/*#__PURE__*/ _jsx(\"div\", {\n        style: emptyStateStyle,\n        ref: ref\n    }));\n}) /*\n\n<svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                viewBox=\"0 0 30 30\"\n                style={nullIconStyle}\n            >\n                <path\n                    d=\"M 12.857 0 C 19.958 0 25.714 5.756 25.714 12.857 C 25.714 19.958 19.958 25.714 12.857 25.714 C 5.756 25.714 0 19.958 0 12.857 C 0 5.756 5.756 0 12.857 0 Z\"\n                    fill=\"#FFFFFF\"\n                ></path>\n                <path\n                    d=\"M 20.357 20.357 L 27.857 27.857\"\n                    fill=\"transparent\"\n                    strokeWidth=\"4.28\"\n                    stroke=\"#FFFFFF\"\n                    strokeLinecap=\"round\"\n                ></path>\n                <g transform=\"translate(9.643 6.429)\">\n                    <path\n                        d=\"M 3.214 12.857 L 3.214 12.857\"\n                        fill=\"transparent\"\n                        strokeWidth=\"3.75\"\n                        stroke=\"currentColor\"\n                        strokeLinecap=\"round\"\n                    ></path>\n                    <path\n                        d=\"M 0 3.214 C 0 1.004 1.843 0 3.214 0 C 4.586 0 6.429 0.603 6.429 3.214 C 6.429 5.826 3.214 5.913 3.214 7.232 C 3.214 8.552 3.214 8.571 3.214 8.571\"\n                        fill=\"transparent\"\n                        strokeWidth=\"3.22\"\n                        stroke=\"currentColor\"\n                        strokeLinecap=\"round\"\n                        strokeLinejoin=\"round\"\n                    ></path>\n                </g>\n            </svg>\n            */ ;\n\nexport const __FramerMetadata__ = {\"exports\":{\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NullState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./nullstate.map","/*\n * nullstate (framer/icon-nullstate@0.7.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/DyldKav0OOAWR3bCAlhK/8c3l9FzyOlGpbPncYhfc/nullstate.js\"\n","let Component;\nlet IconInner;\nvar Icon = (React) => {\n  if (!Component) {\n    Component = /* @__PURE__ */ new Map([\n      [\n        \"bold\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M222.14,105.85l-80-80a20,20,0,0,0-28.28,0l-80,80A19.86,19.86,0,0,0,28,120v96a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V164h24v52a12,12,0,0,0,12,12h64a12,12,0,0,0,12-12V120A19.86,19.86,0,0,0,222.14,105.85ZM204,204H164V152a12,12,0,0,0-12-12H104a12,12,0,0,0-12,12v52H52V121.65l76-76,76,76Z\" }))\n      ],\n      [\n        \"duotone\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n          \"path\",\n          {\n            d: \"M216,120v96H152V152H104v64H40V120a8,8,0,0,1,2.34-5.66l80-80a8,8,0,0,1,11.32,0l80,80A8,8,0,0,1,216,120Z\",\n            opacity: \"0.2\"\n          }\n        ), /* @__PURE__ */ React.createElement(\"path\", { d: \"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z\" }))\n      ],\n      [\n        \"fill\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M224,120v96a8,8,0,0,1-8,8H160a8,8,0,0,1-8-8V164a4,4,0,0,0-4-4H108a4,4,0,0,0-4,4v52a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V120a16,16,0,0,1,4.69-11.31l80-80a16,16,0,0,1,22.62,0l80,80A16,16,0,0,1,224,120Z\" }))\n      ],\n      [\n        \"light\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M217.9,110.1l-80-80a14,14,0,0,0-19.8,0l-80,80A13.92,13.92,0,0,0,34,120v96a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V158h36v58a6,6,0,0,0,6,6h64a6,6,0,0,0,6-6V120A13.92,13.92,0,0,0,217.9,110.1ZM210,210H158V152a6,6,0,0,0-6-6H104a6,6,0,0,0-6,6v58H46V120a2,2,0,0,1,.58-1.42l80-80a2,2,0,0,1,2.84,0l80,80A2,2,0,0,1,210,120Z\" }))\n      ],\n      [\n        \"regular\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M219.31,108.68l-80-80a16,16,0,0,0-22.62,0l-80,80A15.87,15.87,0,0,0,32,120v96a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V160h32v56a8,8,0,0,0,8,8h64a8,8,0,0,0,8-8V120A15.87,15.87,0,0,0,219.31,108.68ZM208,208H160V152a8,8,0,0,0-8-8H104a8,8,0,0,0-8,8v56H48V120l80-80,80,80Z\" }))\n      ],\n      [\n        \"thin\",\n        /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M216.49,111.51l-80-80a12,12,0,0,0-17,0l-80,80A12,12,0,0,0,36,120v96a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V156h40v60a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4V120A12,12,0,0,0,216.49,111.51ZM212,212H156V152a4,4,0,0,0-4-4H104a4,4,0,0,0-4,4v60H44V120a4,4,0,0,1,1.17-2.83l80-80a4,4,0,0,1,5.66,0l80,80A4,4,0,0,1,212,120Z\" }))\n      ]\n    ]);\n    IconInner = React.forwardRef((props, ref) => /* @__PURE__ */ React.createElement(\"g\", { ref, ...props }, Component.get(props.weight)));\n  }\n  return IconInner;\n};\nconst __FramerMetadata__ = {\n  exports: {\n    default: {\n      type: \"reactComponent\",\n      slots: [],\n      annotations: { framerContractVersion: \"1\" }\n    },\n    __FramerMetadata__: { type: \"variable\" }\n  }\n};\nvar House_default = Icon;\nexport {\n  __FramerMetadata__,\n  House_default as default\n};\n","/*\n * House (phosphor-icons/House@0.0.57)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/Qc8yuHkQmGO0kFiSWbkX/rVmMAFttOHuuiwSg6KjZ/House.js\"\nexport { default } from \"https://framerusercontent.com/modules/Qc8yuHkQmGO0kFiSWbkX/rVmMAFttOHuuiwSg6KjZ/House.js\"\n","import{useMemo}from\"react\";import{ControlType}from\"framer\";/*\n ** ICON UTILS\n ** Pull as much re-usable logic into here as possible\n ** This will make it easier to replace in all icon components\n */ export const containerStyles={width:\"100%\",height:\"100%\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\"};export const defaultEvents={onClick:{type:ControlType.EventHandler},onMouseDown:{type:ControlType.EventHandler},onMouseUp:{type:ControlType.EventHandler},onMouseEnter:{type:ControlType.EventHandler},onMouseLeave:{type:ControlType.EventHandler}};const findByArray=(arr,search)=>arr.find(a=>a.toLowerCase().includes(search));export function getIconSelection(iconKeys,selectByList,iconSearch=\"\",iconSelection,lowercaseIconKeyPairs){// gotta get the exact match first THEN find\n// have a set and try to access ?\nif(selectByList)return iconSelection;if(iconSearch==null||(iconSearch===null||iconSearch===void 0?void 0:iconSearch.length)===0)return null;const iconSearchTerm=iconSearch.toLowerCase().replace(/-|\\s/g,\"\");var _iconSearchTerm;// check for exact match, otherwise use .find\nconst searchResult=(_iconSearchTerm=lowercaseIconKeyPairs[iconSearchTerm])!==null&&_iconSearchTerm!==void 0?_iconSearchTerm:findByArray(iconKeys,iconSearchTerm);return searchResult;}export function useIconSelection(iconKeys,selectByList,iconSearch=\"\",iconSelection,lowercaseIconKeyPairs){// Clean search term\nconst iconSearchResult=useMemo(()=>{if(iconSearch==null||(iconSearch===null||iconSearch===void 0?void 0:iconSearch.length)===0)return null;const iconSearchTerm=iconSearch.toLowerCase().replace(/-|\\s/g,\"\");var _iconSearchTerm;// check for exact match, otherwise use .find\nconst searchResult=(_iconSearchTerm=lowercaseIconKeyPairs[iconSearchTerm])!==null&&_iconSearchTerm!==void 0?_iconSearchTerm:findByArray(iconKeys,iconSearchTerm);return searchResult;},[iconSelection,iconSearch]);const name=selectByList?iconSelection:iconSearchResult;return name;}\nexport const __FramerMetadata__ = {\"exports\":{\"getIconSelection\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIconSelection\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./utils.map","import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{useState,useEffect,useRef}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion}from\"framer-motion\";import{NullState}from\"https://framer.com/m/framer/icon-nullstate.js@0.7.0\";import HouseFactory from\"https://framer.com/m/phosphor-icons/House.js@0.0.57\";import{defaultEvents,useIconSelection}from\"https://framerusercontent.com/modules/Ma20hU0GGRxLxZphbywl/OSpwWF91FHPVFyQJjMHt/utils.js\";const iconKeys=[\"Acorn\",\"AddressBook\",\"AddressBookTabs\",\"AirTrafficControl\",\"Airplane\",\"AirplaneInFlight\",\"AirplaneLanding\",\"AirplaneTakeoff\",\"AirplaneTaxiing\",\"AirplaneTilt\",\"Airplay\",\"Alarm\",\"Alien\",\"AlignBottom\",\"AlignBottomSimple\",\"AlignCenterVertical\",\"AlignLeft\",\"AlignLeftSimple\",\"AlignRight\",\"AlignRightSimple\",\"AlignTop\",\"AlignTopSimple\",\"AmazonLogo\",\"Ambulance\",\"Anchor\",\"AnchorSimple\",\"AndroidLogo\",\"Angle\",\"AngularLogo\",\"Aperture\",\"AppStoreLogo\",\"AppWindow\",\"AppleLogo\",\"ApplePodcastsLogo\",\"ApproximateEquals\",\"Archive\",\"ArchiveBox\",\"ArchiveTray\",\"Armchair\",\"ArrowArcLeft\",\"ArrowArcRight\",\"ArrowBendDownLeft\",\"ArrowBendDownRight\",\"ArrowBendLeftDown\",\"ArrowBendLeftUp\",\"ArrowBendRightDown\",\"ArrowBendRightUp\",\"ArrowBendUpLeft\",\"ArrowBendUpRight\",\"ArrowCircleDown\",\"ArrowCircleDownLeft\",\"ArrowCircleDownRight\",\"ArrowCircleLeft\",\"ArrowCircleRight\",\"ArrowCircleUp\",\"ArrowCircleUpLeft\",\"ArrowCircleUpRight\",\"ArrowClockwise\",\"ArrowDown\",\"ArrowDownLeft\",\"ArrowDownRight\",\"ArrowElbowDownLeft\",\"ArrowElbowDownRight\",\"ArrowElbowLeft\",\"ArrowElbowLeftDown\",\"ArrowElbowLeftUp\",\"ArrowElbowRight\",\"ArrowElbowRightDown\",\"ArrowElbowRightUp\",\"ArrowElbowUpLeft\",\"ArrowElbowUpRight\",\"ArrowFatDown\",\"ArrowFatLeft\",\"ArrowFatLineDown\",\"ArrowFatLineLeft\",\"ArrowFatLineRight\",\"ArrowFatLineUp\",\"ArrowFatLinesDown\",\"ArrowFatLinesLeft\",\"ArrowFatLinesRight\",\"ArrowFatLinesUp\",\"ArrowFatRight\",\"ArrowFatUp\",\"ArrowLeft\",\"ArrowLineDown\",\"ArrowLineDownLeft\",\"ArrowLineDownRight\",\"ArrowLineLeft\",\"ArrowLineRight\",\"ArrowLineUp\",\"ArrowLineUpLeft\",\"ArrowLineUpRight\",\"ArrowRight\",\"ArrowSquareDown\",\"ArrowSquareDownLeft\",\"ArrowSquareDownRight\",\"ArrowSquareIn\",\"ArrowSquareLeft\",\"ArrowSquareOut\",\"ArrowSquareRight\",\"ArrowSquareUp\",\"ArrowSquareUpLeft\",\"ArrowSquareUpRight\",\"ArrowUDownLeft\",\"ArrowUDownRight\",\"ArrowULeftDown\",\"ArrowULeftUp\",\"ArrowURightDown\",\"ArrowURightUp\",\"ArrowUUpLeft\",\"ArrowUUpRight\",\"ArrowUp\",\"ArrowUpLeft\",\"ArrowUpRight\",\"ArrowsClockwise\",\"ArrowsDownUp\",\"ArrowsHorizontal\",\"ArrowsIn\",\"ArrowsInCardinal\",\"ArrowsInLineVertical\",\"ArrowsInSimple\",\"ArrowsLeftRight\",\"ArrowsMerge\",\"ArrowsOut\",\"ArrowsOutCardinal\",\"ArrowsOutSimple\",\"ArrowsSplit\",\"ArrowsVertical\",\"Article\",\"ArticleMedium\",\"ArticleNyTimes\",\"Asclepius\",\"Asterisk\",\"AsteriskSimple\",\"At\",\"Atom\",\"Avocado\",\"Axe\",\"Baby\",\"BabyCarriage\",\"Backpack\",\"Backspace\",\"Bag\",\"BagSimple\",\"Balloon\",\"Bandaids\",\"Bank\",\"Barbell\",\"Barcode\",\"Barn\",\"Barricade\",\"Baseball\",\"BaseballCap\",\"BaseballHelmet\",\"Basket\",\"Basketball\",\"Bathtub\",\"BatteryCharging\",\"BatteryEmpty\",\"BatteryFull\",\"BatteryHigh\",\"BatteryLow\",\"BatteryMedium\",\"BatteryPlus\",\"BatteryPlusVertical\",\"BatteryVerticalEmpty\",\"BatteryVerticalFull\",\"BatteryVerticalHigh\",\"BatteryVerticalLow\",\"BatteryWarning\",\"BeachBall\",\"Beanie\",\"Bed\",\"BeerBottle\",\"BeerStein\",\"BehanceLogo\",\"Bell\",\"BellRinging\",\"BellSimple\",\"BellSimpleRinging\",\"BellSimpleSlash\",\"BellSimpleZ\",\"BellSlash\",\"BellZ\",\"Belt\",\"BezierCurve\",\"Bicycle\",\"Binary\",\"Binoculars\",\"Biohazard\",\"Bird\",\"Blueprint\",\"Bluetooth\",\"BluetoothConnected\",\"BluetoothSlash\",\"BluetoothX\",\"Boat\",\"Bomb\",\"Bone\",\"Book\",\"BookBookmark\",\"BookOpen\",\"BookOpenText\",\"BookOpenUser\",\"BookUser\",\"Bookmark\",\"BookmarkSimple\",\"Bookmarks\",\"BookmarksSimple\",\"Books\",\"Boot\",\"Boules\",\"BoundingBox\",\"BowlFood\",\"BowlSteam\",\"BowlingBall\",\"BoxArrowDown\",\"BoxArrowUp\",\"BoxingGlove\",\"BracketsAngle\",\"BracketsCurly\",\"BracketsRound\",\"BracketsSquare\",\"Brain\",\"Brandy\",\"Bread\",\"Bridge\",\"Briefcase\",\"BriefcaseMetal\",\"Broadcast\",\"Broom\",\"Browser\",\"Browsers\",\"Bug\",\"BugBeetle\",\"BugDroid\",\"Building\",\"BuildingApartment\",\"BuildingOffice\",\"Buildings\",\"Bulldozer\",\"Bus\",\"Butterfly\",\"CableCar\",\"Cactus\",\"Cake\",\"Calculator\",\"Calendar\",\"CalendarBlank\",\"CalendarCheck\",\"CalendarDot\",\"CalendarDots\",\"CalendarHeart\",\"CalendarMinus\",\"CalendarPlus\",\"CalendarSlash\",\"CalendarStar\",\"CalendarX\",\"CallBell\",\"Camera\",\"CameraPlus\",\"CameraRotate\",\"CameraSlash\",\"Campfire\",\"Car\",\"CarBattery\",\"CarProfile\",\"CarSimple\",\"Cardholder\",\"Cards\",\"CardsThree\",\"CaretCircleDoubleUp\",\"CaretCircleDown\",\"CaretCircleLeft\",\"CaretCircleRight\",\"CaretCircleUp\",\"CaretCircleUpDown\",\"CaretDoubleDown\",\"CaretDoubleLeft\",\"CaretDoubleRight\",\"CaretDoubleUp\",\"CaretDown\",\"CaretLeft\",\"CaretLineDown\",\"CaretLineLeft\",\"CaretLineRight\",\"CaretLineUp\",\"CaretRight\",\"CaretUp\",\"CaretUpDown\",\"Carrot\",\"CashRegister\",\"CassetteTape\",\"CastleTurret\",\"Cat\",\"CellSignalFull\",\"CellSignalHigh\",\"CellSignalLow\",\"CellSignalMedium\",\"CellSignalNone\",\"CellSignalSlash\",\"CellSignalX\",\"CellTower\",\"Certificate\",\"Chair\",\"Chalkboard\",\"ChalkboardSimple\",\"ChalkboardTeacher\",\"Champagne\",\"ChargingStation\",\"ChartBar\",\"ChartBarHorizontal\",\"ChartDonut\",\"ChartLine\",\"ChartLineDown\",\"ChartLineUp\",\"ChartPie\",\"ChartPieSlice\",\"ChartPolar\",\"ChartScatter\",\"Chat\",\"ChatCentered\",\"ChatCenteredDots\",\"ChatCenteredSlash\",\"ChatCenteredText\",\"ChatCircle\",\"ChatCircleDots\",\"ChatCircleSlash\",\"ChatCircleText\",\"ChatDots\",\"ChatSlash\",\"ChatTeardrop\",\"ChatTeardropDots\",\"ChatTeardropSlash\",\"ChatTeardropText\",\"ChatText\",\"Chats\",\"ChatsCircle\",\"ChatsTeardrop\",\"Check\",\"CheckCircle\",\"CheckFat\",\"CheckSquare\",\"CheckSquareOffset\",\"Checkerboard\",\"Checks\",\"Cheers\",\"Cheese\",\"ChefHat\",\"Cherries\",\"Church\",\"Cigarette\",\"CigaretteSlash\",\"Circle\",\"CircleDashed\",\"CircleHalf\",\"CircleHalfTilt\",\"CircleNotch\",\"CirclesFour\",\"CirclesThree\",\"CirclesThreePlus\",\"Circuitry\",\"City\",\"Clipboard\",\"ClipboardText\",\"Clock\",\"ClockAfternoon\",\"ClockClockwise\",\"ClockCountdown\",\"ClockUser\",\"ClosedCaptioning\",\"Cloud\",\"CloudArrowDown\",\"CloudArrowUp\",\"CloudCheck\",\"CloudFog\",\"CloudLightning\",\"CloudMoon\",\"CloudRain\",\"CloudSlash\",\"CloudSnow\",\"CloudSun\",\"CloudWarning\",\"CloudX\",\"Clover\",\"Club\",\"CoatHanger\",\"CodaLogo\",\"Code\",\"CodeBlock\",\"CodeSimple\",\"CodepenLogo\",\"CodesandboxLogo\",\"Coffee\",\"CoffeeBean\",\"Coin\",\"CoinVertical\",\"Coins\",\"Columns\",\"ColumnsPlusLeft\",\"ColumnsPlusRight\",\"Command\",\"Compass\",\"CompassRose\",\"CompassTool\",\"ComputerTower\",\"Confetti\",\"ContactlessPayment\",\"Control\",\"Cookie\",\"CookingPot\",\"Copy\",\"CopySimple\",\"Copyleft\",\"Copyright\",\"CornersIn\",\"CornersOut\",\"Couch\",\"CourtBasketball\",\"Cow\",\"CowboyHat\",\"Cpu\",\"Crane\",\"CraneTower\",\"CreditCard\",\"Cricket\",\"Crop\",\"Cross\",\"Crosshair\",\"CrosshairSimple\",\"Crown\",\"CrownCross\",\"CrownSimple\",\"Cube\",\"CubeFocus\",\"CubeTransparent\",\"CurrencyBtc\",\"CurrencyCircleDollar\",\"CurrencyCny\",\"CurrencyDollar\",\"CurrencyDollarSimple\",\"CurrencyEth\",\"CurrencyEur\",\"CurrencyGbp\",\"CurrencyInr\",\"CurrencyJpy\",\"CurrencyKrw\",\"CurrencyKzt\",\"CurrencyNgn\",\"CurrencyRub\",\"Cursor\",\"CursorClick\",\"CursorText\",\"Cylinder\",\"Database\",\"Desk\",\"Desktop\",\"DesktopTower\",\"Detective\",\"DevToLogo\",\"DeviceMobile\",\"DeviceMobileCamera\",\"DeviceMobileSlash\",\"DeviceMobileSpeaker\",\"DeviceRotate\",\"DeviceTablet\",\"DeviceTabletCamera\",\"DeviceTabletSpeaker\",\"Devices\",\"Diamond\",\"DiamondsFour\",\"DiceFive\",\"DiceFour\",\"DiceOne\",\"DiceSix\",\"DiceThree\",\"DiceTwo\",\"Disc\",\"DiscoBall\",\"DiscordLogo\",\"Divide\",\"Dna\",\"Dog\",\"Door\",\"DoorOpen\",\"Dot\",\"DotOutline\",\"DotsNine\",\"DotsSix\",\"DotsSixVertical\",\"DotsThree\",\"DotsThreeCircle\",\"DotsThreeOutline\",\"DotsThreeVertical\",\"Download\",\"DownloadSimple\",\"Dress\",\"Dresser\",\"DribbbleLogo\",\"Drone\",\"Drop\",\"DropHalf\",\"DropHalfBottom\",\"DropSimple\",\"DropSlash\",\"DropboxLogo\",\"Ear\",\"EarSlash\",\"Egg\",\"EggCrack\",\"Eject\",\"EjectSimple\",\"Elevator\",\"Empty\",\"Engine\",\"Envelope\",\"EnvelopeOpen\",\"EnvelopeSimple\",\"EnvelopeSimpleOpen\",\"Equalizer\",\"Equals\",\"Eraser\",\"EscalatorDown\",\"EscalatorUp\",\"Exam\",\"ExclamationMark\",\"Exclude\",\"ExcludeSquare\",\"Export\",\"Eye\",\"EyeClosed\",\"EyeSlash\",\"Eyedropper\",\"EyedropperSample\",\"Eyeglasses\",\"Eyes\",\"FaceMask\",\"FacebookLogo\",\"Factory\",\"Faders\",\"FadersHorizontal\",\"FalloutShelter\",\"Fan\",\"Farm\",\"FastForward\",\"FastForwardCircle\",\"Feather\",\"FediverseLogo\",\"FigmaLogo\",\"File\",\"FileArchive\",\"FileArrowDown\",\"FileArrowUp\",\"FileAudio\",\"FileC\",\"FileCloud\",\"FileCode\",\"FileCpp\",\"FileCss\",\"FileCsv\",\"FileDashed\",\"FileDoc\",\"FileHtml\",\"FileImage\",\"FileIni\",\"FileJpg\",\"FileJs\",\"FileJsx\",\"FileLock\",\"FileMagnifyingGlass\",\"FileMd\",\"FileMinus\",\"FilePdf\",\"FilePlus\",\"FilePng\",\"FilePpt\",\"FilePy\",\"FileRs\",\"FileSql\",\"FileSvg\",\"FileText\",\"FileTs\",\"FileTsx\",\"FileTxt\",\"FileVideo\",\"FileVue\",\"FileX\",\"FileXls\",\"FileZip\",\"Files\",\"FilmReel\",\"FilmScript\",\"FilmSlate\",\"FilmStrip\",\"Fingerprint\",\"FingerprintSimple\",\"FinnTheHuman\",\"Fire\",\"FireExtinguisher\",\"FireSimple\",\"FireTruck\",\"FirstAid\",\"FirstAidKit\",\"Fish\",\"FishSimple\",\"Flag\",\"FlagBanner\",\"FlagBannerFold\",\"FlagCheckered\",\"FlagPennant\",\"Flame\",\"Flashlight\",\"Flask\",\"FlipHorizontal\",\"FlipVertical\",\"FloppyDisk\",\"FloppyDiskBack\",\"FlowArrow\",\"Flower\",\"FlowerLotus\",\"FlowerTulip\",\"FlyingSaucer\",\"Folder\",\"FolderDashed\",\"FolderLock\",\"FolderMinus\",\"FolderNotch\",\"FolderNotchMinus\",\"FolderNotchOpen\",\"FolderNotchPlus\",\"FolderOpen\",\"FolderPlus\",\"FolderSimple\",\"FolderSimpleDashed\",\"FolderSimpleLock\",\"FolderSimpleMinus\",\"FolderSimplePlus\",\"FolderSimpleStar\",\"FolderSimpleUser\",\"FolderStar\",\"FolderUser\",\"Folders\",\"Football\",\"FootballHelmet\",\"Footprints\",\"ForkKnife\",\"FourK\",\"FrameCorners\",\"FramerLogo\",\"Function\",\"Funnel\",\"FunnelSimple\",\"FunnelSimpleX\",\"FunnelX\",\"GameController\",\"Garage\",\"GasCan\",\"GasPump\",\"Gauge\",\"Gavel\",\"Gear\",\"GearFine\",\"GearSix\",\"GenderFemale\",\"GenderIntersex\",\"GenderMale\",\"GenderNeuter\",\"GenderNonbinary\",\"GenderTransgender\",\"Ghost\",\"Gif\",\"Gift\",\"GitBranch\",\"GitCommit\",\"GitDiff\",\"GitFork\",\"GitMerge\",\"GitPullRequest\",\"GithubLogo\",\"GitlabLogo\",\"GitlabLogoSimple\",\"Globe\",\"GlobeHemisphereEast\",\"GlobeHemisphereWest\",\"GlobeSimple\",\"GlobeSimpleX\",\"GlobeStand\",\"GlobeX\",\"Goggles\",\"Golf\",\"GoodreadsLogo\",\"GoogleCardboardLogo\",\"GoogleChromeLogo\",\"GoogleDriveLogo\",\"GoogleLogo\",\"GooglePhotosLogo\",\"GooglePlayLogo\",\"GooglePodcastsLogo\",\"Gps\",\"GpsFix\",\"GpsSlash\",\"Gradient\",\"GraduationCap\",\"Grains\",\"GrainsSlash\",\"Graph\",\"GraphicsCard\",\"GreaterThan\",\"GreaterThanOrEqual\",\"GridFour\",\"GridNine\",\"Guitar\",\"HairDryer\",\"Hamburger\",\"Hammer\",\"Hand\",\"HandArrowDown\",\"HandArrowUp\",\"HandCoins\",\"HandDeposit\",\"HandEye\",\"HandFist\",\"HandGrabbing\",\"HandHeart\",\"HandPalm\",\"HandPeace\",\"HandPointing\",\"HandSoap\",\"HandSwipeLeft\",\"HandSwipeRight\",\"HandTap\",\"HandWaving\",\"HandWithdraw\",\"Handbag\",\"HandbagSimple\",\"HandsClapping\",\"HandsPraying\",\"Handshake\",\"HardDrive\",\"HardDrives\",\"HardHat\",\"Hash\",\"HashStraight\",\"HeadCircuit\",\"Headlights\",\"Headphones\",\"Headset\",\"Heart\",\"HeartBreak\",\"HeartHalf\",\"HeartStraight\",\"HeartStraightBreak\",\"Heartbeat\",\"Hexagon\",\"HighDefinition\",\"HighHeel\",\"Highlighter\",\"HighlighterCircle\",\"Hockey\",\"Hoodie\",\"Horse\",\"Hospital\",\"Hourglass\",\"HourglassHigh\",\"HourglassLow\",\"HourglassMedium\",\"HourglassSimple\",\"HourglassSimpleHigh\",\"HourglassSimpleLow\",\"House\",\"HouseLine\",\"HouseSimple\",\"Hurricane\",\"IceCream\",\"IdentificationBadge\",\"IdentificationCard\",\"Image\",\"ImageBroken\",\"ImageSquare\",\"Images\",\"ImagesSquare\",\"Infinity\",\"Info\",\"InstagramLogo\",\"Intersect\",\"IntersectSquare\",\"IntersectThree\",\"Intersection\",\"Invoice\",\"Island\",\"Jar\",\"JarLabel\",\"Jeep\",\"Joystick\",\"Kanban\",\"Key\",\"KeyReturn\",\"Keyboard\",\"Keyhole\",\"Knife\",\"Ladder\",\"LadderSimple\",\"Lamp\",\"LampPendant\",\"Laptop\",\"Lasso\",\"LastfmLogo\",\"Layout\",\"Leaf\",\"Lectern\",\"Lego\",\"LegoSmiley\",\"LessThan\",\"LessThanOrEqual\",\"LetterCircleH\",\"LetterCircleP\",\"LetterCircleV\",\"Lifebuoy\",\"Lightbulb\",\"LightbulbFilament\",\"Lighthouse\",\"Lightning\",\"LightningA\",\"LightningSlash\",\"LineSegment\",\"LineSegments\",\"LineVertical\",\"Link\",\"LinkBreak\",\"LinkSimple\",\"LinkSimpleBreak\",\"LinkSimpleHorizontal\",\"LinkedinLogo\",\"LinktreeLogo\",\"LinuxLogo\",\"List\",\"ListBullets\",\"ListChecks\",\"ListDashes\",\"ListHeart\",\"ListMagnifyingGlass\",\"ListNumbers\",\"ListPlus\",\"ListStar\",\"Lock\",\"LockKey\",\"LockKeyOpen\",\"LockLaminated\",\"LockLaminatedOpen\",\"LockOpen\",\"LockSimple\",\"LockSimpleOpen\",\"Lockers\",\"Log\",\"MagicWand\",\"Magnet\",\"MagnetStraight\",\"MagnifyingGlass\",\"MagnifyingGlassMinus\",\"MagnifyingGlassPlus\",\"Mailbox\",\"MapPin\",\"MapPinArea\",\"MapPinLine\",\"MapPinPlus\",\"MapPinSimple\",\"MapPinSimpleArea\",\"MapPinSimpleLine\",\"MapTrifold\",\"MarkdownLogo\",\"MarkerCircle\",\"Martini\",\"MaskHappy\",\"MaskSad\",\"MastodonLogo\",\"MathOperations\",\"MatrixLogo\",\"Medal\",\"MedalMilitary\",\"MediumLogo\",\"Megaphone\",\"MegaphoneSimple\",\"MemberOf\",\"Memory\",\"MessengerLogo\",\"MetaLogo\",\"Meteor\",\"Metronome\",\"Microphone\",\"MicrophoneSlash\",\"MicrophoneStage\",\"Microscope\",\"MicrosoftExcelLogo\",\"MicrosoftOutlookLogo\",\"MicrosoftTeamsLogo\",\"MicrosoftWordLogo\",\"Minus\",\"MinusCircle\",\"MinusSquare\",\"Money\",\"MoneyWavy\",\"Monitor\",\"MonitorArrowUp\",\"MonitorPlay\",\"Moon\",\"MoonStars\",\"Moped\",\"MopedFront\",\"Mosque\",\"Motorcycle\",\"Mountains\",\"Mouse\",\"MouseLeftClick\",\"MouseMiddleClick\",\"MouseRightClick\",\"MouseScroll\",\"MouseSimple\",\"MusicNote\",\"MusicNoteSimple\",\"MusicNotes\",\"MusicNotesMinus\",\"MusicNotesPlus\",\"MusicNotesSimple\",\"NavigationArrow\",\"Needle\",\"Network\",\"NetworkSlash\",\"NetworkX\",\"Newspaper\",\"NewspaperClipping\",\"NotEquals\",\"NotMemberOf\",\"NotSubsetOf\",\"NotSupersetOf\",\"Notches\",\"Note\",\"NoteBlank\",\"NotePencil\",\"Notebook\",\"Notepad\",\"Notification\",\"NotionLogo\",\"NuclearPlant\",\"NumberCircleEight\",\"NumberCircleFive\",\"NumberCircleFour\",\"NumberCircleNine\",\"NumberCircleOne\",\"NumberCircleSeven\",\"NumberCircleSix\",\"NumberCircleThree\",\"NumberCircleTwo\",\"NumberCircleZero\",\"NumberEight\",\"NumberFive\",\"NumberFour\",\"NumberNine\",\"NumberOne\",\"NumberSeven\",\"NumberSix\",\"NumberSquareEight\",\"NumberSquareFive\",\"NumberSquareFour\",\"NumberSquareNine\",\"NumberSquareOne\",\"NumberSquareSeven\",\"NumberSquareSix\",\"NumberSquareThree\",\"NumberSquareTwo\",\"NumberSquareZero\",\"NumberThree\",\"NumberTwo\",\"NumberZero\",\"Numpad\",\"Nut\",\"NyTimesLogo\",\"Octagon\",\"OfficeChair\",\"Onigiri\",\"OpenAiLogo\",\"Option\",\"Orange\",\"OrangeSlice\",\"Oven\",\"Package\",\"PaintBrush\",\"PaintBrushBroad\",\"PaintBrushHousehold\",\"PaintBucket\",\"PaintRoller\",\"Palette\",\"Panorama\",\"Pants\",\"PaperPlane\",\"PaperPlaneRight\",\"PaperPlaneTilt\",\"Paperclip\",\"PaperclipHorizontal\",\"Parachute\",\"Paragraph\",\"Parallelogram\",\"Park\",\"Password\",\"Path\",\"PatreonLogo\",\"Pause\",\"PauseCircle\",\"PawPrint\",\"PaypalLogo\",\"Peace\",\"Pen\",\"PenNib\",\"PenNibStraight\",\"Pencil\",\"PencilCircle\",\"PencilLine\",\"PencilRuler\",\"PencilSimple\",\"PencilSimpleLine\",\"PencilSimpleSlash\",\"PencilSlash\",\"Pentagon\",\"Pentagram\",\"Pepper\",\"Percent\",\"Person\",\"PersonArmsSpread\",\"PersonSimple\",\"PersonSimpleBike\",\"PersonSimpleCircle\",\"PersonSimpleHike\",\"PersonSimpleRun\",\"PersonSimpleSki\",\"PersonSimpleSwim\",\"PersonSimpleTaiChi\",\"PersonSimpleThrow\",\"PersonSimpleWalk\",\"Perspective\",\"Phone\",\"PhoneCall\",\"PhoneDisconnect\",\"PhoneIncoming\",\"PhoneList\",\"PhoneOutgoing\",\"PhonePause\",\"PhonePlus\",\"PhoneSlash\",\"PhoneTransfer\",\"PhoneX\",\"PhosphorLogo\",\"Pi\",\"PianoKeys\",\"PicnicTable\",\"PictureInPicture\",\"PiggyBank\",\"Pill\",\"PingPong\",\"PintGlass\",\"PinterestLogo\",\"Pinwheel\",\"Pipe\",\"PipeWrench\",\"PixLogo\",\"Pizza\",\"Placeholder\",\"Planet\",\"Plant\",\"Play\",\"PlayCircle\",\"PlayPause\",\"Playlist\",\"Plug\",\"PlugCharging\",\"Plugs\",\"PlugsConnected\",\"Plus\",\"PlusCircle\",\"PlusMinus\",\"PlusSquare\",\"PokerChip\",\"PoliceCar\",\"Polygon\",\"Popcorn\",\"Popsicle\",\"PottedPlant\",\"Power\",\"Prescription\",\"Presentation\",\"PresentationChart\",\"Printer\",\"Prohibit\",\"ProhibitInset\",\"ProjectorScreen\",\"ProjectorScreenChart\",\"Pulse\",\"PushPin\",\"PushPinSimple\",\"PushPinSimpleSlash\",\"PushPinSlash\",\"PuzzlePiece\",\"QrCode\",\"Question\",\"QuestionMark\",\"Queue\",\"Quotes\",\"Rabbit\",\"Racquet\",\"Radical\",\"Radio\",\"RadioButton\",\"Radioactive\",\"Rainbow\",\"RainbowCloud\",\"Ranking\",\"ReadCvLogo\",\"Receipt\",\"ReceiptX\",\"Record\",\"Rectangle\",\"RectangleDashed\",\"Recycle\",\"RedditLogo\",\"Repeat\",\"RepeatOnce\",\"ReplitLogo\",\"Resize\",\"Rewind\",\"RewindCircle\",\"RoadHorizon\",\"Robot\",\"Rocket\",\"RocketLaunch\",\"Rows\",\"RowsPlusBottom\",\"RowsPlusTop\",\"Rss\",\"RssSimple\",\"Rug\",\"Ruler\",\"Sailboat\",\"Scales\",\"Scan\",\"ScanSmiley\",\"Scissors\",\"Scooter\",\"Screencast\",\"Screwdriver\",\"Scribble\",\"ScribbleLoop\",\"Scroll\",\"Seal\",\"SealCheck\",\"SealPercent\",\"SealQuestion\",\"SealWarning\",\"Seat\",\"Seatbelt\",\"SecurityCamera\",\"Selection\",\"SelectionAll\",\"SelectionBackground\",\"SelectionForeground\",\"SelectionInverse\",\"SelectionPlus\",\"SelectionSlash\",\"Shapes\",\"Share\",\"ShareFat\",\"ShareNetwork\",\"Shield\",\"ShieldCheck\",\"ShieldCheckered\",\"ShieldChevron\",\"ShieldPlus\",\"ShieldSlash\",\"ShieldStar\",\"ShieldWarning\",\"ShippingContainer\",\"ShirtFolded\",\"ShootingStar\",\"ShoppingBag\",\"ShoppingBagOpen\",\"ShoppingCart\",\"ShoppingCartSimple\",\"Shovel\",\"Shower\",\"Shrimp\",\"Shuffle\",\"ShuffleAngular\",\"ShuffleSimple\",\"Sidebar\",\"SidebarSimple\",\"Sigma\",\"SignIn\",\"SignOut\",\"Signature\",\"Signpost\",\"SimCard\",\"Siren\",\"SketchLogo\",\"SkipBack\",\"SkipBackCircle\",\"SkipForward\",\"SkipForwardCircle\",\"Skull\",\"SkypeLogo\",\"SlackLogo\",\"Sliders\",\"SlidersHorizontal\",\"Slideshow\",\"Smiley\",\"SmileyAngry\",\"SmileyBlank\",\"SmileyMeh\",\"SmileyMelting\",\"SmileyNervous\",\"SmileySad\",\"SmileySticker\",\"SmileyWink\",\"SmileyXEyes\",\"SnapchatLogo\",\"Sneaker\",\"SneakerMove\",\"Snowflake\",\"SoccerBall\",\"Sock\",\"SolarPanel\",\"SolarRoof\",\"SortAscending\",\"SortDescending\",\"SoundcloudLogo\",\"Spade\",\"Sparkle\",\"SpeakerHifi\",\"SpeakerHigh\",\"SpeakerLow\",\"SpeakerNone\",\"SpeakerSimpleHigh\",\"SpeakerSimpleLow\",\"SpeakerSimpleNone\",\"SpeakerSimpleSlash\",\"SpeakerSimpleX\",\"SpeakerSlash\",\"SpeakerX\",\"Speedometer\",\"Sphere\",\"Spinner\",\"SpinnerBall\",\"SpinnerGap\",\"Spiral\",\"SplitHorizontal\",\"SplitVertical\",\"SpotifyLogo\",\"SprayBottle\",\"Square\",\"SquareHalf\",\"SquareHalfBottom\",\"SquareLogo\",\"SquareSplitVertical\",\"SquaresFour\",\"Stack\",\"StackMinus\",\"StackOverflowLogo\",\"StackPlus\",\"StackSimple\",\"Stairs\",\"Stamp\",\"StandardDefinition\",\"Star\",\"StarAndCrescent\",\"StarFour\",\"StarHalf\",\"StarOfDavid\",\"SteamLogo\",\"SteeringWheel\",\"Steps\",\"Stethoscope\",\"Sticker\",\"Stool\",\"Stop\",\"StopCircle\",\"Storefront\",\"Strategy\",\"StripeLogo\",\"Student\",\"SubsetOf\",\"SubsetProperOf\",\"Subtitles\",\"SubtitlesSlash\",\"Subtract\",\"SubtractSquare\",\"Subway\",\"Suitcase\",\"SuitcaseRolling\",\"SuitcaseSimple\",\"Sun\",\"SunDim\",\"SunHorizon\",\"Sunglasses\",\"SupersetOf\",\"SupersetProperOf\",\"Swap\",\"Swatches\",\"SwimmingPool\",\"Sword\",\"Synagogue\",\"Syringe\",\"TShirt\",\"Table\",\"Tabs\",\"Tag\",\"TagChevron\",\"TagSimple\",\"Target\",\"Taxi\",\"TeaBag\",\"TelegramLogo\",\"Television\",\"TelevisionSimple\",\"TennisBall\",\"Tent\",\"Terminal\",\"TerminalWindow\",\"TestTube\",\"TextAUnderline\",\"TextAa\",\"TextAlignCenter\",\"TextAlignJustify\",\"TextAlignLeft\",\"TextAlignRight\",\"TextB\",\"TextColumns\",\"TextH\",\"TextHFive\",\"TextHFour\",\"TextHOne\",\"TextHSix\",\"TextHThree\",\"TextHTwo\",\"TextIndent\",\"TextItalic\",\"TextOutdent\",\"TextStrikethrough\",\"TextSubscript\",\"TextSuperscript\",\"TextT\",\"TextTSlash\",\"TextUnderline\",\"Textbox\",\"Thermometer\",\"ThermometerCold\",\"ThermometerHot\",\"ThermometerSimple\",\"ThreadsLogo\",\"ThreeD\",\"ThumbsDown\",\"ThumbsUp\",\"Ticket\",\"TidalLogo\",\"TiktokLogo\",\"Tilde\",\"Timer\",\"TipJar\",\"Tipi\",\"Tire\",\"ToggleLeft\",\"ToggleRight\",\"Toilet\",\"ToiletPaper\",\"Toolbox\",\"Tooth\",\"Tornado\",\"Tote\",\"ToteSimple\",\"Towel\",\"Tractor\",\"Trademark\",\"TrademarkRegistered\",\"TrafficCone\",\"TrafficSign\",\"TrafficSignal\",\"Train\",\"TrainRegional\",\"TrainSimple\",\"Tram\",\"Translate\",\"Trash\",\"TrashSimple\",\"Tray\",\"TrayArrowDown\",\"TrayArrowUp\",\"TreasureChest\",\"Tree\",\"TreeEvergreen\",\"TreePalm\",\"TreeStructure\",\"TreeView\",\"TrendDown\",\"TrendUp\",\"Triangle\",\"TriangleDashed\",\"Trolley\",\"TrolleySuitcase\",\"Trophy\",\"Truck\",\"TruckTrailer\",\"TumblrLogo\",\"TwitchLogo\",\"TwitterLogo\",\"Umbrella\",\"UmbrellaSimple\",\"Union\",\"Unite\",\"UniteSquare\",\"Upload\",\"UploadSimple\",\"Usb\",\"User\",\"UserCheck\",\"UserCircle\",\"UserCircleCheck\",\"UserCircleDashed\",\"UserCircleGear\",\"UserCircleMinus\",\"UserCirclePlus\",\"UserFocus\",\"UserGear\",\"UserList\",\"UserMinus\",\"UserPlus\",\"UserRectangle\",\"UserSound\",\"UserSquare\",\"UserSwitch\",\"Users\",\"UsersFour\",\"UsersThree\",\"Van\",\"Vault\",\"VectorThree\",\"VectorTwo\",\"Vibrate\",\"Video\",\"VideoCamera\",\"VideoCameraSlash\",\"VideoConference\",\"Vignette\",\"VinylRecord\",\"VirtualReality\",\"Virus\",\"Visor\",\"Voicemail\",\"Volleyball\",\"Wall\",\"Wallet\",\"Warehouse\",\"Warning\",\"WarningCircle\",\"WarningDiamond\",\"WarningOctagon\",\"WashingMachine\",\"Watch\",\"WaveSawtooth\",\"WaveSine\",\"WaveSquare\",\"WaveTriangle\",\"Waveform\",\"WaveformSlash\",\"Waves\",\"Webcam\",\"WebcamSlash\",\"WebhooksLogo\",\"WechatLogo\",\"WhatsappLogo\",\"Wheelchair\",\"WheelchairMotion\",\"WifiHigh\",\"WifiLow\",\"WifiMedium\",\"WifiNone\",\"WifiSlash\",\"WifiX\",\"Wind\",\"Windmill\",\"WindowsLogo\",\"Wine\",\"Wrench\",\"X\",\"XCircle\",\"XLogo\",\"XSquare\",\"Yarn\",\"YinYang\",\"YoutubeLogo\"];const moduleBaseUrl=\"https://framer.com/m/phosphor-icons/\";const weightOptions=[\"thin\",\"light\",\"regular\",\"bold\",\"fill\",\"duotone\"];const lowercaseIconKeyPairs=iconKeys.reduce((res,key)=>{res[key.toLowerCase()]=key;return res;},{});/**\n * PHOSPHOR\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n */export function Icon(props){const{color,selectByList,iconSearch,iconSelection,onClick,onMouseDown,onMouseUp,onMouseEnter,onMouseLeave,weight,mirrored}=props;const isMounted=useRef(false);const iconKey=useIconSelection(iconKeys,selectByList,iconSearch,iconSelection,lowercaseIconKeyPairs);const[SelectedIcon,setSelectedIcon]=useState(iconKey===\"Home\"?HouseFactory(React):null);async function importModule(){// Get the selected module\ntry{const version=\"0.0.57\";const iconModuleUrl=`${moduleBaseUrl}${iconKey}.js@${version}`;const module=await import(/* webpackIgnore: true */iconModuleUrl);if(isMounted.current)setSelectedIcon(module.default(React));}catch(err){if(isMounted.current)setSelectedIcon(null);}}useEffect(()=>{isMounted.current=true;importModule();return()=>{isMounted.current=false;};},[iconKey]);const isOnCanvas=RenderTarget.current()===RenderTarget.canvas;const emptyState=isOnCanvas?/*#__PURE__*/_jsx(NullState,{}):null;return /*#__PURE__*/_jsx(motion.div,{style:{display:\"contents\"},onClick,onMouseEnter,onMouseLeave,onMouseDown,onMouseUp,children:SelectedIcon?/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 256 256\",style:{userSelect:\"none\",width:\"100%\",height:\"100%\",display:\"inline-block\",fill:color,color,flexShrink:0,transform:mirrored?\"scale(-1, 1)\":undefined},focusable:\"false\",color:color,children:/*#__PURE__*/_jsx(SelectedIcon,{color:color,weight:weight})}):emptyState});}Icon.displayName=\"Phosphor\";Icon.defaultProps={width:24,height:24,iconSelection:\"House\",iconSearch:\"House\",color:\"#66F\",selectByList:true,weight:\"regular\",mirrored:false};addPropertyControls(Icon,{selectByList:{type:ControlType.Boolean,title:\"Select\",enabledTitle:\"List\",disabledTitle:\"Search\",defaultValue:Icon.defaultProps.selectByList},iconSelection:{type:ControlType.Enum,options:iconKeys,defaultValue:Icon.defaultProps.iconSelection,title:\"Name\",hidden:({selectByList})=>!selectByList,description:\"Find every icon name on the [Phosphor site](https://phosphoricons.com/)\"},iconSearch:{type:ControlType.String,title:\"Name\",placeholder:\"Menu, Wifi, Box…\",hidden:({selectByList})=>selectByList},color:{type:ControlType.Color,title:\"Color\",defaultValue:Icon.defaultProps.color},weight:{type:ControlType.Enum,title:\"Weight\",optionTitles:weightOptions.map(piece=>piece.charAt(0).toUpperCase()+piece.slice(1)),options:weightOptions,defaultValue:Icon.defaultProps.weight},mirrored:{type:ControlType.Boolean,enabledTitle:\"Yes\",disabledTitle:\"No\",defaultValue:Icon.defaultProps.mirrored},...defaultEvents});\nexport const __FramerMetadata__ = {\"exports\":{\"IconProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Icon\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicHeight\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Phosphor.map","// Generated by Framer (0ea0c8c)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;PP Neue Montreal Medium\",\"CUSTOMV2;PP Neue Montreal Bold\",\"CUSTOMV2;PP Neue Montreal Bold Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/gFY5sT08OJzaVKejDc8tZ3kRgFo.woff2\",weight:\"500\"},{cssFamilyName:\"PP Neue Montreal Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/Bktf1XlGHU3P9GuKlHnVHDFZyBQ.woff2\",weight:\"700\"},{cssFamilyName:\"PP Neue Montreal Bold Italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/NqofpUDol8dZlRupwCGg5UzzY.woff2\",weight:\"700\"}]}];export const css=['.framer-oSodI .framer-styles-preset-1oee82x:not(.rich-text-wrapper), .framer-oSodI .framer-styles-preset-1oee82x.rich-text-wrapper p { --framer-font-family: \"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif; --framer-font-family-bold: \"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"PP Neue Montreal Bold Italic\", \"PP Neue Montreal Bold Italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 0.775); --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-letter-spacing: 0.04em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, #181818); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-oSodI\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (3db8496)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getLoadingLazyAtYPosition,getPropertyControls,Image as Image1,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{Icon as Phosphor}from\"https://framerusercontent.com/modules/tYScH7LTqUtz5KUaUAYP/p8dptk4UIND8hbFWz9V7/Phosphor.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/aT9JHLtlD7EoJCjfZIrQ/mLb49f4qBayTNdxDANIC/RljaWjGmW.js\";const PhosphorFonts=getFonts(Phosphor);const PhosphorControls=getPropertyControls(Phosphor);const serializationHash=\"framer-dbJKW\";const variantClassNames={K3gFR04tl:\"framer-v-1we7gka\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const rByT1b8Bq=undefined;const RT6VrKKJB=undefined;const NxEhNufuH=undefined;const transition1={damping:70,delay:0,mass:5.7,stiffness:1e3,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,icon,icon2,id,label,width,...props})=>{return{...props,NxEhNufuH:label??props.NxEhNufuH??\"EyeBrow Label\",rByT1b8Bq:icon??props.rByT1b8Bq??true,RT6VrKKJB:icon2??props.RT6VrKKJB??\"Sparkle\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,NxEhNufuH,rByT1b8Bq,RT6VrKKJB,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"K3gFR04tl\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.header,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1we7gka\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Primary Eyebrow\",layoutDependency:layoutDependency,layoutId:\"K3gFR04tl\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"rgba(143, 144, 146, 0.35)\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backgroundColor:\"var(--token-792316f4-4b02-4a05-9681-8e65b436039e, rgb(247, 250, 252))\",borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100,...style},children:[rByT1b8Bq!==false&&/*#__PURE__*/_jsx(motion.div,{className:\"framer-1ylnv9g\",\"data-framer-name\":\"Icon\",layoutDependency:layoutDependency,layoutId:\"NMVbJKabp\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1t1cdc6-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"HnyMAXWHp-container\",nodeId:\"HnyMAXWHp\",rendersWithMotion:true,scopeId:\"OzNKd05yb\",children:/*#__PURE__*/_jsx(Phosphor,{color:\"var(--token-dc0db41a-9245-42c9-8f2f-326fb383acd3, rgb(0, 0, 0))\",height:\"100%\",iconSearch:\"sparkle\",iconSelection:RT6VrKKJB,id:\"HnyMAXWHp\",layoutId:\"HnyMAXWHp\",mirrored:false,selectByList:true,style:{height:\"100%\",width:\"100%\"},weight:\"regular\",width:\"100%\"})})})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1oee82x\",\"data-styles-preset\":\"RljaWjGmW\",dir:\"auto\",children:\"EyeBrow Label\"})}),className:\"framer-1rz439u\",\"data-framer-name\":\"Text\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"pyW6lSE4X\",style:{\"--framer-paragraph-spacing\":\"0px\"},text:NxEhNufuH,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1pepon7\",\"data-framer-name\":\"Group 2147259673\",layoutDependency:layoutDependency,layoutId:\"qcMYq2WSh\",style:{opacity:0},children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7Q2F2ZWF0LXJlZ3VsYXI=\",\"--framer-font-family\":'\"Caveat\", sans-serif',\"--framer-font-size\":\"20px\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"100%\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(122, 127, 133))\"},children:\"Anxiety and Insomnia\"})}),className:\"framer-1oamicv\",\"data-framer-name\":\"Anxiety and Insomnia\",fonts:[\"GF;Caveat-regular\"],layoutDependency:layoutDependency,layoutId:\"Kslnb_9E0\",style:{\"--extracted-r6o4lv\":\"rgb(122, 127, 133)\",\"--framer-paragraph-spacing\":\"0px\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+((componentViewport?.height||32)*.5000000000000002-11)+15),pixelHeight:536,pixelWidth:1318,sizes:\"17px\",src:\"https://framerusercontent.com/images/JaGKkICfWhqiUnMT8DPD2OWRQRw.png?width=1318&height=536\",srcSet:\"https://framerusercontent.com/images/JaGKkICfWhqiUnMT8DPD2OWRQRw.png?scale-down-to=512&width=1318&height=536 512w,https://framerusercontent.com/images/JaGKkICfWhqiUnMT8DPD2OWRQRw.png?scale-down-to=1024&width=1318&height=536 1024w,https://framerusercontent.com/images/JaGKkICfWhqiUnMT8DPD2OWRQRw.png?width=1318&height=536 1318w\"},className:\"framer-7r1lk0\",\"data-framer-name\":\"arrow-07 1\",layoutDependency:layoutDependency,layoutId:\"pb4HY9CMR\"})]})]})})})});});const css=[\".framer-dbJKW.framer-1xbm2ic, .framer-dbJKW .framer-1xbm2ic { display: block; }\",\".framer-dbJKW.framer-1we7gka { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: 32px; justify-content: center; overflow: visible; padding: 12px 16px 12px 16px; position: relative; width: min-content; }\",\".framer-dbJKW .framer-1ylnv9g { flex: none; gap: 0px; height: 16px; overflow: visible; position: relative; width: 16px; }\",\".framer-dbJKW .framer-1t1cdc6-container { bottom: 0px; flex: none; left: 0px; position: absolute; right: 0px; top: 0px; }\",\".framer-dbJKW .framer-1rz439u { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-dbJKW .framer-1pepon7 { flex: none; height: 22px; overflow: visible; pointer-events: none; position: absolute; right: -45px; top: calc(50.00000000000002% - 22px / 2); width: 134px; z-index: -1; }\",\".framer-dbJKW .framer-1oamicv { flex: none; height: auto; position: absolute; right: -26px; top: 0px; white-space: pre; width: auto; }\",\".framer-dbJKW .framer-7r1lk0 { aspect-ratio: 2.4285714285714284 / 1; flex: none; height: auto; left: 0px; position: absolute; top: 15px; width: 17px; }\",...sharedStyle.css,'.framer-dbJKW[data-border=\"true\"]::after, .framer-dbJKW [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 32\n * @framerIntrinsicWidth 143\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"fixed\"]}}}\n * @framerVariables {\"NxEhNufuH\":\"label\",\"rByT1b8Bq\":\"icon\",\"RT6VrKKJB\":\"icon2\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerOzNKd05yb=withCSS(Component,css,\"framer-dbJKW\");export default FramerOzNKd05yb;FramerOzNKd05yb.displayName=\"Eyebrow\";FramerOzNKd05yb.defaultProps={height:32,width:143};addPropertyControls(FramerOzNKd05yb,{NxEhNufuH:{defaultValue:\"EyeBrow Label\",description:\"\",displayTextArea:false,title:\"Label\",type:ControlType.String},onNxEhNufuHChange:{changes:\"NxEhNufuH\",type:ControlType.ChangeHandler},rByT1b8Bq:{defaultValue:true,title:\"Icon\",type:ControlType.Boolean},onrByT1b8BqChange:{changes:\"rByT1b8Bq\",type:ControlType.ChangeHandler},RT6VrKKJB:PhosphorControls?.[\"iconSelection\"]&&{...PhosphorControls[\"iconSelection\"],defaultValue:\"Sparkle\",description:undefined,hidden:undefined,optional:undefined,title:\"Icon 2\"},onRT6VrKKJBChange:{changes:\"RT6VrKKJB\",type:ControlType.ChangeHandler}});addFonts(FramerOzNKd05yb,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"Caveat\",source:\"google\",style:\"normal\",uiFamilyName:\"Caveat\",url:\"https://fonts.gstatic.com/s/caveat/v23/WnznHAc5bAfYB2QRah7pcpNvOx-pjfJ9SIejYBxPigs.woff2\",weight:\"400\"}]},...PhosphorFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerOzNKd05yb\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicHeight\":\"32\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]}}}\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"NxEhNufuH\\\":\\\"label\\\",\\\"rByT1b8Bq\\\":\\\"icon\\\",\\\"RT6VrKKJB\\\":\\\"icon2\\\"}\",\"framerIntrinsicWidth\":\"143\",\"framerColorSyntax\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OzNKd05yb.map","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 10.53 10.43 C 10.43 10.12 10.34 9.82 10.24 9.51 C 10.14 9.2 10.05 8.91 9.97 8.62 C 9.89 8.34 9.82 8.08 9.75 7.84 L 9.73 7.84 C 9.64 8.27 9.53 8.7 9.39 9.13 C 9.24 9.61 9.09 10.11 8.93 10.61 C 8.79 11.12 8.64 11.59 8.49 12.01 L 11.03 12.01 C 10.97 11.799 10.89 11.55 10.8 11.289 C 10.71 11.02 10.62 10.73 10.53 10.43 Z M 19.75 0 L 4.25 0 C 1.9 0 0 1.9 0 4.25 L 0 19.15 C 0 21.5 1.9 23.4 4.25 23.4 L 19.75 23.4 C 22.1 23.4 24 21.5 24 19.15 L 24 4.25 C 24 1.9 22.1 0 19.75 0 Z M 14.7 16.53 L 12.609 16.53 C 12.54 16.54 12.47 16.49 12.45 16.42 L 11.63 14.04 L 7.91 14.04 L 7.15 16.39 C 7.13 16.48 7.05 16.54 6.96 16.531 L 5.08 16.531 C 4.97 16.531 4.94 16.47 4.97 16.351 L 8.19 7.08 C 8.22 6.98 8.25 6.87 8.29 6.75 C 8.33 6.54 8.35 6.32 8.35 6.1 C 8.34 6.05 8.38 6 8.43 5.99 L 11.02 5.99 C 11.1 5.99 11.14 6.02 11.15 6.07 L 14.8 16.37 C 14.83 16.479 14.8 16.53 14.7 16.53 Z M 18.1 16.38 C 18.1 16.49 18.061 16.54 17.971 16.54 L 16.01 16.54 C 15.91 16.54 15.86 16.479 15.86 16.38 L 15.86 8.68 C 15.86 8.58 15.901 8.54 15.991 8.54 L 17.971 8.54 C 18.061 8.54 18.1 8.59 18.1 8.68 Z M 17.891 7.35 C 17.652 7.593 17.32 7.72 16.98 7.7 C 16.65 7.71 16.33 7.58 16.089 7.35 C 15.86 7.099 15.738 6.769 15.749 6.43 C 15.739 6.09 15.869 5.77 16.108 5.54 C 16.35 5.31 16.67 5.19 17 5.19 C 17.391 5.19 17.689 5.31 17.91 5.54 C 18.13 5.78 18.25 6.1 18.24 6.43 C 18.25 6.77 18.13 7.1 17.891 7.35 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"23.4px\" id=\"XOBG8hVnd\" transform=\"translate(0 0.3)\" width=\"24px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-OT2Qc\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-OT2Qc { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Adobeillustrator\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-OT2Qc\");Icon.displayName=\"Adobeillustrator\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"24\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerVector\":\"{\\\"name\\\":\\\"Adobeillustrator\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\",\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map","import * as React from \"react\";\nimport React__default, { useReducer, useRef, useEffect, useLayoutEffect, useDebugValue, useState, useMemo, memo, forwardRef, createContext, useContext, Fragment, useCallback } from \"react\";\n/**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n */\nconst REVISION = \"161\";\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\nconst CullFaceNone = 0;\nconst CullFaceBack = 1;\nconst CullFaceFront = 2;\nconst CullFaceFrontBack = 3;\nconst BasicShadowMap = 0;\nconst PCFShadowMap = 1;\nconst PCFSoftShadowMap = 2;\nconst VSMShadowMap = 3;\nconst FrontSide = 0;\nconst BackSide = 1;\nconst DoubleSide = 2;\nconst NoBlending = 0;\nconst NormalBlending = 1;\nconst AdditiveBlending = 2;\nconst SubtractiveBlending = 3;\nconst MultiplyBlending = 4;\nconst CustomBlending = 5;\nconst AddEquation = 100;\nconst SubtractEquation = 101;\nconst ReverseSubtractEquation = 102;\nconst MinEquation = 103;\nconst MaxEquation = 104;\nconst ZeroFactor = 200;\nconst OneFactor = 201;\nconst SrcColorFactor = 202;\nconst OneMinusSrcColorFactor = 203;\nconst SrcAlphaFactor = 204;\nconst OneMinusSrcAlphaFactor = 205;\nconst DstAlphaFactor = 206;\nconst OneMinusDstAlphaFactor = 207;\nconst DstColorFactor = 208;\nconst OneMinusDstColorFactor = 209;\nconst SrcAlphaSaturateFactor = 210;\nconst ConstantColorFactor = 211;\nconst OneMinusConstantColorFactor = 212;\nconst ConstantAlphaFactor = 213;\nconst OneMinusConstantAlphaFactor = 214;\nconst NeverDepth = 0;\nconst AlwaysDepth = 1;\nconst LessDepth = 2;\nconst LessEqualDepth = 3;\nconst EqualDepth = 4;\nconst GreaterEqualDepth = 5;\nconst GreaterDepth = 6;\nconst NotEqualDepth = 7;\nconst MultiplyOperation = 0;\nconst MixOperation = 1;\nconst AddOperation = 2;\nconst NoToneMapping = 0;\nconst LinearToneMapping = 1;\nconst ReinhardToneMapping = 2;\nconst CineonToneMapping = 3;\nconst ACESFilmicToneMapping = 4;\nconst CustomToneMapping = 5;\nconst AgXToneMapping = 6;\nconst AttachedBindMode = \"attached\";\nconst DetachedBindMode = \"detached\";\nconst UVMapping = 300;\nconst CubeReflectionMapping = 301;\nconst CubeRefractionMapping = 302;\nconst EquirectangularReflectionMapping = 303;\nconst EquirectangularRefractionMapping = 304;\nconst CubeUVReflectionMapping = 306;\nconst RepeatWrapping = 1e3;\nconst ClampToEdgeWrapping = 1001;\nconst MirroredRepeatWrapping = 1002;\nconst NearestFilter = 1003;\nconst NearestMipmapNearestFilter = 1004;\nconst NearestMipMapNearestFilter = 1004;\nconst NearestMipmapLinearFilter = 1005;\nconst NearestMipMapLinearFilter = 1005;\nconst LinearFilter = 1006;\nconst LinearMipmapNearestFilter = 1007;\nconst LinearMipMapNearestFilter = 1007;\nconst LinearMipmapLinearFilter = 1008;\nconst LinearMipMapLinearFilter = 1008;\nconst UnsignedByteType = 1009;\nconst ByteType = 1010;\nconst ShortType = 1011;\nconst UnsignedShortType = 1012;\nconst IntType = 1013;\nconst UnsignedIntType = 1014;\nconst FloatType = 1015;\nconst HalfFloatType = 1016;\nconst UnsignedShort4444Type = 1017;\nconst UnsignedShort5551Type = 1018;\nconst UnsignedInt248Type = 1020;\nconst AlphaFormat = 1021;\nconst RGBAFormat = 1023;\nconst LuminanceFormat = 1024;\nconst LuminanceAlphaFormat = 1025;\nconst DepthFormat = 1026;\nconst DepthStencilFormat = 1027;\nconst RedFormat = 1028;\nconst RedIntegerFormat = 1029;\nconst RGFormat = 1030;\nconst RGIntegerFormat = 1031;\nconst RGBAIntegerFormat = 1033;\nconst RGB_S3TC_DXT1_Format = 33776;\nconst RGBA_S3TC_DXT1_Format = 33777;\nconst RGBA_S3TC_DXT3_Format = 33778;\nconst RGBA_S3TC_DXT5_Format = 33779;\nconst RGB_PVRTC_4BPPV1_Format = 35840;\nconst RGB_PVRTC_2BPPV1_Format = 35841;\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\nconst RGB_ETC1_Format = 36196;\nconst RGB_ETC2_Format = 37492;\nconst RGBA_ETC2_EAC_Format = 37496;\nconst RGBA_ASTC_4x4_Format = 37808;\nconst RGBA_ASTC_5x4_Format = 37809;\nconst RGBA_ASTC_5x5_Format = 37810;\nconst RGBA_ASTC_6x5_Format = 37811;\nconst RGBA_ASTC_6x6_Format = 37812;\nconst RGBA_ASTC_8x5_Format = 37813;\nconst RGBA_ASTC_8x6_Format = 37814;\nconst RGBA_ASTC_8x8_Format = 37815;\nconst RGBA_ASTC_10x5_Format = 37816;\nconst RGBA_ASTC_10x6_Format = 37817;\nconst RGBA_ASTC_10x8_Format = 37818;\nconst RGBA_ASTC_10x10_Format = 37819;\nconst RGBA_ASTC_12x10_Format = 37820;\nconst RGBA_ASTC_12x12_Format = 37821;\nconst RGBA_BPTC_Format = 36492;\nconst RGB_BPTC_SIGNED_Format = 36494;\nconst RGB_BPTC_UNSIGNED_Format = 36495;\nconst RED_RGTC1_Format = 36283;\nconst SIGNED_RED_RGTC1_Format = 36284;\nconst RED_GREEN_RGTC2_Format = 36285;\nconst SIGNED_RED_GREEN_RGTC2_Format = 36286;\nconst LoopOnce = 2200;\nconst LoopRepeat = 2201;\nconst LoopPingPong = 2202;\nconst InterpolateDiscrete = 2300;\nconst InterpolateLinear = 2301;\nconst InterpolateSmooth = 2302;\nconst ZeroCurvatureEnding = 2400;\nconst ZeroSlopeEnding = 2401;\nconst WrapAroundEnding = 2402;\nconst NormalAnimationBlendMode = 2500;\nconst AdditiveAnimationBlendMode = 2501;\nconst TrianglesDrawMode = 0;\nconst TriangleStripDrawMode = 1;\nconst TriangleFanDrawMode = 2;\nconst LinearEncoding$2 = 3e3;\nconst sRGBEncoding$2 = 3001;\nconst BasicDepthPacking = 3200;\nconst RGBADepthPacking = 3201;\nconst TangentSpaceNormalMap = 0;\nconst ObjectSpaceNormalMap = 1;\nconst NoColorSpace = \"\";\nconst SRGBColorSpace$1 = \"srgb\";\nconst LinearSRGBColorSpace$1 = \"srgb-linear\";\nconst DisplayP3ColorSpace = \"display-p3\";\nconst LinearDisplayP3ColorSpace = \"display-p3-linear\";\nconst LinearTransfer = \"linear\";\nconst SRGBTransfer = \"srgb\";\nconst Rec709Primaries = \"rec709\";\nconst P3Primaries = \"p3\";\nconst ZeroStencilOp = 0;\nconst KeepStencilOp = 7680;\nconst ReplaceStencilOp = 7681;\nconst IncrementStencilOp = 7682;\nconst DecrementStencilOp = 7683;\nconst IncrementWrapStencilOp = 34055;\nconst DecrementWrapStencilOp = 34056;\nconst InvertStencilOp = 5386;\nconst NeverStencilFunc = 512;\nconst LessStencilFunc = 513;\nconst EqualStencilFunc = 514;\nconst LessEqualStencilFunc = 515;\nconst GreaterStencilFunc = 516;\nconst NotEqualStencilFunc = 517;\nconst GreaterEqualStencilFunc = 518;\nconst AlwaysStencilFunc = 519;\nconst NeverCompare = 512;\nconst LessCompare = 513;\nconst EqualCompare = 514;\nconst LessEqualCompare = 515;\nconst GreaterCompare = 516;\nconst NotEqualCompare = 517;\nconst GreaterEqualCompare = 518;\nconst AlwaysCompare = 519;\nconst StaticDrawUsage = 35044;\nconst DynamicDrawUsage = 35048;\nconst StreamDrawUsage = 35040;\nconst StaticReadUsage = 35045;\nconst DynamicReadUsage = 35049;\nconst StreamReadUsage = 35041;\nconst StaticCopyUsage = 35046;\nconst DynamicCopyUsage = 35050;\nconst StreamCopyUsage = 35042;\nconst GLSL1 = \"100\";\nconst GLSL3 = \"300 es\";\nconst _SRGBAFormat = 1035;\nconst WebGLCoordinateSystem = 2e3;\nconst WebGPUCoordinateSystem = 2001;\nclass EventDispatcher {\n  addEventListener(type, listener) {\n    if (this._listeners === void 0) this._listeners = {};\n    const listeners = this._listeners;\n    if (listeners[type] === void 0) {\n      listeners[type] = [];\n    }\n    if (listeners[type].indexOf(listener) === -1) {\n      listeners[type].push(listener);\n    }\n  }\n  hasEventListener(type, listener) {\n    if (this._listeners === void 0) return false;\n    const listeners = this._listeners;\n    return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;\n  }\n  removeEventListener(type, listener) {\n    if (this._listeners === void 0) return;\n    const listeners = this._listeners;\n    const listenerArray = listeners[type];\n    if (listenerArray !== void 0) {\n      const index = listenerArray.indexOf(listener);\n      if (index !== -1) {\n        listenerArray.splice(index, 1);\n      }\n    }\n  }\n  dispatchEvent(event) {\n    if (this._listeners === void 0) return;\n    const listeners = this._listeners;\n    const listenerArray = listeners[event.type];\n    if (listenerArray !== void 0) {\n      event.target = this;\n      const array = listenerArray.slice(0);\n      for (let i2 = 0, l2 = array.length; i2 < l2; i2++) {\n        array[i2].call(this, event);\n      }\n      event.target = null;\n    }\n  }\n}\nconst _lut = [\"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\"];\nlet _seed = 1234567;\nconst DEG2RAD = Math.PI / 180;\nconst RAD2DEG = 180 / Math.PI;\nfunction generateUUID() {\n  const d0 = Math.random() * 4294967295 | 0;\n  const d1 = Math.random() * 4294967295 | 0;\n  const d2 = Math.random() * 4294967295 | 0;\n  const d3 = Math.random() * 4294967295 | 0;\n  const uuid = _lut[d0 & 255] + _lut[d0 >> 8 & 255] + _lut[d0 >> 16 & 255] + _lut[d0 >> 24 & 255] + \"-\" + _lut[d1 & 255] + _lut[d1 >> 8 & 255] + \"-\" + _lut[d1 >> 16 & 15 | 64] + _lut[d1 >> 24 & 255] + \"-\" + _lut[d2 & 63 | 128] + _lut[d2 >> 8 & 255] + \"-\" + _lut[d2 >> 16 & 255] + _lut[d2 >> 24 & 255] + _lut[d3 & 255] + _lut[d3 >> 8 & 255] + _lut[d3 >> 16 & 255] + _lut[d3 >> 24 & 255];\n  return uuid.toLowerCase();\n}\nfunction clamp(value, min, max2) {\n  return Math.max(min, Math.min(max2, value));\n}\nfunction euclideanModulo(n2, m2) {\n  return (n2 % m2 + m2) % m2;\n}\nfunction mapLinear(x2, a1, a2, b1, b2) {\n  return b1 + (x2 - a1) * (b2 - b1) / (a2 - a1);\n}\nfunction inverseLerp(x2, y2, value) {\n  if (x2 !== y2) {\n    return (value - x2) / (y2 - x2);\n  } else {\n    return 0;\n  }\n}\nfunction lerp(x2, y2, t2) {\n  return (1 - t2) * x2 + t2 * y2;\n}\nfunction damp(x2, y2, lambda, dt) {\n  return lerp(x2, y2, 1 - Math.exp(-lambda * dt));\n}\nfunction pingpong(x2, length = 1) {\n  return length - Math.abs(euclideanModulo(x2, length * 2) - length);\n}\nfunction smoothstep(x2, min, max2) {\n  if (x2 <= min) return 0;\n  if (x2 >= max2) return 1;\n  x2 = (x2 - min) / (max2 - min);\n  return x2 * x2 * (3 - 2 * x2);\n}\nfunction smootherstep(x2, min, max2) {\n  if (x2 <= min) return 0;\n  if (x2 >= max2) return 1;\n  x2 = (x2 - min) / (max2 - min);\n  return x2 * x2 * x2 * (x2 * (x2 * 6 - 15) + 10);\n}\nfunction randInt(low, high) {\n  return low + Math.floor(Math.random() * (high - low + 1));\n}\nfunction randFloat(low, high) {\n  return low + Math.random() * (high - low);\n}\nfunction randFloatSpread(range) {\n  return range * (0.5 - Math.random());\n}\nfunction seededRandom(s2) {\n  if (s2 !== void 0) _seed = s2;\n  let t2 = _seed += 1831565813;\n  t2 = Math.imul(t2 ^ t2 >>> 15, t2 | 1);\n  t2 ^= t2 + Math.imul(t2 ^ t2 >>> 7, t2 | 61);\n  return ((t2 ^ t2 >>> 14) >>> 0) / 4294967296;\n}\nfunction degToRad(degrees) {\n  return degrees * DEG2RAD;\n}\nfunction radToDeg(radians) {\n  return radians * RAD2DEG;\n}\nfunction isPowerOfTwo(value) {\n  return (value & value - 1) === 0 && value !== 0;\n}\nfunction ceilPowerOfTwo(value) {\n  return Math.pow(2, Math.ceil(Math.log(value) / Math.LN2));\n}\nfunction floorPowerOfTwo(value) {\n  return Math.pow(2, Math.floor(Math.log(value) / Math.LN2));\n}\nfunction setQuaternionFromProperEuler(q2, a2, b2, c2, order) {\n  const cos = Math.cos;\n  const sin = Math.sin;\n  const c22 = cos(b2 / 2);\n  const s2 = sin(b2 / 2);\n  const c13 = cos((a2 + c2) / 2);\n  const s13 = sin((a2 + c2) / 2);\n  const c1_3 = cos((a2 - c2) / 2);\n  const s1_3 = sin((a2 - c2) / 2);\n  const c3_1 = cos((c2 - a2) / 2);\n  const s3_1 = sin((c2 - a2) / 2);\n  switch (order) {\n    case \"XYX\":\n      q2.set(c22 * s13, s2 * c1_3, s2 * s1_3, c22 * c13);\n      break;\n    case \"YZY\":\n      q2.set(s2 * s1_3, c22 * s13, s2 * c1_3, c22 * c13);\n      break;\n    case \"ZXZ\":\n      q2.set(s2 * c1_3, s2 * s1_3, c22 * s13, c22 * c13);\n      break;\n    case \"XZX\":\n      q2.set(c22 * s13, s2 * s3_1, s2 * c3_1, c22 * c13);\n      break;\n    case \"YXY\":\n      q2.set(s2 * c3_1, c22 * s13, s2 * s3_1, c22 * c13);\n      break;\n    case \"ZYZ\":\n      q2.set(s2 * s3_1, s2 * c3_1, c22 * s13, c22 * c13);\n      break;\n    default:\n      console.warn(\"THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: \" + order);\n  }\n}\nfunction denormalize(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint32Array:\n      return value / 4294967295;\n    case Uint16Array:\n      return value / 65535;\n    case Uint8Array:\n      return value / 255;\n    case Int32Array:\n      return Math.max(value / 2147483647, -1);\n    case Int16Array:\n      return Math.max(value / 32767, -1);\n    case Int8Array:\n      return Math.max(value / 127, -1);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nfunction normalize(value, array) {\n  switch (array.constructor) {\n    case Float32Array:\n      return value;\n    case Uint32Array:\n      return Math.round(value * 4294967295);\n    case Uint16Array:\n      return Math.round(value * 65535);\n    case Uint8Array:\n      return Math.round(value * 255);\n    case Int32Array:\n      return Math.round(value * 2147483647);\n    case Int16Array:\n      return Math.round(value * 32767);\n    case Int8Array:\n      return Math.round(value * 127);\n    default:\n      throw new Error(\"Invalid component type.\");\n  }\n}\nconst MathUtils = {\n  DEG2RAD,\n  RAD2DEG,\n  generateUUID,\n  clamp,\n  euclideanModulo,\n  mapLinear,\n  inverseLerp,\n  lerp,\n  damp,\n  pingpong,\n  smoothstep,\n  smootherstep,\n  randInt,\n  randFloat,\n  randFloatSpread,\n  seededRandom,\n  degToRad,\n  radToDeg,\n  isPowerOfTwo,\n  ceilPowerOfTwo,\n  floorPowerOfTwo,\n  setQuaternionFromProperEuler,\n  normalize,\n  denormalize\n};\nclass Vector2 {\n  constructor(x2 = 0, y2 = 0) {\n    Vector2.prototype.isVector2 = true;\n    this.x = x2;\n    this.y = y2;\n  }\n  get width() {\n    return this.x;\n  }\n  set width(value) {\n    this.x = value;\n  }\n  get height() {\n    return this.y;\n  }\n  set height(value) {\n    this.y = value;\n  }\n  set(x2, y2) {\n    this.x = x2;\n    this.y = y2;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    return this;\n  }\n  setX(x2) {\n    this.x = x2;\n    return this;\n  }\n  setY(y2) {\n    this.y = y2;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y);\n  }\n  copy(v2) {\n    this.x = v2.x;\n    this.y = v2.y;\n    return this;\n  }\n  add(v2) {\n    this.x += v2.x;\n    this.y += v2.y;\n    return this;\n  }\n  addScalar(s2) {\n    this.x += s2;\n    this.y += s2;\n    return this;\n  }\n  addVectors(a2, b2) {\n    this.x = a2.x + b2.x;\n    this.y = a2.y + b2.y;\n    return this;\n  }\n  addScaledVector(v2, s2) {\n    this.x += v2.x * s2;\n    this.y += v2.y * s2;\n    return this;\n  }\n  sub(v2) {\n    this.x -= v2.x;\n    this.y -= v2.y;\n    return this;\n  }\n  subScalar(s2) {\n    this.x -= s2;\n    this.y -= s2;\n    return this;\n  }\n  subVectors(a2, b2) {\n    this.x = a2.x - b2.x;\n    this.y = a2.y - b2.y;\n    return this;\n  }\n  multiply(v2) {\n    this.x *= v2.x;\n    this.y *= v2.y;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    return this;\n  }\n  divide(v2) {\n    this.x /= v2.x;\n    this.y /= v2.y;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  applyMatrix3(m2) {\n    const x2 = this.x, y2 = this.y;\n    const e2 = m2.elements;\n    this.x = e2[0] * x2 + e2[3] * y2 + e2[6];\n    this.y = e2[1] * x2 + e2[4] * y2 + e2[7];\n    return this;\n  }\n  min(v2) {\n    this.x = Math.min(this.x, v2.x);\n    this.y = Math.min(this.y, v2.y);\n    return this;\n  }\n  max(v2) {\n    this.x = Math.max(this.x, v2.x);\n    this.y = Math.max(this.y, v2.y);\n    return this;\n  }\n  clamp(min, max2) {\n    this.x = Math.max(min.x, Math.min(max2.x, this.x));\n    this.y = Math.max(min.y, Math.min(max2.y, this.y));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    return this;\n  }\n  clampLength(min, max2) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    return this;\n  }\n  roundToZero() {\n    this.x = Math.trunc(this.x);\n    this.y = Math.trunc(this.y);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    return this;\n  }\n  dot(v2) {\n    return this.x * v2.x + this.y * v2.y;\n  }\n  cross(v2) {\n    return this.x * v2.y - this.y * v2.x;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  angle() {\n    const angle = Math.atan2(-this.y, -this.x) + Math.PI;\n    return angle;\n  }\n  angleTo(v2) {\n    const denominator = Math.sqrt(this.lengthSq() * v2.lengthSq());\n    if (denominator === 0) return Math.PI / 2;\n    const theta = this.dot(v2) / denominator;\n    return Math.acos(clamp(theta, -1, 1));\n  }\n  distanceTo(v2) {\n    return Math.sqrt(this.distanceToSquared(v2));\n  }\n  distanceToSquared(v2) {\n    const dx = this.x - v2.x, dy = this.y - v2.y;\n    return dx * dx + dy * dy;\n  }\n  manhattanDistanceTo(v2) {\n    return Math.abs(this.x - v2.x) + Math.abs(this.y - v2.y);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v2, alpha) {\n    this.x += (v2.x - this.x) * alpha;\n    this.y += (v2.y - this.y) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    return this;\n  }\n  equals(v2) {\n    return v2.x === this.x && v2.y === this.y;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    return this;\n  }\n  rotateAround(center, angle) {\n    const c2 = Math.cos(angle), s2 = Math.sin(angle);\n    const x2 = this.x - center.x;\n    const y2 = this.y - center.y;\n    this.x = x2 * c2 - y2 * s2 + center.x;\n    this.y = x2 * s2 + y2 * c2 + center.y;\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n  }\n}\nclass Matrix3 {\n  constructor(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n    Matrix3.prototype.isMatrix3 = true;\n    this.elements = [\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    ];\n    if (n11 !== void 0) {\n      this.set(n11, n12, n13, n21, n22, n23, n31, n32, n33);\n    }\n  }\n  set(n11, n12, n13, n21, n22, n23, n31, n32, n33) {\n    const te = this.elements;\n    te[0] = n11;\n    te[1] = n21;\n    te[2] = n31;\n    te[3] = n12;\n    te[4] = n22;\n    te[5] = n32;\n    te[6] = n13;\n    te[7] = n23;\n    te[8] = n33;\n    return this;\n  }\n  identity() {\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  copy(m2) {\n    const te = this.elements;\n    const me = m2.elements;\n    te[0] = me[0];\n    te[1] = me[1];\n    te[2] = me[2];\n    te[3] = me[3];\n    te[4] = me[4];\n    te[5] = me[5];\n    te[6] = me[6];\n    te[7] = me[7];\n    te[8] = me[8];\n    return this;\n  }\n  extractBasis(xAxis, yAxis, zAxis) {\n    xAxis.setFromMatrix3Column(this, 0);\n    yAxis.setFromMatrix3Column(this, 1);\n    zAxis.setFromMatrix3Column(this, 2);\n    return this;\n  }\n  setFromMatrix4(m2) {\n    const me = m2.elements;\n    this.set(\n      me[0],\n      me[4],\n      me[8],\n      me[1],\n      me[5],\n      me[9],\n      me[2],\n      me[6],\n      me[10]\n    );\n    return this;\n  }\n  multiply(m2) {\n    return this.multiplyMatrices(this, m2);\n  }\n  premultiply(m2) {\n    return this.multiplyMatrices(m2, this);\n  }\n  multiplyMatrices(a2, b2) {\n    const ae = a2.elements;\n    const be = b2.elements;\n    const te = this.elements;\n    const a11 = ae[0], a12 = ae[3], a13 = ae[6];\n    const a21 = ae[1], a22 = ae[4], a23 = ae[7];\n    const a31 = ae[2], a32 = ae[5], a33 = ae[8];\n    const b11 = be[0], b12 = be[3], b13 = be[6];\n    const b21 = be[1], b22 = be[4], b23 = be[7];\n    const b31 = be[2], b32 = be[5], b33 = be[8];\n    te[0] = a11 * b11 + a12 * b21 + a13 * b31;\n    te[3] = a11 * b12 + a12 * b22 + a13 * b32;\n    te[6] = a11 * b13 + a12 * b23 + a13 * b33;\n    te[1] = a21 * b11 + a22 * b21 + a23 * b31;\n    te[4] = a21 * b12 + a22 * b22 + a23 * b32;\n    te[7] = a21 * b13 + a22 * b23 + a23 * b33;\n    te[2] = a31 * b11 + a32 * b21 + a33 * b31;\n    te[5] = a31 * b12 + a32 * b22 + a33 * b32;\n    te[8] = a31 * b13 + a32 * b23 + a33 * b33;\n    return this;\n  }\n  multiplyScalar(s2) {\n    const te = this.elements;\n    te[0] *= s2;\n    te[3] *= s2;\n    te[6] *= s2;\n    te[1] *= s2;\n    te[4] *= s2;\n    te[7] *= s2;\n    te[2] *= s2;\n    te[5] *= s2;\n    te[8] *= s2;\n    return this;\n  }\n  determinant() {\n    const te = this.elements;\n    const a2 = te[0], b2 = te[1], c2 = te[2], d2 = te[3], e2 = te[4], f2 = te[5], g2 = te[6], h2 = te[7], i2 = te[8];\n    return a2 * e2 * i2 - a2 * f2 * h2 - b2 * d2 * i2 + b2 * f2 * g2 + c2 * d2 * h2 - c2 * e2 * g2;\n  }\n  invert() {\n    const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n12 = te[3], n22 = te[4], n32 = te[5], n13 = te[6], n23 = te[7], n33 = te[8], t11 = n33 * n22 - n32 * n23, t12 = n32 * n13 - n33 * n12, t13 = n23 * n12 - n22 * n13, det = n11 * t11 + n21 * t12 + n31 * t13;\n    if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const detInv = 1 / det;\n    te[0] = t11 * detInv;\n    te[1] = (n31 * n23 - n33 * n21) * detInv;\n    te[2] = (n32 * n21 - n31 * n22) * detInv;\n    te[3] = t12 * detInv;\n    te[4] = (n33 * n11 - n31 * n13) * detInv;\n    te[5] = (n31 * n12 - n32 * n11) * detInv;\n    te[6] = t13 * detInv;\n    te[7] = (n21 * n13 - n23 * n11) * detInv;\n    te[8] = (n22 * n11 - n21 * n12) * detInv;\n    return this;\n  }\n  transpose() {\n    let tmp2;\n    const m2 = this.elements;\n    tmp2 = m2[1];\n    m2[1] = m2[3];\n    m2[3] = tmp2;\n    tmp2 = m2[2];\n    m2[2] = m2[6];\n    m2[6] = tmp2;\n    tmp2 = m2[5];\n    m2[5] = m2[7];\n    m2[7] = tmp2;\n    return this;\n  }\n  getNormalMatrix(matrix4) {\n    return this.setFromMatrix4(matrix4).invert().transpose();\n  }\n  transposeIntoArray(r2) {\n    const m2 = this.elements;\n    r2[0] = m2[0];\n    r2[1] = m2[3];\n    r2[2] = m2[6];\n    r2[3] = m2[1];\n    r2[4] = m2[4];\n    r2[5] = m2[7];\n    r2[6] = m2[2];\n    r2[7] = m2[5];\n    r2[8] = m2[8];\n    return this;\n  }\n  setUvTransform(tx, ty, sx, sy, rotation, cx, cy) {\n    const c2 = Math.cos(rotation);\n    const s2 = Math.sin(rotation);\n    this.set(\n      sx * c2,\n      sx * s2,\n      -sx * (c2 * cx + s2 * cy) + cx + tx,\n      -sy * s2,\n      sy * c2,\n      -sy * (-s2 * cx + c2 * cy) + cy + ty,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  //\n  scale(sx, sy) {\n    this.premultiply(_m3.makeScale(sx, sy));\n    return this;\n  }\n  rotate(theta) {\n    this.premultiply(_m3.makeRotation(-theta));\n    return this;\n  }\n  translate(tx, ty) {\n    this.premultiply(_m3.makeTranslation(tx, ty));\n    return this;\n  }\n  // for 2D Transforms\n  makeTranslation(x2, y2) {\n    if (x2.isVector2) {\n      this.set(\n        1,\n        0,\n        x2.x,\n        0,\n        1,\n        x2.y,\n        0,\n        0,\n        1\n      );\n    } else {\n      this.set(\n        1,\n        0,\n        x2,\n        0,\n        1,\n        y2,\n        0,\n        0,\n        1\n      );\n    }\n    return this;\n  }\n  makeRotation(theta) {\n    const c2 = Math.cos(theta);\n    const s2 = Math.sin(theta);\n    this.set(\n      c2,\n      -s2,\n      0,\n      s2,\n      c2,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeScale(x2, y2) {\n    this.set(\n      x2,\n      0,\n      0,\n      0,\n      y2,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  //\n  equals(matrix) {\n    const te = this.elements;\n    const me = matrix.elements;\n    for (let i2 = 0; i2 < 9; i2++) {\n      if (te[i2] !== me[i2]) return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.elements[i2] = array[i2 + offset];\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const te = this.elements;\n    array[offset] = te[0];\n    array[offset + 1] = te[1];\n    array[offset + 2] = te[2];\n    array[offset + 3] = te[3];\n    array[offset + 4] = te[4];\n    array[offset + 5] = te[5];\n    array[offset + 6] = te[6];\n    array[offset + 7] = te[7];\n    array[offset + 8] = te[8];\n    return array;\n  }\n  clone() {\n    return new this.constructor().fromArray(this.elements);\n  }\n}\nconst _m3 = /* @__PURE__ */ new Matrix3();\nfunction arrayNeedsUint32(array) {\n  for (let i2 = array.length - 1; i2 >= 0; --i2) {\n    if (array[i2] >= 65535) return true;\n  }\n  return false;\n}\nconst TYPED_ARRAYS = {\n  Int8Array,\n  Uint8Array,\n  Uint8ClampedArray,\n  Int16Array,\n  Uint16Array,\n  Int32Array,\n  Uint32Array,\n  Float32Array,\n  Float64Array\n};\nfunction getTypedArray(type, buffer) {\n  return new TYPED_ARRAYS[type](buffer);\n}\nfunction createElementNS(name) {\n  return document.createElementNS(\"http://www.w3.org/1999/xhtml\", name);\n}\nfunction createCanvasElement() {\n  const canvas = createElementNS(\"canvas\");\n  canvas.style.display = \"block\";\n  return canvas;\n}\nconst _cache = {};\nfunction warnOnce(message) {\n  if (message in _cache) return;\n  _cache[message] = true;\n  console.warn(message);\n}\nconst LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = /* @__PURE__ */ new Matrix3().set(\n  0.8224621,\n  0.177538,\n  0,\n  0.0331941,\n  0.9668058,\n  0,\n  0.0170827,\n  0.0723974,\n  0.9105199\n);\nconst LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = /* @__PURE__ */ new Matrix3().set(\n  1.2249401,\n  -0.2249404,\n  0,\n  -0.0420569,\n  1.0420571,\n  0,\n  -0.0196376,\n  -0.0786361,\n  1.0982735\n);\nconst COLOR_SPACES = {\n  [LinearSRGBColorSpace$1]: {\n    transfer: LinearTransfer,\n    primaries: Rec709Primaries,\n    toReference: (color) => color,\n    fromReference: (color) => color\n  },\n  [SRGBColorSpace$1]: {\n    transfer: SRGBTransfer,\n    primaries: Rec709Primaries,\n    toReference: (color) => color.convertSRGBToLinear(),\n    fromReference: (color) => color.convertLinearToSRGB()\n  },\n  [LinearDisplayP3ColorSpace]: {\n    transfer: LinearTransfer,\n    primaries: P3Primaries,\n    toReference: (color) => color.applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB),\n    fromReference: (color) => color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3)\n  },\n  [DisplayP3ColorSpace]: {\n    transfer: SRGBTransfer,\n    primaries: P3Primaries,\n    toReference: (color) => color.convertSRGBToLinear().applyMatrix3(LINEAR_DISPLAY_P3_TO_LINEAR_SRGB),\n    fromReference: (color) => color.applyMatrix3(LINEAR_SRGB_TO_LINEAR_DISPLAY_P3).convertLinearToSRGB()\n  }\n};\nconst SUPPORTED_WORKING_COLOR_SPACES = /* @__PURE__ */ new Set([LinearSRGBColorSpace$1, LinearDisplayP3ColorSpace]);\nconst ColorManagement = {\n  enabled: true,\n  _workingColorSpace: LinearSRGBColorSpace$1,\n  get workingColorSpace() {\n    return this._workingColorSpace;\n  },\n  set workingColorSpace(colorSpace) {\n    if (!SUPPORTED_WORKING_COLOR_SPACES.has(colorSpace)) {\n      throw new Error(`Unsupported working color space, \"${colorSpace}\".`);\n    }\n    this._workingColorSpace = colorSpace;\n  },\n  convert: function(color, sourceColorSpace, targetColorSpace) {\n    if (this.enabled === false || sourceColorSpace === targetColorSpace || !sourceColorSpace || !targetColorSpace) {\n      return color;\n    }\n    const sourceToReference = COLOR_SPACES[sourceColorSpace].toReference;\n    const targetFromReference = COLOR_SPACES[targetColorSpace].fromReference;\n    return targetFromReference(sourceToReference(color));\n  },\n  fromWorkingColorSpace: function(color, targetColorSpace) {\n    return this.convert(color, this._workingColorSpace, targetColorSpace);\n  },\n  toWorkingColorSpace: function(color, sourceColorSpace) {\n    return this.convert(color, sourceColorSpace, this._workingColorSpace);\n  },\n  getPrimaries: function(colorSpace) {\n    return COLOR_SPACES[colorSpace].primaries;\n  },\n  getTransfer: function(colorSpace) {\n    if (colorSpace === NoColorSpace) return LinearTransfer;\n    return COLOR_SPACES[colorSpace].transfer;\n  }\n};\nfunction SRGBToLinear(c2) {\n  return c2 < 0.04045 ? c2 * 0.0773993808 : Math.pow(c2 * 0.9478672986 + 0.0521327014, 2.4);\n}\nfunction LinearToSRGB(c2) {\n  return c2 < 31308e-7 ? c2 * 12.92 : 1.055 * Math.pow(c2, 0.41666) - 0.055;\n}\nlet _canvas;\nclass ImageUtils {\n  static getDataURL(image) {\n    if (/^data:/i.test(image.src)) {\n      return image.src;\n    }\n    if (typeof HTMLCanvasElement === \"undefined\") {\n      return image.src;\n    }\n    let canvas;\n    if (image instanceof HTMLCanvasElement) {\n      canvas = image;\n    } else {\n      if (_canvas === void 0) _canvas = createElementNS(\"canvas\");\n      _canvas.width = image.width;\n      _canvas.height = image.height;\n      const context2 = _canvas.getContext(\"2d\");\n      if (image instanceof ImageData) {\n        context2.putImageData(image, 0, 0);\n      } else {\n        context2.drawImage(image, 0, 0, image.width, image.height);\n      }\n      canvas = _canvas;\n    }\n    if (canvas.width > 2048 || canvas.height > 2048) {\n      console.warn(\"THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons\", image);\n      return canvas.toDataURL(\"image/jpeg\", 0.6);\n    } else {\n      return canvas.toDataURL(\"image/png\");\n    }\n  }\n  static sRGBToLinear(image) {\n    if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n      const canvas = createElementNS(\"canvas\");\n      canvas.width = image.width;\n      canvas.height = image.height;\n      const context2 = canvas.getContext(\"2d\");\n      context2.drawImage(image, 0, 0, image.width, image.height);\n      const imageData = context2.getImageData(0, 0, image.width, image.height);\n      const data = imageData.data;\n      for (let i2 = 0; i2 < data.length; i2++) {\n        data[i2] = SRGBToLinear(data[i2] / 255) * 255;\n      }\n      context2.putImageData(imageData, 0, 0);\n      return canvas;\n    } else if (image.data) {\n      const data = image.data.slice(0);\n      for (let i2 = 0; i2 < data.length; i2++) {\n        if (data instanceof Uint8Array || data instanceof Uint8ClampedArray) {\n          data[i2] = Math.floor(SRGBToLinear(data[i2] / 255) * 255);\n        } else {\n          data[i2] = SRGBToLinear(data[i2]);\n        }\n      }\n      return {\n        data,\n        width: image.width,\n        height: image.height\n      };\n    } else {\n      console.warn(\"THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.\");\n      return image;\n    }\n  }\n}\nlet _sourceId = 0;\nclass Source {\n  constructor(data = null) {\n    this.isSource = true;\n    Object.defineProperty(this, \"id\", { value: _sourceId++ });\n    this.uuid = generateUUID();\n    this.data = data;\n    this.dataReady = true;\n    this.version = 0;\n  }\n  set needsUpdate(value) {\n    if (value === true) this.version++;\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (!isRootObject && meta.images[this.uuid] !== void 0) {\n      return meta.images[this.uuid];\n    }\n    const output = {\n      uuid: this.uuid,\n      url: \"\"\n    };\n    const data = this.data;\n    if (data !== null) {\n      let url;\n      if (Array.isArray(data)) {\n        url = [];\n        for (let i2 = 0, l2 = data.length; i2 < l2; i2++) {\n          if (data[i2].isDataTexture) {\n            url.push(serializeImage(data[i2].image));\n          } else {\n            url.push(serializeImage(data[i2]));\n          }\n        }\n      } else {\n        url = serializeImage(data);\n      }\n      output.url = url;\n    }\n    if (!isRootObject) {\n      meta.images[this.uuid] = output;\n    }\n    return output;\n  }\n}\nfunction serializeImage(image) {\n  if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n    return ImageUtils.getDataURL(image);\n  } else {\n    if (image.data) {\n      return {\n        data: Array.from(image.data),\n        width: image.width,\n        height: image.height,\n        type: image.data.constructor.name\n      };\n    } else {\n      console.warn(\"THREE.Texture: Unable to serialize Texture.\");\n      return {};\n    }\n  }\n}\nlet _textureId = 0;\nclass Texture extends EventDispatcher {\n  constructor(image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = Texture.DEFAULT_ANISOTROPY, colorSpace = NoColorSpace) {\n    super();\n    this.isTexture = true;\n    Object.defineProperty(this, \"id\", { value: _textureId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.source = new Source(image);\n    this.mipmaps = [];\n    this.mapping = mapping;\n    this.channel = 0;\n    this.wrapS = wrapS;\n    this.wrapT = wrapT;\n    this.magFilter = magFilter;\n    this.minFilter = minFilter;\n    this.anisotropy = anisotropy;\n    this.format = format;\n    this.internalFormat = null;\n    this.type = type;\n    this.offset = new Vector2(0, 0);\n    this.repeat = new Vector2(1, 1);\n    this.center = new Vector2(0, 0);\n    this.rotation = 0;\n    this.matrixAutoUpdate = true;\n    this.matrix = new Matrix3();\n    this.generateMipmaps = true;\n    this.premultiplyAlpha = false;\n    this.flipY = true;\n    this.unpackAlignment = 4;\n    if (typeof colorSpace === \"string\") {\n      this.colorSpace = colorSpace;\n    } else {\n      warnOnce(\"THREE.Texture: Property .encoding has been replaced by .colorSpace.\");\n      this.colorSpace = colorSpace === sRGBEncoding$2 ? SRGBColorSpace$1 : NoColorSpace;\n    }\n    this.userData = {};\n    this.version = 0;\n    this.onUpdate = null;\n    this.isRenderTargetTexture = false;\n    this.needsPMREMUpdate = false;\n  }\n  get image() {\n    return this.source.data;\n  }\n  set image(value = null) {\n    this.source.data = value;\n  }\n  updateMatrix() {\n    this.matrix.setUvTransform(this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.name = source.name;\n    this.source = source.source;\n    this.mipmaps = source.mipmaps.slice(0);\n    this.mapping = source.mapping;\n    this.channel = source.channel;\n    this.wrapS = source.wrapS;\n    this.wrapT = source.wrapT;\n    this.magFilter = source.magFilter;\n    this.minFilter = source.minFilter;\n    this.anisotropy = source.anisotropy;\n    this.format = source.format;\n    this.internalFormat = source.internalFormat;\n    this.type = source.type;\n    this.offset.copy(source.offset);\n    this.repeat.copy(source.repeat);\n    this.center.copy(source.center);\n    this.rotation = source.rotation;\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    this.matrix.copy(source.matrix);\n    this.generateMipmaps = source.generateMipmaps;\n    this.premultiplyAlpha = source.premultiplyAlpha;\n    this.flipY = source.flipY;\n    this.unpackAlignment = source.unpackAlignment;\n    this.colorSpace = source.colorSpace;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    this.needsUpdate = true;\n    return this;\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (!isRootObject && meta.textures[this.uuid] !== void 0) {\n      return meta.textures[this.uuid];\n    }\n    const output = {\n      metadata: {\n        version: 4.6,\n        type: \"Texture\",\n        generator: \"Texture.toJSON\"\n      },\n      uuid: this.uuid,\n      name: this.name,\n      image: this.source.toJSON(meta).uuid,\n      mapping: this.mapping,\n      channel: this.channel,\n      repeat: [this.repeat.x, this.repeat.y],\n      offset: [this.offset.x, this.offset.y],\n      center: [this.center.x, this.center.y],\n      rotation: this.rotation,\n      wrap: [this.wrapS, this.wrapT],\n      format: this.format,\n      internalFormat: this.internalFormat,\n      type: this.type,\n      colorSpace: this.colorSpace,\n      minFilter: this.minFilter,\n      magFilter: this.magFilter,\n      anisotropy: this.anisotropy,\n      flipY: this.flipY,\n      generateMipmaps: this.generateMipmaps,\n      premultiplyAlpha: this.premultiplyAlpha,\n      unpackAlignment: this.unpackAlignment\n    };\n    if (Object.keys(this.userData).length > 0) output.userData = this.userData;\n    if (!isRootObject) {\n      meta.textures[this.uuid] = output;\n    }\n    return output;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  transformUv(uv) {\n    if (this.mapping !== UVMapping) return uv;\n    uv.applyMatrix3(this.matrix);\n    if (uv.x < 0 || uv.x > 1) {\n      switch (this.wrapS) {\n        case RepeatWrapping:\n          uv.x = uv.x - Math.floor(uv.x);\n          break;\n        case ClampToEdgeWrapping:\n          uv.x = uv.x < 0 ? 0 : 1;\n          break;\n        case MirroredRepeatWrapping:\n          if (Math.abs(Math.floor(uv.x) % 2) === 1) {\n            uv.x = Math.ceil(uv.x) - uv.x;\n          } else {\n            uv.x = uv.x - Math.floor(uv.x);\n          }\n          break;\n      }\n    }\n    if (uv.y < 0 || uv.y > 1) {\n      switch (this.wrapT) {\n        case RepeatWrapping:\n          uv.y = uv.y - Math.floor(uv.y);\n          break;\n        case ClampToEdgeWrapping:\n          uv.y = uv.y < 0 ? 0 : 1;\n          break;\n        case MirroredRepeatWrapping:\n          if (Math.abs(Math.floor(uv.y) % 2) === 1) {\n            uv.y = Math.ceil(uv.y) - uv.y;\n          } else {\n            uv.y = uv.y - Math.floor(uv.y);\n          }\n          break;\n      }\n    }\n    if (this.flipY) {\n      uv.y = 1 - uv.y;\n    }\n    return uv;\n  }\n  set needsUpdate(value) {\n    if (value === true) {\n      this.version++;\n      this.source.needsUpdate = true;\n    }\n  }\n  get encoding() {\n    warnOnce(\"THREE.Texture: Property .encoding has been replaced by .colorSpace.\");\n    return this.colorSpace === SRGBColorSpace$1 ? sRGBEncoding$2 : LinearEncoding$2;\n  }\n  set encoding(encoding) {\n    warnOnce(\"THREE.Texture: Property .encoding has been replaced by .colorSpace.\");\n    this.colorSpace = encoding === sRGBEncoding$2 ? SRGBColorSpace$1 : NoColorSpace;\n  }\n}\nTexture.DEFAULT_IMAGE = null;\nTexture.DEFAULT_MAPPING = UVMapping;\nTexture.DEFAULT_ANISOTROPY = 1;\nclass Vector4 {\n  constructor(x2 = 0, y2 = 0, z2 = 0, w2 = 1) {\n    Vector4.prototype.isVector4 = true;\n    this.x = x2;\n    this.y = y2;\n    this.z = z2;\n    this.w = w2;\n  }\n  get width() {\n    return this.z;\n  }\n  set width(value) {\n    this.z = value;\n  }\n  get height() {\n    return this.w;\n  }\n  set height(value) {\n    this.w = value;\n  }\n  set(x2, y2, z2, w2) {\n    this.x = x2;\n    this.y = y2;\n    this.z = z2;\n    this.w = w2;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    this.w = scalar;\n    return this;\n  }\n  setX(x2) {\n    this.x = x2;\n    return this;\n  }\n  setY(y2) {\n    this.y = y2;\n    return this;\n  }\n  setZ(z2) {\n    this.z = z2;\n    return this;\n  }\n  setW(w2) {\n    this.w = w2;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      case 3:\n        this.w = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      case 3:\n        return this.w;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z, this.w);\n  }\n  copy(v2) {\n    this.x = v2.x;\n    this.y = v2.y;\n    this.z = v2.z;\n    this.w = v2.w !== void 0 ? v2.w : 1;\n    return this;\n  }\n  add(v2) {\n    this.x += v2.x;\n    this.y += v2.y;\n    this.z += v2.z;\n    this.w += v2.w;\n    return this;\n  }\n  addScalar(s2) {\n    this.x += s2;\n    this.y += s2;\n    this.z += s2;\n    this.w += s2;\n    return this;\n  }\n  addVectors(a2, b2) {\n    this.x = a2.x + b2.x;\n    this.y = a2.y + b2.y;\n    this.z = a2.z + b2.z;\n    this.w = a2.w + b2.w;\n    return this;\n  }\n  addScaledVector(v2, s2) {\n    this.x += v2.x * s2;\n    this.y += v2.y * s2;\n    this.z += v2.z * s2;\n    this.w += v2.w * s2;\n    return this;\n  }\n  sub(v2) {\n    this.x -= v2.x;\n    this.y -= v2.y;\n    this.z -= v2.z;\n    this.w -= v2.w;\n    return this;\n  }\n  subScalar(s2) {\n    this.x -= s2;\n    this.y -= s2;\n    this.z -= s2;\n    this.w -= s2;\n    return this;\n  }\n  subVectors(a2, b2) {\n    this.x = a2.x - b2.x;\n    this.y = a2.y - b2.y;\n    this.z = a2.z - b2.z;\n    this.w = a2.w - b2.w;\n    return this;\n  }\n  multiply(v2) {\n    this.x *= v2.x;\n    this.y *= v2.y;\n    this.z *= v2.z;\n    this.w *= v2.w;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    this.w *= scalar;\n    return this;\n  }\n  applyMatrix4(m2) {\n    const x2 = this.x, y2 = this.y, z2 = this.z, w2 = this.w;\n    const e2 = m2.elements;\n    this.x = e2[0] * x2 + e2[4] * y2 + e2[8] * z2 + e2[12] * w2;\n    this.y = e2[1] * x2 + e2[5] * y2 + e2[9] * z2 + e2[13] * w2;\n    this.z = e2[2] * x2 + e2[6] * y2 + e2[10] * z2 + e2[14] * w2;\n    this.w = e2[3] * x2 + e2[7] * y2 + e2[11] * z2 + e2[15] * w2;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  setAxisAngleFromQuaternion(q2) {\n    this.w = 2 * Math.acos(q2.w);\n    const s2 = Math.sqrt(1 - q2.w * q2.w);\n    if (s2 < 1e-4) {\n      this.x = 1;\n      this.y = 0;\n      this.z = 0;\n    } else {\n      this.x = q2.x / s2;\n      this.y = q2.y / s2;\n      this.z = q2.z / s2;\n    }\n    return this;\n  }\n  setAxisAngleFromRotationMatrix(m2) {\n    let angle, x2, y2, z2;\n    const epsilon = 0.01, epsilon2 = 0.1, te = m2.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10];\n    if (Math.abs(m12 - m21) < epsilon && Math.abs(m13 - m31) < epsilon && Math.abs(m23 - m32) < epsilon) {\n      if (Math.abs(m12 + m21) < epsilon2 && Math.abs(m13 + m31) < epsilon2 && Math.abs(m23 + m32) < epsilon2 && Math.abs(m11 + m22 + m33 - 3) < epsilon2) {\n        this.set(1, 0, 0, 0);\n        return this;\n      }\n      angle = Math.PI;\n      const xx = (m11 + 1) / 2;\n      const yy = (m22 + 1) / 2;\n      const zz = (m33 + 1) / 2;\n      const xy = (m12 + m21) / 4;\n      const xz = (m13 + m31) / 4;\n      const yz = (m23 + m32) / 4;\n      if (xx > yy && xx > zz) {\n        if (xx < epsilon) {\n          x2 = 0;\n          y2 = 0.707106781;\n          z2 = 0.707106781;\n        } else {\n          x2 = Math.sqrt(xx);\n          y2 = xy / x2;\n          z2 = xz / x2;\n        }\n      } else if (yy > zz) {\n        if (yy < epsilon) {\n          x2 = 0.707106781;\n          y2 = 0;\n          z2 = 0.707106781;\n        } else {\n          y2 = Math.sqrt(yy);\n          x2 = xy / y2;\n          z2 = yz / y2;\n        }\n      } else {\n        if (zz < epsilon) {\n          x2 = 0.707106781;\n          y2 = 0.707106781;\n          z2 = 0;\n        } else {\n          z2 = Math.sqrt(zz);\n          x2 = xz / z2;\n          y2 = yz / z2;\n        }\n      }\n      this.set(x2, y2, z2, angle);\n      return this;\n    }\n    let s2 = Math.sqrt((m32 - m23) * (m32 - m23) + (m13 - m31) * (m13 - m31) + (m21 - m12) * (m21 - m12));\n    if (Math.abs(s2) < 1e-3) s2 = 1;\n    this.x = (m32 - m23) / s2;\n    this.y = (m13 - m31) / s2;\n    this.z = (m21 - m12) / s2;\n    this.w = Math.acos((m11 + m22 + m33 - 1) / 2);\n    return this;\n  }\n  min(v2) {\n    this.x = Math.min(this.x, v2.x);\n    this.y = Math.min(this.y, v2.y);\n    this.z = Math.min(this.z, v2.z);\n    this.w = Math.min(this.w, v2.w);\n    return this;\n  }\n  max(v2) {\n    this.x = Math.max(this.x, v2.x);\n    this.y = Math.max(this.y, v2.y);\n    this.z = Math.max(this.z, v2.z);\n    this.w = Math.max(this.w, v2.w);\n    return this;\n  }\n  clamp(min, max2) {\n    this.x = Math.max(min.x, Math.min(max2.x, this.x));\n    this.y = Math.max(min.y, Math.min(max2.y, this.y));\n    this.z = Math.max(min.z, Math.min(max2.z, this.z));\n    this.w = Math.max(min.w, Math.min(max2.w, this.w));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    this.z = Math.max(minVal, Math.min(maxVal, this.z));\n    this.w = Math.max(minVal, Math.min(maxVal, this.w));\n    return this;\n  }\n  clampLength(min, max2) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    this.w = Math.floor(this.w);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    this.w = Math.ceil(this.w);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    this.w = Math.round(this.w);\n    return this;\n  }\n  roundToZero() {\n    this.x = Math.trunc(this.x);\n    this.y = Math.trunc(this.y);\n    this.z = Math.trunc(this.z);\n    this.w = Math.trunc(this.w);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    this.w = -this.w;\n    return this;\n  }\n  dot(v2) {\n    return this.x * v2.x + this.y * v2.y + this.z * v2.z + this.w * v2.w;\n  }\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z) + Math.abs(this.w);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v2, alpha) {\n    this.x += (v2.x - this.x) * alpha;\n    this.y += (v2.y - this.y) * alpha;\n    this.z += (v2.z - this.z) * alpha;\n    this.w += (v2.w - this.w) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    this.w = v1.w + (v2.w - v1.w) * alpha;\n    return this;\n  }\n  equals(v2) {\n    return v2.x === this.x && v2.y === this.y && v2.z === this.z && v2.w === this.w;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    this.w = array[offset + 3];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    array[offset + 3] = this.w;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    this.z = attribute.getZ(index);\n    this.w = attribute.getW(index);\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    this.w = Math.random();\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n    yield this.w;\n  }\n}\nclass RenderTarget extends EventDispatcher {\n  constructor(width = 1, height = 1, options = {}) {\n    super();\n    this.isRenderTarget = true;\n    this.width = width;\n    this.height = height;\n    this.depth = 1;\n    this.scissor = new Vector4(0, 0, width, height);\n    this.scissorTest = false;\n    this.viewport = new Vector4(0, 0, width, height);\n    const image = { width, height, depth: 1 };\n    if (options.encoding !== void 0) {\n      warnOnce(\"THREE.WebGLRenderTarget: option.encoding has been replaced by option.colorSpace.\");\n      options.colorSpace = options.encoding === sRGBEncoding$2 ? SRGBColorSpace$1 : NoColorSpace;\n    }\n    options = Object.assign({\n      generateMipmaps: false,\n      internalFormat: null,\n      minFilter: LinearFilter,\n      depthBuffer: true,\n      stencilBuffer: false,\n      depthTexture: null,\n      samples: 0\n    }, options);\n    this.texture = new Texture(image, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace);\n    this.texture.isRenderTargetTexture = true;\n    this.texture.flipY = false;\n    this.texture.generateMipmaps = options.generateMipmaps;\n    this.texture.internalFormat = options.internalFormat;\n    this.depthBuffer = options.depthBuffer;\n    this.stencilBuffer = options.stencilBuffer;\n    this.depthTexture = options.depthTexture;\n    this.samples = options.samples;\n  }\n  setSize(width, height, depth = 1) {\n    if (this.width !== width || this.height !== height || this.depth !== depth) {\n      this.width = width;\n      this.height = height;\n      this.depth = depth;\n      this.texture.image.width = width;\n      this.texture.image.height = height;\n      this.texture.image.depth = depth;\n      this.dispose();\n    }\n    this.viewport.set(0, 0, width, height);\n    this.scissor.set(0, 0, width, height);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.width = source.width;\n    this.height = source.height;\n    this.depth = source.depth;\n    this.scissor.copy(source.scissor);\n    this.scissorTest = source.scissorTest;\n    this.viewport.copy(source.viewport);\n    this.texture = source.texture.clone();\n    this.texture.isRenderTargetTexture = true;\n    const image = Object.assign({}, source.texture.image);\n    this.texture.source = new Source(image);\n    this.depthBuffer = source.depthBuffer;\n    this.stencilBuffer = source.stencilBuffer;\n    if (source.depthTexture !== null) this.depthTexture = source.depthTexture.clone();\n    this.samples = source.samples;\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nclass WebGLRenderTarget extends RenderTarget {\n  constructor(width = 1, height = 1, options = {}) {\n    super(width, height, options);\n    this.isWebGLRenderTarget = true;\n  }\n}\nclass DataArrayTexture extends Texture {\n  constructor(data = null, width = 1, height = 1, depth = 1) {\n    super(null);\n    this.isDataArrayTexture = true;\n    this.image = { data, width, height, depth };\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.wrapR = ClampToEdgeWrapping;\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n}\nclass WebGLArrayRenderTarget extends WebGLRenderTarget {\n  constructor(width = 1, height = 1, depth = 1, options = {}) {\n    super(width, height, options);\n    this.isWebGLArrayRenderTarget = true;\n    this.depth = depth;\n    this.texture = new DataArrayTexture(null, width, height, depth);\n    this.texture.isRenderTargetTexture = true;\n  }\n}\nclass Data3DTexture extends Texture {\n  constructor(data = null, width = 1, height = 1, depth = 1) {\n    super(null);\n    this.isData3DTexture = true;\n    this.image = { data, width, height, depth };\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.wrapR = ClampToEdgeWrapping;\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n}\nclass WebGL3DRenderTarget extends WebGLRenderTarget {\n  constructor(width = 1, height = 1, depth = 1, options = {}) {\n    super(width, height, options);\n    this.isWebGL3DRenderTarget = true;\n    this.depth = depth;\n    this.texture = new Data3DTexture(null, width, height, depth);\n    this.texture.isRenderTargetTexture = true;\n  }\n}\nclass WebGLMultipleRenderTargets extends WebGLRenderTarget {\n  constructor(width = 1, height = 1, count = 1, options = {}) {\n    super(width, height, options);\n    this.isWebGLMultipleRenderTargets = true;\n    const texture = this.texture;\n    this.texture = [];\n    for (let i2 = 0; i2 < count; i2++) {\n      this.texture[i2] = texture.clone();\n      this.texture[i2].isRenderTargetTexture = true;\n    }\n  }\n  setSize(width, height, depth = 1) {\n    if (this.width !== width || this.height !== height || this.depth !== depth) {\n      this.width = width;\n      this.height = height;\n      this.depth = depth;\n      for (let i2 = 0, il = this.texture.length; i2 < il; i2++) {\n        this.texture[i2].image.width = width;\n        this.texture[i2].image.height = height;\n        this.texture[i2].image.depth = depth;\n      }\n      this.dispose();\n    }\n    this.viewport.set(0, 0, width, height);\n    this.scissor.set(0, 0, width, height);\n  }\n  copy(source) {\n    this.dispose();\n    this.width = source.width;\n    this.height = source.height;\n    this.depth = source.depth;\n    this.scissor.copy(source.scissor);\n    this.scissorTest = source.scissorTest;\n    this.viewport.copy(source.viewport);\n    this.depthBuffer = source.depthBuffer;\n    this.stencilBuffer = source.stencilBuffer;\n    if (source.depthTexture !== null) this.depthTexture = source.depthTexture.clone();\n    this.texture.length = 0;\n    for (let i2 = 0, il = source.texture.length; i2 < il; i2++) {\n      this.texture[i2] = source.texture[i2].clone();\n      this.texture[i2].isRenderTargetTexture = true;\n    }\n    return this;\n  }\n}\nclass Quaternion {\n  constructor(x2 = 0, y2 = 0, z2 = 0, w2 = 1) {\n    this.isQuaternion = true;\n    this._x = x2;\n    this._y = y2;\n    this._z = z2;\n    this._w = w2;\n  }\n  static slerpFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t2) {\n    let x0 = src0[srcOffset0 + 0], y0 = src0[srcOffset0 + 1], z0 = src0[srcOffset0 + 2], w0 = src0[srcOffset0 + 3];\n    const x1 = src1[srcOffset1 + 0], y1 = src1[srcOffset1 + 1], z1 = src1[srcOffset1 + 2], w1 = src1[srcOffset1 + 3];\n    if (t2 === 0) {\n      dst[dstOffset + 0] = x0;\n      dst[dstOffset + 1] = y0;\n      dst[dstOffset + 2] = z0;\n      dst[dstOffset + 3] = w0;\n      return;\n    }\n    if (t2 === 1) {\n      dst[dstOffset + 0] = x1;\n      dst[dstOffset + 1] = y1;\n      dst[dstOffset + 2] = z1;\n      dst[dstOffset + 3] = w1;\n      return;\n    }\n    if (w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1) {\n      let s2 = 1 - t2;\n      const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1, dir = cos >= 0 ? 1 : -1, sqrSin = 1 - cos * cos;\n      if (sqrSin > Number.EPSILON) {\n        const sin = Math.sqrt(sqrSin), len = Math.atan2(sin, cos * dir);\n        s2 = Math.sin(s2 * len) / sin;\n        t2 = Math.sin(t2 * len) / sin;\n      }\n      const tDir = t2 * dir;\n      x0 = x0 * s2 + x1 * tDir;\n      y0 = y0 * s2 + y1 * tDir;\n      z0 = z0 * s2 + z1 * tDir;\n      w0 = w0 * s2 + w1 * tDir;\n      if (s2 === 1 - t2) {\n        const f2 = 1 / Math.sqrt(x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0);\n        x0 *= f2;\n        y0 *= f2;\n        z0 *= f2;\n        w0 *= f2;\n      }\n    }\n    dst[dstOffset] = x0;\n    dst[dstOffset + 1] = y0;\n    dst[dstOffset + 2] = z0;\n    dst[dstOffset + 3] = w0;\n  }\n  static multiplyQuaternionsFlat(dst, dstOffset, src0, srcOffset0, src1, srcOffset1) {\n    const x0 = src0[srcOffset0];\n    const y0 = src0[srcOffset0 + 1];\n    const z0 = src0[srcOffset0 + 2];\n    const w0 = src0[srcOffset0 + 3];\n    const x1 = src1[srcOffset1];\n    const y1 = src1[srcOffset1 + 1];\n    const z1 = src1[srcOffset1 + 2];\n    const w1 = src1[srcOffset1 + 3];\n    dst[dstOffset] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\n    dst[dstOffset + 1] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\n    dst[dstOffset + 2] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\n    dst[dstOffset + 3] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\n    return dst;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(value) {\n    this._x = value;\n    this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(value) {\n    this._y = value;\n    this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(value) {\n    this._z = value;\n    this._onChangeCallback();\n  }\n  get w() {\n    return this._w;\n  }\n  set w(value) {\n    this._w = value;\n    this._onChangeCallback();\n  }\n  set(x2, y2, z2, w2) {\n    this._x = x2;\n    this._y = y2;\n    this._z = z2;\n    this._w = w2;\n    this._onChangeCallback();\n    return this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._w);\n  }\n  copy(quaternion) {\n    this._x = quaternion.x;\n    this._y = quaternion.y;\n    this._z = quaternion.z;\n    this._w = quaternion.w;\n    this._onChangeCallback();\n    return this;\n  }\n  setFromEuler(euler, update = true) {\n    const x2 = euler._x, y2 = euler._y, z2 = euler._z, order = euler._order;\n    const cos = Math.cos;\n    const sin = Math.sin;\n    const c1 = cos(x2 / 2);\n    const c2 = cos(y2 / 2);\n    const c3 = cos(z2 / 2);\n    const s1 = sin(x2 / 2);\n    const s2 = sin(y2 / 2);\n    const s3 = sin(z2 / 2);\n    switch (order) {\n      case \"XYZ\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"YXZ\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      case \"ZXY\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"ZYX\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      case \"YZX\":\n        this._x = s1 * c2 * c3 + c1 * s2 * s3;\n        this._y = c1 * s2 * c3 + s1 * c2 * s3;\n        this._z = c1 * c2 * s3 - s1 * s2 * c3;\n        this._w = c1 * c2 * c3 - s1 * s2 * s3;\n        break;\n      case \"XZY\":\n        this._x = s1 * c2 * c3 - c1 * s2 * s3;\n        this._y = c1 * s2 * c3 - s1 * c2 * s3;\n        this._z = c1 * c2 * s3 + s1 * s2 * c3;\n        this._w = c1 * c2 * c3 + s1 * s2 * s3;\n        break;\n      default:\n        console.warn(\"THREE.Quaternion: .setFromEuler() encountered an unknown order: \" + order);\n    }\n    if (update === true) this._onChangeCallback();\n    return this;\n  }\n  setFromAxisAngle(axis, angle) {\n    const halfAngle = angle / 2, s2 = Math.sin(halfAngle);\n    this._x = axis.x * s2;\n    this._y = axis.y * s2;\n    this._z = axis.z * s2;\n    this._w = Math.cos(halfAngle);\n    this._onChangeCallback();\n    return this;\n  }\n  setFromRotationMatrix(m2) {\n    const te = m2.elements, m11 = te[0], m12 = te[4], m13 = te[8], m21 = te[1], m22 = te[5], m23 = te[9], m31 = te[2], m32 = te[6], m33 = te[10], trace = m11 + m22 + m33;\n    if (trace > 0) {\n      const s2 = 0.5 / Math.sqrt(trace + 1);\n      this._w = 0.25 / s2;\n      this._x = (m32 - m23) * s2;\n      this._y = (m13 - m31) * s2;\n      this._z = (m21 - m12) * s2;\n    } else if (m11 > m22 && m11 > m33) {\n      const s2 = 2 * Math.sqrt(1 + m11 - m22 - m33);\n      this._w = (m32 - m23) / s2;\n      this._x = 0.25 * s2;\n      this._y = (m12 + m21) / s2;\n      this._z = (m13 + m31) / s2;\n    } else if (m22 > m33) {\n      const s2 = 2 * Math.sqrt(1 + m22 - m11 - m33);\n      this._w = (m13 - m31) / s2;\n      this._x = (m12 + m21) / s2;\n      this._y = 0.25 * s2;\n      this._z = (m23 + m32) / s2;\n    } else {\n      const s2 = 2 * Math.sqrt(1 + m33 - m11 - m22);\n      this._w = (m21 - m12) / s2;\n      this._x = (m13 + m31) / s2;\n      this._y = (m23 + m32) / s2;\n      this._z = 0.25 * s2;\n    }\n    this._onChangeCallback();\n    return this;\n  }\n  setFromUnitVectors(vFrom, vTo) {\n    let r2 = vFrom.dot(vTo) + 1;\n    if (r2 < Number.EPSILON) {\n      r2 = 0;\n      if (Math.abs(vFrom.x) > Math.abs(vFrom.z)) {\n        this._x = -vFrom.y;\n        this._y = vFrom.x;\n        this._z = 0;\n        this._w = r2;\n      } else {\n        this._x = 0;\n        this._y = -vFrom.z;\n        this._z = vFrom.y;\n        this._w = r2;\n      }\n    } else {\n      this._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\n      this._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\n      this._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\n      this._w = r2;\n    }\n    return this.normalize();\n  }\n  angleTo(q2) {\n    return 2 * Math.acos(Math.abs(clamp(this.dot(q2), -1, 1)));\n  }\n  rotateTowards(q2, step) {\n    const angle = this.angleTo(q2);\n    if (angle === 0) return this;\n    const t2 = Math.min(1, step / angle);\n    this.slerp(q2, t2);\n    return this;\n  }\n  identity() {\n    return this.set(0, 0, 0, 1);\n  }\n  invert() {\n    return this.conjugate();\n  }\n  conjugate() {\n    this._x *= -1;\n    this._y *= -1;\n    this._z *= -1;\n    this._onChangeCallback();\n    return this;\n  }\n  dot(v2) {\n    return this._x * v2._x + this._y * v2._y + this._z * v2._z + this._w * v2._w;\n  }\n  lengthSq() {\n    return this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\n  }\n  length() {\n    return Math.sqrt(this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w);\n  }\n  normalize() {\n    let l2 = this.length();\n    if (l2 === 0) {\n      this._x = 0;\n      this._y = 0;\n      this._z = 0;\n      this._w = 1;\n    } else {\n      l2 = 1 / l2;\n      this._x = this._x * l2;\n      this._y = this._y * l2;\n      this._z = this._z * l2;\n      this._w = this._w * l2;\n    }\n    this._onChangeCallback();\n    return this;\n  }\n  multiply(q2) {\n    return this.multiplyQuaternions(this, q2);\n  }\n  premultiply(q2) {\n    return this.multiplyQuaternions(q2, this);\n  }\n  multiplyQuaternions(a2, b2) {\n    const qax = a2._x, qay = a2._y, qaz = a2._z, qaw = a2._w;\n    const qbx = b2._x, qby = b2._y, qbz = b2._z, qbw = b2._w;\n    this._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\n    this._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\n    this._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\n    this._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\n    this._onChangeCallback();\n    return this;\n  }\n  slerp(qb, t2) {\n    if (t2 === 0) return this;\n    if (t2 === 1) return this.copy(qb);\n    const x2 = this._x, y2 = this._y, z2 = this._z, w2 = this._w;\n    let cosHalfTheta = w2 * qb._w + x2 * qb._x + y2 * qb._y + z2 * qb._z;\n    if (cosHalfTheta < 0) {\n      this._w = -qb._w;\n      this._x = -qb._x;\n      this._y = -qb._y;\n      this._z = -qb._z;\n      cosHalfTheta = -cosHalfTheta;\n    } else {\n      this.copy(qb);\n    }\n    if (cosHalfTheta >= 1) {\n      this._w = w2;\n      this._x = x2;\n      this._y = y2;\n      this._z = z2;\n      return this;\n    }\n    const sqrSinHalfTheta = 1 - cosHalfTheta * cosHalfTheta;\n    if (sqrSinHalfTheta <= Number.EPSILON) {\n      const s2 = 1 - t2;\n      this._w = s2 * w2 + t2 * this._w;\n      this._x = s2 * x2 + t2 * this._x;\n      this._y = s2 * y2 + t2 * this._y;\n      this._z = s2 * z2 + t2 * this._z;\n      this.normalize();\n      return this;\n    }\n    const sinHalfTheta = Math.sqrt(sqrSinHalfTheta);\n    const halfTheta = Math.atan2(sinHalfTheta, cosHalfTheta);\n    const ratioA = Math.sin((1 - t2) * halfTheta) / sinHalfTheta, ratioB = Math.sin(t2 * halfTheta) / sinHalfTheta;\n    this._w = w2 * ratioA + this._w * ratioB;\n    this._x = x2 * ratioA + this._x * ratioB;\n    this._y = y2 * ratioA + this._y * ratioB;\n    this._z = z2 * ratioA + this._z * ratioB;\n    this._onChangeCallback();\n    return this;\n  }\n  slerpQuaternions(qa, qb, t2) {\n    return this.copy(qa).slerp(qb, t2);\n  }\n  random() {\n    const u1 = Math.random();\n    const sqrt1u1 = Math.sqrt(1 - u1);\n    const sqrtu1 = Math.sqrt(u1);\n    const u2 = 2 * Math.PI * Math.random();\n    const u3 = 2 * Math.PI * Math.random();\n    return this.set(\n      sqrt1u1 * Math.cos(u2),\n      sqrtu1 * Math.sin(u3),\n      sqrtu1 * Math.cos(u3),\n      sqrt1u1 * Math.sin(u2)\n    );\n  }\n  equals(quaternion) {\n    return quaternion._x === this._x && quaternion._y === this._y && quaternion._z === this._z && quaternion._w === this._w;\n  }\n  fromArray(array, offset = 0) {\n    this._x = array[offset];\n    this._y = array[offset + 1];\n    this._z = array[offset + 2];\n    this._w = array[offset + 3];\n    this._onChangeCallback();\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this._x;\n    array[offset + 1] = this._y;\n    array[offset + 2] = this._z;\n    array[offset + 3] = this._w;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this._x = attribute.getX(index);\n    this._y = attribute.getY(index);\n    this._z = attribute.getZ(index);\n    this._w = attribute.getW(index);\n    this._onChangeCallback();\n    return this;\n  }\n  toJSON() {\n    return this.toArray();\n  }\n  _onChange(callback) {\n    this._onChangeCallback = callback;\n    return this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x;\n    yield this._y;\n    yield this._z;\n    yield this._w;\n  }\n}\nclass Vector3 {\n  constructor(x2 = 0, y2 = 0, z2 = 0) {\n    Vector3.prototype.isVector3 = true;\n    this.x = x2;\n    this.y = y2;\n    this.z = z2;\n  }\n  set(x2, y2, z2) {\n    if (z2 === void 0) z2 = this.z;\n    this.x = x2;\n    this.y = y2;\n    this.z = z2;\n    return this;\n  }\n  setScalar(scalar) {\n    this.x = scalar;\n    this.y = scalar;\n    this.z = scalar;\n    return this;\n  }\n  setX(x2) {\n    this.x = x2;\n    return this;\n  }\n  setY(y2) {\n    this.y = y2;\n    return this;\n  }\n  setZ(z2) {\n    this.z = z2;\n    return this;\n  }\n  setComponent(index, value) {\n    switch (index) {\n      case 0:\n        this.x = value;\n        break;\n      case 1:\n        this.y = value;\n        break;\n      case 2:\n        this.z = value;\n        break;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n    return this;\n  }\n  getComponent(index) {\n    switch (index) {\n      case 0:\n        return this.x;\n      case 1:\n        return this.y;\n      case 2:\n        return this.z;\n      default:\n        throw new Error(\"index is out of range: \" + index);\n    }\n  }\n  clone() {\n    return new this.constructor(this.x, this.y, this.z);\n  }\n  copy(v2) {\n    this.x = v2.x;\n    this.y = v2.y;\n    this.z = v2.z;\n    return this;\n  }\n  add(v2) {\n    this.x += v2.x;\n    this.y += v2.y;\n    this.z += v2.z;\n    return this;\n  }\n  addScalar(s2) {\n    this.x += s2;\n    this.y += s2;\n    this.z += s2;\n    return this;\n  }\n  addVectors(a2, b2) {\n    this.x = a2.x + b2.x;\n    this.y = a2.y + b2.y;\n    this.z = a2.z + b2.z;\n    return this;\n  }\n  addScaledVector(v2, s2) {\n    this.x += v2.x * s2;\n    this.y += v2.y * s2;\n    this.z += v2.z * s2;\n    return this;\n  }\n  sub(v2) {\n    this.x -= v2.x;\n    this.y -= v2.y;\n    this.z -= v2.z;\n    return this;\n  }\n  subScalar(s2) {\n    this.x -= s2;\n    this.y -= s2;\n    this.z -= s2;\n    return this;\n  }\n  subVectors(a2, b2) {\n    this.x = a2.x - b2.x;\n    this.y = a2.y - b2.y;\n    this.z = a2.z - b2.z;\n    return this;\n  }\n  multiply(v2) {\n    this.x *= v2.x;\n    this.y *= v2.y;\n    this.z *= v2.z;\n    return this;\n  }\n  multiplyScalar(scalar) {\n    this.x *= scalar;\n    this.y *= scalar;\n    this.z *= scalar;\n    return this;\n  }\n  multiplyVectors(a2, b2) {\n    this.x = a2.x * b2.x;\n    this.y = a2.y * b2.y;\n    this.z = a2.z * b2.z;\n    return this;\n  }\n  applyEuler(euler) {\n    return this.applyQuaternion(_quaternion$4.setFromEuler(euler));\n  }\n  applyAxisAngle(axis, angle) {\n    return this.applyQuaternion(_quaternion$4.setFromAxisAngle(axis, angle));\n  }\n  applyMatrix3(m2) {\n    const x2 = this.x, y2 = this.y, z2 = this.z;\n    const e2 = m2.elements;\n    this.x = e2[0] * x2 + e2[3] * y2 + e2[6] * z2;\n    this.y = e2[1] * x2 + e2[4] * y2 + e2[7] * z2;\n    this.z = e2[2] * x2 + e2[5] * y2 + e2[8] * z2;\n    return this;\n  }\n  applyNormalMatrix(m2) {\n    return this.applyMatrix3(m2).normalize();\n  }\n  applyMatrix4(m2) {\n    const x2 = this.x, y2 = this.y, z2 = this.z;\n    const e2 = m2.elements;\n    const w2 = 1 / (e2[3] * x2 + e2[7] * y2 + e2[11] * z2 + e2[15]);\n    this.x = (e2[0] * x2 + e2[4] * y2 + e2[8] * z2 + e2[12]) * w2;\n    this.y = (e2[1] * x2 + e2[5] * y2 + e2[9] * z2 + e2[13]) * w2;\n    this.z = (e2[2] * x2 + e2[6] * y2 + e2[10] * z2 + e2[14]) * w2;\n    return this;\n  }\n  applyQuaternion(q2) {\n    const vx = this.x, vy = this.y, vz = this.z;\n    const qx = q2.x, qy = q2.y, qz = q2.z, qw = q2.w;\n    const tx = 2 * (qy * vz - qz * vy);\n    const ty = 2 * (qz * vx - qx * vz);\n    const tz = 2 * (qx * vy - qy * vx);\n    this.x = vx + qw * tx + qy * tz - qz * ty;\n    this.y = vy + qw * ty + qz * tx - qx * tz;\n    this.z = vz + qw * tz + qx * ty - qy * tx;\n    return this;\n  }\n  project(camera) {\n    return this.applyMatrix4(camera.matrixWorldInverse).applyMatrix4(camera.projectionMatrix);\n  }\n  unproject(camera) {\n    return this.applyMatrix4(camera.projectionMatrixInverse).applyMatrix4(camera.matrixWorld);\n  }\n  transformDirection(m2) {\n    const x2 = this.x, y2 = this.y, z2 = this.z;\n    const e2 = m2.elements;\n    this.x = e2[0] * x2 + e2[4] * y2 + e2[8] * z2;\n    this.y = e2[1] * x2 + e2[5] * y2 + e2[9] * z2;\n    this.z = e2[2] * x2 + e2[6] * y2 + e2[10] * z2;\n    return this.normalize();\n  }\n  divide(v2) {\n    this.x /= v2.x;\n    this.y /= v2.y;\n    this.z /= v2.z;\n    return this;\n  }\n  divideScalar(scalar) {\n    return this.multiplyScalar(1 / scalar);\n  }\n  min(v2) {\n    this.x = Math.min(this.x, v2.x);\n    this.y = Math.min(this.y, v2.y);\n    this.z = Math.min(this.z, v2.z);\n    return this;\n  }\n  max(v2) {\n    this.x = Math.max(this.x, v2.x);\n    this.y = Math.max(this.y, v2.y);\n    this.z = Math.max(this.z, v2.z);\n    return this;\n  }\n  clamp(min, max2) {\n    this.x = Math.max(min.x, Math.min(max2.x, this.x));\n    this.y = Math.max(min.y, Math.min(max2.y, this.y));\n    this.z = Math.max(min.z, Math.min(max2.z, this.z));\n    return this;\n  }\n  clampScalar(minVal, maxVal) {\n    this.x = Math.max(minVal, Math.min(maxVal, this.x));\n    this.y = Math.max(minVal, Math.min(maxVal, this.y));\n    this.z = Math.max(minVal, Math.min(maxVal, this.z));\n    return this;\n  }\n  clampLength(min, max2) {\n    const length = this.length();\n    return this.divideScalar(length || 1).multiplyScalar(Math.max(min, Math.min(max2, length)));\n  }\n  floor() {\n    this.x = Math.floor(this.x);\n    this.y = Math.floor(this.y);\n    this.z = Math.floor(this.z);\n    return this;\n  }\n  ceil() {\n    this.x = Math.ceil(this.x);\n    this.y = Math.ceil(this.y);\n    this.z = Math.ceil(this.z);\n    return this;\n  }\n  round() {\n    this.x = Math.round(this.x);\n    this.y = Math.round(this.y);\n    this.z = Math.round(this.z);\n    return this;\n  }\n  roundToZero() {\n    this.x = Math.trunc(this.x);\n    this.y = Math.trunc(this.y);\n    this.z = Math.trunc(this.z);\n    return this;\n  }\n  negate() {\n    this.x = -this.x;\n    this.y = -this.y;\n    this.z = -this.z;\n    return this;\n  }\n  dot(v2) {\n    return this.x * v2.x + this.y * v2.y + this.z * v2.z;\n  }\n  // TODO lengthSquared?\n  lengthSq() {\n    return this.x * this.x + this.y * this.y + this.z * this.z;\n  }\n  length() {\n    return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n  }\n  manhattanLength() {\n    return Math.abs(this.x) + Math.abs(this.y) + Math.abs(this.z);\n  }\n  normalize() {\n    return this.divideScalar(this.length() || 1);\n  }\n  setLength(length) {\n    return this.normalize().multiplyScalar(length);\n  }\n  lerp(v2, alpha) {\n    this.x += (v2.x - this.x) * alpha;\n    this.y += (v2.y - this.y) * alpha;\n    this.z += (v2.z - this.z) * alpha;\n    return this;\n  }\n  lerpVectors(v1, v2, alpha) {\n    this.x = v1.x + (v2.x - v1.x) * alpha;\n    this.y = v1.y + (v2.y - v1.y) * alpha;\n    this.z = v1.z + (v2.z - v1.z) * alpha;\n    return this;\n  }\n  cross(v2) {\n    return this.crossVectors(this, v2);\n  }\n  crossVectors(a2, b2) {\n    const ax = a2.x, ay = a2.y, az = a2.z;\n    const bx = b2.x, by = b2.y, bz = b2.z;\n    this.x = ay * bz - az * by;\n    this.y = az * bx - ax * bz;\n    this.z = ax * by - ay * bx;\n    return this;\n  }\n  projectOnVector(v2) {\n    const denominator = v2.lengthSq();\n    if (denominator === 0) return this.set(0, 0, 0);\n    const scalar = v2.dot(this) / denominator;\n    return this.copy(v2).multiplyScalar(scalar);\n  }\n  projectOnPlane(planeNormal) {\n    _vector$c.copy(this).projectOnVector(planeNormal);\n    return this.sub(_vector$c);\n  }\n  reflect(normal) {\n    return this.sub(_vector$c.copy(normal).multiplyScalar(2 * this.dot(normal)));\n  }\n  angleTo(v2) {\n    const denominator = Math.sqrt(this.lengthSq() * v2.lengthSq());\n    if (denominator === 0) return Math.PI / 2;\n    const theta = this.dot(v2) / denominator;\n    return Math.acos(clamp(theta, -1, 1));\n  }\n  distanceTo(v2) {\n    return Math.sqrt(this.distanceToSquared(v2));\n  }\n  distanceToSquared(v2) {\n    const dx = this.x - v2.x, dy = this.y - v2.y, dz = this.z - v2.z;\n    return dx * dx + dy * dy + dz * dz;\n  }\n  manhattanDistanceTo(v2) {\n    return Math.abs(this.x - v2.x) + Math.abs(this.y - v2.y) + Math.abs(this.z - v2.z);\n  }\n  setFromSpherical(s2) {\n    return this.setFromSphericalCoords(s2.radius, s2.phi, s2.theta);\n  }\n  setFromSphericalCoords(radius, phi, theta) {\n    const sinPhiRadius = Math.sin(phi) * radius;\n    this.x = sinPhiRadius * Math.sin(theta);\n    this.y = Math.cos(phi) * radius;\n    this.z = sinPhiRadius * Math.cos(theta);\n    return this;\n  }\n  setFromCylindrical(c2) {\n    return this.setFromCylindricalCoords(c2.radius, c2.theta, c2.y);\n  }\n  setFromCylindricalCoords(radius, theta, y2) {\n    this.x = radius * Math.sin(theta);\n    this.y = y2;\n    this.z = radius * Math.cos(theta);\n    return this;\n  }\n  setFromMatrixPosition(m2) {\n    const e2 = m2.elements;\n    this.x = e2[12];\n    this.y = e2[13];\n    this.z = e2[14];\n    return this;\n  }\n  setFromMatrixScale(m2) {\n    const sx = this.setFromMatrixColumn(m2, 0).length();\n    const sy = this.setFromMatrixColumn(m2, 1).length();\n    const sz = this.setFromMatrixColumn(m2, 2).length();\n    this.x = sx;\n    this.y = sy;\n    this.z = sz;\n    return this;\n  }\n  setFromMatrixColumn(m2, index) {\n    return this.fromArray(m2.elements, index * 4);\n  }\n  setFromMatrix3Column(m2, index) {\n    return this.fromArray(m2.elements, index * 3);\n  }\n  setFromEuler(e2) {\n    this.x = e2._x;\n    this.y = e2._y;\n    this.z = e2._z;\n    return this;\n  }\n  setFromColor(c2) {\n    this.x = c2.r;\n    this.y = c2.g;\n    this.z = c2.b;\n    return this;\n  }\n  equals(v2) {\n    return v2.x === this.x && v2.y === this.y && v2.z === this.z;\n  }\n  fromArray(array, offset = 0) {\n    this.x = array[offset];\n    this.y = array[offset + 1];\n    this.z = array[offset + 2];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.x;\n    array[offset + 1] = this.y;\n    array[offset + 2] = this.z;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.x = attribute.getX(index);\n    this.y = attribute.getY(index);\n    this.z = attribute.getZ(index);\n    return this;\n  }\n  random() {\n    this.x = Math.random();\n    this.y = Math.random();\n    this.z = Math.random();\n    return this;\n  }\n  randomDirection() {\n    const u2 = (Math.random() - 0.5) * 2;\n    const t2 = Math.random() * Math.PI * 2;\n    const f2 = Math.sqrt(1 - u2 ** 2);\n    this.x = f2 * Math.cos(t2);\n    this.y = f2 * Math.sin(t2);\n    this.z = u2;\n    return this;\n  }\n  *[Symbol.iterator]() {\n    yield this.x;\n    yield this.y;\n    yield this.z;\n  }\n}\nconst _vector$c = /* @__PURE__ */ new Vector3();\nconst _quaternion$4 = /* @__PURE__ */ new Quaternion();\nclass Box3 {\n  constructor(min = new Vector3(Infinity, Infinity, Infinity), max2 = new Vector3(-Infinity, -Infinity, -Infinity)) {\n    this.isBox3 = true;\n    this.min = min;\n    this.max = max2;\n  }\n  set(min, max2) {\n    this.min.copy(min);\n    this.max.copy(max2);\n    return this;\n  }\n  setFromArray(array) {\n    this.makeEmpty();\n    for (let i2 = 0, il = array.length; i2 < il; i2 += 3) {\n      this.expandByPoint(_vector$b.fromArray(array, i2));\n    }\n    return this;\n  }\n  setFromBufferAttribute(attribute) {\n    this.makeEmpty();\n    for (let i2 = 0, il = attribute.count; i2 < il; i2++) {\n      this.expandByPoint(_vector$b.fromBufferAttribute(attribute, i2));\n    }\n    return this;\n  }\n  setFromPoints(points) {\n    this.makeEmpty();\n    for (let i2 = 0, il = points.length; i2 < il; i2++) {\n      this.expandByPoint(points[i2]);\n    }\n    return this;\n  }\n  setFromCenterAndSize(center, size) {\n    const halfSize = _vector$b.copy(size).multiplyScalar(0.5);\n    this.min.copy(center).sub(halfSize);\n    this.max.copy(center).add(halfSize);\n    return this;\n  }\n  setFromObject(object, precise = false) {\n    this.makeEmpty();\n    return this.expandByObject(object, precise);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(box) {\n    this.min.copy(box.min);\n    this.max.copy(box.max);\n    return this;\n  }\n  makeEmpty() {\n    this.min.x = this.min.y = this.min.z = Infinity;\n    this.max.x = this.max.y = this.max.z = -Infinity;\n    return this;\n  }\n  isEmpty() {\n    return this.max.x < this.min.x || this.max.y < this.min.y || this.max.z < this.min.z;\n  }\n  getCenter(target) {\n    return this.isEmpty() ? target.set(0, 0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(target) {\n    return this.isEmpty() ? target.set(0, 0, 0) : target.subVectors(this.max, this.min);\n  }\n  expandByPoint(point) {\n    this.min.min(point);\n    this.max.max(point);\n    return this;\n  }\n  expandByVector(vector) {\n    this.min.sub(vector);\n    this.max.add(vector);\n    return this;\n  }\n  expandByScalar(scalar) {\n    this.min.addScalar(-scalar);\n    this.max.addScalar(scalar);\n    return this;\n  }\n  expandByObject(object, precise = false) {\n    object.updateWorldMatrix(false, false);\n    const geometry = object.geometry;\n    if (geometry !== void 0) {\n      const positionAttribute = geometry.getAttribute(\"position\");\n      if (precise === true && positionAttribute !== void 0 && object.isInstancedMesh !== true) {\n        for (let i2 = 0, l2 = positionAttribute.count; i2 < l2; i2++) {\n          if (object.isMesh === true) {\n            object.getVertexPosition(i2, _vector$b);\n          } else {\n            _vector$b.fromBufferAttribute(positionAttribute, i2);\n          }\n          _vector$b.applyMatrix4(object.matrixWorld);\n          this.expandByPoint(_vector$b);\n        }\n      } else {\n        if (object.boundingBox !== void 0) {\n          if (object.boundingBox === null) {\n            object.computeBoundingBox();\n          }\n          _box$4.copy(object.boundingBox);\n        } else {\n          if (geometry.boundingBox === null) {\n            geometry.computeBoundingBox();\n          }\n          _box$4.copy(geometry.boundingBox);\n        }\n        _box$4.applyMatrix4(object.matrixWorld);\n        this.union(_box$4);\n      }\n    }\n    const children = object.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      this.expandByObject(children[i2], precise);\n    }\n    return this;\n  }\n  containsPoint(point) {\n    return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y || point.z < this.min.z || point.z > this.max.z ? false : true;\n  }\n  containsBox(box) {\n    return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y && this.min.z <= box.min.z && box.max.z <= this.max.z;\n  }\n  getParameter(point, target) {\n    return target.set(\n      (point.x - this.min.x) / (this.max.x - this.min.x),\n      (point.y - this.min.y) / (this.max.y - this.min.y),\n      (point.z - this.min.z) / (this.max.z - this.min.z)\n    );\n  }\n  intersectsBox(box) {\n    return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y || box.max.z < this.min.z || box.min.z > this.max.z ? false : true;\n  }\n  intersectsSphere(sphere) {\n    this.clampPoint(sphere.center, _vector$b);\n    return _vector$b.distanceToSquared(sphere.center) <= sphere.radius * sphere.radius;\n  }\n  intersectsPlane(plane) {\n    let min, max2;\n    if (plane.normal.x > 0) {\n      min = plane.normal.x * this.min.x;\n      max2 = plane.normal.x * this.max.x;\n    } else {\n      min = plane.normal.x * this.max.x;\n      max2 = plane.normal.x * this.min.x;\n    }\n    if (plane.normal.y > 0) {\n      min += plane.normal.y * this.min.y;\n      max2 += plane.normal.y * this.max.y;\n    } else {\n      min += plane.normal.y * this.max.y;\n      max2 += plane.normal.y * this.min.y;\n    }\n    if (plane.normal.z > 0) {\n      min += plane.normal.z * this.min.z;\n      max2 += plane.normal.z * this.max.z;\n    } else {\n      min += plane.normal.z * this.max.z;\n      max2 += plane.normal.z * this.min.z;\n    }\n    return min <= -plane.constant && max2 >= -plane.constant;\n  }\n  intersectsTriangle(triangle) {\n    if (this.isEmpty()) {\n      return false;\n    }\n    this.getCenter(_center);\n    _extents.subVectors(this.max, _center);\n    _v0$2.subVectors(triangle.a, _center);\n    _v1$7.subVectors(triangle.b, _center);\n    _v2$4.subVectors(triangle.c, _center);\n    _f0.subVectors(_v1$7, _v0$2);\n    _f1.subVectors(_v2$4, _v1$7);\n    _f2.subVectors(_v0$2, _v2$4);\n    let axes = [\n      0,\n      -_f0.z,\n      _f0.y,\n      0,\n      -_f1.z,\n      _f1.y,\n      0,\n      -_f2.z,\n      _f2.y,\n      _f0.z,\n      0,\n      -_f0.x,\n      _f1.z,\n      0,\n      -_f1.x,\n      _f2.z,\n      0,\n      -_f2.x,\n      -_f0.y,\n      _f0.x,\n      0,\n      -_f1.y,\n      _f1.x,\n      0,\n      -_f2.y,\n      _f2.x,\n      0\n    ];\n    if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n      return false;\n    }\n    axes = [1, 0, 0, 0, 1, 0, 0, 0, 1];\n    if (!satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents)) {\n      return false;\n    }\n    _triangleNormal.crossVectors(_f0, _f1);\n    axes = [_triangleNormal.x, _triangleNormal.y, _triangleNormal.z];\n    return satForAxes(axes, _v0$2, _v1$7, _v2$4, _extents);\n  }\n  clampPoint(point, target) {\n    return target.copy(point).clamp(this.min, this.max);\n  }\n  distanceToPoint(point) {\n    return this.clampPoint(point, _vector$b).distanceTo(point);\n  }\n  getBoundingSphere(target) {\n    if (this.isEmpty()) {\n      target.makeEmpty();\n    } else {\n      this.getCenter(target.center);\n      target.radius = this.getSize(_vector$b).length() * 0.5;\n    }\n    return target;\n  }\n  intersect(box) {\n    this.min.max(box.min);\n    this.max.min(box.max);\n    if (this.isEmpty()) this.makeEmpty();\n    return this;\n  }\n  union(box) {\n    this.min.min(box.min);\n    this.max.max(box.max);\n    return this;\n  }\n  applyMatrix4(matrix) {\n    if (this.isEmpty()) return this;\n    _points[0].set(this.min.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[1].set(this.min.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[2].set(this.min.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[3].set(this.min.x, this.max.y, this.max.z).applyMatrix4(matrix);\n    _points[4].set(this.max.x, this.min.y, this.min.z).applyMatrix4(matrix);\n    _points[5].set(this.max.x, this.min.y, this.max.z).applyMatrix4(matrix);\n    _points[6].set(this.max.x, this.max.y, this.min.z).applyMatrix4(matrix);\n    _points[7].set(this.max.x, this.max.y, this.max.z).applyMatrix4(matrix);\n    this.setFromPoints(_points);\n    return this;\n  }\n  translate(offset) {\n    this.min.add(offset);\n    this.max.add(offset);\n    return this;\n  }\n  equals(box) {\n    return box.min.equals(this.min) && box.max.equals(this.max);\n  }\n}\nconst _points = [\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3(),\n  /* @__PURE__ */ new Vector3()\n];\nconst _vector$b = /* @__PURE__ */ new Vector3();\nconst _box$4 = /* @__PURE__ */ new Box3();\nconst _v0$2 = /* @__PURE__ */ new Vector3();\nconst _v1$7 = /* @__PURE__ */ new Vector3();\nconst _v2$4 = /* @__PURE__ */ new Vector3();\nconst _f0 = /* @__PURE__ */ new Vector3();\nconst _f1 = /* @__PURE__ */ new Vector3();\nconst _f2 = /* @__PURE__ */ new Vector3();\nconst _center = /* @__PURE__ */ new Vector3();\nconst _extents = /* @__PURE__ */ new Vector3();\nconst _triangleNormal = /* @__PURE__ */ new Vector3();\nconst _testAxis = /* @__PURE__ */ new Vector3();\nfunction satForAxes(axes, v0, v1, v2, extents) {\n  for (let i2 = 0, j2 = axes.length - 3; i2 <= j2; i2 += 3) {\n    _testAxis.fromArray(axes, i2);\n    const r2 = extents.x * Math.abs(_testAxis.x) + extents.y * Math.abs(_testAxis.y) + extents.z * Math.abs(_testAxis.z);\n    const p0 = v0.dot(_testAxis);\n    const p1 = v1.dot(_testAxis);\n    const p2 = v2.dot(_testAxis);\n    if (Math.max(-Math.max(p0, p1, p2), Math.min(p0, p1, p2)) > r2) {\n      return false;\n    }\n  }\n  return true;\n}\nconst _box$3 = /* @__PURE__ */ new Box3();\nconst _v1$6 = /* @__PURE__ */ new Vector3();\nconst _v2$3 = /* @__PURE__ */ new Vector3();\nclass Sphere {\n  constructor(center = new Vector3(), radius = -1) {\n    this.isSphere = true;\n    this.center = center;\n    this.radius = radius;\n  }\n  set(center, radius) {\n    this.center.copy(center);\n    this.radius = radius;\n    return this;\n  }\n  setFromPoints(points, optionalCenter) {\n    const center = this.center;\n    if (optionalCenter !== void 0) {\n      center.copy(optionalCenter);\n    } else {\n      _box$3.setFromPoints(points).getCenter(center);\n    }\n    let maxRadiusSq = 0;\n    for (let i2 = 0, il = points.length; i2 < il; i2++) {\n      maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i2]));\n    }\n    this.radius = Math.sqrt(maxRadiusSq);\n    return this;\n  }\n  copy(sphere) {\n    this.center.copy(sphere.center);\n    this.radius = sphere.radius;\n    return this;\n  }\n  isEmpty() {\n    return this.radius < 0;\n  }\n  makeEmpty() {\n    this.center.set(0, 0, 0);\n    this.radius = -1;\n    return this;\n  }\n  containsPoint(point) {\n    return point.distanceToSquared(this.center) <= this.radius * this.radius;\n  }\n  distanceToPoint(point) {\n    return point.distanceTo(this.center) - this.radius;\n  }\n  intersectsSphere(sphere) {\n    const radiusSum = this.radius + sphere.radius;\n    return sphere.center.distanceToSquared(this.center) <= radiusSum * radiusSum;\n  }\n  intersectsBox(box) {\n    return box.intersectsSphere(this);\n  }\n  intersectsPlane(plane) {\n    return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;\n  }\n  clampPoint(point, target) {\n    const deltaLengthSq = this.center.distanceToSquared(point);\n    target.copy(point);\n    if (deltaLengthSq > this.radius * this.radius) {\n      target.sub(this.center).normalize();\n      target.multiplyScalar(this.radius).add(this.center);\n    }\n    return target;\n  }\n  getBoundingBox(target) {\n    if (this.isEmpty()) {\n      target.makeEmpty();\n      return target;\n    }\n    target.set(this.center, this.center);\n    target.expandByScalar(this.radius);\n    return target;\n  }\n  applyMatrix4(matrix) {\n    this.center.applyMatrix4(matrix);\n    this.radius = this.radius * matrix.getMaxScaleOnAxis();\n    return this;\n  }\n  translate(offset) {\n    this.center.add(offset);\n    return this;\n  }\n  expandByPoint(point) {\n    if (this.isEmpty()) {\n      this.center.copy(point);\n      this.radius = 0;\n      return this;\n    }\n    _v1$6.subVectors(point, this.center);\n    const lengthSq = _v1$6.lengthSq();\n    if (lengthSq > this.radius * this.radius) {\n      const length = Math.sqrt(lengthSq);\n      const delta = (length - this.radius) * 0.5;\n      this.center.addScaledVector(_v1$6, delta / length);\n      this.radius += delta;\n    }\n    return this;\n  }\n  union(sphere) {\n    if (sphere.isEmpty()) {\n      return this;\n    }\n    if (this.isEmpty()) {\n      this.copy(sphere);\n      return this;\n    }\n    if (this.center.equals(sphere.center) === true) {\n      this.radius = Math.max(this.radius, sphere.radius);\n    } else {\n      _v2$3.subVectors(sphere.center, this.center).setLength(sphere.radius);\n      this.expandByPoint(_v1$6.copy(sphere.center).add(_v2$3));\n      this.expandByPoint(_v1$6.copy(sphere.center).sub(_v2$3));\n    }\n    return this;\n  }\n  equals(sphere) {\n    return sphere.center.equals(this.center) && sphere.radius === this.radius;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _vector$a = /* @__PURE__ */ new Vector3();\nconst _segCenter = /* @__PURE__ */ new Vector3();\nconst _segDir = /* @__PURE__ */ new Vector3();\nconst _diff = /* @__PURE__ */ new Vector3();\nconst _edge1 = /* @__PURE__ */ new Vector3();\nconst _edge2 = /* @__PURE__ */ new Vector3();\nconst _normal$1 = /* @__PURE__ */ new Vector3();\nclass Ray {\n  constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {\n    this.origin = origin;\n    this.direction = direction;\n  }\n  set(origin, direction) {\n    this.origin.copy(origin);\n    this.direction.copy(direction);\n    return this;\n  }\n  copy(ray) {\n    this.origin.copy(ray.origin);\n    this.direction.copy(ray.direction);\n    return this;\n  }\n  at(t2, target) {\n    return target.copy(this.origin).addScaledVector(this.direction, t2);\n  }\n  lookAt(v2) {\n    this.direction.copy(v2).sub(this.origin).normalize();\n    return this;\n  }\n  recast(t2) {\n    this.origin.copy(this.at(t2, _vector$a));\n    return this;\n  }\n  closestPointToPoint(point, target) {\n    target.subVectors(point, this.origin);\n    const directionDistance = target.dot(this.direction);\n    if (directionDistance < 0) {\n      return target.copy(this.origin);\n    }\n    return target.copy(this.origin).addScaledVector(this.direction, directionDistance);\n  }\n  distanceToPoint(point) {\n    return Math.sqrt(this.distanceSqToPoint(point));\n  }\n  distanceSqToPoint(point) {\n    const directionDistance = _vector$a.subVectors(point, this.origin).dot(this.direction);\n    if (directionDistance < 0) {\n      return this.origin.distanceToSquared(point);\n    }\n    _vector$a.copy(this.origin).addScaledVector(this.direction, directionDistance);\n    return _vector$a.distanceToSquared(point);\n  }\n  distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {\n    _segCenter.copy(v0).add(v1).multiplyScalar(0.5);\n    _segDir.copy(v1).sub(v0).normalize();\n    _diff.copy(this.origin).sub(_segCenter);\n    const segExtent = v0.distanceTo(v1) * 0.5;\n    const a01 = -this.direction.dot(_segDir);\n    const b0 = _diff.dot(this.direction);\n    const b1 = -_diff.dot(_segDir);\n    const c2 = _diff.lengthSq();\n    const det = Math.abs(1 - a01 * a01);\n    let s0, s1, sqrDist, extDet;\n    if (det > 0) {\n      s0 = a01 * b1 - b0;\n      s1 = a01 * b0 - b1;\n      extDet = segExtent * det;\n      if (s0 >= 0) {\n        if (s1 >= -extDet) {\n          if (s1 <= extDet) {\n            const invDet = 1 / det;\n            s0 *= invDet;\n            s1 *= invDet;\n            sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c2;\n          } else {\n            s1 = segExtent;\n            s0 = Math.max(0, -(a01 * s1 + b0));\n            sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c2;\n          }\n        } else {\n          s1 = -segExtent;\n          s0 = Math.max(0, -(a01 * s1 + b0));\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c2;\n        }\n      } else {\n        if (s1 <= -extDet) {\n          s0 = Math.max(0, -(-a01 * segExtent + b0));\n          s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c2;\n        } else if (s1 <= extDet) {\n          s0 = 0;\n          s1 = Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = s1 * (s1 + 2 * b1) + c2;\n        } else {\n          s0 = Math.max(0, -(a01 * segExtent + b0));\n          s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);\n          sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c2;\n        }\n      }\n    } else {\n      s1 = a01 > 0 ? -segExtent : segExtent;\n      s0 = Math.max(0, -(a01 * s1 + b0));\n      sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c2;\n    }\n    if (optionalPointOnRay) {\n      optionalPointOnRay.copy(this.origin).addScaledVector(this.direction, s0);\n    }\n    if (optionalPointOnSegment) {\n      optionalPointOnSegment.copy(_segCenter).addScaledVector(_segDir, s1);\n    }\n    return sqrDist;\n  }\n  intersectSphere(sphere, target) {\n    _vector$a.subVectors(sphere.center, this.origin);\n    const tca = _vector$a.dot(this.direction);\n    const d2 = _vector$a.dot(_vector$a) - tca * tca;\n    const radius2 = sphere.radius * sphere.radius;\n    if (d2 > radius2) return null;\n    const thc = Math.sqrt(radius2 - d2);\n    const t0 = tca - thc;\n    const t1 = tca + thc;\n    if (t1 < 0) return null;\n    if (t0 < 0) return this.at(t1, target);\n    return this.at(t0, target);\n  }\n  intersectsSphere(sphere) {\n    return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;\n  }\n  distanceToPlane(plane) {\n    const denominator = plane.normal.dot(this.direction);\n    if (denominator === 0) {\n      if (plane.distanceToPoint(this.origin) === 0) {\n        return 0;\n      }\n      return null;\n    }\n    const t2 = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\n    return t2 >= 0 ? t2 : null;\n  }\n  intersectPlane(plane, target) {\n    const t2 = this.distanceToPlane(plane);\n    if (t2 === null) {\n      return null;\n    }\n    return this.at(t2, target);\n  }\n  intersectsPlane(plane) {\n    const distToPoint = plane.distanceToPoint(this.origin);\n    if (distToPoint === 0) {\n      return true;\n    }\n    const denominator = plane.normal.dot(this.direction);\n    if (denominator * distToPoint < 0) {\n      return true;\n    }\n    return false;\n  }\n  intersectBox(box, target) {\n    let tmin, tmax, tymin, tymax, tzmin, tzmax;\n    const invdirx = 1 / this.direction.x, invdiry = 1 / this.direction.y, invdirz = 1 / this.direction.z;\n    const origin = this.origin;\n    if (invdirx >= 0) {\n      tmin = (box.min.x - origin.x) * invdirx;\n      tmax = (box.max.x - origin.x) * invdirx;\n    } else {\n      tmin = (box.max.x - origin.x) * invdirx;\n      tmax = (box.min.x - origin.x) * invdirx;\n    }\n    if (invdiry >= 0) {\n      tymin = (box.min.y - origin.y) * invdiry;\n      tymax = (box.max.y - origin.y) * invdiry;\n    } else {\n      tymin = (box.max.y - origin.y) * invdiry;\n      tymax = (box.min.y - origin.y) * invdiry;\n    }\n    if (tmin > tymax || tymin > tmax) return null;\n    if (tymin > tmin || isNaN(tmin)) tmin = tymin;\n    if (tymax < tmax || isNaN(tmax)) tmax = tymax;\n    if (invdirz >= 0) {\n      tzmin = (box.min.z - origin.z) * invdirz;\n      tzmax = (box.max.z - origin.z) * invdirz;\n    } else {\n      tzmin = (box.max.z - origin.z) * invdirz;\n      tzmax = (box.min.z - origin.z) * invdirz;\n    }\n    if (tmin > tzmax || tzmin > tmax) return null;\n    if (tzmin > tmin || tmin !== tmin) tmin = tzmin;\n    if (tzmax < tmax || tmax !== tmax) tmax = tzmax;\n    if (tmax < 0) return null;\n    return this.at(tmin >= 0 ? tmin : tmax, target);\n  }\n  intersectsBox(box) {\n    return this.intersectBox(box, _vector$a) !== null;\n  }\n  intersectTriangle(a2, b2, c2, backfaceCulling, target) {\n    _edge1.subVectors(b2, a2);\n    _edge2.subVectors(c2, a2);\n    _normal$1.crossVectors(_edge1, _edge2);\n    let DdN = this.direction.dot(_normal$1);\n    let sign2;\n    if (DdN > 0) {\n      if (backfaceCulling) return null;\n      sign2 = 1;\n    } else if (DdN < 0) {\n      sign2 = -1;\n      DdN = -DdN;\n    } else {\n      return null;\n    }\n    _diff.subVectors(this.origin, a2);\n    const DdQxE2 = sign2 * this.direction.dot(_edge2.crossVectors(_diff, _edge2));\n    if (DdQxE2 < 0) {\n      return null;\n    }\n    const DdE1xQ = sign2 * this.direction.dot(_edge1.cross(_diff));\n    if (DdE1xQ < 0) {\n      return null;\n    }\n    if (DdQxE2 + DdE1xQ > DdN) {\n      return null;\n    }\n    const QdN = -sign2 * _diff.dot(_normal$1);\n    if (QdN < 0) {\n      return null;\n    }\n    return this.at(QdN / DdN, target);\n  }\n  applyMatrix4(matrix4) {\n    this.origin.applyMatrix4(matrix4);\n    this.direction.transformDirection(matrix4);\n    return this;\n  }\n  equals(ray) {\n    return ray.origin.equals(this.origin) && ray.direction.equals(this.direction);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass Matrix4 {\n  constructor(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n    Matrix4.prototype.isMatrix4 = true;\n    this.elements = [\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    ];\n    if (n11 !== void 0) {\n      this.set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44);\n    }\n  }\n  set(n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44) {\n    const te = this.elements;\n    te[0] = n11;\n    te[4] = n12;\n    te[8] = n13;\n    te[12] = n14;\n    te[1] = n21;\n    te[5] = n22;\n    te[9] = n23;\n    te[13] = n24;\n    te[2] = n31;\n    te[6] = n32;\n    te[10] = n33;\n    te[14] = n34;\n    te[3] = n41;\n    te[7] = n42;\n    te[11] = n43;\n    te[15] = n44;\n    return this;\n  }\n  identity() {\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  clone() {\n    return new Matrix4().fromArray(this.elements);\n  }\n  copy(m2) {\n    const te = this.elements;\n    const me = m2.elements;\n    te[0] = me[0];\n    te[1] = me[1];\n    te[2] = me[2];\n    te[3] = me[3];\n    te[4] = me[4];\n    te[5] = me[5];\n    te[6] = me[6];\n    te[7] = me[7];\n    te[8] = me[8];\n    te[9] = me[9];\n    te[10] = me[10];\n    te[11] = me[11];\n    te[12] = me[12];\n    te[13] = me[13];\n    te[14] = me[14];\n    te[15] = me[15];\n    return this;\n  }\n  copyPosition(m2) {\n    const te = this.elements, me = m2.elements;\n    te[12] = me[12];\n    te[13] = me[13];\n    te[14] = me[14];\n    return this;\n  }\n  setFromMatrix3(m2) {\n    const me = m2.elements;\n    this.set(\n      me[0],\n      me[3],\n      me[6],\n      0,\n      me[1],\n      me[4],\n      me[7],\n      0,\n      me[2],\n      me[5],\n      me[8],\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  extractBasis(xAxis, yAxis, zAxis) {\n    xAxis.setFromMatrixColumn(this, 0);\n    yAxis.setFromMatrixColumn(this, 1);\n    zAxis.setFromMatrixColumn(this, 2);\n    return this;\n  }\n  makeBasis(xAxis, yAxis, zAxis) {\n    this.set(\n      xAxis.x,\n      yAxis.x,\n      zAxis.x,\n      0,\n      xAxis.y,\n      yAxis.y,\n      zAxis.y,\n      0,\n      xAxis.z,\n      yAxis.z,\n      zAxis.z,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  extractRotation(m2) {\n    const te = this.elements;\n    const me = m2.elements;\n    const scaleX = 1 / _v1$5.setFromMatrixColumn(m2, 0).length();\n    const scaleY = 1 / _v1$5.setFromMatrixColumn(m2, 1).length();\n    const scaleZ = 1 / _v1$5.setFromMatrixColumn(m2, 2).length();\n    te[0] = me[0] * scaleX;\n    te[1] = me[1] * scaleX;\n    te[2] = me[2] * scaleX;\n    te[3] = 0;\n    te[4] = me[4] * scaleY;\n    te[5] = me[5] * scaleY;\n    te[6] = me[6] * scaleY;\n    te[7] = 0;\n    te[8] = me[8] * scaleZ;\n    te[9] = me[9] * scaleZ;\n    te[10] = me[10] * scaleZ;\n    te[11] = 0;\n    te[12] = 0;\n    te[13] = 0;\n    te[14] = 0;\n    te[15] = 1;\n    return this;\n  }\n  makeRotationFromEuler(euler) {\n    const te = this.elements;\n    const x2 = euler.x, y2 = euler.y, z2 = euler.z;\n    const a2 = Math.cos(x2), b2 = Math.sin(x2);\n    const c2 = Math.cos(y2), d2 = Math.sin(y2);\n    const e2 = Math.cos(z2), f2 = Math.sin(z2);\n    if (euler.order === \"XYZ\") {\n      const ae = a2 * e2, af = a2 * f2, be = b2 * e2, bf = b2 * f2;\n      te[0] = c2 * e2;\n      te[4] = -c2 * f2;\n      te[8] = d2;\n      te[1] = af + be * d2;\n      te[5] = ae - bf * d2;\n      te[9] = -b2 * c2;\n      te[2] = bf - ae * d2;\n      te[6] = be + af * d2;\n      te[10] = a2 * c2;\n    } else if (euler.order === \"YXZ\") {\n      const ce = c2 * e2, cf = c2 * f2, de = d2 * e2, df = d2 * f2;\n      te[0] = ce + df * b2;\n      te[4] = de * b2 - cf;\n      te[8] = a2 * d2;\n      te[1] = a2 * f2;\n      te[5] = a2 * e2;\n      te[9] = -b2;\n      te[2] = cf * b2 - de;\n      te[6] = df + ce * b2;\n      te[10] = a2 * c2;\n    } else if (euler.order === \"ZXY\") {\n      const ce = c2 * e2, cf = c2 * f2, de = d2 * e2, df = d2 * f2;\n      te[0] = ce - df * b2;\n      te[4] = -a2 * f2;\n      te[8] = de + cf * b2;\n      te[1] = cf + de * b2;\n      te[5] = a2 * e2;\n      te[9] = df - ce * b2;\n      te[2] = -a2 * d2;\n      te[6] = b2;\n      te[10] = a2 * c2;\n    } else if (euler.order === \"ZYX\") {\n      const ae = a2 * e2, af = a2 * f2, be = b2 * e2, bf = b2 * f2;\n      te[0] = c2 * e2;\n      te[4] = be * d2 - af;\n      te[8] = ae * d2 + bf;\n      te[1] = c2 * f2;\n      te[5] = bf * d2 + ae;\n      te[9] = af * d2 - be;\n      te[2] = -d2;\n      te[6] = b2 * c2;\n      te[10] = a2 * c2;\n    } else if (euler.order === \"YZX\") {\n      const ac = a2 * c2, ad = a2 * d2, bc = b2 * c2, bd = b2 * d2;\n      te[0] = c2 * e2;\n      te[4] = bd - ac * f2;\n      te[8] = bc * f2 + ad;\n      te[1] = f2;\n      te[5] = a2 * e2;\n      te[9] = -b2 * e2;\n      te[2] = -d2 * e2;\n      te[6] = ad * f2 + bc;\n      te[10] = ac - bd * f2;\n    } else if (euler.order === \"XZY\") {\n      const ac = a2 * c2, ad = a2 * d2, bc = b2 * c2, bd = b2 * d2;\n      te[0] = c2 * e2;\n      te[4] = -f2;\n      te[8] = d2 * e2;\n      te[1] = ac * f2 + bd;\n      te[5] = a2 * e2;\n      te[9] = ad * f2 - bc;\n      te[2] = bc * f2 - ad;\n      te[6] = b2 * e2;\n      te[10] = bd * f2 + ac;\n    }\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = 0;\n    te[12] = 0;\n    te[13] = 0;\n    te[14] = 0;\n    te[15] = 1;\n    return this;\n  }\n  makeRotationFromQuaternion(q2) {\n    return this.compose(_zero, q2, _one);\n  }\n  lookAt(eye, target, up) {\n    const te = this.elements;\n    _z.subVectors(eye, target);\n    if (_z.lengthSq() === 0) {\n      _z.z = 1;\n    }\n    _z.normalize();\n    _x.crossVectors(up, _z);\n    if (_x.lengthSq() === 0) {\n      if (Math.abs(up.z) === 1) {\n        _z.x += 1e-4;\n      } else {\n        _z.z += 1e-4;\n      }\n      _z.normalize();\n      _x.crossVectors(up, _z);\n    }\n    _x.normalize();\n    _y.crossVectors(_z, _x);\n    te[0] = _x.x;\n    te[4] = _y.x;\n    te[8] = _z.x;\n    te[1] = _x.y;\n    te[5] = _y.y;\n    te[9] = _z.y;\n    te[2] = _x.z;\n    te[6] = _y.z;\n    te[10] = _z.z;\n    return this;\n  }\n  multiply(m2) {\n    return this.multiplyMatrices(this, m2);\n  }\n  premultiply(m2) {\n    return this.multiplyMatrices(m2, this);\n  }\n  multiplyMatrices(a2, b2) {\n    const ae = a2.elements;\n    const be = b2.elements;\n    const te = this.elements;\n    const a11 = ae[0], a12 = ae[4], a13 = ae[8], a14 = ae[12];\n    const a21 = ae[1], a22 = ae[5], a23 = ae[9], a24 = ae[13];\n    const a31 = ae[2], a32 = ae[6], a33 = ae[10], a34 = ae[14];\n    const a41 = ae[3], a42 = ae[7], a43 = ae[11], a44 = ae[15];\n    const b11 = be[0], b12 = be[4], b13 = be[8], b14 = be[12];\n    const b21 = be[1], b22 = be[5], b23 = be[9], b24 = be[13];\n    const b31 = be[2], b32 = be[6], b33 = be[10], b34 = be[14];\n    const b41 = be[3], b42 = be[7], b43 = be[11], b44 = be[15];\n    te[0] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\n    te[4] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\n    te[8] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\n    te[12] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\n    te[1] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\n    te[5] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\n    te[9] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\n    te[13] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\n    te[2] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\n    te[6] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\n    te[10] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\n    te[14] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\n    te[3] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\n    te[7] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\n    te[11] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\n    te[15] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\n    return this;\n  }\n  multiplyScalar(s2) {\n    const te = this.elements;\n    te[0] *= s2;\n    te[4] *= s2;\n    te[8] *= s2;\n    te[12] *= s2;\n    te[1] *= s2;\n    te[5] *= s2;\n    te[9] *= s2;\n    te[13] *= s2;\n    te[2] *= s2;\n    te[6] *= s2;\n    te[10] *= s2;\n    te[14] *= s2;\n    te[3] *= s2;\n    te[7] *= s2;\n    te[11] *= s2;\n    te[15] *= s2;\n    return this;\n  }\n  determinant() {\n    const te = this.elements;\n    const n11 = te[0], n12 = te[4], n13 = te[8], n14 = te[12];\n    const n21 = te[1], n22 = te[5], n23 = te[9], n24 = te[13];\n    const n31 = te[2], n32 = te[6], n33 = te[10], n34 = te[14];\n    const n41 = te[3], n42 = te[7], n43 = te[11], n44 = te[15];\n    return n41 * (+n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34) + n42 * (+n11 * n23 * n34 - n11 * n24 * n33 + n14 * n21 * n33 - n13 * n21 * n34 + n13 * n24 * n31 - n14 * n23 * n31) + n43 * (+n11 * n24 * n32 - n11 * n22 * n34 - n14 * n21 * n32 + n12 * n21 * n34 + n14 * n22 * n31 - n12 * n24 * n31) + n44 * (-n13 * n22 * n31 - n11 * n23 * n32 + n11 * n22 * n33 + n13 * n21 * n32 - n12 * n21 * n33 + n12 * n23 * n31);\n  }\n  transpose() {\n    const te = this.elements;\n    let tmp2;\n    tmp2 = te[1];\n    te[1] = te[4];\n    te[4] = tmp2;\n    tmp2 = te[2];\n    te[2] = te[8];\n    te[8] = tmp2;\n    tmp2 = te[6];\n    te[6] = te[9];\n    te[9] = tmp2;\n    tmp2 = te[3];\n    te[3] = te[12];\n    te[12] = tmp2;\n    tmp2 = te[7];\n    te[7] = te[13];\n    te[13] = tmp2;\n    tmp2 = te[11];\n    te[11] = te[14];\n    te[14] = tmp2;\n    return this;\n  }\n  setPosition(x2, y2, z2) {\n    const te = this.elements;\n    if (x2.isVector3) {\n      te[12] = x2.x;\n      te[13] = x2.y;\n      te[14] = x2.z;\n    } else {\n      te[12] = x2;\n      te[13] = y2;\n      te[14] = z2;\n    }\n    return this;\n  }\n  invert() {\n    const te = this.elements, n11 = te[0], n21 = te[1], n31 = te[2], n41 = te[3], n12 = te[4], n22 = te[5], n32 = te[6], n42 = te[7], n13 = te[8], n23 = te[9], n33 = te[10], n43 = te[11], n14 = te[12], n24 = te[13], n34 = te[14], n44 = te[15], t11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44, t12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44, t13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44, t14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\n    const det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\n    if (det === 0) return this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n    const detInv = 1 / det;\n    te[0] = t11 * detInv;\n    te[1] = (n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44) * detInv;\n    te[2] = (n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44) * detInv;\n    te[3] = (n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43) * detInv;\n    te[4] = t12 * detInv;\n    te[5] = (n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44) * detInv;\n    te[6] = (n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44) * detInv;\n    te[7] = (n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43) * detInv;\n    te[8] = t13 * detInv;\n    te[9] = (n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44) * detInv;\n    te[10] = (n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44) * detInv;\n    te[11] = (n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43) * detInv;\n    te[12] = t14 * detInv;\n    te[13] = (n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34) * detInv;\n    te[14] = (n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34) * detInv;\n    te[15] = (n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33) * detInv;\n    return this;\n  }\n  scale(v2) {\n    const te = this.elements;\n    const x2 = v2.x, y2 = v2.y, z2 = v2.z;\n    te[0] *= x2;\n    te[4] *= y2;\n    te[8] *= z2;\n    te[1] *= x2;\n    te[5] *= y2;\n    te[9] *= z2;\n    te[2] *= x2;\n    te[6] *= y2;\n    te[10] *= z2;\n    te[3] *= x2;\n    te[7] *= y2;\n    te[11] *= z2;\n    return this;\n  }\n  getMaxScaleOnAxis() {\n    const te = this.elements;\n    const scaleXSq = te[0] * te[0] + te[1] * te[1] + te[2] * te[2];\n    const scaleYSq = te[4] * te[4] + te[5] * te[5] + te[6] * te[6];\n    const scaleZSq = te[8] * te[8] + te[9] * te[9] + te[10] * te[10];\n    return Math.sqrt(Math.max(scaleXSq, scaleYSq, scaleZSq));\n  }\n  makeTranslation(x2, y2, z2) {\n    if (x2.isVector3) {\n      this.set(\n        1,\n        0,\n        0,\n        x2.x,\n        0,\n        1,\n        0,\n        x2.y,\n        0,\n        0,\n        1,\n        x2.z,\n        0,\n        0,\n        0,\n        1\n      );\n    } else {\n      this.set(\n        1,\n        0,\n        0,\n        x2,\n        0,\n        1,\n        0,\n        y2,\n        0,\n        0,\n        1,\n        z2,\n        0,\n        0,\n        0,\n        1\n      );\n    }\n    return this;\n  }\n  makeRotationX(theta) {\n    const c2 = Math.cos(theta), s2 = Math.sin(theta);\n    this.set(\n      1,\n      0,\n      0,\n      0,\n      0,\n      c2,\n      -s2,\n      0,\n      0,\n      s2,\n      c2,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationY(theta) {\n    const c2 = Math.cos(theta), s2 = Math.sin(theta);\n    this.set(\n      c2,\n      0,\n      s2,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -s2,\n      0,\n      c2,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationZ(theta) {\n    const c2 = Math.cos(theta), s2 = Math.sin(theta);\n    this.set(\n      c2,\n      -s2,\n      0,\n      0,\n      s2,\n      c2,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeRotationAxis(axis, angle) {\n    const c2 = Math.cos(angle);\n    const s2 = Math.sin(angle);\n    const t2 = 1 - c2;\n    const x2 = axis.x, y2 = axis.y, z2 = axis.z;\n    const tx = t2 * x2, ty = t2 * y2;\n    this.set(\n      tx * x2 + c2,\n      tx * y2 - s2 * z2,\n      tx * z2 + s2 * y2,\n      0,\n      tx * y2 + s2 * z2,\n      ty * y2 + c2,\n      ty * z2 - s2 * x2,\n      0,\n      tx * z2 - s2 * y2,\n      ty * z2 + s2 * x2,\n      t2 * z2 * z2 + c2,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeScale(x2, y2, z2) {\n    this.set(\n      x2,\n      0,\n      0,\n      0,\n      0,\n      y2,\n      0,\n      0,\n      0,\n      0,\n      z2,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  makeShear(xy, xz, yx, yz, zx, zy) {\n    this.set(\n      1,\n      yx,\n      zx,\n      0,\n      xy,\n      1,\n      zy,\n      0,\n      xz,\n      yz,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1\n    );\n    return this;\n  }\n  compose(position, quaternion, scale) {\n    const te = this.elements;\n    const x2 = quaternion._x, y2 = quaternion._y, z2 = quaternion._z, w2 = quaternion._w;\n    const x22 = x2 + x2, y22 = y2 + y2, z22 = z2 + z2;\n    const xx = x2 * x22, xy = x2 * y22, xz = x2 * z22;\n    const yy = y2 * y22, yz = y2 * z22, zz = z2 * z22;\n    const wx = w2 * x22, wy = w2 * y22, wz = w2 * z22;\n    const sx = scale.x, sy = scale.y, sz = scale.z;\n    te[0] = (1 - (yy + zz)) * sx;\n    te[1] = (xy + wz) * sx;\n    te[2] = (xz - wy) * sx;\n    te[3] = 0;\n    te[4] = (xy - wz) * sy;\n    te[5] = (1 - (xx + zz)) * sy;\n    te[6] = (yz + wx) * sy;\n    te[7] = 0;\n    te[8] = (xz + wy) * sz;\n    te[9] = (yz - wx) * sz;\n    te[10] = (1 - (xx + yy)) * sz;\n    te[11] = 0;\n    te[12] = position.x;\n    te[13] = position.y;\n    te[14] = position.z;\n    te[15] = 1;\n    return this;\n  }\n  decompose(position, quaternion, scale) {\n    const te = this.elements;\n    let sx = _v1$5.set(te[0], te[1], te[2]).length();\n    const sy = _v1$5.set(te[4], te[5], te[6]).length();\n    const sz = _v1$5.set(te[8], te[9], te[10]).length();\n    const det = this.determinant();\n    if (det < 0) sx = -sx;\n    position.x = te[12];\n    position.y = te[13];\n    position.z = te[14];\n    _m1$2.copy(this);\n    const invSX = 1 / sx;\n    const invSY = 1 / sy;\n    const invSZ = 1 / sz;\n    _m1$2.elements[0] *= invSX;\n    _m1$2.elements[1] *= invSX;\n    _m1$2.elements[2] *= invSX;\n    _m1$2.elements[4] *= invSY;\n    _m1$2.elements[5] *= invSY;\n    _m1$2.elements[6] *= invSY;\n    _m1$2.elements[8] *= invSZ;\n    _m1$2.elements[9] *= invSZ;\n    _m1$2.elements[10] *= invSZ;\n    quaternion.setFromRotationMatrix(_m1$2);\n    scale.x = sx;\n    scale.y = sy;\n    scale.z = sz;\n    return this;\n  }\n  makePerspective(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\n    const te = this.elements;\n    const x2 = 2 * near / (right - left);\n    const y2 = 2 * near / (top - bottom);\n    const a2 = (right + left) / (right - left);\n    const b2 = (top + bottom) / (top - bottom);\n    let c2, d2;\n    if (coordinateSystem === WebGLCoordinateSystem) {\n      c2 = -(far + near) / (far - near);\n      d2 = -2 * far * near / (far - near);\n    } else if (coordinateSystem === WebGPUCoordinateSystem) {\n      c2 = -far / (far - near);\n      d2 = -far * near / (far - near);\n    } else {\n      throw new Error(\"THREE.Matrix4.makePerspective(): Invalid coordinate system: \" + coordinateSystem);\n    }\n    te[0] = x2;\n    te[4] = 0;\n    te[8] = a2;\n    te[12] = 0;\n    te[1] = 0;\n    te[5] = y2;\n    te[9] = b2;\n    te[13] = 0;\n    te[2] = 0;\n    te[6] = 0;\n    te[10] = c2;\n    te[14] = d2;\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = -1;\n    te[15] = 0;\n    return this;\n  }\n  makeOrthographic(left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem) {\n    const te = this.elements;\n    const w2 = 1 / (right - left);\n    const h2 = 1 / (top - bottom);\n    const p2 = 1 / (far - near);\n    const x2 = (right + left) * w2;\n    const y2 = (top + bottom) * h2;\n    let z2, zInv;\n    if (coordinateSystem === WebGLCoordinateSystem) {\n      z2 = (far + near) * p2;\n      zInv = -2 * p2;\n    } else if (coordinateSystem === WebGPUCoordinateSystem) {\n      z2 = near * p2;\n      zInv = -1 * p2;\n    } else {\n      throw new Error(\"THREE.Matrix4.makeOrthographic(): Invalid coordinate system: \" + coordinateSystem);\n    }\n    te[0] = 2 * w2;\n    te[4] = 0;\n    te[8] = 0;\n    te[12] = -x2;\n    te[1] = 0;\n    te[5] = 2 * h2;\n    te[9] = 0;\n    te[13] = -y2;\n    te[2] = 0;\n    te[6] = 0;\n    te[10] = zInv;\n    te[14] = -z2;\n    te[3] = 0;\n    te[7] = 0;\n    te[11] = 0;\n    te[15] = 1;\n    return this;\n  }\n  equals(matrix) {\n    const te = this.elements;\n    const me = matrix.elements;\n    for (let i2 = 0; i2 < 16; i2++) {\n      if (te[i2] !== me[i2]) return false;\n    }\n    return true;\n  }\n  fromArray(array, offset = 0) {\n    for (let i2 = 0; i2 < 16; i2++) {\n      this.elements[i2] = array[i2 + offset];\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const te = this.elements;\n    array[offset] = te[0];\n    array[offset + 1] = te[1];\n    array[offset + 2] = te[2];\n    array[offset + 3] = te[3];\n    array[offset + 4] = te[4];\n    array[offset + 5] = te[5];\n    array[offset + 6] = te[6];\n    array[offset + 7] = te[7];\n    array[offset + 8] = te[8];\n    array[offset + 9] = te[9];\n    array[offset + 10] = te[10];\n    array[offset + 11] = te[11];\n    array[offset + 12] = te[12];\n    array[offset + 13] = te[13];\n    array[offset + 14] = te[14];\n    array[offset + 15] = te[15];\n    return array;\n  }\n}\nconst _v1$5 = /* @__PURE__ */ new Vector3();\nconst _m1$2 = /* @__PURE__ */ new Matrix4();\nconst _zero = /* @__PURE__ */ new Vector3(0, 0, 0);\nconst _one = /* @__PURE__ */ new Vector3(1, 1, 1);\nconst _x = /* @__PURE__ */ new Vector3();\nconst _y = /* @__PURE__ */ new Vector3();\nconst _z = /* @__PURE__ */ new Vector3();\nconst _matrix$1 = /* @__PURE__ */ new Matrix4();\nconst _quaternion$3 = /* @__PURE__ */ new Quaternion();\nclass Euler {\n  constructor(x2 = 0, y2 = 0, z2 = 0, order = Euler.DEFAULT_ORDER) {\n    this.isEuler = true;\n    this._x = x2;\n    this._y = y2;\n    this._z = z2;\n    this._order = order;\n  }\n  get x() {\n    return this._x;\n  }\n  set x(value) {\n    this._x = value;\n    this._onChangeCallback();\n  }\n  get y() {\n    return this._y;\n  }\n  set y(value) {\n    this._y = value;\n    this._onChangeCallback();\n  }\n  get z() {\n    return this._z;\n  }\n  set z(value) {\n    this._z = value;\n    this._onChangeCallback();\n  }\n  get order() {\n    return this._order;\n  }\n  set order(value) {\n    this._order = value;\n    this._onChangeCallback();\n  }\n  set(x2, y2, z2, order = this._order) {\n    this._x = x2;\n    this._y = y2;\n    this._z = z2;\n    this._order = order;\n    this._onChangeCallback();\n    return this;\n  }\n  clone() {\n    return new this.constructor(this._x, this._y, this._z, this._order);\n  }\n  copy(euler) {\n    this._x = euler._x;\n    this._y = euler._y;\n    this._z = euler._z;\n    this._order = euler._order;\n    this._onChangeCallback();\n    return this;\n  }\n  setFromRotationMatrix(m2, order = this._order, update = true) {\n    const te = m2.elements;\n    const m11 = te[0], m12 = te[4], m13 = te[8];\n    const m21 = te[1], m22 = te[5], m23 = te[9];\n    const m31 = te[2], m32 = te[6], m33 = te[10];\n    switch (order) {\n      case \"XYZ\":\n        this._y = Math.asin(clamp(m13, -1, 1));\n        if (Math.abs(m13) < 0.9999999) {\n          this._x = Math.atan2(-m23, m33);\n          this._z = Math.atan2(-m12, m11);\n        } else {\n          this._x = Math.atan2(m32, m22);\n          this._z = 0;\n        }\n        break;\n      case \"YXZ\":\n        this._x = Math.asin(-clamp(m23, -1, 1));\n        if (Math.abs(m23) < 0.9999999) {\n          this._y = Math.atan2(m13, m33);\n          this._z = Math.atan2(m21, m22);\n        } else {\n          this._y = Math.atan2(-m31, m11);\n          this._z = 0;\n        }\n        break;\n      case \"ZXY\":\n        this._x = Math.asin(clamp(m32, -1, 1));\n        if (Math.abs(m32) < 0.9999999) {\n          this._y = Math.atan2(-m31, m33);\n          this._z = Math.atan2(-m12, m22);\n        } else {\n          this._y = 0;\n          this._z = Math.atan2(m21, m11);\n        }\n        break;\n      case \"ZYX\":\n        this._y = Math.asin(-clamp(m31, -1, 1));\n        if (Math.abs(m31) < 0.9999999) {\n          this._x = Math.atan2(m32, m33);\n          this._z = Math.atan2(m21, m11);\n        } else {\n          this._x = 0;\n          this._z = Math.atan2(-m12, m22);\n        }\n        break;\n      case \"YZX\":\n        this._z = Math.asin(clamp(m21, -1, 1));\n        if (Math.abs(m21) < 0.9999999) {\n          this._x = Math.atan2(-m23, m22);\n          this._y = Math.atan2(-m31, m11);\n        } else {\n          this._x = 0;\n          this._y = Math.atan2(m13, m33);\n        }\n        break;\n      case \"XZY\":\n        this._z = Math.asin(-clamp(m12, -1, 1));\n        if (Math.abs(m12) < 0.9999999) {\n          this._x = Math.atan2(m32, m22);\n          this._y = Math.atan2(m13, m11);\n        } else {\n          this._x = Math.atan2(-m23, m33);\n          this._y = 0;\n        }\n        break;\n      default:\n        console.warn(\"THREE.Euler: .setFromRotationMatrix() encountered an unknown order: \" + order);\n    }\n    this._order = order;\n    if (update === true) this._onChangeCallback();\n    return this;\n  }\n  setFromQuaternion(q2, order, update) {\n    _matrix$1.makeRotationFromQuaternion(q2);\n    return this.setFromRotationMatrix(_matrix$1, order, update);\n  }\n  setFromVector3(v2, order = this._order) {\n    return this.set(v2.x, v2.y, v2.z, order);\n  }\n  reorder(newOrder) {\n    _quaternion$3.setFromEuler(this);\n    return this.setFromQuaternion(_quaternion$3, newOrder);\n  }\n  equals(euler) {\n    return euler._x === this._x && euler._y === this._y && euler._z === this._z && euler._order === this._order;\n  }\n  fromArray(array) {\n    this._x = array[0];\n    this._y = array[1];\n    this._z = array[2];\n    if (array[3] !== void 0) this._order = array[3];\n    this._onChangeCallback();\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this._x;\n    array[offset + 1] = this._y;\n    array[offset + 2] = this._z;\n    array[offset + 3] = this._order;\n    return array;\n  }\n  _onChange(callback) {\n    this._onChangeCallback = callback;\n    return this;\n  }\n  _onChangeCallback() {\n  }\n  *[Symbol.iterator]() {\n    yield this._x;\n    yield this._y;\n    yield this._z;\n    yield this._order;\n  }\n}\nEuler.DEFAULT_ORDER = \"XYZ\";\nclass Layers {\n  constructor() {\n    this.mask = 1 | 0;\n  }\n  set(channel) {\n    this.mask = (1 << channel | 0) >>> 0;\n  }\n  enable(channel) {\n    this.mask |= 1 << channel | 0;\n  }\n  enableAll() {\n    this.mask = 4294967295 | 0;\n  }\n  toggle(channel) {\n    this.mask ^= 1 << channel | 0;\n  }\n  disable(channel) {\n    this.mask &= ~(1 << channel | 0);\n  }\n  disableAll() {\n    this.mask = 0;\n  }\n  test(layers) {\n    return (this.mask & layers.mask) !== 0;\n  }\n  isEnabled(channel) {\n    return (this.mask & (1 << channel | 0)) !== 0;\n  }\n}\nlet _object3DId = 0;\nconst _v1$4 = /* @__PURE__ */ new Vector3();\nconst _q1 = /* @__PURE__ */ new Quaternion();\nconst _m1$1 = /* @__PURE__ */ new Matrix4();\nconst _target = /* @__PURE__ */ new Vector3();\nconst _position$3 = /* @__PURE__ */ new Vector3();\nconst _scale$2 = /* @__PURE__ */ new Vector3();\nconst _quaternion$2 = /* @__PURE__ */ new Quaternion();\nconst _xAxis = /* @__PURE__ */ new Vector3(1, 0, 0);\nconst _yAxis = /* @__PURE__ */ new Vector3(0, 1, 0);\nconst _zAxis = /* @__PURE__ */ new Vector3(0, 0, 1);\nconst _addedEvent = { type: \"added\" };\nconst _removedEvent = { type: \"removed\" };\nclass Object3D extends EventDispatcher {\n  constructor() {\n    super();\n    this.isObject3D = true;\n    Object.defineProperty(this, \"id\", { value: _object3DId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"Object3D\";\n    this.parent = null;\n    this.children = [];\n    this.up = Object3D.DEFAULT_UP.clone();\n    const position = new Vector3();\n    const rotation = new Euler();\n    const quaternion = new Quaternion();\n    const scale = new Vector3(1, 1, 1);\n    function onRotationChange() {\n      quaternion.setFromEuler(rotation, false);\n    }\n    function onQuaternionChange() {\n      rotation.setFromQuaternion(quaternion, void 0, false);\n    }\n    rotation._onChange(onRotationChange);\n    quaternion._onChange(onQuaternionChange);\n    Object.defineProperties(this, {\n      position: {\n        configurable: true,\n        enumerable: true,\n        value: position\n      },\n      rotation: {\n        configurable: true,\n        enumerable: true,\n        value: rotation\n      },\n      quaternion: {\n        configurable: true,\n        enumerable: true,\n        value: quaternion\n      },\n      scale: {\n        configurable: true,\n        enumerable: true,\n        value: scale\n      },\n      modelViewMatrix: {\n        value: new Matrix4()\n      },\n      normalMatrix: {\n        value: new Matrix3()\n      }\n    });\n    this.matrix = new Matrix4();\n    this.matrixWorld = new Matrix4();\n    this.matrixAutoUpdate = Object3D.DEFAULT_MATRIX_AUTO_UPDATE;\n    this.matrixWorldAutoUpdate = Object3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE;\n    this.matrixWorldNeedsUpdate = false;\n    this.layers = new Layers();\n    this.visible = true;\n    this.castShadow = false;\n    this.receiveShadow = false;\n    this.frustumCulled = true;\n    this.renderOrder = 0;\n    this.animations = [];\n    this.userData = {};\n  }\n  onBeforeShadow() {\n  }\n  onAfterShadow() {\n  }\n  onBeforeRender() {\n  }\n  onAfterRender() {\n  }\n  applyMatrix4(matrix) {\n    if (this.matrixAutoUpdate) this.updateMatrix();\n    this.matrix.premultiply(matrix);\n    this.matrix.decompose(this.position, this.quaternion, this.scale);\n  }\n  applyQuaternion(q2) {\n    this.quaternion.premultiply(q2);\n    return this;\n  }\n  setRotationFromAxisAngle(axis, angle) {\n    this.quaternion.setFromAxisAngle(axis, angle);\n  }\n  setRotationFromEuler(euler) {\n    this.quaternion.setFromEuler(euler, true);\n  }\n  setRotationFromMatrix(m2) {\n    this.quaternion.setFromRotationMatrix(m2);\n  }\n  setRotationFromQuaternion(q2) {\n    this.quaternion.copy(q2);\n  }\n  rotateOnAxis(axis, angle) {\n    _q1.setFromAxisAngle(axis, angle);\n    this.quaternion.multiply(_q1);\n    return this;\n  }\n  rotateOnWorldAxis(axis, angle) {\n    _q1.setFromAxisAngle(axis, angle);\n    this.quaternion.premultiply(_q1);\n    return this;\n  }\n  rotateX(angle) {\n    return this.rotateOnAxis(_xAxis, angle);\n  }\n  rotateY(angle) {\n    return this.rotateOnAxis(_yAxis, angle);\n  }\n  rotateZ(angle) {\n    return this.rotateOnAxis(_zAxis, angle);\n  }\n  translateOnAxis(axis, distance) {\n    _v1$4.copy(axis).applyQuaternion(this.quaternion);\n    this.position.add(_v1$4.multiplyScalar(distance));\n    return this;\n  }\n  translateX(distance) {\n    return this.translateOnAxis(_xAxis, distance);\n  }\n  translateY(distance) {\n    return this.translateOnAxis(_yAxis, distance);\n  }\n  translateZ(distance) {\n    return this.translateOnAxis(_zAxis, distance);\n  }\n  localToWorld(vector) {\n    this.updateWorldMatrix(true, false);\n    return vector.applyMatrix4(this.matrixWorld);\n  }\n  worldToLocal(vector) {\n    this.updateWorldMatrix(true, false);\n    return vector.applyMatrix4(_m1$1.copy(this.matrixWorld).invert());\n  }\n  lookAt(x2, y2, z2) {\n    if (x2.isVector3) {\n      _target.copy(x2);\n    } else {\n      _target.set(x2, y2, z2);\n    }\n    const parent = this.parent;\n    this.updateWorldMatrix(true, false);\n    _position$3.setFromMatrixPosition(this.matrixWorld);\n    if (this.isCamera || this.isLight) {\n      _m1$1.lookAt(_position$3, _target, this.up);\n    } else {\n      _m1$1.lookAt(_target, _position$3, this.up);\n    }\n    this.quaternion.setFromRotationMatrix(_m1$1);\n    if (parent) {\n      _m1$1.extractRotation(parent.matrixWorld);\n      _q1.setFromRotationMatrix(_m1$1);\n      this.quaternion.premultiply(_q1.invert());\n    }\n  }\n  add(object) {\n    if (arguments.length > 1) {\n      for (let i2 = 0; i2 < arguments.length; i2++) {\n        this.add(arguments[i2]);\n      }\n      return this;\n    }\n    if (object === this) {\n      console.error(\"THREE.Object3D.add: object can't be added as a child of itself.\", object);\n      return this;\n    }\n    if (object && object.isObject3D) {\n      if (object.parent !== null) {\n        object.parent.remove(object);\n      }\n      object.parent = this;\n      this.children.push(object);\n      object.dispatchEvent(_addedEvent);\n    } else {\n      console.error(\"THREE.Object3D.add: object not an instance of THREE.Object3D.\", object);\n    }\n    return this;\n  }\n  remove(object) {\n    if (arguments.length > 1) {\n      for (let i2 = 0; i2 < arguments.length; i2++) {\n        this.remove(arguments[i2]);\n      }\n      return this;\n    }\n    const index = this.children.indexOf(object);\n    if (index !== -1) {\n      object.parent = null;\n      this.children.splice(index, 1);\n      object.dispatchEvent(_removedEvent);\n    }\n    return this;\n  }\n  removeFromParent() {\n    const parent = this.parent;\n    if (parent !== null) {\n      parent.remove(this);\n    }\n    return this;\n  }\n  clear() {\n    return this.remove(...this.children);\n  }\n  attach(object) {\n    this.updateWorldMatrix(true, false);\n    _m1$1.copy(this.matrixWorld).invert();\n    if (object.parent !== null) {\n      object.parent.updateWorldMatrix(true, false);\n      _m1$1.multiply(object.parent.matrixWorld);\n    }\n    object.applyMatrix4(_m1$1);\n    this.add(object);\n    object.updateWorldMatrix(false, true);\n    return this;\n  }\n  getObjectById(id) {\n    return this.getObjectByProperty(\"id\", id);\n  }\n  getObjectByName(name) {\n    return this.getObjectByProperty(\"name\", name);\n  }\n  getObjectByProperty(name, value) {\n    if (this[name] === value) return this;\n    for (let i2 = 0, l2 = this.children.length; i2 < l2; i2++) {\n      const child = this.children[i2];\n      const object = child.getObjectByProperty(name, value);\n      if (object !== void 0) {\n        return object;\n      }\n    }\n    return void 0;\n  }\n  getObjectsByProperty(name, value, result = []) {\n    if (this[name] === value) result.push(this);\n    const children = this.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      children[i2].getObjectsByProperty(name, value, result);\n    }\n    return result;\n  }\n  getWorldPosition(target) {\n    this.updateWorldMatrix(true, false);\n    return target.setFromMatrixPosition(this.matrixWorld);\n  }\n  getWorldQuaternion(target) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, target, _scale$2);\n    return target;\n  }\n  getWorldScale(target) {\n    this.updateWorldMatrix(true, false);\n    this.matrixWorld.decompose(_position$3, _quaternion$2, target);\n    return target;\n  }\n  getWorldDirection(target) {\n    this.updateWorldMatrix(true, false);\n    const e2 = this.matrixWorld.elements;\n    return target.set(e2[8], e2[9], e2[10]).normalize();\n  }\n  raycast() {\n  }\n  traverse(callback) {\n    callback(this);\n    const children = this.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      children[i2].traverse(callback);\n    }\n  }\n  traverseVisible(callback) {\n    if (this.visible === false) return;\n    callback(this);\n    const children = this.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      children[i2].traverseVisible(callback);\n    }\n  }\n  traverseAncestors(callback) {\n    const parent = this.parent;\n    if (parent !== null) {\n      callback(parent);\n      parent.traverseAncestors(callback);\n    }\n  }\n  updateMatrix() {\n    this.matrix.compose(this.position, this.quaternion, this.scale);\n    this.matrixWorldNeedsUpdate = true;\n  }\n  updateMatrixWorld(force) {\n    if (this.matrixAutoUpdate) this.updateMatrix();\n    if (this.matrixWorldNeedsUpdate || force) {\n      if (this.parent === null) {\n        this.matrixWorld.copy(this.matrix);\n      } else {\n        this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n      }\n      this.matrixWorldNeedsUpdate = false;\n      force = true;\n    }\n    const children = this.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      const child = children[i2];\n      if (child.matrixWorldAutoUpdate === true || force === true) {\n        child.updateMatrixWorld(force);\n      }\n    }\n  }\n  updateWorldMatrix(updateParents, updateChildren) {\n    const parent = this.parent;\n    if (updateParents === true && parent !== null && parent.matrixWorldAutoUpdate === true) {\n      parent.updateWorldMatrix(true, false);\n    }\n    if (this.matrixAutoUpdate) this.updateMatrix();\n    if (this.parent === null) {\n      this.matrixWorld.copy(this.matrix);\n    } else {\n      this.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\n    }\n    if (updateChildren === true) {\n      const children = this.children;\n      for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n        const child = children[i2];\n        if (child.matrixWorldAutoUpdate === true) {\n          child.updateWorldMatrix(false, true);\n        }\n      }\n    }\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    const output = {};\n    if (isRootObject) {\n      meta = {\n        geometries: {},\n        materials: {},\n        textures: {},\n        images: {},\n        shapes: {},\n        skeletons: {},\n        animations: {},\n        nodes: {}\n      };\n      output.metadata = {\n        version: 4.6,\n        type: \"Object\",\n        generator: \"Object3D.toJSON\"\n      };\n    }\n    const object = {};\n    object.uuid = this.uuid;\n    object.type = this.type;\n    if (this.name !== \"\") object.name = this.name;\n    if (this.castShadow === true) object.castShadow = true;\n    if (this.receiveShadow === true) object.receiveShadow = true;\n    if (this.visible === false) object.visible = false;\n    if (this.frustumCulled === false) object.frustumCulled = false;\n    if (this.renderOrder !== 0) object.renderOrder = this.renderOrder;\n    if (Object.keys(this.userData).length > 0) object.userData = this.userData;\n    object.layers = this.layers.mask;\n    object.matrix = this.matrix.toArray();\n    object.up = this.up.toArray();\n    if (this.matrixAutoUpdate === false) object.matrixAutoUpdate = false;\n    if (this.isInstancedMesh) {\n      object.type = \"InstancedMesh\";\n      object.count = this.count;\n      object.instanceMatrix = this.instanceMatrix.toJSON();\n      if (this.instanceColor !== null) object.instanceColor = this.instanceColor.toJSON();\n    }\n    if (this.isBatchedMesh) {\n      object.type = \"BatchedMesh\";\n      object.perObjectFrustumCulled = this.perObjectFrustumCulled;\n      object.sortObjects = this.sortObjects;\n      object.drawRanges = this._drawRanges;\n      object.reservedRanges = this._reservedRanges;\n      object.visibility = this._visibility;\n      object.active = this._active;\n      object.bounds = this._bounds.map((bound) => ({\n        boxInitialized: bound.boxInitialized,\n        boxMin: bound.box.min.toArray(),\n        boxMax: bound.box.max.toArray(),\n        sphereInitialized: bound.sphereInitialized,\n        sphereRadius: bound.sphere.radius,\n        sphereCenter: bound.sphere.center.toArray()\n      }));\n      object.maxGeometryCount = this._maxGeometryCount;\n      object.maxVertexCount = this._maxVertexCount;\n      object.maxIndexCount = this._maxIndexCount;\n      object.geometryInitialized = this._geometryInitialized;\n      object.geometryCount = this._geometryCount;\n      object.matricesTexture = this._matricesTexture.toJSON(meta);\n      if (this.boundingSphere !== null) {\n        object.boundingSphere = {\n          center: object.boundingSphere.center.toArray(),\n          radius: object.boundingSphere.radius\n        };\n      }\n      if (this.boundingBox !== null) {\n        object.boundingBox = {\n          min: object.boundingBox.min.toArray(),\n          max: object.boundingBox.max.toArray()\n        };\n      }\n    }\n    function serialize(library, element) {\n      if (library[element.uuid] === void 0) {\n        library[element.uuid] = element.toJSON(meta);\n      }\n      return element.uuid;\n    }\n    if (this.isScene) {\n      if (this.background) {\n        if (this.background.isColor) {\n          object.background = this.background.toJSON();\n        } else if (this.background.isTexture) {\n          object.background = this.background.toJSON(meta).uuid;\n        }\n      }\n      if (this.environment && this.environment.isTexture && this.environment.isRenderTargetTexture !== true) {\n        object.environment = this.environment.toJSON(meta).uuid;\n      }\n    } else if (this.isMesh || this.isLine || this.isPoints) {\n      object.geometry = serialize(meta.geometries, this.geometry);\n      const parameters = this.geometry.parameters;\n      if (parameters !== void 0 && parameters.shapes !== void 0) {\n        const shapes = parameters.shapes;\n        if (Array.isArray(shapes)) {\n          for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n            const shape = shapes[i2];\n            serialize(meta.shapes, shape);\n          }\n        } else {\n          serialize(meta.shapes, shapes);\n        }\n      }\n    }\n    if (this.isSkinnedMesh) {\n      object.bindMode = this.bindMode;\n      object.bindMatrix = this.bindMatrix.toArray();\n      if (this.skeleton !== void 0) {\n        serialize(meta.skeletons, this.skeleton);\n        object.skeleton = this.skeleton.uuid;\n      }\n    }\n    if (this.material !== void 0) {\n      if (Array.isArray(this.material)) {\n        const uuids = [];\n        for (let i2 = 0, l2 = this.material.length; i2 < l2; i2++) {\n          uuids.push(serialize(meta.materials, this.material[i2]));\n        }\n        object.material = uuids;\n      } else {\n        object.material = serialize(meta.materials, this.material);\n      }\n    }\n    if (this.children.length > 0) {\n      object.children = [];\n      for (let i2 = 0; i2 < this.children.length; i2++) {\n        object.children.push(this.children[i2].toJSON(meta).object);\n      }\n    }\n    if (this.animations.length > 0) {\n      object.animations = [];\n      for (let i2 = 0; i2 < this.animations.length; i2++) {\n        const animation = this.animations[i2];\n        object.animations.push(serialize(meta.animations, animation));\n      }\n    }\n    if (isRootObject) {\n      const geometries = extractFromCache(meta.geometries);\n      const materials = extractFromCache(meta.materials);\n      const textures = extractFromCache(meta.textures);\n      const images = extractFromCache(meta.images);\n      const shapes = extractFromCache(meta.shapes);\n      const skeletons = extractFromCache(meta.skeletons);\n      const animations = extractFromCache(meta.animations);\n      const nodes = extractFromCache(meta.nodes);\n      if (geometries.length > 0) output.geometries = geometries;\n      if (materials.length > 0) output.materials = materials;\n      if (textures.length > 0) output.textures = textures;\n      if (images.length > 0) output.images = images;\n      if (shapes.length > 0) output.shapes = shapes;\n      if (skeletons.length > 0) output.skeletons = skeletons;\n      if (animations.length > 0) output.animations = animations;\n      if (nodes.length > 0) output.nodes = nodes;\n    }\n    output.object = object;\n    return output;\n    function extractFromCache(cache) {\n      const values = [];\n      for (const key in cache) {\n        const data = cache[key];\n        delete data.metadata;\n        values.push(data);\n      }\n      return values;\n    }\n  }\n  clone(recursive) {\n    return new this.constructor().copy(this, recursive);\n  }\n  copy(source, recursive = true) {\n    this.name = source.name;\n    this.up.copy(source.up);\n    this.position.copy(source.position);\n    this.rotation.order = source.rotation.order;\n    this.quaternion.copy(source.quaternion);\n    this.scale.copy(source.scale);\n    this.matrix.copy(source.matrix);\n    this.matrixWorld.copy(source.matrixWorld);\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    this.matrixWorldAutoUpdate = source.matrixWorldAutoUpdate;\n    this.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\n    this.layers.mask = source.layers.mask;\n    this.visible = source.visible;\n    this.castShadow = source.castShadow;\n    this.receiveShadow = source.receiveShadow;\n    this.frustumCulled = source.frustumCulled;\n    this.renderOrder = source.renderOrder;\n    this.animations = source.animations.slice();\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    if (recursive === true) {\n      for (let i2 = 0; i2 < source.children.length; i2++) {\n        const child = source.children[i2];\n        this.add(child.clone());\n      }\n    }\n    return this;\n  }\n}\nObject3D.DEFAULT_UP = /* @__PURE__ */ new Vector3(0, 1, 0);\nObject3D.DEFAULT_MATRIX_AUTO_UPDATE = true;\nObject3D.DEFAULT_MATRIX_WORLD_AUTO_UPDATE = true;\nconst _v0$1 = /* @__PURE__ */ new Vector3();\nconst _v1$3 = /* @__PURE__ */ new Vector3();\nconst _v2$2 = /* @__PURE__ */ new Vector3();\nconst _v3$2 = /* @__PURE__ */ new Vector3();\nconst _vab = /* @__PURE__ */ new Vector3();\nconst _vac = /* @__PURE__ */ new Vector3();\nconst _vbc = /* @__PURE__ */ new Vector3();\nconst _vap = /* @__PURE__ */ new Vector3();\nconst _vbp = /* @__PURE__ */ new Vector3();\nconst _vcp = /* @__PURE__ */ new Vector3();\nclass Triangle {\n  constructor(a2 = new Vector3(), b2 = new Vector3(), c2 = new Vector3()) {\n    this.a = a2;\n    this.b = b2;\n    this.c = c2;\n  }\n  static getNormal(a2, b2, c2, target) {\n    target.subVectors(c2, b2);\n    _v0$1.subVectors(a2, b2);\n    target.cross(_v0$1);\n    const targetLengthSq = target.lengthSq();\n    if (targetLengthSq > 0) {\n      return target.multiplyScalar(1 / Math.sqrt(targetLengthSq));\n    }\n    return target.set(0, 0, 0);\n  }\n  // static/instance method to calculate barycentric coordinates\n  // based on: http://www.blackpawn.com/texts/pointinpoly/default.html\n  static getBarycoord(point, a2, b2, c2, target) {\n    _v0$1.subVectors(c2, a2);\n    _v1$3.subVectors(b2, a2);\n    _v2$2.subVectors(point, a2);\n    const dot00 = _v0$1.dot(_v0$1);\n    const dot01 = _v0$1.dot(_v1$3);\n    const dot02 = _v0$1.dot(_v2$2);\n    const dot11 = _v1$3.dot(_v1$3);\n    const dot12 = _v1$3.dot(_v2$2);\n    const denom = dot00 * dot11 - dot01 * dot01;\n    if (denom === 0) {\n      target.set(0, 0, 0);\n      return null;\n    }\n    const invDenom = 1 / denom;\n    const u2 = (dot11 * dot02 - dot01 * dot12) * invDenom;\n    const v2 = (dot00 * dot12 - dot01 * dot02) * invDenom;\n    return target.set(1 - u2 - v2, v2, u2);\n  }\n  static containsPoint(point, a2, b2, c2) {\n    if (this.getBarycoord(point, a2, b2, c2, _v3$2) === null) {\n      return false;\n    }\n    return _v3$2.x >= 0 && _v3$2.y >= 0 && _v3$2.x + _v3$2.y <= 1;\n  }\n  static getInterpolation(point, p1, p2, p3, v1, v2, v3, target) {\n    if (this.getBarycoord(point, p1, p2, p3, _v3$2) === null) {\n      target.x = 0;\n      target.y = 0;\n      if (\"z\" in target) target.z = 0;\n      if (\"w\" in target) target.w = 0;\n      return null;\n    }\n    target.setScalar(0);\n    target.addScaledVector(v1, _v3$2.x);\n    target.addScaledVector(v2, _v3$2.y);\n    target.addScaledVector(v3, _v3$2.z);\n    return target;\n  }\n  static isFrontFacing(a2, b2, c2, direction) {\n    _v0$1.subVectors(c2, b2);\n    _v1$3.subVectors(a2, b2);\n    return _v0$1.cross(_v1$3).dot(direction) < 0 ? true : false;\n  }\n  set(a2, b2, c2) {\n    this.a.copy(a2);\n    this.b.copy(b2);\n    this.c.copy(c2);\n    return this;\n  }\n  setFromPointsAndIndices(points, i0, i1, i2) {\n    this.a.copy(points[i0]);\n    this.b.copy(points[i1]);\n    this.c.copy(points[i2]);\n    return this;\n  }\n  setFromAttributeAndIndices(attribute, i0, i1, i2) {\n    this.a.fromBufferAttribute(attribute, i0);\n    this.b.fromBufferAttribute(attribute, i1);\n    this.c.fromBufferAttribute(attribute, i2);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(triangle) {\n    this.a.copy(triangle.a);\n    this.b.copy(triangle.b);\n    this.c.copy(triangle.c);\n    return this;\n  }\n  getArea() {\n    _v0$1.subVectors(this.c, this.b);\n    _v1$3.subVectors(this.a, this.b);\n    return _v0$1.cross(_v1$3).length() * 0.5;\n  }\n  getMidpoint(target) {\n    return target.addVectors(this.a, this.b).add(this.c).multiplyScalar(1 / 3);\n  }\n  getNormal(target) {\n    return Triangle.getNormal(this.a, this.b, this.c, target);\n  }\n  getPlane(target) {\n    return target.setFromCoplanarPoints(this.a, this.b, this.c);\n  }\n  getBarycoord(point, target) {\n    return Triangle.getBarycoord(point, this.a, this.b, this.c, target);\n  }\n  getInterpolation(point, v1, v2, v3, target) {\n    return Triangle.getInterpolation(point, this.a, this.b, this.c, v1, v2, v3, target);\n  }\n  containsPoint(point) {\n    return Triangle.containsPoint(point, this.a, this.b, this.c);\n  }\n  isFrontFacing(direction) {\n    return Triangle.isFrontFacing(this.a, this.b, this.c, direction);\n  }\n  intersectsBox(box) {\n    return box.intersectsTriangle(this);\n  }\n  closestPointToPoint(p2, target) {\n    const a2 = this.a, b2 = this.b, c2 = this.c;\n    let v2, w2;\n    _vab.subVectors(b2, a2);\n    _vac.subVectors(c2, a2);\n    _vap.subVectors(p2, a2);\n    const d1 = _vab.dot(_vap);\n    const d2 = _vac.dot(_vap);\n    if (d1 <= 0 && d2 <= 0) {\n      return target.copy(a2);\n    }\n    _vbp.subVectors(p2, b2);\n    const d3 = _vab.dot(_vbp);\n    const d4 = _vac.dot(_vbp);\n    if (d3 >= 0 && d4 <= d3) {\n      return target.copy(b2);\n    }\n    const vc = d1 * d4 - d3 * d2;\n    if (vc <= 0 && d1 >= 0 && d3 <= 0) {\n      v2 = d1 / (d1 - d3);\n      return target.copy(a2).addScaledVector(_vab, v2);\n    }\n    _vcp.subVectors(p2, c2);\n    const d5 = _vab.dot(_vcp);\n    const d6 = _vac.dot(_vcp);\n    if (d6 >= 0 && d5 <= d6) {\n      return target.copy(c2);\n    }\n    const vb = d5 * d2 - d1 * d6;\n    if (vb <= 0 && d2 >= 0 && d6 <= 0) {\n      w2 = d2 / (d2 - d6);\n      return target.copy(a2).addScaledVector(_vac, w2);\n    }\n    const va = d3 * d6 - d5 * d4;\n    if (va <= 0 && d4 - d3 >= 0 && d5 - d6 >= 0) {\n      _vbc.subVectors(c2, b2);\n      w2 = (d4 - d3) / (d4 - d3 + (d5 - d6));\n      return target.copy(b2).addScaledVector(_vbc, w2);\n    }\n    const denom = 1 / (va + vb + vc);\n    v2 = vb * denom;\n    w2 = vc * denom;\n    return target.copy(a2).addScaledVector(_vab, v2).addScaledVector(_vac, w2);\n  }\n  equals(triangle) {\n    return triangle.a.equals(this.a) && triangle.b.equals(this.b) && triangle.c.equals(this.c);\n  }\n}\nconst _colorKeywords = {\n  \"aliceblue\": 15792383,\n  \"antiquewhite\": 16444375,\n  \"aqua\": 65535,\n  \"aquamarine\": 8388564,\n  \"azure\": 15794175,\n  \"beige\": 16119260,\n  \"bisque\": 16770244,\n  \"black\": 0,\n  \"blanchedalmond\": 16772045,\n  \"blue\": 255,\n  \"blueviolet\": 9055202,\n  \"brown\": 10824234,\n  \"burlywood\": 14596231,\n  \"cadetblue\": 6266528,\n  \"chartreuse\": 8388352,\n  \"chocolate\": 13789470,\n  \"coral\": 16744272,\n  \"cornflowerblue\": 6591981,\n  \"cornsilk\": 16775388,\n  \"crimson\": 14423100,\n  \"cyan\": 65535,\n  \"darkblue\": 139,\n  \"darkcyan\": 35723,\n  \"darkgoldenrod\": 12092939,\n  \"darkgray\": 11119017,\n  \"darkgreen\": 25600,\n  \"darkgrey\": 11119017,\n  \"darkkhaki\": 12433259,\n  \"darkmagenta\": 9109643,\n  \"darkolivegreen\": 5597999,\n  \"darkorange\": 16747520,\n  \"darkorchid\": 10040012,\n  \"darkred\": 9109504,\n  \"darksalmon\": 15308410,\n  \"darkseagreen\": 9419919,\n  \"darkslateblue\": 4734347,\n  \"darkslategray\": 3100495,\n  \"darkslategrey\": 3100495,\n  \"darkturquoise\": 52945,\n  \"darkviolet\": 9699539,\n  \"deeppink\": 16716947,\n  \"deepskyblue\": 49151,\n  \"dimgray\": 6908265,\n  \"dimgrey\": 6908265,\n  \"dodgerblue\": 2003199,\n  \"firebrick\": 11674146,\n  \"floralwhite\": 16775920,\n  \"forestgreen\": 2263842,\n  \"fuchsia\": 16711935,\n  \"gainsboro\": 14474460,\n  \"ghostwhite\": 16316671,\n  \"gold\": 16766720,\n  \"goldenrod\": 14329120,\n  \"gray\": 8421504,\n  \"green\": 32768,\n  \"greenyellow\": 11403055,\n  \"grey\": 8421504,\n  \"honeydew\": 15794160,\n  \"hotpink\": 16738740,\n  \"indianred\": 13458524,\n  \"indigo\": 4915330,\n  \"ivory\": 16777200,\n  \"khaki\": 15787660,\n  \"lavender\": 15132410,\n  \"lavenderblush\": 16773365,\n  \"lawngreen\": 8190976,\n  \"lemonchiffon\": 16775885,\n  \"lightblue\": 11393254,\n  \"lightcoral\": 15761536,\n  \"lightcyan\": 14745599,\n  \"lightgoldenrodyellow\": 16448210,\n  \"lightgray\": 13882323,\n  \"lightgreen\": 9498256,\n  \"lightgrey\": 13882323,\n  \"lightpink\": 16758465,\n  \"lightsalmon\": 16752762,\n  \"lightseagreen\": 2142890,\n  \"lightskyblue\": 8900346,\n  \"lightslategray\": 7833753,\n  \"lightslategrey\": 7833753,\n  \"lightsteelblue\": 11584734,\n  \"lightyellow\": 16777184,\n  \"lime\": 65280,\n  \"limegreen\": 3329330,\n  \"linen\": 16445670,\n  \"magenta\": 16711935,\n  \"maroon\": 8388608,\n  \"mediumaquamarine\": 6737322,\n  \"mediumblue\": 205,\n  \"mediumorchid\": 12211667,\n  \"mediumpurple\": 9662683,\n  \"mediumseagreen\": 3978097,\n  \"mediumslateblue\": 8087790,\n  \"mediumspringgreen\": 64154,\n  \"mediumturquoise\": 4772300,\n  \"mediumvioletred\": 13047173,\n  \"midnightblue\": 1644912,\n  \"mintcream\": 16121850,\n  \"mistyrose\": 16770273,\n  \"moccasin\": 16770229,\n  \"navajowhite\": 16768685,\n  \"navy\": 128,\n  \"oldlace\": 16643558,\n  \"olive\": 8421376,\n  \"olivedrab\": 7048739,\n  \"orange\": 16753920,\n  \"orangered\": 16729344,\n  \"orchid\": 14315734,\n  \"palegoldenrod\": 15657130,\n  \"palegreen\": 10025880,\n  \"paleturquoise\": 11529966,\n  \"palevioletred\": 14381203,\n  \"papayawhip\": 16773077,\n  \"peachpuff\": 16767673,\n  \"peru\": 13468991,\n  \"pink\": 16761035,\n  \"plum\": 14524637,\n  \"powderblue\": 11591910,\n  \"purple\": 8388736,\n  \"rebeccapurple\": 6697881,\n  \"red\": 16711680,\n  \"rosybrown\": 12357519,\n  \"royalblue\": 4286945,\n  \"saddlebrown\": 9127187,\n  \"salmon\": 16416882,\n  \"sandybrown\": 16032864,\n  \"seagreen\": 3050327,\n  \"seashell\": 16774638,\n  \"sienna\": 10506797,\n  \"silver\": 12632256,\n  \"skyblue\": 8900331,\n  \"slateblue\": 6970061,\n  \"slategray\": 7372944,\n  \"slategrey\": 7372944,\n  \"snow\": 16775930,\n  \"springgreen\": 65407,\n  \"steelblue\": 4620980,\n  \"tan\": 13808780,\n  \"teal\": 32896,\n  \"thistle\": 14204888,\n  \"tomato\": 16737095,\n  \"turquoise\": 4251856,\n  \"violet\": 15631086,\n  \"wheat\": 16113331,\n  \"white\": 16777215,\n  \"whitesmoke\": 16119285,\n  \"yellow\": 16776960,\n  \"yellowgreen\": 10145074\n};\nconst _hslA = { h: 0, s: 0, l: 0 };\nconst _hslB = { h: 0, s: 0, l: 0 };\nfunction hue2rgb(p2, q2, t2) {\n  if (t2 < 0) t2 += 1;\n  if (t2 > 1) t2 -= 1;\n  if (t2 < 1 / 6) return p2 + (q2 - p2) * 6 * t2;\n  if (t2 < 1 / 2) return q2;\n  if (t2 < 2 / 3) return p2 + (q2 - p2) * 6 * (2 / 3 - t2);\n  return p2;\n}\nclass Color {\n  constructor(r2, g2, b2) {\n    this.isColor = true;\n    this.r = 1;\n    this.g = 1;\n    this.b = 1;\n    return this.set(r2, g2, b2);\n  }\n  set(r2, g2, b2) {\n    if (g2 === void 0 && b2 === void 0) {\n      const value = r2;\n      if (value && value.isColor) {\n        this.copy(value);\n      } else if (typeof value === \"number\") {\n        this.setHex(value);\n      } else if (typeof value === \"string\") {\n        this.setStyle(value);\n      }\n    } else {\n      this.setRGB(r2, g2, b2);\n    }\n    return this;\n  }\n  setScalar(scalar) {\n    this.r = scalar;\n    this.g = scalar;\n    this.b = scalar;\n    return this;\n  }\n  setHex(hex, colorSpace = SRGBColorSpace$1) {\n    hex = Math.floor(hex);\n    this.r = (hex >> 16 & 255) / 255;\n    this.g = (hex >> 8 & 255) / 255;\n    this.b = (hex & 255) / 255;\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setRGB(r2, g2, b2, colorSpace = ColorManagement.workingColorSpace) {\n    this.r = r2;\n    this.g = g2;\n    this.b = b2;\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setHSL(h2, s2, l2, colorSpace = ColorManagement.workingColorSpace) {\n    h2 = euclideanModulo(h2, 1);\n    s2 = clamp(s2, 0, 1);\n    l2 = clamp(l2, 0, 1);\n    if (s2 === 0) {\n      this.r = this.g = this.b = l2;\n    } else {\n      const p2 = l2 <= 0.5 ? l2 * (1 + s2) : l2 + s2 - l2 * s2;\n      const q2 = 2 * l2 - p2;\n      this.r = hue2rgb(q2, p2, h2 + 1 / 3);\n      this.g = hue2rgb(q2, p2, h2);\n      this.b = hue2rgb(q2, p2, h2 - 1 / 3);\n    }\n    ColorManagement.toWorkingColorSpace(this, colorSpace);\n    return this;\n  }\n  setStyle(style, colorSpace = SRGBColorSpace$1) {\n    function handleAlpha(string) {\n      if (string === void 0) return;\n      if (parseFloat(string) < 1) {\n        console.warn(\"THREE.Color: Alpha component of \" + style + \" will be ignored.\");\n      }\n    }\n    let m2;\n    if (m2 = /^(\\w+)\\(([^\\)]*)\\)/.exec(style)) {\n      let color;\n      const name = m2[1];\n      const components = m2[2];\n      switch (name) {\n        case \"rgb\":\n        case \"rgba\":\n          if (color = /^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            handleAlpha(color[4]);\n            return this.setRGB(\n              Math.min(255, parseInt(color[1], 10)) / 255,\n              Math.min(255, parseInt(color[2], 10)) / 255,\n              Math.min(255, parseInt(color[3], 10)) / 255,\n              colorSpace\n            );\n          }\n          if (color = /^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            handleAlpha(color[4]);\n            return this.setRGB(\n              Math.min(100, parseInt(color[1], 10)) / 100,\n              Math.min(100, parseInt(color[2], 10)) / 100,\n              Math.min(100, parseInt(color[3], 10)) / 100,\n              colorSpace\n            );\n          }\n          break;\n        case \"hsl\":\n        case \"hsla\":\n          if (color = /^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(components)) {\n            handleAlpha(color[4]);\n            return this.setHSL(\n              parseFloat(color[1]) / 360,\n              parseFloat(color[2]) / 100,\n              parseFloat(color[3]) / 100,\n              colorSpace\n            );\n          }\n          break;\n        default:\n          console.warn(\"THREE.Color: Unknown color model \" + style);\n      }\n    } else if (m2 = /^\\#([A-Fa-f\\d]+)$/.exec(style)) {\n      const hex = m2[1];\n      const size = hex.length;\n      if (size === 3) {\n        return this.setRGB(\n          parseInt(hex.charAt(0), 16) / 15,\n          parseInt(hex.charAt(1), 16) / 15,\n          parseInt(hex.charAt(2), 16) / 15,\n          colorSpace\n        );\n      } else if (size === 6) {\n        return this.setHex(parseInt(hex, 16), colorSpace);\n      } else {\n        console.warn(\"THREE.Color: Invalid hex color \" + style);\n      }\n    } else if (style && style.length > 0) {\n      return this.setColorName(style, colorSpace);\n    }\n    return this;\n  }\n  setColorName(style, colorSpace = SRGBColorSpace$1) {\n    const hex = _colorKeywords[style.toLowerCase()];\n    if (hex !== void 0) {\n      this.setHex(hex, colorSpace);\n    } else {\n      console.warn(\"THREE.Color: Unknown color \" + style);\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor(this.r, this.g, this.b);\n  }\n  copy(color) {\n    this.r = color.r;\n    this.g = color.g;\n    this.b = color.b;\n    return this;\n  }\n  copySRGBToLinear(color) {\n    this.r = SRGBToLinear(color.r);\n    this.g = SRGBToLinear(color.g);\n    this.b = SRGBToLinear(color.b);\n    return this;\n  }\n  copyLinearToSRGB(color) {\n    this.r = LinearToSRGB(color.r);\n    this.g = LinearToSRGB(color.g);\n    this.b = LinearToSRGB(color.b);\n    return this;\n  }\n  convertSRGBToLinear() {\n    this.copySRGBToLinear(this);\n    return this;\n  }\n  convertLinearToSRGB() {\n    this.copyLinearToSRGB(this);\n    return this;\n  }\n  getHex(colorSpace = SRGBColorSpace$1) {\n    ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n    return Math.round(clamp(_color.r * 255, 0, 255)) * 65536 + Math.round(clamp(_color.g * 255, 0, 255)) * 256 + Math.round(clamp(_color.b * 255, 0, 255));\n  }\n  getHexString(colorSpace = SRGBColorSpace$1) {\n    return (\"000000\" + this.getHex(colorSpace).toString(16)).slice(-6);\n  }\n  getHSL(target, colorSpace = ColorManagement.workingColorSpace) {\n    ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n    const r2 = _color.r, g2 = _color.g, b2 = _color.b;\n    const max2 = Math.max(r2, g2, b2);\n    const min = Math.min(r2, g2, b2);\n    let hue, saturation;\n    const lightness = (min + max2) / 2;\n    if (min === max2) {\n      hue = 0;\n      saturation = 0;\n    } else {\n      const delta = max2 - min;\n      saturation = lightness <= 0.5 ? delta / (max2 + min) : delta / (2 - max2 - min);\n      switch (max2) {\n        case r2:\n          hue = (g2 - b2) / delta + (g2 < b2 ? 6 : 0);\n          break;\n        case g2:\n          hue = (b2 - r2) / delta + 2;\n          break;\n        case b2:\n          hue = (r2 - g2) / delta + 4;\n          break;\n      }\n      hue /= 6;\n    }\n    target.h = hue;\n    target.s = saturation;\n    target.l = lightness;\n    return target;\n  }\n  getRGB(target, colorSpace = ColorManagement.workingColorSpace) {\n    ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n    target.r = _color.r;\n    target.g = _color.g;\n    target.b = _color.b;\n    return target;\n  }\n  getStyle(colorSpace = SRGBColorSpace$1) {\n    ColorManagement.fromWorkingColorSpace(_color.copy(this), colorSpace);\n    const r2 = _color.r, g2 = _color.g, b2 = _color.b;\n    if (colorSpace !== SRGBColorSpace$1) {\n      return `color(${colorSpace} ${r2.toFixed(3)} ${g2.toFixed(3)} ${b2.toFixed(3)})`;\n    }\n    return `rgb(${Math.round(r2 * 255)},${Math.round(g2 * 255)},${Math.round(b2 * 255)})`;\n  }\n  offsetHSL(h2, s2, l2) {\n    this.getHSL(_hslA);\n    return this.setHSL(_hslA.h + h2, _hslA.s + s2, _hslA.l + l2);\n  }\n  add(color) {\n    this.r += color.r;\n    this.g += color.g;\n    this.b += color.b;\n    return this;\n  }\n  addColors(color1, color2) {\n    this.r = color1.r + color2.r;\n    this.g = color1.g + color2.g;\n    this.b = color1.b + color2.b;\n    return this;\n  }\n  addScalar(s2) {\n    this.r += s2;\n    this.g += s2;\n    this.b += s2;\n    return this;\n  }\n  sub(color) {\n    this.r = Math.max(0, this.r - color.r);\n    this.g = Math.max(0, this.g - color.g);\n    this.b = Math.max(0, this.b - color.b);\n    return this;\n  }\n  multiply(color) {\n    this.r *= color.r;\n    this.g *= color.g;\n    this.b *= color.b;\n    return this;\n  }\n  multiplyScalar(s2) {\n    this.r *= s2;\n    this.g *= s2;\n    this.b *= s2;\n    return this;\n  }\n  lerp(color, alpha) {\n    this.r += (color.r - this.r) * alpha;\n    this.g += (color.g - this.g) * alpha;\n    this.b += (color.b - this.b) * alpha;\n    return this;\n  }\n  lerpColors(color1, color2, alpha) {\n    this.r = color1.r + (color2.r - color1.r) * alpha;\n    this.g = color1.g + (color2.g - color1.g) * alpha;\n    this.b = color1.b + (color2.b - color1.b) * alpha;\n    return this;\n  }\n  lerpHSL(color, alpha) {\n    this.getHSL(_hslA);\n    color.getHSL(_hslB);\n    const h2 = lerp(_hslA.h, _hslB.h, alpha);\n    const s2 = lerp(_hslA.s, _hslB.s, alpha);\n    const l2 = lerp(_hslA.l, _hslB.l, alpha);\n    this.setHSL(h2, s2, l2);\n    return this;\n  }\n  setFromVector3(v2) {\n    this.r = v2.x;\n    this.g = v2.y;\n    this.b = v2.z;\n    return this;\n  }\n  applyMatrix3(m2) {\n    const r2 = this.r, g2 = this.g, b2 = this.b;\n    const e2 = m2.elements;\n    this.r = e2[0] * r2 + e2[3] * g2 + e2[6] * b2;\n    this.g = e2[1] * r2 + e2[4] * g2 + e2[7] * b2;\n    this.b = e2[2] * r2 + e2[5] * g2 + e2[8] * b2;\n    return this;\n  }\n  equals(c2) {\n    return c2.r === this.r && c2.g === this.g && c2.b === this.b;\n  }\n  fromArray(array, offset = 0) {\n    this.r = array[offset];\n    this.g = array[offset + 1];\n    this.b = array[offset + 2];\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    array[offset] = this.r;\n    array[offset + 1] = this.g;\n    array[offset + 2] = this.b;\n    return array;\n  }\n  fromBufferAttribute(attribute, index) {\n    this.r = attribute.getX(index);\n    this.g = attribute.getY(index);\n    this.b = attribute.getZ(index);\n    return this;\n  }\n  toJSON() {\n    return this.getHex();\n  }\n  *[Symbol.iterator]() {\n    yield this.r;\n    yield this.g;\n    yield this.b;\n  }\n}\nconst _color = /* @__PURE__ */ new Color();\nColor.NAMES = _colorKeywords;\nlet _materialId = 0;\nclass Material extends EventDispatcher {\n  constructor() {\n    super();\n    this.isMaterial = true;\n    Object.defineProperty(this, \"id\", { value: _materialId++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"Material\";\n    this.blending = NormalBlending;\n    this.side = FrontSide;\n    this.vertexColors = false;\n    this.opacity = 1;\n    this.transparent = false;\n    this.alphaHash = false;\n    this.blendSrc = SrcAlphaFactor;\n    this.blendDst = OneMinusSrcAlphaFactor;\n    this.blendEquation = AddEquation;\n    this.blendSrcAlpha = null;\n    this.blendDstAlpha = null;\n    this.blendEquationAlpha = null;\n    this.blendColor = new Color(0, 0, 0);\n    this.blendAlpha = 0;\n    this.depthFunc = LessEqualDepth;\n    this.depthTest = true;\n    this.depthWrite = true;\n    this.stencilWriteMask = 255;\n    this.stencilFunc = AlwaysStencilFunc;\n    this.stencilRef = 0;\n    this.stencilFuncMask = 255;\n    this.stencilFail = KeepStencilOp;\n    this.stencilZFail = KeepStencilOp;\n    this.stencilZPass = KeepStencilOp;\n    this.stencilWrite = false;\n    this.clippingPlanes = null;\n    this.clipIntersection = false;\n    this.clipShadows = false;\n    this.shadowSide = null;\n    this.colorWrite = true;\n    this.precision = null;\n    this.polygonOffset = false;\n    this.polygonOffsetFactor = 0;\n    this.polygonOffsetUnits = 0;\n    this.dithering = false;\n    this.alphaToCoverage = false;\n    this.premultipliedAlpha = false;\n    this.forceSinglePass = false;\n    this.visible = true;\n    this.toneMapped = true;\n    this.userData = {};\n    this.version = 0;\n    this._alphaTest = 0;\n  }\n  get alphaTest() {\n    return this._alphaTest;\n  }\n  set alphaTest(value) {\n    if (this._alphaTest > 0 !== value > 0) {\n      this.version++;\n    }\n    this._alphaTest = value;\n  }\n  onBuild() {\n  }\n  onBeforeRender() {\n  }\n  onBeforeCompile() {\n  }\n  customProgramCacheKey() {\n    return this.onBeforeCompile.toString();\n  }\n  setValues(values) {\n    if (values === void 0) return;\n    for (const key in values) {\n      const newValue = values[key];\n      if (newValue === void 0) {\n        console.warn(`THREE.Material: parameter '${key}' has value of undefined.`);\n        continue;\n      }\n      const currentValue = this[key];\n      if (currentValue === void 0) {\n        console.warn(`THREE.Material: '${key}' is not a property of THREE.${this.type}.`);\n        continue;\n      }\n      if (currentValue && currentValue.isColor) {\n        currentValue.set(newValue);\n      } else if (currentValue && currentValue.isVector3 && (newValue && newValue.isVector3)) {\n        currentValue.copy(newValue);\n      } else {\n        this[key] = newValue;\n      }\n    }\n  }\n  toJSON(meta) {\n    const isRootObject = meta === void 0 || typeof meta === \"string\";\n    if (isRootObject) {\n      meta = {\n        textures: {},\n        images: {}\n      };\n    }\n    const data = {\n      metadata: {\n        version: 4.6,\n        type: \"Material\",\n        generator: \"Material.toJSON\"\n      }\n    };\n    data.uuid = this.uuid;\n    data.type = this.type;\n    if (this.name !== \"\") data.name = this.name;\n    if (this.color && this.color.isColor) data.color = this.color.getHex();\n    if (this.roughness !== void 0) data.roughness = this.roughness;\n    if (this.metalness !== void 0) data.metalness = this.metalness;\n    if (this.sheen !== void 0) data.sheen = this.sheen;\n    if (this.sheenColor && this.sheenColor.isColor) data.sheenColor = this.sheenColor.getHex();\n    if (this.sheenRoughness !== void 0) data.sheenRoughness = this.sheenRoughness;\n    if (this.emissive && this.emissive.isColor) data.emissive = this.emissive.getHex();\n    if (this.emissiveIntensity && this.emissiveIntensity !== 1) data.emissiveIntensity = this.emissiveIntensity;\n    if (this.specular && this.specular.isColor) data.specular = this.specular.getHex();\n    if (this.specularIntensity !== void 0) data.specularIntensity = this.specularIntensity;\n    if (this.specularColor && this.specularColor.isColor) data.specularColor = this.specularColor.getHex();\n    if (this.shininess !== void 0) data.shininess = this.shininess;\n    if (this.clearcoat !== void 0) data.clearcoat = this.clearcoat;\n    if (this.clearcoatRoughness !== void 0) data.clearcoatRoughness = this.clearcoatRoughness;\n    if (this.clearcoatMap && this.clearcoatMap.isTexture) {\n      data.clearcoatMap = this.clearcoatMap.toJSON(meta).uuid;\n    }\n    if (this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture) {\n      data.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON(meta).uuid;\n    }\n    if (this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture) {\n      data.clearcoatNormalMap = this.clearcoatNormalMap.toJSON(meta).uuid;\n      data.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\n    }\n    if (this.iridescence !== void 0) data.iridescence = this.iridescence;\n    if (this.iridescenceIOR !== void 0) data.iridescenceIOR = this.iridescenceIOR;\n    if (this.iridescenceThicknessRange !== void 0) data.iridescenceThicknessRange = this.iridescenceThicknessRange;\n    if (this.iridescenceMap && this.iridescenceMap.isTexture) {\n      data.iridescenceMap = this.iridescenceMap.toJSON(meta).uuid;\n    }\n    if (this.iridescenceThicknessMap && this.iridescenceThicknessMap.isTexture) {\n      data.iridescenceThicknessMap = this.iridescenceThicknessMap.toJSON(meta).uuid;\n    }\n    if (this.anisotropy !== void 0) data.anisotropy = this.anisotropy;\n    if (this.anisotropyRotation !== void 0) data.anisotropyRotation = this.anisotropyRotation;\n    if (this.anisotropyMap && this.anisotropyMap.isTexture) {\n      data.anisotropyMap = this.anisotropyMap.toJSON(meta).uuid;\n    }\n    if (this.map && this.map.isTexture) data.map = this.map.toJSON(meta).uuid;\n    if (this.matcap && this.matcap.isTexture) data.matcap = this.matcap.toJSON(meta).uuid;\n    if (this.alphaMap && this.alphaMap.isTexture) data.alphaMap = this.alphaMap.toJSON(meta).uuid;\n    if (this.lightMap && this.lightMap.isTexture) {\n      data.lightMap = this.lightMap.toJSON(meta).uuid;\n      data.lightMapIntensity = this.lightMapIntensity;\n    }\n    if (this.aoMap && this.aoMap.isTexture) {\n      data.aoMap = this.aoMap.toJSON(meta).uuid;\n      data.aoMapIntensity = this.aoMapIntensity;\n    }\n    if (this.bumpMap && this.bumpMap.isTexture) {\n      data.bumpMap = this.bumpMap.toJSON(meta).uuid;\n      data.bumpScale = this.bumpScale;\n    }\n    if (this.normalMap && this.normalMap.isTexture) {\n      data.normalMap = this.normalMap.toJSON(meta).uuid;\n      data.normalMapType = this.normalMapType;\n      data.normalScale = this.normalScale.toArray();\n    }\n    if (this.displacementMap && this.displacementMap.isTexture) {\n      data.displacementMap = this.displacementMap.toJSON(meta).uuid;\n      data.displacementScale = this.displacementScale;\n      data.displacementBias = this.displacementBias;\n    }\n    if (this.roughnessMap && this.roughnessMap.isTexture) data.roughnessMap = this.roughnessMap.toJSON(meta).uuid;\n    if (this.metalnessMap && this.metalnessMap.isTexture) data.metalnessMap = this.metalnessMap.toJSON(meta).uuid;\n    if (this.emissiveMap && this.emissiveMap.isTexture) data.emissiveMap = this.emissiveMap.toJSON(meta).uuid;\n    if (this.specularMap && this.specularMap.isTexture) data.specularMap = this.specularMap.toJSON(meta).uuid;\n    if (this.specularIntensityMap && this.specularIntensityMap.isTexture) data.specularIntensityMap = this.specularIntensityMap.toJSON(meta).uuid;\n    if (this.specularColorMap && this.specularColorMap.isTexture) data.specularColorMap = this.specularColorMap.toJSON(meta).uuid;\n    if (this.envMap && this.envMap.isTexture) {\n      data.envMap = this.envMap.toJSON(meta).uuid;\n      if (this.combine !== void 0) data.combine = this.combine;\n    }\n    if (this.envMapIntensity !== void 0) data.envMapIntensity = this.envMapIntensity;\n    if (this.reflectivity !== void 0) data.reflectivity = this.reflectivity;\n    if (this.refractionRatio !== void 0) data.refractionRatio = this.refractionRatio;\n    if (this.gradientMap && this.gradientMap.isTexture) {\n      data.gradientMap = this.gradientMap.toJSON(meta).uuid;\n    }\n    if (this.transmission !== void 0) data.transmission = this.transmission;\n    if (this.transmissionMap && this.transmissionMap.isTexture) data.transmissionMap = this.transmissionMap.toJSON(meta).uuid;\n    if (this.thickness !== void 0) data.thickness = this.thickness;\n    if (this.thicknessMap && this.thicknessMap.isTexture) data.thicknessMap = this.thicknessMap.toJSON(meta).uuid;\n    if (this.attenuationDistance !== void 0 && this.attenuationDistance !== Infinity) data.attenuationDistance = this.attenuationDistance;\n    if (this.attenuationColor !== void 0) data.attenuationColor = this.attenuationColor.getHex();\n    if (this.size !== void 0) data.size = this.size;\n    if (this.shadowSide !== null) data.shadowSide = this.shadowSide;\n    if (this.sizeAttenuation !== void 0) data.sizeAttenuation = this.sizeAttenuation;\n    if (this.blending !== NormalBlending) data.blending = this.blending;\n    if (this.side !== FrontSide) data.side = this.side;\n    if (this.vertexColors === true) data.vertexColors = true;\n    if (this.opacity < 1) data.opacity = this.opacity;\n    if (this.transparent === true) data.transparent = true;\n    if (this.blendSrc !== SrcAlphaFactor) data.blendSrc = this.blendSrc;\n    if (this.blendDst !== OneMinusSrcAlphaFactor) data.blendDst = this.blendDst;\n    if (this.blendEquation !== AddEquation) data.blendEquation = this.blendEquation;\n    if (this.blendSrcAlpha !== null) data.blendSrcAlpha = this.blendSrcAlpha;\n    if (this.blendDstAlpha !== null) data.blendDstAlpha = this.blendDstAlpha;\n    if (this.blendEquationAlpha !== null) data.blendEquationAlpha = this.blendEquationAlpha;\n    if (this.blendColor && this.blendColor.isColor) data.blendColor = this.blendColor.getHex();\n    if (this.blendAlpha !== 0) data.blendAlpha = this.blendAlpha;\n    if (this.depthFunc !== LessEqualDepth) data.depthFunc = this.depthFunc;\n    if (this.depthTest === false) data.depthTest = this.depthTest;\n    if (this.depthWrite === false) data.depthWrite = this.depthWrite;\n    if (this.colorWrite === false) data.colorWrite = this.colorWrite;\n    if (this.stencilWriteMask !== 255) data.stencilWriteMask = this.stencilWriteMask;\n    if (this.stencilFunc !== AlwaysStencilFunc) data.stencilFunc = this.stencilFunc;\n    if (this.stencilRef !== 0) data.stencilRef = this.stencilRef;\n    if (this.stencilFuncMask !== 255) data.stencilFuncMask = this.stencilFuncMask;\n    if (this.stencilFail !== KeepStencilOp) data.stencilFail = this.stencilFail;\n    if (this.stencilZFail !== KeepStencilOp) data.stencilZFail = this.stencilZFail;\n    if (this.stencilZPass !== KeepStencilOp) data.stencilZPass = this.stencilZPass;\n    if (this.stencilWrite === true) data.stencilWrite = this.stencilWrite;\n    if (this.rotation !== void 0 && this.rotation !== 0) data.rotation = this.rotation;\n    if (this.polygonOffset === true) data.polygonOffset = true;\n    if (this.polygonOffsetFactor !== 0) data.polygonOffsetFactor = this.polygonOffsetFactor;\n    if (this.polygonOffsetUnits !== 0) data.polygonOffsetUnits = this.polygonOffsetUnits;\n    if (this.linewidth !== void 0 && this.linewidth !== 1) data.linewidth = this.linewidth;\n    if (this.dashSize !== void 0) data.dashSize = this.dashSize;\n    if (this.gapSize !== void 0) data.gapSize = this.gapSize;\n    if (this.scale !== void 0) data.scale = this.scale;\n    if (this.dithering === true) data.dithering = true;\n    if (this.alphaTest > 0) data.alphaTest = this.alphaTest;\n    if (this.alphaHash === true) data.alphaHash = true;\n    if (this.alphaToCoverage === true) data.alphaToCoverage = true;\n    if (this.premultipliedAlpha === true) data.premultipliedAlpha = true;\n    if (this.forceSinglePass === true) data.forceSinglePass = true;\n    if (this.wireframe === true) data.wireframe = true;\n    if (this.wireframeLinewidth > 1) data.wireframeLinewidth = this.wireframeLinewidth;\n    if (this.wireframeLinecap !== \"round\") data.wireframeLinecap = this.wireframeLinecap;\n    if (this.wireframeLinejoin !== \"round\") data.wireframeLinejoin = this.wireframeLinejoin;\n    if (this.flatShading === true) data.flatShading = true;\n    if (this.visible === false) data.visible = false;\n    if (this.toneMapped === false) data.toneMapped = false;\n    if (this.fog === false) data.fog = false;\n    if (Object.keys(this.userData).length > 0) data.userData = this.userData;\n    function extractFromCache(cache) {\n      const values = [];\n      for (const key in cache) {\n        const data2 = cache[key];\n        delete data2.metadata;\n        values.push(data2);\n      }\n      return values;\n    }\n    if (isRootObject) {\n      const textures = extractFromCache(meta.textures);\n      const images = extractFromCache(meta.images);\n      if (textures.length > 0) data.textures = textures;\n      if (images.length > 0) data.images = images;\n    }\n    return data;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.name = source.name;\n    this.blending = source.blending;\n    this.side = source.side;\n    this.vertexColors = source.vertexColors;\n    this.opacity = source.opacity;\n    this.transparent = source.transparent;\n    this.blendSrc = source.blendSrc;\n    this.blendDst = source.blendDst;\n    this.blendEquation = source.blendEquation;\n    this.blendSrcAlpha = source.blendSrcAlpha;\n    this.blendDstAlpha = source.blendDstAlpha;\n    this.blendEquationAlpha = source.blendEquationAlpha;\n    this.blendColor.copy(source.blendColor);\n    this.blendAlpha = source.blendAlpha;\n    this.depthFunc = source.depthFunc;\n    this.depthTest = source.depthTest;\n    this.depthWrite = source.depthWrite;\n    this.stencilWriteMask = source.stencilWriteMask;\n    this.stencilFunc = source.stencilFunc;\n    this.stencilRef = source.stencilRef;\n    this.stencilFuncMask = source.stencilFuncMask;\n    this.stencilFail = source.stencilFail;\n    this.stencilZFail = source.stencilZFail;\n    this.stencilZPass = source.stencilZPass;\n    this.stencilWrite = source.stencilWrite;\n    const srcPlanes = source.clippingPlanes;\n    let dstPlanes = null;\n    if (srcPlanes !== null) {\n      const n2 = srcPlanes.length;\n      dstPlanes = new Array(n2);\n      for (let i2 = 0; i2 !== n2; ++i2) {\n        dstPlanes[i2] = srcPlanes[i2].clone();\n      }\n    }\n    this.clippingPlanes = dstPlanes;\n    this.clipIntersection = source.clipIntersection;\n    this.clipShadows = source.clipShadows;\n    this.shadowSide = source.shadowSide;\n    this.colorWrite = source.colorWrite;\n    this.precision = source.precision;\n    this.polygonOffset = source.polygonOffset;\n    this.polygonOffsetFactor = source.polygonOffsetFactor;\n    this.polygonOffsetUnits = source.polygonOffsetUnits;\n    this.dithering = source.dithering;\n    this.alphaTest = source.alphaTest;\n    this.alphaHash = source.alphaHash;\n    this.alphaToCoverage = source.alphaToCoverage;\n    this.premultipliedAlpha = source.premultipliedAlpha;\n    this.forceSinglePass = source.forceSinglePass;\n    this.visible = source.visible;\n    this.toneMapped = source.toneMapped;\n    this.userData = JSON.parse(JSON.stringify(source.userData));\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n  set needsUpdate(value) {\n    if (value === true) this.version++;\n  }\n}\nclass MeshBasicMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshBasicMaterial = true;\n    this.type = \"MeshBasicMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.specularMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.combine = MultiplyOperation;\n    this.reflectivity = 1;\n    this.refractionRatio = 0.98;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.specularMap = source.specularMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.combine = source.combine;\n    this.reflectivity = source.reflectivity;\n    this.refractionRatio = source.refractionRatio;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.fog = source.fog;\n    return this;\n  }\n}\nconst _tables = /* @__PURE__ */ _generateTables();\nfunction _generateTables() {\n  const buffer = new ArrayBuffer(4);\n  const floatView = new Float32Array(buffer);\n  const uint32View = new Uint32Array(buffer);\n  const baseTable = new Uint32Array(512);\n  const shiftTable = new Uint32Array(512);\n  for (let i2 = 0; i2 < 256; ++i2) {\n    const e2 = i2 - 127;\n    if (e2 < -27) {\n      baseTable[i2] = 0;\n      baseTable[i2 | 256] = 32768;\n      shiftTable[i2] = 24;\n      shiftTable[i2 | 256] = 24;\n    } else if (e2 < -14) {\n      baseTable[i2] = 1024 >> -e2 - 14;\n      baseTable[i2 | 256] = 1024 >> -e2 - 14 | 32768;\n      shiftTable[i2] = -e2 - 1;\n      shiftTable[i2 | 256] = -e2 - 1;\n    } else if (e2 <= 15) {\n      baseTable[i2] = e2 + 15 << 10;\n      baseTable[i2 | 256] = e2 + 15 << 10 | 32768;\n      shiftTable[i2] = 13;\n      shiftTable[i2 | 256] = 13;\n    } else if (e2 < 128) {\n      baseTable[i2] = 31744;\n      baseTable[i2 | 256] = 64512;\n      shiftTable[i2] = 24;\n      shiftTable[i2 | 256] = 24;\n    } else {\n      baseTable[i2] = 31744;\n      baseTable[i2 | 256] = 64512;\n      shiftTable[i2] = 13;\n      shiftTable[i2 | 256] = 13;\n    }\n  }\n  const mantissaTable = new Uint32Array(2048);\n  const exponentTable = new Uint32Array(64);\n  const offsetTable = new Uint32Array(64);\n  for (let i2 = 1; i2 < 1024; ++i2) {\n    let m2 = i2 << 13;\n    let e2 = 0;\n    while ((m2 & 8388608) === 0) {\n      m2 <<= 1;\n      e2 -= 8388608;\n    }\n    m2 &= -8388609;\n    e2 += 947912704;\n    mantissaTable[i2] = m2 | e2;\n  }\n  for (let i2 = 1024; i2 < 2048; ++i2) {\n    mantissaTable[i2] = 939524096 + (i2 - 1024 << 13);\n  }\n  for (let i2 = 1; i2 < 31; ++i2) {\n    exponentTable[i2] = i2 << 23;\n  }\n  exponentTable[31] = 1199570944;\n  exponentTable[32] = 2147483648;\n  for (let i2 = 33; i2 < 63; ++i2) {\n    exponentTable[i2] = 2147483648 + (i2 - 32 << 23);\n  }\n  exponentTable[63] = 3347054592;\n  for (let i2 = 1; i2 < 64; ++i2) {\n    if (i2 !== 32) {\n      offsetTable[i2] = 1024;\n    }\n  }\n  return {\n    floatView,\n    uint32View,\n    baseTable,\n    shiftTable,\n    mantissaTable,\n    exponentTable,\n    offsetTable\n  };\n}\nfunction toHalfFloat(val) {\n  if (Math.abs(val) > 65504) console.warn(\"THREE.DataUtils.toHalfFloat(): Value out of range.\");\n  val = clamp(val, -65504, 65504);\n  _tables.floatView[0] = val;\n  const f2 = _tables.uint32View[0];\n  const e2 = f2 >> 23 & 511;\n  return _tables.baseTable[e2] + ((f2 & 8388607) >> _tables.shiftTable[e2]);\n}\nfunction fromHalfFloat(val) {\n  const m2 = val >> 10;\n  _tables.uint32View[0] = _tables.mantissaTable[_tables.offsetTable[m2] + (val & 1023)] + _tables.exponentTable[m2];\n  return _tables.floatView[0];\n}\nconst DataUtils = {\n  toHalfFloat,\n  fromHalfFloat\n};\nconst _vector$9 = /* @__PURE__ */ new Vector3();\nconst _vector2$1 = /* @__PURE__ */ new Vector2();\nclass BufferAttribute {\n  constructor(array, itemSize, normalized = false) {\n    if (Array.isArray(array)) {\n      throw new TypeError(\"THREE.BufferAttribute: array should be a Typed Array.\");\n    }\n    this.isBufferAttribute = true;\n    this.name = \"\";\n    this.array = array;\n    this.itemSize = itemSize;\n    this.count = array !== void 0 ? array.length / itemSize : 0;\n    this.normalized = normalized;\n    this.usage = StaticDrawUsage;\n    this._updateRange = { offset: 0, count: -1 };\n    this.updateRanges = [];\n    this.gpuType = FloatType;\n    this.version = 0;\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(value) {\n    if (value === true) this.version++;\n  }\n  get updateRange() {\n    warnOnce(\"THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.\");\n    return this._updateRange;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  addUpdateRange(start, count) {\n    this.updateRanges.push({ start, count });\n  }\n  clearUpdateRanges() {\n    this.updateRanges.length = 0;\n  }\n  copy(source) {\n    this.name = source.name;\n    this.array = new source.array.constructor(source.array);\n    this.itemSize = source.itemSize;\n    this.count = source.count;\n    this.normalized = source.normalized;\n    this.usage = source.usage;\n    this.gpuType = source.gpuType;\n    return this;\n  }\n  copyAt(index1, attribute, index2) {\n    index1 *= this.itemSize;\n    index2 *= attribute.itemSize;\n    for (let i2 = 0, l2 = this.itemSize; i2 < l2; i2++) {\n      this.array[index1 + i2] = attribute.array[index2 + i2];\n    }\n    return this;\n  }\n  copyArray(array) {\n    this.array.set(array);\n    return this;\n  }\n  applyMatrix3(m2) {\n    if (this.itemSize === 2) {\n      for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n        _vector2$1.fromBufferAttribute(this, i2);\n        _vector2$1.applyMatrix3(m2);\n        this.setXY(i2, _vector2$1.x, _vector2$1.y);\n      }\n    } else if (this.itemSize === 3) {\n      for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n        _vector$9.fromBufferAttribute(this, i2);\n        _vector$9.applyMatrix3(m2);\n        this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n      }\n    }\n    return this;\n  }\n  applyMatrix4(m2) {\n    for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n      _vector$9.fromBufferAttribute(this, i2);\n      _vector$9.applyMatrix4(m2);\n      this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m2) {\n    for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n      _vector$9.fromBufferAttribute(this, i2);\n      _vector$9.applyNormalMatrix(m2);\n      this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  transformDirection(m2) {\n    for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n      _vector$9.fromBufferAttribute(this, i2);\n      _vector$9.transformDirection(m2);\n      this.setXYZ(i2, _vector$9.x, _vector$9.y, _vector$9.z);\n    }\n    return this;\n  }\n  set(value, offset = 0) {\n    this.array.set(value, offset);\n    return this;\n  }\n  getComponent(index, component) {\n    let value = this.array[index * this.itemSize + component];\n    if (this.normalized) value = denormalize(value, this.array);\n    return value;\n  }\n  setComponent(index, component, value) {\n    if (this.normalized) value = normalize(value, this.array);\n    this.array[index * this.itemSize + component] = value;\n    return this;\n  }\n  getX(index) {\n    let x2 = this.array[index * this.itemSize];\n    if (this.normalized) x2 = denormalize(x2, this.array);\n    return x2;\n  }\n  setX(index, x2) {\n    if (this.normalized) x2 = normalize(x2, this.array);\n    this.array[index * this.itemSize] = x2;\n    return this;\n  }\n  getY(index) {\n    let y2 = this.array[index * this.itemSize + 1];\n    if (this.normalized) y2 = denormalize(y2, this.array);\n    return y2;\n  }\n  setY(index, y2) {\n    if (this.normalized) y2 = normalize(y2, this.array);\n    this.array[index * this.itemSize + 1] = y2;\n    return this;\n  }\n  getZ(index) {\n    let z2 = this.array[index * this.itemSize + 2];\n    if (this.normalized) z2 = denormalize(z2, this.array);\n    return z2;\n  }\n  setZ(index, z2) {\n    if (this.normalized) z2 = normalize(z2, this.array);\n    this.array[index * this.itemSize + 2] = z2;\n    return this;\n  }\n  getW(index) {\n    let w2 = this.array[index * this.itemSize + 3];\n    if (this.normalized) w2 = denormalize(w2, this.array);\n    return w2;\n  }\n  setW(index, w2) {\n    if (this.normalized) w2 = normalize(w2, this.array);\n    this.array[index * this.itemSize + 3] = w2;\n    return this;\n  }\n  setXY(index, x2, y2) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n    }\n    this.array[index + 0] = x2;\n    this.array[index + 1] = y2;\n    return this;\n  }\n  setXYZ(index, x2, y2, z2) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n      z2 = normalize(z2, this.array);\n    }\n    this.array[index + 0] = x2;\n    this.array[index + 1] = y2;\n    this.array[index + 2] = z2;\n    return this;\n  }\n  setXYZW(index, x2, y2, z2, w2) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n      z2 = normalize(z2, this.array);\n      w2 = normalize(w2, this.array);\n    }\n    this.array[index + 0] = x2;\n    this.array[index + 1] = y2;\n    this.array[index + 2] = z2;\n    this.array[index + 3] = w2;\n    return this;\n  }\n  onUpload(callback) {\n    this.onUploadCallback = callback;\n    return this;\n  }\n  clone() {\n    return new this.constructor(this.array, this.itemSize).copy(this);\n  }\n  toJSON() {\n    const data = {\n      itemSize: this.itemSize,\n      type: this.array.constructor.name,\n      array: Array.from(this.array),\n      normalized: this.normalized\n    };\n    if (this.name !== \"\") data.name = this.name;\n    if (this.usage !== StaticDrawUsage) data.usage = this.usage;\n    return data;\n  }\n}\nclass Int8BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int8Array(array), itemSize, normalized);\n  }\n}\nclass Uint8BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint8Array(array), itemSize, normalized);\n  }\n}\nclass Uint8ClampedBufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint8ClampedArray(array), itemSize, normalized);\n  }\n}\nclass Int16BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int16Array(array), itemSize, normalized);\n  }\n}\nclass Uint16BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint16Array(array), itemSize, normalized);\n  }\n}\nclass Int32BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Int32Array(array), itemSize, normalized);\n  }\n}\nclass Uint32BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint32Array(array), itemSize, normalized);\n  }\n}\nclass Float16BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Uint16Array(array), itemSize, normalized);\n    this.isFloat16BufferAttribute = true;\n  }\n  getX(index) {\n    let x2 = fromHalfFloat(this.array[index * this.itemSize]);\n    if (this.normalized) x2 = denormalize(x2, this.array);\n    return x2;\n  }\n  setX(index, x2) {\n    if (this.normalized) x2 = normalize(x2, this.array);\n    this.array[index * this.itemSize] = toHalfFloat(x2);\n    return this;\n  }\n  getY(index) {\n    let y2 = fromHalfFloat(this.array[index * this.itemSize + 1]);\n    if (this.normalized) y2 = denormalize(y2, this.array);\n    return y2;\n  }\n  setY(index, y2) {\n    if (this.normalized) y2 = normalize(y2, this.array);\n    this.array[index * this.itemSize + 1] = toHalfFloat(y2);\n    return this;\n  }\n  getZ(index) {\n    let z2 = fromHalfFloat(this.array[index * this.itemSize + 2]);\n    if (this.normalized) z2 = denormalize(z2, this.array);\n    return z2;\n  }\n  setZ(index, z2) {\n    if (this.normalized) z2 = normalize(z2, this.array);\n    this.array[index * this.itemSize + 2] = toHalfFloat(z2);\n    return this;\n  }\n  getW(index) {\n    let w2 = fromHalfFloat(this.array[index * this.itemSize + 3]);\n    if (this.normalized) w2 = denormalize(w2, this.array);\n    return w2;\n  }\n  setW(index, w2) {\n    if (this.normalized) w2 = normalize(w2, this.array);\n    this.array[index * this.itemSize + 3] = toHalfFloat(w2);\n    return this;\n  }\n  setXY(index, x2, y2) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n    }\n    this.array[index + 0] = toHalfFloat(x2);\n    this.array[index + 1] = toHalfFloat(y2);\n    return this;\n  }\n  setXYZ(index, x2, y2, z2) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n      z2 = normalize(z2, this.array);\n    }\n    this.array[index + 0] = toHalfFloat(x2);\n    this.array[index + 1] = toHalfFloat(y2);\n    this.array[index + 2] = toHalfFloat(z2);\n    return this;\n  }\n  setXYZW(index, x2, y2, z2, w2) {\n    index *= this.itemSize;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n      z2 = normalize(z2, this.array);\n      w2 = normalize(w2, this.array);\n    }\n    this.array[index + 0] = toHalfFloat(x2);\n    this.array[index + 1] = toHalfFloat(y2);\n    this.array[index + 2] = toHalfFloat(z2);\n    this.array[index + 3] = toHalfFloat(w2);\n    return this;\n  }\n}\nclass Float32BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Float32Array(array), itemSize, normalized);\n  }\n}\nclass Float64BufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized) {\n    super(new Float64Array(array), itemSize, normalized);\n  }\n}\nlet _id$2 = 0;\nconst _m1 = /* @__PURE__ */ new Matrix4();\nconst _obj = /* @__PURE__ */ new Object3D();\nconst _offset = /* @__PURE__ */ new Vector3();\nconst _box$2 = /* @__PURE__ */ new Box3();\nconst _boxMorphTargets = /* @__PURE__ */ new Box3();\nconst _vector$8 = /* @__PURE__ */ new Vector3();\nclass BufferGeometry extends EventDispatcher {\n  constructor() {\n    super();\n    this.isBufferGeometry = true;\n    Object.defineProperty(this, \"id\", { value: _id$2++ });\n    this.uuid = generateUUID();\n    this.name = \"\";\n    this.type = \"BufferGeometry\";\n    this.index = null;\n    this.attributes = {};\n    this.morphAttributes = {};\n    this.morphTargetsRelative = false;\n    this.groups = [];\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    this.drawRange = { start: 0, count: Infinity };\n    this.userData = {};\n  }\n  getIndex() {\n    return this.index;\n  }\n  setIndex(index) {\n    if (Array.isArray(index)) {\n      this.index = new (arrayNeedsUint32(index) ? Uint32BufferAttribute : Uint16BufferAttribute)(index, 1);\n    } else {\n      this.index = index;\n    }\n    return this;\n  }\n  getAttribute(name) {\n    return this.attributes[name];\n  }\n  setAttribute(name, attribute) {\n    this.attributes[name] = attribute;\n    return this;\n  }\n  deleteAttribute(name) {\n    delete this.attributes[name];\n    return this;\n  }\n  hasAttribute(name) {\n    return this.attributes[name] !== void 0;\n  }\n  addGroup(start, count, materialIndex = 0) {\n    this.groups.push({\n      start,\n      count,\n      materialIndex\n    });\n  }\n  clearGroups() {\n    this.groups = [];\n  }\n  setDrawRange(start, count) {\n    this.drawRange.start = start;\n    this.drawRange.count = count;\n  }\n  applyMatrix4(matrix) {\n    const position = this.attributes.position;\n    if (position !== void 0) {\n      position.applyMatrix4(matrix);\n      position.needsUpdate = true;\n    }\n    const normal = this.attributes.normal;\n    if (normal !== void 0) {\n      const normalMatrix = new Matrix3().getNormalMatrix(matrix);\n      normal.applyNormalMatrix(normalMatrix);\n      normal.needsUpdate = true;\n    }\n    const tangent = this.attributes.tangent;\n    if (tangent !== void 0) {\n      tangent.transformDirection(matrix);\n      tangent.needsUpdate = true;\n    }\n    if (this.boundingBox !== null) {\n      this.computeBoundingBox();\n    }\n    if (this.boundingSphere !== null) {\n      this.computeBoundingSphere();\n    }\n    return this;\n  }\n  applyQuaternion(q2) {\n    _m1.makeRotationFromQuaternion(q2);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateX(angle) {\n    _m1.makeRotationX(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateY(angle) {\n    _m1.makeRotationY(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  rotateZ(angle) {\n    _m1.makeRotationZ(angle);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  translate(x2, y2, z2) {\n    _m1.makeTranslation(x2, y2, z2);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  scale(x2, y2, z2) {\n    _m1.makeScale(x2, y2, z2);\n    this.applyMatrix4(_m1);\n    return this;\n  }\n  lookAt(vector) {\n    _obj.lookAt(vector);\n    _obj.updateMatrix();\n    this.applyMatrix4(_obj.matrix);\n    return this;\n  }\n  center() {\n    this.computeBoundingBox();\n    this.boundingBox.getCenter(_offset).negate();\n    this.translate(_offset.x, _offset.y, _offset.z);\n    return this;\n  }\n  setFromPoints(points) {\n    const position = [];\n    for (let i2 = 0, l2 = points.length; i2 < l2; i2++) {\n      const point = points[i2];\n      position.push(point.x, point.y, point.z || 0);\n    }\n    this.setAttribute(\"position\", new Float32BufferAttribute(position, 3));\n    return this;\n  }\n  computeBoundingBox() {\n    if (this.boundingBox === null) {\n      this.boundingBox = new Box3();\n    }\n    const position = this.attributes.position;\n    const morphAttributesPosition = this.morphAttributes.position;\n    if (position && position.isGLBufferAttribute) {\n      console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n      this.boundingBox.set(\n        new Vector3(-Infinity, -Infinity, -Infinity),\n        new Vector3(Infinity, Infinity, Infinity)\n      );\n      return;\n    }\n    if (position !== void 0) {\n      this.boundingBox.setFromBufferAttribute(position);\n      if (morphAttributesPosition) {\n        for (let i2 = 0, il = morphAttributesPosition.length; i2 < il; i2++) {\n          const morphAttribute = morphAttributesPosition[i2];\n          _box$2.setFromBufferAttribute(morphAttribute);\n          if (this.morphTargetsRelative) {\n            _vector$8.addVectors(this.boundingBox.min, _box$2.min);\n            this.boundingBox.expandByPoint(_vector$8);\n            _vector$8.addVectors(this.boundingBox.max, _box$2.max);\n            this.boundingBox.expandByPoint(_vector$8);\n          } else {\n            this.boundingBox.expandByPoint(_box$2.min);\n            this.boundingBox.expandByPoint(_box$2.max);\n          }\n        }\n      }\n    } else {\n      this.boundingBox.makeEmpty();\n    }\n    if (isNaN(this.boundingBox.min.x) || isNaN(this.boundingBox.min.y) || isNaN(this.boundingBox.min.z)) {\n      console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this);\n    }\n  }\n  computeBoundingSphere() {\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new Sphere();\n    }\n    const position = this.attributes.position;\n    const morphAttributesPosition = this.morphAttributes.position;\n    if (position && position.isGLBufferAttribute) {\n      console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this);\n      this.boundingSphere.set(new Vector3(), Infinity);\n      return;\n    }\n    if (position) {\n      const center = this.boundingSphere.center;\n      _box$2.setFromBufferAttribute(position);\n      if (morphAttributesPosition) {\n        for (let i2 = 0, il = morphAttributesPosition.length; i2 < il; i2++) {\n          const morphAttribute = morphAttributesPosition[i2];\n          _boxMorphTargets.setFromBufferAttribute(morphAttribute);\n          if (this.morphTargetsRelative) {\n            _vector$8.addVectors(_box$2.min, _boxMorphTargets.min);\n            _box$2.expandByPoint(_vector$8);\n            _vector$8.addVectors(_box$2.max, _boxMorphTargets.max);\n            _box$2.expandByPoint(_vector$8);\n          } else {\n            _box$2.expandByPoint(_boxMorphTargets.min);\n            _box$2.expandByPoint(_boxMorphTargets.max);\n          }\n        }\n      }\n      _box$2.getCenter(center);\n      let maxRadiusSq = 0;\n      for (let i2 = 0, il = position.count; i2 < il; i2++) {\n        _vector$8.fromBufferAttribute(position, i2);\n        maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n      }\n      if (morphAttributesPosition) {\n        for (let i2 = 0, il = morphAttributesPosition.length; i2 < il; i2++) {\n          const morphAttribute = morphAttributesPosition[i2];\n          const morphTargetsRelative = this.morphTargetsRelative;\n          for (let j2 = 0, jl = morphAttribute.count; j2 < jl; j2++) {\n            _vector$8.fromBufferAttribute(morphAttribute, j2);\n            if (morphTargetsRelative) {\n              _offset.fromBufferAttribute(position, j2);\n              _vector$8.add(_offset);\n            }\n            maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(_vector$8));\n          }\n        }\n      }\n      this.boundingSphere.radius = Math.sqrt(maxRadiusSq);\n      if (isNaN(this.boundingSphere.radius)) {\n        console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this);\n      }\n    }\n  }\n  computeTangents() {\n    const index = this.index;\n    const attributes = this.attributes;\n    if (index === null || attributes.position === void 0 || attributes.normal === void 0 || attributes.uv === void 0) {\n      console.error(\"THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)\");\n      return;\n    }\n    const indices = index.array;\n    const positions = attributes.position.array;\n    const normals = attributes.normal.array;\n    const uvs = attributes.uv.array;\n    const nVertices = positions.length / 3;\n    if (this.hasAttribute(\"tangent\") === false) {\n      this.setAttribute(\"tangent\", new BufferAttribute(new Float32Array(4 * nVertices), 4));\n    }\n    const tangents = this.getAttribute(\"tangent\").array;\n    const tan1 = [], tan2 = [];\n    for (let i2 = 0; i2 < nVertices; i2++) {\n      tan1[i2] = new Vector3();\n      tan2[i2] = new Vector3();\n    }\n    const vA2 = new Vector3(), vB = new Vector3(), vC = new Vector3(), uvA = new Vector2(), uvB = new Vector2(), uvC = new Vector2(), sdir = new Vector3(), tdir = new Vector3();\n    function handleTriangle(a2, b2, c2) {\n      vA2.fromArray(positions, a2 * 3);\n      vB.fromArray(positions, b2 * 3);\n      vC.fromArray(positions, c2 * 3);\n      uvA.fromArray(uvs, a2 * 2);\n      uvB.fromArray(uvs, b2 * 2);\n      uvC.fromArray(uvs, c2 * 2);\n      vB.sub(vA2);\n      vC.sub(vA2);\n      uvB.sub(uvA);\n      uvC.sub(uvA);\n      const r2 = 1 / (uvB.x * uvC.y - uvC.x * uvB.y);\n      if (!isFinite(r2)) return;\n      sdir.copy(vB).multiplyScalar(uvC.y).addScaledVector(vC, -uvB.y).multiplyScalar(r2);\n      tdir.copy(vC).multiplyScalar(uvB.x).addScaledVector(vB, -uvC.x).multiplyScalar(r2);\n      tan1[a2].add(sdir);\n      tan1[b2].add(sdir);\n      tan1[c2].add(sdir);\n      tan2[a2].add(tdir);\n      tan2[b2].add(tdir);\n      tan2[c2].add(tdir);\n    }\n    let groups = this.groups;\n    if (groups.length === 0) {\n      groups = [{\n        start: 0,\n        count: indices.length\n      }];\n    }\n    for (let i2 = 0, il = groups.length; i2 < il; ++i2) {\n      const group = groups[i2];\n      const start = group.start;\n      const count = group.count;\n      for (let j2 = start, jl = start + count; j2 < jl; j2 += 3) {\n        handleTriangle(\n          indices[j2 + 0],\n          indices[j2 + 1],\n          indices[j2 + 2]\n        );\n      }\n    }\n    const tmp2 = new Vector3(), tmp22 = new Vector3();\n    const n2 = new Vector3(), n22 = new Vector3();\n    function handleVertex(v2) {\n      n2.fromArray(normals, v2 * 3);\n      n22.copy(n2);\n      const t2 = tan1[v2];\n      tmp2.copy(t2);\n      tmp2.sub(n2.multiplyScalar(n2.dot(t2))).normalize();\n      tmp22.crossVectors(n22, t2);\n      const test = tmp22.dot(tan2[v2]);\n      const w2 = test < 0 ? -1 : 1;\n      tangents[v2 * 4] = tmp2.x;\n      tangents[v2 * 4 + 1] = tmp2.y;\n      tangents[v2 * 4 + 2] = tmp2.z;\n      tangents[v2 * 4 + 3] = w2;\n    }\n    for (let i2 = 0, il = groups.length; i2 < il; ++i2) {\n      const group = groups[i2];\n      const start = group.start;\n      const count = group.count;\n      for (let j2 = start, jl = start + count; j2 < jl; j2 += 3) {\n        handleVertex(indices[j2 + 0]);\n        handleVertex(indices[j2 + 1]);\n        handleVertex(indices[j2 + 2]);\n      }\n    }\n  }\n  computeVertexNormals() {\n    const index = this.index;\n    const positionAttribute = this.getAttribute(\"position\");\n    if (positionAttribute !== void 0) {\n      let normalAttribute = this.getAttribute(\"normal\");\n      if (normalAttribute === void 0) {\n        normalAttribute = new BufferAttribute(new Float32Array(positionAttribute.count * 3), 3);\n        this.setAttribute(\"normal\", normalAttribute);\n      } else {\n        for (let i2 = 0, il = normalAttribute.count; i2 < il; i2++) {\n          normalAttribute.setXYZ(i2, 0, 0, 0);\n        }\n      }\n      const pA2 = new Vector3(), pB = new Vector3(), pC = new Vector3();\n      const nA2 = new Vector3(), nB = new Vector3(), nC = new Vector3();\n      const cb = new Vector3(), ab = new Vector3();\n      if (index) {\n        for (let i2 = 0, il = index.count; i2 < il; i2 += 3) {\n          const vA2 = index.getX(i2 + 0);\n          const vB = index.getX(i2 + 1);\n          const vC = index.getX(i2 + 2);\n          pA2.fromBufferAttribute(positionAttribute, vA2);\n          pB.fromBufferAttribute(positionAttribute, vB);\n          pC.fromBufferAttribute(positionAttribute, vC);\n          cb.subVectors(pC, pB);\n          ab.subVectors(pA2, pB);\n          cb.cross(ab);\n          nA2.fromBufferAttribute(normalAttribute, vA2);\n          nB.fromBufferAttribute(normalAttribute, vB);\n          nC.fromBufferAttribute(normalAttribute, vC);\n          nA2.add(cb);\n          nB.add(cb);\n          nC.add(cb);\n          normalAttribute.setXYZ(vA2, nA2.x, nA2.y, nA2.z);\n          normalAttribute.setXYZ(vB, nB.x, nB.y, nB.z);\n          normalAttribute.setXYZ(vC, nC.x, nC.y, nC.z);\n        }\n      } else {\n        for (let i2 = 0, il = positionAttribute.count; i2 < il; i2 += 3) {\n          pA2.fromBufferAttribute(positionAttribute, i2 + 0);\n          pB.fromBufferAttribute(positionAttribute, i2 + 1);\n          pC.fromBufferAttribute(positionAttribute, i2 + 2);\n          cb.subVectors(pC, pB);\n          ab.subVectors(pA2, pB);\n          cb.cross(ab);\n          normalAttribute.setXYZ(i2 + 0, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i2 + 1, cb.x, cb.y, cb.z);\n          normalAttribute.setXYZ(i2 + 2, cb.x, cb.y, cb.z);\n        }\n      }\n      this.normalizeNormals();\n      normalAttribute.needsUpdate = true;\n    }\n  }\n  normalizeNormals() {\n    const normals = this.attributes.normal;\n    for (let i2 = 0, il = normals.count; i2 < il; i2++) {\n      _vector$8.fromBufferAttribute(normals, i2);\n      _vector$8.normalize();\n      normals.setXYZ(i2, _vector$8.x, _vector$8.y, _vector$8.z);\n    }\n  }\n  toNonIndexed() {\n    function convertBufferAttribute(attribute, indices2) {\n      const array = attribute.array;\n      const itemSize = attribute.itemSize;\n      const normalized = attribute.normalized;\n      const array2 = new array.constructor(indices2.length * itemSize);\n      let index = 0, index2 = 0;\n      for (let i2 = 0, l2 = indices2.length; i2 < l2; i2++) {\n        if (attribute.isInterleavedBufferAttribute) {\n          index = indices2[i2] * attribute.data.stride + attribute.offset;\n        } else {\n          index = indices2[i2] * itemSize;\n        }\n        for (let j2 = 0; j2 < itemSize; j2++) {\n          array2[index2++] = array[index++];\n        }\n      }\n      return new BufferAttribute(array2, itemSize, normalized);\n    }\n    if (this.index === null) {\n      console.warn(\"THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.\");\n      return this;\n    }\n    const geometry2 = new BufferGeometry();\n    const indices = this.index.array;\n    const attributes = this.attributes;\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      const newAttribute = convertBufferAttribute(attribute, indices);\n      geometry2.setAttribute(name, newAttribute);\n    }\n    const morphAttributes = this.morphAttributes;\n    for (const name in morphAttributes) {\n      const morphArray = [];\n      const morphAttribute = morphAttributes[name];\n      for (let i2 = 0, il = morphAttribute.length; i2 < il; i2++) {\n        const attribute = morphAttribute[i2];\n        const newAttribute = convertBufferAttribute(attribute, indices);\n        morphArray.push(newAttribute);\n      }\n      geometry2.morphAttributes[name] = morphArray;\n    }\n    geometry2.morphTargetsRelative = this.morphTargetsRelative;\n    const groups = this.groups;\n    for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n      const group = groups[i2];\n      geometry2.addGroup(group.start, group.count, group.materialIndex);\n    }\n    return geometry2;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.6,\n        type: \"BufferGeometry\",\n        generator: \"BufferGeometry.toJSON\"\n      }\n    };\n    data.uuid = this.uuid;\n    data.type = this.type;\n    if (this.name !== \"\") data.name = this.name;\n    if (Object.keys(this.userData).length > 0) data.userData = this.userData;\n    if (this.parameters !== void 0) {\n      const parameters = this.parameters;\n      for (const key in parameters) {\n        if (parameters[key] !== void 0) data[key] = parameters[key];\n      }\n      return data;\n    }\n    data.data = { attributes: {} };\n    const index = this.index;\n    if (index !== null) {\n      data.data.index = {\n        type: index.array.constructor.name,\n        array: Array.prototype.slice.call(index.array)\n      };\n    }\n    const attributes = this.attributes;\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      data.data.attributes[key] = attribute.toJSON(data.data);\n    }\n    const morphAttributes = {};\n    let hasMorphAttributes = false;\n    for (const key in this.morphAttributes) {\n      const attributeArray = this.morphAttributes[key];\n      const array = [];\n      for (let i2 = 0, il = attributeArray.length; i2 < il; i2++) {\n        const attribute = attributeArray[i2];\n        array.push(attribute.toJSON(data.data));\n      }\n      if (array.length > 0) {\n        morphAttributes[key] = array;\n        hasMorphAttributes = true;\n      }\n    }\n    if (hasMorphAttributes) {\n      data.data.morphAttributes = morphAttributes;\n      data.data.morphTargetsRelative = this.morphTargetsRelative;\n    }\n    const groups = this.groups;\n    if (groups.length > 0) {\n      data.data.groups = JSON.parse(JSON.stringify(groups));\n    }\n    const boundingSphere = this.boundingSphere;\n    if (boundingSphere !== null) {\n      data.data.boundingSphere = {\n        center: boundingSphere.center.toArray(),\n        radius: boundingSphere.radius\n      };\n    }\n    return data;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.index = null;\n    this.attributes = {};\n    this.morphAttributes = {};\n    this.groups = [];\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    const data = {};\n    this.name = source.name;\n    const index = source.index;\n    if (index !== null) {\n      this.setIndex(index.clone(data));\n    }\n    const attributes = source.attributes;\n    for (const name in attributes) {\n      const attribute = attributes[name];\n      this.setAttribute(name, attribute.clone(data));\n    }\n    const morphAttributes = source.morphAttributes;\n    for (const name in morphAttributes) {\n      const array = [];\n      const morphAttribute = morphAttributes[name];\n      for (let i2 = 0, l2 = morphAttribute.length; i2 < l2; i2++) {\n        array.push(morphAttribute[i2].clone(data));\n      }\n      this.morphAttributes[name] = array;\n    }\n    this.morphTargetsRelative = source.morphTargetsRelative;\n    const groups = source.groups;\n    for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n      const group = groups[i2];\n      this.addGroup(group.start, group.count, group.materialIndex);\n    }\n    const boundingBox = source.boundingBox;\n    if (boundingBox !== null) {\n      this.boundingBox = boundingBox.clone();\n    }\n    const boundingSphere = source.boundingSphere;\n    if (boundingSphere !== null) {\n      this.boundingSphere = boundingSphere.clone();\n    }\n    this.drawRange.start = source.drawRange.start;\n    this.drawRange.count = source.drawRange.count;\n    this.userData = source.userData;\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nconst _inverseMatrix$3 = /* @__PURE__ */ new Matrix4();\nconst _ray$3 = /* @__PURE__ */ new Ray();\nconst _sphere$6 = /* @__PURE__ */ new Sphere();\nconst _sphereHitAt = /* @__PURE__ */ new Vector3();\nconst _vA$1 = /* @__PURE__ */ new Vector3();\nconst _vB$1 = /* @__PURE__ */ new Vector3();\nconst _vC$1 = /* @__PURE__ */ new Vector3();\nconst _tempA = /* @__PURE__ */ new Vector3();\nconst _morphA = /* @__PURE__ */ new Vector3();\nconst _uvA$1 = /* @__PURE__ */ new Vector2();\nconst _uvB$1 = /* @__PURE__ */ new Vector2();\nconst _uvC$1 = /* @__PURE__ */ new Vector2();\nconst _normalA = /* @__PURE__ */ new Vector3();\nconst _normalB = /* @__PURE__ */ new Vector3();\nconst _normalC = /* @__PURE__ */ new Vector3();\nconst _intersectionPoint = /* @__PURE__ */ new Vector3();\nconst _intersectionPointWorld = /* @__PURE__ */ new Vector3();\nclass Mesh extends Object3D {\n  constructor(geometry = new BufferGeometry(), material = new MeshBasicMaterial()) {\n    super();\n    this.isMesh = true;\n    this.type = \"Mesh\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.morphTargetInfluences !== void 0) {\n      this.morphTargetInfluences = source.morphTargetInfluences.slice();\n    }\n    if (source.morphTargetDictionary !== void 0) {\n      this.morphTargetDictionary = Object.assign({}, source.morphTargetDictionary);\n    }\n    this.material = Array.isArray(source.material) ? source.material.slice() : source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m2 = 0, ml = morphAttribute.length; m2 < ml; m2++) {\n          const name = morphAttribute[m2].name || String(m2);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m2;\n        }\n      }\n    }\n  }\n  getVertexPosition(index, target) {\n    const geometry = this.geometry;\n    const position = geometry.attributes.position;\n    const morphPosition = geometry.morphAttributes.position;\n    const morphTargetsRelative = geometry.morphTargetsRelative;\n    target.fromBufferAttribute(position, index);\n    const morphInfluences = this.morphTargetInfluences;\n    if (morphPosition && morphInfluences) {\n      _morphA.set(0, 0, 0);\n      for (let i2 = 0, il = morphPosition.length; i2 < il; i2++) {\n        const influence = morphInfluences[i2];\n        const morphAttribute = morphPosition[i2];\n        if (influence === 0) continue;\n        _tempA.fromBufferAttribute(morphAttribute, index);\n        if (morphTargetsRelative) {\n          _morphA.addScaledVector(_tempA, influence);\n        } else {\n          _morphA.addScaledVector(_tempA.sub(target), influence);\n        }\n      }\n      target.add(_morphA);\n    }\n    return target;\n  }\n  raycast(raycaster, intersects2) {\n    const geometry = this.geometry;\n    const material = this.material;\n    const matrixWorld = this.matrixWorld;\n    if (material === void 0) return;\n    if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n    _sphere$6.copy(geometry.boundingSphere);\n    _sphere$6.applyMatrix4(matrixWorld);\n    _ray$3.copy(raycaster.ray).recast(raycaster.near);\n    if (_sphere$6.containsPoint(_ray$3.origin) === false) {\n      if (_ray$3.intersectSphere(_sphere$6, _sphereHitAt) === null) return;\n      if (_ray$3.origin.distanceToSquared(_sphereHitAt) > (raycaster.far - raycaster.near) ** 2) return;\n    }\n    _inverseMatrix$3.copy(matrixWorld).invert();\n    _ray$3.copy(raycaster.ray).applyMatrix4(_inverseMatrix$3);\n    if (geometry.boundingBox !== null) {\n      if (_ray$3.intersectsBox(geometry.boundingBox) === false) return;\n    }\n    this._computeIntersections(raycaster, intersects2, _ray$3);\n  }\n  _computeIntersections(raycaster, intersects2, rayLocalSpace) {\n    let intersection;\n    const geometry = this.geometry;\n    const material = this.material;\n    const index = geometry.index;\n    const position = geometry.attributes.position;\n    const uv = geometry.attributes.uv;\n    const uv1 = geometry.attributes.uv1;\n    const normal = geometry.attributes.normal;\n    const groups = geometry.groups;\n    const drawRange = geometry.drawRange;\n    if (index !== null) {\n      if (Array.isArray(material)) {\n        for (let i2 = 0, il = groups.length; i2 < il; i2++) {\n          const group = groups[i2];\n          const groupMaterial = material[group.materialIndex];\n          const start = Math.max(group.start, drawRange.start);\n          const end = Math.min(index.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n          for (let j2 = start, jl = end; j2 < jl; j2 += 3) {\n            const a2 = index.getX(j2);\n            const b2 = index.getX(j2 + 1);\n            const c2 = index.getX(j2 + 2);\n            intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a2, b2, c2);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j2 / 3);\n              intersection.face.materialIndex = group.materialIndex;\n              intersects2.push(intersection);\n            }\n          }\n        }\n      } else {\n        const start = Math.max(0, drawRange.start);\n        const end = Math.min(index.count, drawRange.start + drawRange.count);\n        for (let i2 = start, il = end; i2 < il; i2 += 3) {\n          const a2 = index.getX(i2);\n          const b2 = index.getX(i2 + 1);\n          const c2 = index.getX(i2 + 2);\n          intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a2, b2, c2);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i2 / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    } else if (position !== void 0) {\n      if (Array.isArray(material)) {\n        for (let i2 = 0, il = groups.length; i2 < il; i2++) {\n          const group = groups[i2];\n          const groupMaterial = material[group.materialIndex];\n          const start = Math.max(group.start, drawRange.start);\n          const end = Math.min(position.count, Math.min(group.start + group.count, drawRange.start + drawRange.count));\n          for (let j2 = start, jl = end; j2 < jl; j2 += 3) {\n            const a2 = j2;\n            const b2 = j2 + 1;\n            const c2 = j2 + 2;\n            intersection = checkGeometryIntersection(this, groupMaterial, raycaster, rayLocalSpace, uv, uv1, normal, a2, b2, c2);\n            if (intersection) {\n              intersection.faceIndex = Math.floor(j2 / 3);\n              intersection.face.materialIndex = group.materialIndex;\n              intersects2.push(intersection);\n            }\n          }\n        }\n      } else {\n        const start = Math.max(0, drawRange.start);\n        const end = Math.min(position.count, drawRange.start + drawRange.count);\n        for (let i2 = start, il = end; i2 < il; i2 += 3) {\n          const a2 = i2;\n          const b2 = i2 + 1;\n          const c2 = i2 + 2;\n          intersection = checkGeometryIntersection(this, material, raycaster, rayLocalSpace, uv, uv1, normal, a2, b2, c2);\n          if (intersection) {\n            intersection.faceIndex = Math.floor(i2 / 3);\n            intersects2.push(intersection);\n          }\n        }\n      }\n    }\n  }\n}\nfunction checkIntersection(object, material, raycaster, ray, pA2, pB, pC, point) {\n  let intersect;\n  if (material.side === BackSide) {\n    intersect = ray.intersectTriangle(pC, pB, pA2, true, point);\n  } else {\n    intersect = ray.intersectTriangle(pA2, pB, pC, material.side === FrontSide, point);\n  }\n  if (intersect === null) return null;\n  _intersectionPointWorld.copy(point);\n  _intersectionPointWorld.applyMatrix4(object.matrixWorld);\n  const distance = raycaster.ray.origin.distanceTo(_intersectionPointWorld);\n  if (distance < raycaster.near || distance > raycaster.far) return null;\n  return {\n    distance,\n    point: _intersectionPointWorld.clone(),\n    object\n  };\n}\nfunction checkGeometryIntersection(object, material, raycaster, ray, uv, uv1, normal, a2, b2, c2) {\n  object.getVertexPosition(a2, _vA$1);\n  object.getVertexPosition(b2, _vB$1);\n  object.getVertexPosition(c2, _vC$1);\n  const intersection = checkIntersection(object, material, raycaster, ray, _vA$1, _vB$1, _vC$1, _intersectionPoint);\n  if (intersection) {\n    if (uv) {\n      _uvA$1.fromBufferAttribute(uv, a2);\n      _uvB$1.fromBufferAttribute(uv, b2);\n      _uvC$1.fromBufferAttribute(uv, c2);\n      intersection.uv = Triangle.getInterpolation(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n    }\n    if (uv1) {\n      _uvA$1.fromBufferAttribute(uv1, a2);\n      _uvB$1.fromBufferAttribute(uv1, b2);\n      _uvC$1.fromBufferAttribute(uv1, c2);\n      intersection.uv1 = Triangle.getInterpolation(_intersectionPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2());\n      intersection.uv2 = intersection.uv1;\n    }\n    if (normal) {\n      _normalA.fromBufferAttribute(normal, a2);\n      _normalB.fromBufferAttribute(normal, b2);\n      _normalC.fromBufferAttribute(normal, c2);\n      intersection.normal = Triangle.getInterpolation(_intersectionPoint, _vA$1, _vB$1, _vC$1, _normalA, _normalB, _normalC, new Vector3());\n      if (intersection.normal.dot(ray.direction) > 0) {\n        intersection.normal.multiplyScalar(-1);\n      }\n    }\n    const face = {\n      a: a2,\n      b: b2,\n      c: c2,\n      normal: new Vector3(),\n      materialIndex: 0\n    };\n    Triangle.getNormal(_vA$1, _vB$1, _vC$1, face.normal);\n    intersection.face = face;\n  }\n  return intersection;\n}\nclass BoxGeometry extends BufferGeometry {\n  constructor(width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1) {\n    super();\n    this.type = \"BoxGeometry\";\n    this.parameters = {\n      width,\n      height,\n      depth,\n      widthSegments,\n      heightSegments,\n      depthSegments\n    };\n    const scope = this;\n    widthSegments = Math.floor(widthSegments);\n    heightSegments = Math.floor(heightSegments);\n    depthSegments = Math.floor(depthSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let numberOfVertices = 0;\n    let groupStart = 0;\n    buildPlane(\"z\", \"y\", \"x\", -1, -1, depth, height, width, depthSegments, heightSegments, 0);\n    buildPlane(\"z\", \"y\", \"x\", 1, -1, depth, height, -width, depthSegments, heightSegments, 1);\n    buildPlane(\"x\", \"z\", \"y\", 1, 1, width, depth, height, widthSegments, depthSegments, 2);\n    buildPlane(\"x\", \"z\", \"y\", 1, -1, width, depth, -height, widthSegments, depthSegments, 3);\n    buildPlane(\"x\", \"y\", \"z\", 1, -1, width, height, depth, widthSegments, heightSegments, 4);\n    buildPlane(\"x\", \"y\", \"z\", -1, -1, width, height, -depth, widthSegments, heightSegments, 5);\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function buildPlane(u2, v2, w2, udir, vdir, width2, height2, depth2, gridX, gridY, materialIndex) {\n      const segmentWidth = width2 / gridX;\n      const segmentHeight = height2 / gridY;\n      const widthHalf = width2 / 2;\n      const heightHalf = height2 / 2;\n      const depthHalf = depth2 / 2;\n      const gridX1 = gridX + 1;\n      const gridY1 = gridY + 1;\n      let vertexCounter = 0;\n      let groupCount = 0;\n      const vector = new Vector3();\n      for (let iy = 0; iy < gridY1; iy++) {\n        const y2 = iy * segmentHeight - heightHalf;\n        for (let ix = 0; ix < gridX1; ix++) {\n          const x2 = ix * segmentWidth - widthHalf;\n          vector[u2] = x2 * udir;\n          vector[v2] = y2 * vdir;\n          vector[w2] = depthHalf;\n          vertices.push(vector.x, vector.y, vector.z);\n          vector[u2] = 0;\n          vector[v2] = 0;\n          vector[w2] = depth2 > 0 ? 1 : -1;\n          normals.push(vector.x, vector.y, vector.z);\n          uvs.push(ix / gridX);\n          uvs.push(1 - iy / gridY);\n          vertexCounter += 1;\n        }\n      }\n      for (let iy = 0; iy < gridY; iy++) {\n        for (let ix = 0; ix < gridX; ix++) {\n          const a2 = numberOfVertices + ix + gridX1 * iy;\n          const b2 = numberOfVertices + ix + gridX1 * (iy + 1);\n          const c2 = numberOfVertices + (ix + 1) + gridX1 * (iy + 1);\n          const d2 = numberOfVertices + (ix + 1) + gridX1 * iy;\n          indices.push(a2, b2, d2);\n          indices.push(b2, c2, d2);\n          groupCount += 6;\n        }\n      }\n      scope.addGroup(groupStart, groupCount, materialIndex);\n      groupStart += groupCount;\n      numberOfVertices += vertexCounter;\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new BoxGeometry(data.width, data.height, data.depth, data.widthSegments, data.heightSegments, data.depthSegments);\n  }\n}\nfunction cloneUniforms(src) {\n  const dst = {};\n  for (const u2 in src) {\n    dst[u2] = {};\n    for (const p2 in src[u2]) {\n      const property = src[u2][p2];\n      if (property && (property.isColor || property.isMatrix3 || property.isMatrix4 || property.isVector2 || property.isVector3 || property.isVector4 || property.isTexture || property.isQuaternion)) {\n        if (property.isRenderTargetTexture) {\n          console.warn(\"UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().\");\n          dst[u2][p2] = null;\n        } else {\n          dst[u2][p2] = property.clone();\n        }\n      } else if (Array.isArray(property)) {\n        dst[u2][p2] = property.slice();\n      } else {\n        dst[u2][p2] = property;\n      }\n    }\n  }\n  return dst;\n}\nfunction mergeUniforms(uniforms) {\n  const merged = {};\n  for (let u2 = 0; u2 < uniforms.length; u2++) {\n    const tmp2 = cloneUniforms(uniforms[u2]);\n    for (const p2 in tmp2) {\n      merged[p2] = tmp2[p2];\n    }\n  }\n  return merged;\n}\nfunction cloneUniformsGroups(src) {\n  const dst = [];\n  for (let u2 = 0; u2 < src.length; u2++) {\n    dst.push(src[u2].clone());\n  }\n  return dst;\n}\nfunction getUnlitUniformColorSpace(renderer) {\n  if (renderer.getRenderTarget() === null) {\n    return renderer.outputColorSpace;\n  }\n  return ColorManagement.workingColorSpace;\n}\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\nvar default_vertex = \"void main() {\\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\nvar default_fragment = \"void main() {\\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\nclass ShaderMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isShaderMaterial = true;\n    this.type = \"ShaderMaterial\";\n    this.defines = {};\n    this.uniforms = {};\n    this.uniformsGroups = [];\n    this.vertexShader = default_vertex;\n    this.fragmentShader = default_fragment;\n    this.linewidth = 1;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.fog = false;\n    this.lights = false;\n    this.clipping = false;\n    this.forceSinglePass = true;\n    this.extensions = {\n      derivatives: false,\n      // set to use derivatives\n      fragDepth: false,\n      // set to use fragment depth values\n      drawBuffers: false,\n      // set to use draw buffers\n      shaderTextureLOD: false,\n      // set to use shader texture LOD\n      clipCullDistance: false,\n      // set to use vertex shader clipping\n      multiDraw: false\n      // set to use vertex shader multi_draw / enable gl_DrawID\n    };\n    this.defaultAttributeValues = {\n      \"color\": [1, 1, 1],\n      \"uv\": [0, 0],\n      \"uv1\": [0, 0]\n    };\n    this.index0AttributeName = void 0;\n    this.uniformsNeedUpdate = false;\n    this.glslVersion = null;\n    if (parameters !== void 0) {\n      this.setValues(parameters);\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.fragmentShader = source.fragmentShader;\n    this.vertexShader = source.vertexShader;\n    this.uniforms = cloneUniforms(source.uniforms);\n    this.uniformsGroups = cloneUniformsGroups(source.uniformsGroups);\n    this.defines = Object.assign({}, source.defines);\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.fog = source.fog;\n    this.lights = source.lights;\n    this.clipping = source.clipping;\n    this.extensions = Object.assign({}, source.extensions);\n    this.glslVersion = source.glslVersion;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.glslVersion = this.glslVersion;\n    data.uniforms = {};\n    for (const name in this.uniforms) {\n      const uniform = this.uniforms[name];\n      const value = uniform.value;\n      if (value && value.isTexture) {\n        data.uniforms[name] = {\n          type: \"t\",\n          value: value.toJSON(meta).uuid\n        };\n      } else if (value && value.isColor) {\n        data.uniforms[name] = {\n          type: \"c\",\n          value: value.getHex()\n        };\n      } else if (value && value.isVector2) {\n        data.uniforms[name] = {\n          type: \"v2\",\n          value: value.toArray()\n        };\n      } else if (value && value.isVector3) {\n        data.uniforms[name] = {\n          type: \"v3\",\n          value: value.toArray()\n        };\n      } else if (value && value.isVector4) {\n        data.uniforms[name] = {\n          type: \"v4\",\n          value: value.toArray()\n        };\n      } else if (value && value.isMatrix3) {\n        data.uniforms[name] = {\n          type: \"m3\",\n          value: value.toArray()\n        };\n      } else if (value && value.isMatrix4) {\n        data.uniforms[name] = {\n          type: \"m4\",\n          value: value.toArray()\n        };\n      } else {\n        data.uniforms[name] = {\n          value\n        };\n      }\n    }\n    if (Object.keys(this.defines).length > 0) data.defines = this.defines;\n    data.vertexShader = this.vertexShader;\n    data.fragmentShader = this.fragmentShader;\n    data.lights = this.lights;\n    data.clipping = this.clipping;\n    const extensions2 = {};\n    for (const key in this.extensions) {\n      if (this.extensions[key] === true) extensions2[key] = true;\n    }\n    if (Object.keys(extensions2).length > 0) data.extensions = extensions2;\n    return data;\n  }\n}\nclass Camera extends Object3D {\n  constructor() {\n    super();\n    this.isCamera = true;\n    this.type = \"Camera\";\n    this.matrixWorldInverse = new Matrix4();\n    this.projectionMatrix = new Matrix4();\n    this.projectionMatrixInverse = new Matrix4();\n    this.coordinateSystem = WebGLCoordinateSystem;\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.matrixWorldInverse.copy(source.matrixWorldInverse);\n    this.projectionMatrix.copy(source.projectionMatrix);\n    this.projectionMatrixInverse.copy(source.projectionMatrixInverse);\n    this.coordinateSystem = source.coordinateSystem;\n    return this;\n  }\n  getWorldDirection(target) {\n    return super.getWorldDirection(target).negate();\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  updateWorldMatrix(updateParents, updateChildren) {\n    super.updateWorldMatrix(updateParents, updateChildren);\n    this.matrixWorldInverse.copy(this.matrixWorld).invert();\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _v3$1 = /* @__PURE__ */ new Vector3();\nconst _minTarget = /* @__PURE__ */ new Vector2();\nconst _maxTarget = /* @__PURE__ */ new Vector2();\nclass PerspectiveCamera extends Camera {\n  constructor(fov2 = 50, aspect2 = 1, near = 0.1, far = 2e3) {\n    super();\n    this.isPerspectiveCamera = true;\n    this.type = \"PerspectiveCamera\";\n    this.fov = fov2;\n    this.zoom = 1;\n    this.near = near;\n    this.far = far;\n    this.focus = 10;\n    this.aspect = aspect2;\n    this.view = null;\n    this.filmGauge = 35;\n    this.filmOffset = 0;\n    this.updateProjectionMatrix();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.fov = source.fov;\n    this.zoom = source.zoom;\n    this.near = source.near;\n    this.far = source.far;\n    this.focus = source.focus;\n    this.aspect = source.aspect;\n    this.view = source.view === null ? null : Object.assign({}, source.view);\n    this.filmGauge = source.filmGauge;\n    this.filmOffset = source.filmOffset;\n    return this;\n  }\n  /**\n   * Sets the FOV by focal length in respect to the current .filmGauge.\n   *\n   * The default film gauge is 35, so that the focal length can be specified for\n   * a 35mm (full frame) camera.\n   *\n   * Values for focal length and film gauge must have the same unit.\n   */\n  setFocalLength(focalLength) {\n    const vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\n    this.fov = RAD2DEG * 2 * Math.atan(vExtentSlope);\n    this.updateProjectionMatrix();\n  }\n  /**\n   * Calculates the focal length from the current .fov and .filmGauge.\n   */\n  getFocalLength() {\n    const vExtentSlope = Math.tan(DEG2RAD * 0.5 * this.fov);\n    return 0.5 * this.getFilmHeight() / vExtentSlope;\n  }\n  getEffectiveFOV() {\n    return RAD2DEG * 2 * Math.atan(\n      Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom\n    );\n  }\n  getFilmWidth() {\n    return this.filmGauge * Math.min(this.aspect, 1);\n  }\n  getFilmHeight() {\n    return this.filmGauge / Math.max(this.aspect, 1);\n  }\n  /**\n   * Computes the 2D bounds of the camera's viewable rectangle at a given distance along the viewing direction.\n   * Sets minTarget and maxTarget to the coordinates of the lower-left and upper-right corners of the view rectangle.\n   */\n  getViewBounds(distance, minTarget, maxTarget) {\n    _v3$1.set(-1, -1, 0.5).applyMatrix4(this.projectionMatrixInverse);\n    minTarget.set(_v3$1.x, _v3$1.y).multiplyScalar(-distance / _v3$1.z);\n    _v3$1.set(1, 1, 0.5).applyMatrix4(this.projectionMatrixInverse);\n    maxTarget.set(_v3$1.x, _v3$1.y).multiplyScalar(-distance / _v3$1.z);\n  }\n  /**\n   * Computes the width and height of the camera's viewable rectangle at a given distance along the viewing direction.\n   * Copies the result into the target Vector2, where x is width and y is height.\n   */\n  getViewSize(distance, target) {\n    this.getViewBounds(distance, _minTarget, _maxTarget);\n    return target.subVectors(_maxTarget, _minTarget);\n  }\n  /**\n   * Sets an offset in a larger frustum. This is useful for multi-window or\n   * multi-monitor/multi-machine setups.\n   *\n   * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\n   * the monitors are in grid like this\n   *\n   *   +---+---+---+\n   *   | A | B | C |\n   *   +---+---+---+\n   *   | D | E | F |\n   *   +---+---+---+\n   *\n   * then for each monitor you would call it like this\n   *\n   *   const w = 1920;\n   *   const h = 1080;\n   *   const fullWidth = w * 3;\n   *   const fullHeight = h * 2;\n   *\n   *   --A--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\n   *   --B--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\n   *   --C--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\n   *   --D--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\n   *   --E--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\n   *   --F--\n   *   camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\n   *\n   *   Note there is no reason monitors have to be the same size or in a grid.\n   */\n  setViewOffset(fullWidth, fullHeight, x2, y2, width, height) {\n    this.aspect = fullWidth / fullHeight;\n    if (this.view === null) {\n      this.view = {\n        enabled: true,\n        fullWidth: 1,\n        fullHeight: 1,\n        offsetX: 0,\n        offsetY: 0,\n        width: 1,\n        height: 1\n      };\n    }\n    this.view.enabled = true;\n    this.view.fullWidth = fullWidth;\n    this.view.fullHeight = fullHeight;\n    this.view.offsetX = x2;\n    this.view.offsetY = y2;\n    this.view.width = width;\n    this.view.height = height;\n    this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    if (this.view !== null) {\n      this.view.enabled = false;\n    }\n    this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const near = this.near;\n    let top = near * Math.tan(DEG2RAD * 0.5 * this.fov) / this.zoom;\n    let height = 2 * top;\n    let width = this.aspect * height;\n    let left = -0.5 * width;\n    const view = this.view;\n    if (this.view !== null && this.view.enabled) {\n      const fullWidth = view.fullWidth, fullHeight = view.fullHeight;\n      left += view.offsetX * width / fullWidth;\n      top -= view.offsetY * height / fullHeight;\n      width *= view.width / fullWidth;\n      height *= view.height / fullHeight;\n    }\n    const skew = this.filmOffset;\n    if (skew !== 0) left += near * skew / this.getFilmWidth();\n    this.projectionMatrix.makePerspective(left, left + width, top, top - height, near, this.far, this.coordinateSystem);\n    this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.fov = this.fov;\n    data.object.zoom = this.zoom;\n    data.object.near = this.near;\n    data.object.far = this.far;\n    data.object.focus = this.focus;\n    data.object.aspect = this.aspect;\n    if (this.view !== null) data.object.view = Object.assign({}, this.view);\n    data.object.filmGauge = this.filmGauge;\n    data.object.filmOffset = this.filmOffset;\n    return data;\n  }\n}\nconst fov = -90;\nconst aspect = 1;\nclass CubeCamera extends Object3D {\n  constructor(near, far, renderTarget) {\n    super();\n    this.type = \"CubeCamera\";\n    this.renderTarget = renderTarget;\n    this.coordinateSystem = null;\n    this.activeMipmapLevel = 0;\n    const cameraPX = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPX.layers = this.layers;\n    this.add(cameraPX);\n    const cameraNX = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNX.layers = this.layers;\n    this.add(cameraNX);\n    const cameraPY = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPY.layers = this.layers;\n    this.add(cameraPY);\n    const cameraNY = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNY.layers = this.layers;\n    this.add(cameraNY);\n    const cameraPZ = new PerspectiveCamera(fov, aspect, near, far);\n    cameraPZ.layers = this.layers;\n    this.add(cameraPZ);\n    const cameraNZ = new PerspectiveCamera(fov, aspect, near, far);\n    cameraNZ.layers = this.layers;\n    this.add(cameraNZ);\n  }\n  updateCoordinateSystem() {\n    const coordinateSystem = this.coordinateSystem;\n    const cameras = this.children.concat();\n    const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = cameras;\n    for (const camera of cameras) this.remove(camera);\n    if (coordinateSystem === WebGLCoordinateSystem) {\n      cameraPX.up.set(0, 1, 0);\n      cameraPX.lookAt(1, 0, 0);\n      cameraNX.up.set(0, 1, 0);\n      cameraNX.lookAt(-1, 0, 0);\n      cameraPY.up.set(0, 0, -1);\n      cameraPY.lookAt(0, 1, 0);\n      cameraNY.up.set(0, 0, 1);\n      cameraNY.lookAt(0, -1, 0);\n      cameraPZ.up.set(0, 1, 0);\n      cameraPZ.lookAt(0, 0, 1);\n      cameraNZ.up.set(0, 1, 0);\n      cameraNZ.lookAt(0, 0, -1);\n    } else if (coordinateSystem === WebGPUCoordinateSystem) {\n      cameraPX.up.set(0, -1, 0);\n      cameraPX.lookAt(-1, 0, 0);\n      cameraNX.up.set(0, -1, 0);\n      cameraNX.lookAt(1, 0, 0);\n      cameraPY.up.set(0, 0, 1);\n      cameraPY.lookAt(0, 1, 0);\n      cameraNY.up.set(0, 0, -1);\n      cameraNY.lookAt(0, -1, 0);\n      cameraPZ.up.set(0, -1, 0);\n      cameraPZ.lookAt(0, 0, 1);\n      cameraNZ.up.set(0, -1, 0);\n      cameraNZ.lookAt(0, 0, -1);\n    } else {\n      throw new Error(\"THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: \" + coordinateSystem);\n    }\n    for (const camera of cameras) {\n      this.add(camera);\n      camera.updateMatrixWorld();\n    }\n  }\n  update(renderer, scene) {\n    if (this.parent === null) this.updateMatrixWorld();\n    const { renderTarget, activeMipmapLevel } = this;\n    if (this.coordinateSystem !== renderer.coordinateSystem) {\n      this.coordinateSystem = renderer.coordinateSystem;\n      this.updateCoordinateSystem();\n    }\n    const [cameraPX, cameraNX, cameraPY, cameraNY, cameraPZ, cameraNZ] = this.children;\n    const currentRenderTarget = renderer.getRenderTarget();\n    const currentActiveCubeFace = renderer.getActiveCubeFace();\n    const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n    const currentXrEnabled = renderer.xr.enabled;\n    renderer.xr.enabled = false;\n    const generateMipmaps = renderTarget.texture.generateMipmaps;\n    renderTarget.texture.generateMipmaps = false;\n    renderer.setRenderTarget(renderTarget, 0, activeMipmapLevel);\n    renderer.render(scene, cameraPX);\n    renderer.setRenderTarget(renderTarget, 1, activeMipmapLevel);\n    renderer.render(scene, cameraNX);\n    renderer.setRenderTarget(renderTarget, 2, activeMipmapLevel);\n    renderer.render(scene, cameraPY);\n    renderer.setRenderTarget(renderTarget, 3, activeMipmapLevel);\n    renderer.render(scene, cameraNY);\n    renderer.setRenderTarget(renderTarget, 4, activeMipmapLevel);\n    renderer.render(scene, cameraPZ);\n    renderTarget.texture.generateMipmaps = generateMipmaps;\n    renderer.setRenderTarget(renderTarget, 5, activeMipmapLevel);\n    renderer.render(scene, cameraNZ);\n    renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n    renderer.xr.enabled = currentXrEnabled;\n    renderTarget.texture.needsPMREMUpdate = true;\n  }\n}\nclass CubeTexture extends Texture {\n  constructor(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace) {\n    images = images !== void 0 ? images : [];\n    mapping = mapping !== void 0 ? mapping : CubeReflectionMapping;\n    super(images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace);\n    this.isCubeTexture = true;\n    this.flipY = false;\n  }\n  get images() {\n    return this.image;\n  }\n  set images(value) {\n    this.image = value;\n  }\n}\nclass WebGLCubeRenderTarget extends WebGLRenderTarget {\n  constructor(size = 1, options = {}) {\n    super(size, size, options);\n    this.isWebGLCubeRenderTarget = true;\n    const image = { width: size, height: size, depth: 1 };\n    const images = [image, image, image, image, image, image];\n    if (options.encoding !== void 0) {\n      warnOnce(\"THREE.WebGLCubeRenderTarget: option.encoding has been replaced by option.colorSpace.\");\n      options.colorSpace = options.encoding === sRGBEncoding$2 ? SRGBColorSpace$1 : NoColorSpace;\n    }\n    this.texture = new CubeTexture(images, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.colorSpace);\n    this.texture.isRenderTargetTexture = true;\n    this.texture.generateMipmaps = options.generateMipmaps !== void 0 ? options.generateMipmaps : false;\n    this.texture.minFilter = options.minFilter !== void 0 ? options.minFilter : LinearFilter;\n  }\n  fromEquirectangularTexture(renderer, texture) {\n    this.texture.type = texture.type;\n    this.texture.colorSpace = texture.colorSpace;\n    this.texture.generateMipmaps = texture.generateMipmaps;\n    this.texture.minFilter = texture.minFilter;\n    this.texture.magFilter = texture.magFilter;\n    const shader = {\n      uniforms: {\n        tEquirect: { value: null }\n      },\n      vertexShader: (\n        /* glsl */\n        `\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`\n      ),\n      fragmentShader: (\n        /* glsl */\n        `\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      )\n    };\n    const geometry = new BoxGeometry(5, 5, 5);\n    const material = new ShaderMaterial({\n      name: \"CubemapFromEquirect\",\n      uniforms: cloneUniforms(shader.uniforms),\n      vertexShader: shader.vertexShader,\n      fragmentShader: shader.fragmentShader,\n      side: BackSide,\n      blending: NoBlending\n    });\n    material.uniforms.tEquirect.value = texture;\n    const mesh = new Mesh(geometry, material);\n    const currentMinFilter = texture.minFilter;\n    if (texture.minFilter === LinearMipmapLinearFilter) texture.minFilter = LinearFilter;\n    const camera = new CubeCamera(1, 10, this);\n    camera.update(renderer, mesh);\n    texture.minFilter = currentMinFilter;\n    mesh.geometry.dispose();\n    mesh.material.dispose();\n    return this;\n  }\n  clear(renderer, color, depth, stencil) {\n    const currentRenderTarget = renderer.getRenderTarget();\n    for (let i2 = 0; i2 < 6; i2++) {\n      renderer.setRenderTarget(this, i2);\n      renderer.clear(color, depth, stencil);\n    }\n    renderer.setRenderTarget(currentRenderTarget);\n  }\n}\nconst _vector1 = /* @__PURE__ */ new Vector3();\nconst _vector2 = /* @__PURE__ */ new Vector3();\nconst _normalMatrix = /* @__PURE__ */ new Matrix3();\nclass Plane {\n  constructor(normal = new Vector3(1, 0, 0), constant = 0) {\n    this.isPlane = true;\n    this.normal = normal;\n    this.constant = constant;\n  }\n  set(normal, constant) {\n    this.normal.copy(normal);\n    this.constant = constant;\n    return this;\n  }\n  setComponents(x2, y2, z2, w2) {\n    this.normal.set(x2, y2, z2);\n    this.constant = w2;\n    return this;\n  }\n  setFromNormalAndCoplanarPoint(normal, point) {\n    this.normal.copy(normal);\n    this.constant = -point.dot(this.normal);\n    return this;\n  }\n  setFromCoplanarPoints(a2, b2, c2) {\n    const normal = _vector1.subVectors(c2, b2).cross(_vector2.subVectors(a2, b2)).normalize();\n    this.setFromNormalAndCoplanarPoint(normal, a2);\n    return this;\n  }\n  copy(plane) {\n    this.normal.copy(plane.normal);\n    this.constant = plane.constant;\n    return this;\n  }\n  normalize() {\n    const inverseNormalLength = 1 / this.normal.length();\n    this.normal.multiplyScalar(inverseNormalLength);\n    this.constant *= inverseNormalLength;\n    return this;\n  }\n  negate() {\n    this.constant *= -1;\n    this.normal.negate();\n    return this;\n  }\n  distanceToPoint(point) {\n    return this.normal.dot(point) + this.constant;\n  }\n  distanceToSphere(sphere) {\n    return this.distanceToPoint(sphere.center) - sphere.radius;\n  }\n  projectPoint(point, target) {\n    return target.copy(point).addScaledVector(this.normal, -this.distanceToPoint(point));\n  }\n  intersectLine(line, target) {\n    const direction = line.delta(_vector1);\n    const denominator = this.normal.dot(direction);\n    if (denominator === 0) {\n      if (this.distanceToPoint(line.start) === 0) {\n        return target.copy(line.start);\n      }\n      return null;\n    }\n    const t2 = -(line.start.dot(this.normal) + this.constant) / denominator;\n    if (t2 < 0 || t2 > 1) {\n      return null;\n    }\n    return target.copy(line.start).addScaledVector(direction, t2);\n  }\n  intersectsLine(line) {\n    const startSign = this.distanceToPoint(line.start);\n    const endSign = this.distanceToPoint(line.end);\n    return startSign < 0 && endSign > 0 || endSign < 0 && startSign > 0;\n  }\n  intersectsBox(box) {\n    return box.intersectsPlane(this);\n  }\n  intersectsSphere(sphere) {\n    return sphere.intersectsPlane(this);\n  }\n  coplanarPoint(target) {\n    return target.copy(this.normal).multiplyScalar(-this.constant);\n  }\n  applyMatrix4(matrix, optionalNormalMatrix) {\n    const normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix(matrix);\n    const referencePoint = this.coplanarPoint(_vector1).applyMatrix4(matrix);\n    const normal = this.normal.applyMatrix3(normalMatrix).normalize();\n    this.constant = -referencePoint.dot(normal);\n    return this;\n  }\n  translate(offset) {\n    this.constant -= offset.dot(this.normal);\n    return this;\n  }\n  equals(plane) {\n    return plane.normal.equals(this.normal) && plane.constant === this.constant;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _sphere$5 = /* @__PURE__ */ new Sphere();\nconst _vector$7 = /* @__PURE__ */ new Vector3();\nclass Frustum {\n  constructor(p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 = new Plane(), p4 = new Plane(), p5 = new Plane()) {\n    this.planes = [p0, p1, p2, p3, p4, p5];\n  }\n  set(p0, p1, p2, p3, p4, p5) {\n    const planes = this.planes;\n    planes[0].copy(p0);\n    planes[1].copy(p1);\n    planes[2].copy(p2);\n    planes[3].copy(p3);\n    planes[4].copy(p4);\n    planes[5].copy(p5);\n    return this;\n  }\n  copy(frustum) {\n    const planes = this.planes;\n    for (let i2 = 0; i2 < 6; i2++) {\n      planes[i2].copy(frustum.planes[i2]);\n    }\n    return this;\n  }\n  setFromProjectionMatrix(m2, coordinateSystem = WebGLCoordinateSystem) {\n    const planes = this.planes;\n    const me = m2.elements;\n    const me0 = me[0], me1 = me[1], me2 = me[2], me3 = me[3];\n    const me4 = me[4], me5 = me[5], me6 = me[6], me7 = me[7];\n    const me8 = me[8], me9 = me[9], me10 = me[10], me11 = me[11];\n    const me12 = me[12], me13 = me[13], me14 = me[14], me15 = me[15];\n    planes[0].setComponents(me3 - me0, me7 - me4, me11 - me8, me15 - me12).normalize();\n    planes[1].setComponents(me3 + me0, me7 + me4, me11 + me8, me15 + me12).normalize();\n    planes[2].setComponents(me3 + me1, me7 + me5, me11 + me9, me15 + me13).normalize();\n    planes[3].setComponents(me3 - me1, me7 - me5, me11 - me9, me15 - me13).normalize();\n    planes[4].setComponents(me3 - me2, me7 - me6, me11 - me10, me15 - me14).normalize();\n    if (coordinateSystem === WebGLCoordinateSystem) {\n      planes[5].setComponents(me3 + me2, me7 + me6, me11 + me10, me15 + me14).normalize();\n    } else if (coordinateSystem === WebGPUCoordinateSystem) {\n      planes[5].setComponents(me2, me6, me10, me14).normalize();\n    } else {\n      throw new Error(\"THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: \" + coordinateSystem);\n    }\n    return this;\n  }\n  intersectsObject(object) {\n    if (object.boundingSphere !== void 0) {\n      if (object.boundingSphere === null) object.computeBoundingSphere();\n      _sphere$5.copy(object.boundingSphere).applyMatrix4(object.matrixWorld);\n    } else {\n      const geometry = object.geometry;\n      if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n      _sphere$5.copy(geometry.boundingSphere).applyMatrix4(object.matrixWorld);\n    }\n    return this.intersectsSphere(_sphere$5);\n  }\n  intersectsSprite(sprite) {\n    _sphere$5.center.set(0, 0, 0);\n    _sphere$5.radius = 0.7071067811865476;\n    _sphere$5.applyMatrix4(sprite.matrixWorld);\n    return this.intersectsSphere(_sphere$5);\n  }\n  intersectsSphere(sphere) {\n    const planes = this.planes;\n    const center = sphere.center;\n    const negRadius = -sphere.radius;\n    for (let i2 = 0; i2 < 6; i2++) {\n      const distance = planes[i2].distanceToPoint(center);\n      if (distance < negRadius) {\n        return false;\n      }\n    }\n    return true;\n  }\n  intersectsBox(box) {\n    const planes = this.planes;\n    for (let i2 = 0; i2 < 6; i2++) {\n      const plane = planes[i2];\n      _vector$7.x = plane.normal.x > 0 ? box.max.x : box.min.x;\n      _vector$7.y = plane.normal.y > 0 ? box.max.y : box.min.y;\n      _vector$7.z = plane.normal.z > 0 ? box.max.z : box.min.z;\n      if (plane.distanceToPoint(_vector$7) < 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  containsPoint(point) {\n    const planes = this.planes;\n    for (let i2 = 0; i2 < 6; i2++) {\n      if (planes[i2].distanceToPoint(point) < 0) {\n        return false;\n      }\n    }\n    return true;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nfunction WebGLAnimation() {\n  let context2 = null;\n  let isAnimating = false;\n  let animationLoop = null;\n  let requestId = null;\n  function onAnimationFrame(time, frame) {\n    animationLoop(time, frame);\n    requestId = context2.requestAnimationFrame(onAnimationFrame);\n  }\n  return {\n    start: function() {\n      if (isAnimating === true) return;\n      if (animationLoop === null) return;\n      requestId = context2.requestAnimationFrame(onAnimationFrame);\n      isAnimating = true;\n    },\n    stop: function() {\n      context2.cancelAnimationFrame(requestId);\n      isAnimating = false;\n    },\n    setAnimationLoop: function(callback) {\n      animationLoop = callback;\n    },\n    setContext: function(value) {\n      context2 = value;\n    }\n  };\n}\nfunction WebGLAttributes(gl, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  const buffers = /* @__PURE__ */ new WeakMap();\n  function createBuffer(attribute, bufferType) {\n    const array = attribute.array;\n    const usage = attribute.usage;\n    const size = array.byteLength;\n    const buffer = gl.createBuffer();\n    gl.bindBuffer(bufferType, buffer);\n    gl.bufferData(bufferType, array, usage);\n    attribute.onUploadCallback();\n    let type;\n    if (array instanceof Float32Array) {\n      type = gl.FLOAT;\n    } else if (array instanceof Uint16Array) {\n      if (attribute.isFloat16BufferAttribute) {\n        if (isWebGL2) {\n          type = gl.HALF_FLOAT;\n        } else {\n          throw new Error(\"THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.\");\n        }\n      } else {\n        type = gl.UNSIGNED_SHORT;\n      }\n    } else if (array instanceof Int16Array) {\n      type = gl.SHORT;\n    } else if (array instanceof Uint32Array) {\n      type = gl.UNSIGNED_INT;\n    } else if (array instanceof Int32Array) {\n      type = gl.INT;\n    } else if (array instanceof Int8Array) {\n      type = gl.BYTE;\n    } else if (array instanceof Uint8Array) {\n      type = gl.UNSIGNED_BYTE;\n    } else if (array instanceof Uint8ClampedArray) {\n      type = gl.UNSIGNED_BYTE;\n    } else {\n      throw new Error(\"THREE.WebGLAttributes: Unsupported buffer data format: \" + array);\n    }\n    return {\n      buffer,\n      type,\n      bytesPerElement: array.BYTES_PER_ELEMENT,\n      version: attribute.version,\n      size\n    };\n  }\n  function updateBuffer(buffer, attribute, bufferType) {\n    const array = attribute.array;\n    const updateRange = attribute._updateRange;\n    const updateRanges = attribute.updateRanges;\n    gl.bindBuffer(bufferType, buffer);\n    if (updateRange.count === -1 && updateRanges.length === 0) {\n      gl.bufferSubData(bufferType, 0, array);\n    }\n    if (updateRanges.length !== 0) {\n      for (let i2 = 0, l2 = updateRanges.length; i2 < l2; i2++) {\n        const range = updateRanges[i2];\n        if (isWebGL2) {\n          gl.bufferSubData(\n            bufferType,\n            range.start * array.BYTES_PER_ELEMENT,\n            array,\n            range.start,\n            range.count\n          );\n        } else {\n          gl.bufferSubData(\n            bufferType,\n            range.start * array.BYTES_PER_ELEMENT,\n            array.subarray(range.start, range.start + range.count)\n          );\n        }\n      }\n      attribute.clearUpdateRanges();\n    }\n    if (updateRange.count !== -1) {\n      if (isWebGL2) {\n        gl.bufferSubData(\n          bufferType,\n          updateRange.offset * array.BYTES_PER_ELEMENT,\n          array,\n          updateRange.offset,\n          updateRange.count\n        );\n      } else {\n        gl.bufferSubData(\n          bufferType,\n          updateRange.offset * array.BYTES_PER_ELEMENT,\n          array.subarray(updateRange.offset, updateRange.offset + updateRange.count)\n        );\n      }\n      updateRange.count = -1;\n    }\n    attribute.onUploadCallback();\n  }\n  function get(attribute) {\n    if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n    return buffers.get(attribute);\n  }\n  function remove(attribute) {\n    if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n    const data = buffers.get(attribute);\n    if (data) {\n      gl.deleteBuffer(data.buffer);\n      buffers.delete(attribute);\n    }\n  }\n  function update(attribute, bufferType) {\n    if (attribute.isGLBufferAttribute) {\n      const cached = buffers.get(attribute);\n      if (!cached || cached.version < attribute.version) {\n        buffers.set(attribute, {\n          buffer: attribute.buffer,\n          type: attribute.type,\n          bytesPerElement: attribute.elementSize,\n          version: attribute.version\n        });\n      }\n      return;\n    }\n    if (attribute.isInterleavedBufferAttribute) attribute = attribute.data;\n    const data = buffers.get(attribute);\n    if (data === void 0) {\n      buffers.set(attribute, createBuffer(attribute, bufferType));\n    } else if (data.version < attribute.version) {\n      if (data.size !== attribute.array.byteLength) {\n        throw new Error(\"THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.\");\n      }\n      updateBuffer(data.buffer, attribute, bufferType);\n      data.version = attribute.version;\n    }\n  }\n  return {\n    get,\n    remove,\n    update\n  };\n}\nclass PlaneGeometry extends BufferGeometry {\n  constructor(width = 1, height = 1, widthSegments = 1, heightSegments = 1) {\n    super();\n    this.type = \"PlaneGeometry\";\n    this.parameters = {\n      width,\n      height,\n      widthSegments,\n      heightSegments\n    };\n    const width_half = width / 2;\n    const height_half = height / 2;\n    const gridX = Math.floor(widthSegments);\n    const gridY = Math.floor(heightSegments);\n    const gridX1 = gridX + 1;\n    const gridY1 = gridY + 1;\n    const segment_width = width / gridX;\n    const segment_height = height / gridY;\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    for (let iy = 0; iy < gridY1; iy++) {\n      const y2 = iy * segment_height - height_half;\n      for (let ix = 0; ix < gridX1; ix++) {\n        const x2 = ix * segment_width - width_half;\n        vertices.push(x2, -y2, 0);\n        normals.push(0, 0, 1);\n        uvs.push(ix / gridX);\n        uvs.push(1 - iy / gridY);\n      }\n    }\n    for (let iy = 0; iy < gridY; iy++) {\n      for (let ix = 0; ix < gridX; ix++) {\n        const a2 = ix + gridX1 * iy;\n        const b2 = ix + gridX1 * (iy + 1);\n        const c2 = ix + 1 + gridX1 * (iy + 1);\n        const d2 = ix + 1 + gridX1 * iy;\n        indices.push(a2, b2, d2);\n        indices.push(b2, c2, d2);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new PlaneGeometry(data.width, data.height, data.widthSegments, data.heightSegments);\n  }\n}\nvar alphahash_fragment = \"#ifdef USE_ALPHAHASH\\n\tif ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\\n#endif\";\nvar alphahash_pars_fragment = \"#ifdef USE_ALPHAHASH\\n\tconst float ALPHA_HASH_SCALE = 0.05;\\n\tfloat hash2D( vec2 value ) {\\n\t\treturn fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\\n\t}\\n\tfloat hash3D( vec3 value ) {\\n\t\treturn hash2D( vec2( hash2D( value.xy ), value.z ) );\\n\t}\\n\tfloat getAlphaHashThreshold( vec3 position ) {\\n\t\tfloat maxDeriv = max(\\n\t\t\tlength( dFdx( position.xyz ) ),\\n\t\t\tlength( dFdy( position.xyz ) )\\n\t\t);\\n\t\tfloat pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\\n\t\tvec2 pixScales = vec2(\\n\t\t\texp2( floor( log2( pixScale ) ) ),\\n\t\t\texp2( ceil( log2( pixScale ) ) )\\n\t\t);\\n\t\tvec2 alpha = vec2(\\n\t\t\thash3D( floor( pixScales.x * position.xyz ) ),\\n\t\t\thash3D( floor( pixScales.y * position.xyz ) )\\n\t\t);\\n\t\tfloat lerpFactor = fract( log2( pixScale ) );\\n\t\tfloat x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\\n\t\tfloat a = min( lerpFactor, 1.0 - lerpFactor );\\n\t\tvec3 cases = vec3(\\n\t\t\tx * x / ( 2.0 * a * ( 1.0 - a ) ),\\n\t\t\t( x - 0.5 * a ) / ( 1.0 - a ),\\n\t\t\t1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\\n\t\t);\\n\t\tfloat threshold = ( x < ( 1.0 - a ) )\\n\t\t\t? ( ( x < a ) ? cases.x : cases.y )\\n\t\t\t: cases.z;\\n\t\treturn clamp( threshold , 1.0e-6, 1.0 );\\n\t}\\n#endif\";\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\tdiffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\\n#endif\";\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar alphatest_fragment = \"#ifdef USE_ALPHATEST\\n\t#ifdef ALPHA_TO_COVERAGE\\n\tdiffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\\n\tif ( diffuseColor.a == 0.0 ) discard;\\n\t#else\\n\tif ( diffuseColor.a < alphaTest ) discard;\\n\t#endif\\n#endif\";\nvar alphatest_pars_fragment = \"#ifdef USE_ALPHATEST\\n\tuniform float alphaTest;\\n#endif\";\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\tfloat ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\t#if defined( USE_CLEARCOAT ) \\n\t\tclearcoatSpecularIndirect *= ambientOcclusion;\\n\t#endif\\n\t#if defined( USE_SHEEN ) \\n\t\tsheenSpecularIndirect *= ambientOcclusion;\\n\t#endif\\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\t\tfloat dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\\n\t#endif\\n#endif\";\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\tuniform sampler2D aoMap;\\n\tuniform float aoMapIntensity;\\n#endif\";\nvar batching_pars_vertex = \"#ifdef USE_BATCHING\\n\tattribute float batchId;\\n\tuniform highp sampler2D batchingTexture;\\n\tmat4 getBatchingMatrix( const in float i ) {\\n\t\tint size = textureSize( batchingTexture, 0 ).x;\\n\t\tint j = int( i ) * 4;\\n\t\tint x = j % size;\\n\t\tint y = j / size;\\n\t\tvec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\\n\t\tvec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\\n\t\tvec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\\n\t\tvec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\\n\t\treturn mat4( v1, v2, v3, v4 );\\n\t}\\n#endif\";\nvar batching_vertex = \"#ifdef USE_BATCHING\\n\tmat4 batchingMatrix = getBatchingMatrix( batchId );\\n#endif\";\nvar begin_vertex = \"vec3 transformed = vec3( position );\\n#ifdef USE_ALPHAHASH\\n\tvPosition = vec3( position );\\n#endif\";\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\nvar bsdfs = \"float 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} // validated\";\nvar 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\treturn 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 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\";\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\tuniform sampler2D bumpMap;\\n\tuniform float bumpScale;\\n\tvec2 dHdxy_fwd() {\\n\t\tvec2 dSTdx = dFdx( vBumpMapUv );\\n\t\tvec2 dSTdy = dFdy( vBumpMapUv );\\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + 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 = normalize( dFdx( surf_pos.xyz ) );\\n\t\tvec3 vSigmaY = normalize( 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\";\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvec4 plane;\\n\t#ifdef ALPHA_TO_COVERAGE\\n\t\tfloat distanceToPlane, distanceGradient;\\n\t\tfloat clipOpacity = 1.0;\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\t\t\tclipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\t\t\tif ( clipOpacity == 0.0 ) discard;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\t\tfloat unionClipOpacity = 1.0;\\n\t\t\t#pragma unroll_loop_start\\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\t\tplane = clippingPlanes[ i ];\\n\t\t\t\tdistanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\\n\t\t\t\tdistanceGradient = fwidth( distanceToPlane ) / 2.0;\\n\t\t\t\tunionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\\n\t\t\t}\\n\t\t\t#pragma unroll_loop_end\\n\t\t\tclipOpacity *= 1.0 - unionClipOpacity;\\n\t\t#endif\\n\t\tdiffuseColor.a *= clipOpacity;\\n\t\tif ( diffuseColor.a == 0.0 ) discard;\\n\t#else\\n\t\t#pragma unroll_loop_start\\n\t\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\t\t\tplane = clippingPlanes[ i ];\\n\t\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\t\t}\\n\t\t#pragma unroll_loop_end\\n\t\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\t\t\tbool clipped = true;\\n\t\t\t#pragma unroll_loop_start\\n\t\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\t\t\t\tplane = clippingPlanes[ i ];\\n\t\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\t\t\t}\\n\t\t\t#pragma unroll_loop_end\\n\t\t\tif ( clipped ) discard;\\n\t\t#endif\\n\t#endif\\n#endif\";\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvarying vec3 vClipPosition;\\n#endif\";\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\tvClipPosition = - mvPosition.xyz;\\n#endif\";\nvar color_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tdiffuseColor *= vColor;\\n#elif defined( USE_COLOR )\\n\tdiffuseColor.rgb *= vColor;\\n#endif\";\nvar color_pars_fragment = \"#if defined( USE_COLOR_ALPHA )\\n\tvarying vec4 vColor;\\n#elif defined( USE_COLOR )\\n\tvarying vec3 vColor;\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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};\\n#ifdef USE_ALPHAHASH\\n\tvarying vec3 vPosition;\\n#endif\\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}\\nvec3 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} // validated\";\nvar 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_m0 - 2.0\\n\t#define cubeUV_r1 0.8\\n\t#define cubeUV_m1 - 1.0\\n\t#define cubeUV_r4 0.4\\n\t#define cubeUV_m4 2.0\\n\t#define cubeUV_r5 0.305\\n\t#define cubeUV_m5 3.0\\n\t#define cubeUV_r6 0.21\\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\";\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_TANGENT\\n\tvec3 transformedTangent = objectTangent;\\n#endif\\n#ifdef USE_BATCHING\\n\tmat3 bm = mat3( batchingMatrix );\\n\ttransformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\\n\ttransformedNormal = bm * transformedNormal;\\n\t#ifdef USE_TANGENT\\n\t\ttransformedTangent = bm * transformedTangent;\\n\t#endif\\n#endif\\n#ifdef USE_INSTANCING\\n\tmat3 im = mat3( instanceMatrix );\\n\ttransformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\\n\ttransformedNormal = im * transformedNormal;\\n\t#ifdef USE_TANGENT\\n\t\ttransformedTangent = im * transformedTangent;\\n\t#endif\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\ttransformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\\n\t#ifdef FLIP_SIDED\\n\t\ttransformedTangent = - transformedTangent;\\n\t#endif\\n#endif\";\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\tuniform sampler2D displacementMap;\\n\tuniform float displacementScale;\\n\tuniform float displacementBias;\\n#endif\";\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\\n#endif\";\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tvec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\tuniform sampler2D emissiveMap;\\n#endif\";\nvar colorspace_fragment$1 = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\nvar colorspace_pars_fragment = \"\\nconst mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(\\n\tvec3( 0.8224621, 0.177538, 0.0 ),\\n\tvec3( 0.0331941, 0.9668058, 0.0 ),\\n\tvec3( 0.0170827, 0.0723974, 0.9105199 )\\n);\\nconst mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(\\n\tvec3( 1.2249401, - 0.2249404, 0.0 ),\\n\tvec3( - 0.0420569, 1.0420571, 0.0 ),\\n\tvec3( - 0.0196376, - 0.0786361, 1.0982735 )\\n);\\nvec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {\\n\treturn vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );\\n}\\nvec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {\\n\treturn vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );\\n}\\nvec4 LinearTransferOETF( in vec4 value ) {\\n\treturn value;\\n}\\nvec4 sRGBTransferOETF( 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}\\nvec4 LinearToLinear( in vec4 value ) {\\n\treturn value;\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\treturn sRGBTransferOETF( value );\\n}\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar fog_vertex = \"#ifdef USE_FOG\\n\tvFogDepth = - mvPosition.z;\\n#endif\";\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\tvarying float vFogDepth;\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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}\";\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\\n#endif\";\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\tuniform sampler2D lightMap;\\n\tuniform float lightMapIntensity;\\n#endif\";\nvar lights_lambert_fragment = \"LambertMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularStrength = specularStrength;\";\nvar 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometryNormal, 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\";\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\n#if defined( USE_LIGHT_PROBES )\\n\tuniform vec3 lightProbe[ 9 ];\\n#endif\\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 ( LEGACY_LIGHTS )\\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#else\\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#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, 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 vec3 geometryPosition, out IncidentLight light ) {\\n\t\tvec3 lVector = pointLight.position - geometryPosition;\\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 vec3 geometryPosition, out IncidentLight light ) {\\n\t\tvec3 lVector = spotLight.position - geometryPosition;\\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\";\nvar envmap_physical_pars_fragment = \"#ifdef USE_ENVMAP\\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\\n\t\t#ifdef 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#ifdef 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\t#ifdef USE_ANISOTROPY\\n\t\tvec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\\n\t\t\t#ifdef ENVMAP_TYPE_CUBE_UV\\n\t\t\t\tvec3 bentNormal = cross( bitangent, viewDir );\\n\t\t\t\tbentNormal = normalize( cross( bentNormal, bitangent ) );\\n\t\t\t\tbentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\\n\t\t\t\treturn getIBLRadiance( viewDir, bentNormal, roughness );\\n\t\t\t#else\\n\t\t\t\treturn vec3( 0.0 );\\n\t\t\t#endif\\n\t\t}\\n\t#endif\\n#endif\";\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\nstruct ToonMaterial {\\n\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\tvec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\";\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\nvar 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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\";\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\\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 USE_SPECULAR\\n\t\tfloat specularIntensityFactor = specularIntensity;\\n\t\tvec3 specularColorFactor = specularColor;\\n\t\t#ifdef USE_SPECULAR_COLORMAP\\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\\n\t\t#endif\\n\t\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\\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, vClearcoatMapUv ).x;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).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, vIridescenceMapUv ).r;\\n\t#endif\\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).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_SHEEN_COLORMAP\\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\\n\t#endif\\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\\n\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\t#ifdef USE_ANISOTROPYMAP\\n\t\tmat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\\n\t\tvec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\\n\t\tvec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\\n\t#else\\n\t\tvec2 anisotropyV = anisotropyVector;\\n\t#endif\\n\tmaterial.anisotropy = length( anisotropyV );\\n\tif( material.anisotropy == 0.0 ) {\\n\t\tanisotropyV = vec2( 1.0, 0.0 );\\n\t} else {\\n\t\tanisotropyV /= material.anisotropy;\\n\t\tmaterial.anisotropy = saturate( material.anisotropy );\\n\t}\\n\tmaterial.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\\n\tmaterial.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\\n\tmaterial.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\\n#endif\";\nvar 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\t#ifdef USE_ANISOTROPY\\n\t\tfloat anisotropy;\\n\t\tfloat alphaT;\\n\t\tvec3 anisotropyT;\\n\t\tvec3 anisotropyB;\\n\t#endif\\n};\\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\\nvec3 sheenSpecularDirect = vec3( 0.0 );\\nvec3 sheenSpecularIndirect = vec3(0.0 );\\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}\\n#ifdef USE_ANISOTROPY\\n\tfloat V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\\n\t\tfloat gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\\n\t\tfloat gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\\n\t\tfloat v = 0.5 / ( gv + gl );\\n\t\treturn saturate(v);\\n\t}\\n\tfloat D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\\n\t\tfloat a2 = alphaT * alphaB;\\n\t\thighp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\\n\t\thighp float v2 = dot( v, v );\\n\t\tfloat w2 = a2 / v2;\\n\t\treturn RECIPROCAL_PI * a2 * pow2 ( w2 );\\n\t}\\n#endif\\n#ifdef USE_CLEARCOAT\\n\tvec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\\n\t\tvec3 f0 = material.clearcoatF0;\\n\t\tfloat f90 = material.clearcoatF90;\\n\t\tfloat roughness = material.clearcoatRoughness;\\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 = F_Schlick( f0, f90, dotVH );\\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\\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\\n\tvec3 f0 = material.specularColor;\\n\tfloat f90 = material.specularF90;\\n\tfloat roughness = material.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\t#ifdef USE_IRIDESCENCE\\n\t\tF = mix( F, material.iridescenceFresnel, material.iridescence );\\n\t#endif\\n\t#ifdef USE_ANISOTROPY\\n\t\tfloat dotTL = dot( material.anisotropyT, lightDir );\\n\t\tfloat dotTV = dot( material.anisotropyT, viewDir );\\n\t\tfloat dotTH = dot( material.anisotropyT, halfDir );\\n\t\tfloat dotBL = dot( material.anisotropyB, lightDir );\\n\t\tfloat dotBV = dot( material.anisotropyB, viewDir );\\n\t\tfloat dotBH = dot( material.anisotropyB, halfDir );\\n\t\tfloat V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\\n\t\tfloat D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\\n\t#else\\n\t\tfloat V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\t\tfloat D = D_GGX( alpha, dotNH );\\n\t#endif\\n\treturn F * ( V * D );\\n}\\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}\\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\\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\t\tvec3 normal = geometryNormal;\\n\t\tvec3 viewDir = geometryViewDir;\\n\t\tvec3 position = geometryPosition;\\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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\tfloat dotNL = saturate( dot( geometryNormal, directLight.direction ) );\\n\tvec3 irradiance = dotNL * directLight.color;\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\\n\t\tclearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\\n\t#endif\\n\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, 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 vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\\n\t#endif\\n\t#ifdef USE_SHEEN\\n\t\tsheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, 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( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\\n\t#else\\n\t\tcomputeMultiscattering( geometryNormal, geometryViewDir, 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}\";\nvar lights_fragment_begin = \"\\nvec3 geometryPosition = - vViewPosition;\\nvec3 geometryNormal = normal;\\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\nvec3 geometryClearcoatNormal = vec3( 0.0 );\\n#ifdef USE_CLEARCOAT\\n\tgeometryClearcoatNormal = clearcoatNormal;\\n#endif\\n#ifdef USE_IRIDESCENCE\\n\tfloat dotNVi = saturate( dot( normal, geometryViewDir ) );\\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, geometryPosition, 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, geometryPosition, 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, 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\t#if defined( USE_LIGHT_PROBES )\\n\t\tirradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\\n\t#endif\\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 ], geometryNormal );\\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\";\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\t#ifdef USE_LIGHTMAP\\n\t\tvec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\\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( geometryNormal );\\n\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\t#ifdef USE_ANISOTROPY\\n\t\tradiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\\n\t#else\\n\t\tradiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\\n\t#endif\\n\t#ifdef USE_CLEARCOAT\\n\t\tclearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\\n\t#endif\\n#endif\";\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\tRE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar map_fragment = \"#ifdef USE_MAP\\n\tvec4 sampledDiffuseColor = texture2D( map, vMapUv );\\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\\n\t#endif\\n\tdiffuseColor *= sampledDiffuseColor;\\n#endif\";\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\";\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\t#if defined( USE_POINTS_UV )\\n\t\tvec2 uv = vUv;\\n\t#else\\n\t\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n\t#endif\\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\";\nvar map_particle_pars_fragment = \"#if defined( USE_POINTS_UV )\\n\tvarying vec2 vUv;\\n#else\\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\t\tuniform mat3 uvTransform;\\n\t#endif\\n#endif\\n#ifdef USE_MAP\\n\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform sampler2D alphaMap;\\n#endif\";\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\tvec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\\n\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\tuniform sampler2D metalnessMap;\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar 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 *= faceDirection;\\n\t#endif\\n#endif\\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\\n\t#ifdef USE_TANGENT\\n\t\tmat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\t#else\\n\t\tmat3 tbn = getTangentFrame( - vViewPosition, normal,\\n\t\t#if defined( USE_NORMALMAP )\\n\t\t\tvNormalMapUv\\n\t\t#elif defined( USE_CLEARCOAT_NORMALMAP )\\n\t\t\tvClearcoatNormalMapUv\\n\t\t#else\\n\t\t\tvUv\\n\t\t#endif\\n\t\t);\\n\t#endif\\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\t\ttbn[0] *= faceDirection;\\n\t\ttbn[1] *= faceDirection;\\n\t#endif\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\t#ifdef USE_TANGENT\\n\t\tmat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\\n\t#else\\n\t\tmat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\\n\t#endif\\n\t#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\\n\t\ttbn2[0] *= faceDirection;\\n\t\ttbn2[1] *= faceDirection;\\n\t#endif\\n#endif\\nvec3 nonPerturbedNormal = normal;\";\nvar normal_fragment_maps = \"#ifdef USE_NORMALMAP_OBJECTSPACE\\n\tnormal = texture2D( normalMap, vNormalMapUv ).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( USE_NORMALMAP_TANGENTSPACE )\\n\tvec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\\n\tmapN.xy *= normalScale;\\n\tnormal = normalize( tbn * mapN );\\n#elif defined( USE_BUMPMAP )\\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\\n#endif\";\nvar 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\";\nvar 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\";\nvar 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\";\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\tuniform sampler2D normalMap;\\n\tuniform vec2 normalScale;\\n#endif\\n#ifdef USE_NORMALMAP_OBJECTSPACE\\n\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\\n\tmat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\\n\t\tvec3 q0 = dFdx( eye_pos.xyz );\\n\t\tvec3 q1 = dFdy( eye_pos.xyz );\\n\t\tvec2 st0 = dFdx( uv.st );\\n\t\tvec2 st1 = dFdy( uv.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 : inversesqrt( det );\\n\t\treturn mat3( T * scale, B * scale, N );\\n\t}\\n#endif\";\nvar clearcoat_normal_fragment_begin = \"#ifdef USE_CLEARCOAT\\n\tvec3 clearcoatNormal = nonPerturbedNormal;\\n#endif\";\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\\n\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\tclearcoatNormal = normalize( tbn2 * clearcoatMapN );\\n#endif\";\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform sampler2D clearcoatNormalMap;\\n\tuniform vec2 clearcoatNormalScale;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\";\nvar iridescence_pars_fragment = \"#ifdef USE_IRIDESCENCEMAP\\n\tuniform sampler2D iridescenceMap;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tuniform sampler2D iridescenceThicknessMap;\\n#endif\";\nvar opaque_fragment = \"#ifdef OPAQUE\\ndiffuseColor.a = 1.0;\\n#endif\\n#ifdef USE_TRANSMISSION\\ndiffuseColor.a *= material.transmissionAlpha;\\n#endif\\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );\";\nvar 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 depth, const in float near, const in float far ) {\\n\treturn depth * ( 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 depth, const in float near, const in float far ) {\\n\treturn ( near * far ) / ( ( far - near ) * depth - far );\\n}\";\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_BATCHING\\n\tmvPosition = batchingMatrix * mvPosition;\\n#endif\\n#ifdef USE_INSTANCING\\n\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\nvar dithering_fragment = \"#ifdef DITHERING\\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\nvar 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\";\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\tvec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\\n\troughnessFactor *= texelRoughness.g;\\n#endif\";\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\tuniform sampler2D roughnessMap;\\n#endif\";\nvar shadowmap_pars_fragment = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\tvarying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\\n#endif\\n#if NUM_SPOT_LIGHT_MAPS > 0\\n\tuniform 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\";\nvar shadowmap_pars_vertex = \"#if NUM_SPOT_LIGHT_COORDS > 0\\n\tuniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\\n\tvarying 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\";\nvar 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\";\nvar 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}\";\nvar 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\";\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\tuniform mat4 bindMatrix;\\n\tuniform mat4 bindMatrixInverse;\\n\tuniform highp sampler2D boneTexture;\\n\tmat4 getBoneMatrix( const in float i ) {\\n\t\tint size = textureSize( boneTexture, 0 ).x;\\n\t\tint j = int( i ) * 4;\\n\t\tint x = j % size;\\n\t\tint y = j / size;\\n\t\tvec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\\n\t\tvec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\\n\t\tvec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\\n\t\tvec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\\n\t\treturn mat4( v1, v2, v3, v4 );\\n\t}\\n#endif\";\nvar 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\";\nvar 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\";\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\tvec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\\n\tspecularStrength = texelSpecular.r;\\n#else\\n\tspecularStrength = 1.0;\\n#endif\";\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\tuniform sampler2D specularMap;\\n#endif\";\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\nvar 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 saturate( 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}\\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\\n\tvec3( 1.6605, - 0.1246, - 0.0182 ),\\n\tvec3( - 0.5876, 1.1329, - 0.1006 ),\\n\tvec3( - 0.0728, - 0.0083, 1.1187 )\\n);\\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\\n\tvec3( 0.6274, 0.0691, 0.0164 ),\\n\tvec3( 0.3293, 0.9195, 0.0880 ),\\n\tvec3( 0.0433, 0.0113, 0.8956 )\\n);\\nvec3 agxDefaultContrastApprox( vec3 x ) {\\n\tvec3 x2 = x * x;\\n\tvec3 x4 = x2 * x2;\\n\treturn + 15.5 * x4 * x2\\n\t\t- 40.14 * x4 * x\\n\t\t+ 31.96 * x4\\n\t\t- 6.868 * x2 * x\\n\t\t+ 0.4298 * x2\\n\t\t+ 0.1191 * x\\n\t\t- 0.00232;\\n}\\nvec3 AgXToneMapping( vec3 color ) {\\n\tconst mat3 AgXInsetMatrix = mat3(\\n\t\tvec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\\n\t\tvec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\\n\t\tvec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\\n\t);\\n\tconst mat3 AgXOutsetMatrix = mat3(\\n\t\tvec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\\n\t\tvec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\\n\t\tvec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\\n\t);\\n\tconst float AgxMinEv = - 12.47393;\tconst float AgxMaxEv = 4.026069;\\n\tcolor *= toneMappingExposure;\\n\tcolor = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\\n\tcolor = AgXInsetMatrix * color;\\n\tcolor = max( color, 1e-10 );\tcolor = log2( color );\\n\tcolor = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\\n\tcolor = clamp( color, 0.0, 1.0 );\\n\tcolor = agxDefaultContrastApprox( color );\\n\tcolor = AgXOutsetMatrix * color;\\n\tcolor = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\\n\tcolor = LINEAR_REC2020_TO_LINEAR_SRGB * color;\\n\tcolor = clamp( color, 0.0, 1.0 );\\n\treturn color;\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\nvar 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, vTransmissionMapUv ).r;\\n\t#endif\\n\t#ifdef USE_THICKNESSMAP\\n\t\tmaterial.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\\n\t#endif\\n\tvec3 pos = vWorldPosition;\\n\tvec3 v = normalize( cameraPosition - pos );\\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\\n\tvec4 transmitted = 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, transmitted.a, material.transmission );\\n\ttotalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\\n#endif\";\nvar 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\tfloat w0( float a ) {\\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\\n\t}\\n\tfloat w1( float a ) {\\n\t\treturn ( 1.0 / 6.0 ) * ( a *  a * ( 3.0 * a - 6.0 ) + 4.0 );\\n\t}\\n\tfloat w2( float a ){\\n\t\treturn ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\\n\t}\\n\tfloat w3( float a ) {\\n\t\treturn ( 1.0 / 6.0 ) * ( a * a * a );\\n\t}\\n\tfloat g0( float a ) {\\n\t\treturn w0( a ) + w1( a );\\n\t}\\n\tfloat g1( float a ) {\\n\t\treturn w2( a ) + w3( a );\\n\t}\\n\tfloat h0( float a ) {\\n\t\treturn - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\\n\t}\\n\tfloat h1( float a ) {\\n\t\treturn 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\\n\t}\\n\tvec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\\n\t\tuv = uv * texelSize.zw + 0.5;\\n\t\tvec2 iuv = floor( uv );\\n\t\tvec2 fuv = fract( uv );\\n\t\tfloat g0x = g0( fuv.x );\\n\t\tfloat g1x = g1( fuv.x );\\n\t\tfloat h0x = h0( fuv.x );\\n\t\tfloat h1x = h1( fuv.x );\\n\t\tfloat h0y = h0( fuv.y );\\n\t\tfloat h1y = h1( fuv.y );\\n\t\tvec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\t\tvec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\\n\t\tvec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\t\tvec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\\n\t\treturn g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\\n\t\t\tg1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\\n\t}\\n\tvec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\\n\t\tvec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\\n\t\tvec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\\n\t\tvec2 fLodSizeInv = 1.0 / fLodSize;\\n\t\tvec2 cLodSizeInv = 1.0 / cLodSize;\\n\t\tvec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\\n\t\tvec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\\n\t\treturn mix( fSample, cSample, fract( lod ) );\\n\t}\\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 lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\\n\t\treturn textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\\n\t}\\n\tvec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\\n\t\tif ( isinf( attenuationDistance ) ) {\\n\t\t\treturn vec3( 1.0 );\\n\t\t} else {\\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance;\\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 transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\\n\t\tvec3 attenuatedColor = transmittance * transmittedLight.rgb;\\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\\n\t\tfloat transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\\n\t}\\n#endif\";\nvar uv_pars_fragment = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\tuniform mat3 transmissionMapTransform;\\n\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\tuniform mat3 thicknessMapTransform;\\n\tvarying vec2 vThicknessMapUv;\\n#endif\";\nvar uv_pars_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\tvarying vec2 vUv;\\n#endif\\n#ifdef USE_MAP\\n\tuniform mat3 mapTransform;\\n\tvarying vec2 vMapUv;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tuniform mat3 alphaMapTransform;\\n\tvarying vec2 vAlphaMapUv;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\tuniform mat3 lightMapTransform;\\n\tvarying vec2 vLightMapUv;\\n#endif\\n#ifdef USE_AOMAP\\n\tuniform mat3 aoMapTransform;\\n\tvarying vec2 vAoMapUv;\\n#endif\\n#ifdef USE_BUMPMAP\\n\tuniform mat3 bumpMapTransform;\\n\tvarying vec2 vBumpMapUv;\\n#endif\\n#ifdef USE_NORMALMAP\\n\tuniform mat3 normalMapTransform;\\n\tvarying vec2 vNormalMapUv;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\tuniform mat3 displacementMapTransform;\\n\tvarying vec2 vDisplacementMapUv;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\tuniform mat3 emissiveMapTransform;\\n\tvarying vec2 vEmissiveMapUv;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\tuniform mat3 metalnessMapTransform;\\n\tvarying vec2 vMetalnessMapUv;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\tuniform mat3 roughnessMapTransform;\\n\tvarying vec2 vRoughnessMapUv;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\tuniform mat3 anisotropyMapTransform;\\n\tvarying vec2 vAnisotropyMapUv;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\tuniform mat3 clearcoatMapTransform;\\n\tvarying vec2 vClearcoatMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tuniform mat3 clearcoatNormalMapTransform;\\n\tvarying vec2 vClearcoatNormalMapUv;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tuniform mat3 clearcoatRoughnessMapTransform;\\n\tvarying vec2 vClearcoatRoughnessMapUv;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\tuniform mat3 sheenColorMapTransform;\\n\tvarying vec2 vSheenColorMapUv;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\tuniform mat3 sheenRoughnessMapTransform;\\n\tvarying vec2 vSheenRoughnessMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\tuniform mat3 iridescenceMapTransform;\\n\tvarying vec2 vIridescenceMapUv;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tuniform mat3 iridescenceThicknessMapTransform;\\n\tvarying vec2 vIridescenceThicknessMapUv;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\tuniform mat3 specularMapTransform;\\n\tvarying vec2 vSpecularMapUv;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\tuniform mat3 specularColorMapTransform;\\n\tvarying vec2 vSpecularColorMapUv;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\tuniform mat3 specularIntensityMapTransform;\\n\tvarying vec2 vSpecularIntensityMapUv;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\tuniform mat3 transmissionMapTransform;\\n\tvarying vec2 vTransmissionMapUv;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\tuniform mat3 thicknessMapTransform;\\n\tvarying vec2 vThicknessMapUv;\\n#endif\";\nvar uv_vertex = \"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\\n\tvUv = vec3( uv, 1 ).xy;\\n#endif\\n#ifdef USE_MAP\\n\tvMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\tvAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_LIGHTMAP\\n\tvLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_AOMAP\\n\tvAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_BUMPMAP\\n\tvBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_NORMALMAP\\n\tvNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_DISPLACEMENTMAP\\n\tvDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_EMISSIVEMAP\\n\tvEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_METALNESSMAP\\n\tvMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ROUGHNESSMAP\\n\tvRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_ANISOTROPYMAP\\n\tvAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOATMAP\\n\tvClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\tvClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\tvClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCEMAP\\n\tvIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\\n\tvIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_COLORMAP\\n\tvSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SHEEN_ROUGHNESSMAP\\n\tvSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULARMAP\\n\tvSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_COLORMAP\\n\tvSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_SPECULAR_INTENSITYMAP\\n\tvSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_TRANSMISSIONMAP\\n\tvTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\\n#endif\\n#ifdef USE_THICKNESSMAP\\n\tvThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\\n#endif\";\nvar 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_BATCHING\\n\t\tworldPosition = batchingMatrix * worldPosition;\\n\t#endif\\n\t#ifdef USE_INSTANCING\\n\t\tworldPosition = instanceMatrix * worldPosition;\\n\t#endif\\n\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\nconst vertex$h = \"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}\";\nconst fragment$h = \"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 <colorspace_fragment>\\n}\";\nconst vertex$g = \"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}\";\nconst fragment$g = \"#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 <colorspace_fragment>\\n}\";\nconst vertex$f = \"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}\";\nconst fragment$f = \"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 <colorspace_fragment>\\n}\";\nconst vertex$e = \"#include <common>\\n#include <batching_pars_vertex>\\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 <batching_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}\";\nconst fragment$e = \"#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 <alphahash_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#include <clipping_planes_fragment>\\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 <alphahash_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}\";\nconst vertex$d = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\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 <batching_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}\";\nconst fragment$d = \"#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 <alphahash_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main () {\\n\tvec4 diffuseColor = vec4( 1.0 );\\n\t#include <clipping_planes_fragment>\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\tfloat dist = length( vWorldPosition - referencePosition );\\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\tdist = saturate( dist );\\n\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\nconst vertex$c = \"varying vec3 vWorldDirection;\\n#include <common>\\nvoid main() {\\n\tvWorldDirection = transformDirection( position, modelMatrix );\\n\t#include <begin_vertex>\\n\t#include <project_vertex>\\n}\";\nconst fragment$c = \"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 <colorspace_fragment>\\n}\";\nconst vertex$b = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include <common>\\n#include <uv_pars_vertex>\\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 <uv_vertex>\\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}\";\nconst fragment$b = \"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 <uv_pars_fragment>\\n#include <map_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\t\tdiscard;\\n\t}\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <color_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\nconst vertex$a = \"#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_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}\";\nconst fragment$a = \"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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\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 <alphahash_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, vLightMapUv );\\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 <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$9 = \"#define LAMBERT\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_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}\";\nconst fragment$9 = \"#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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$8 = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\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 <batching_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}\";\nconst fragment$8 = \"#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 <alphahash_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\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$7 = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\n\tvarying vec3 vViewPosition;\\n#endif\\n#include <common>\\n#include <batching_pars_vertex>\\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 <batching_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( USE_NORMALMAP_TANGENTSPACE )\\n\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\nconst fragment$7 = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\\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\tvec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\\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 ), diffuseColor.a );\\n\t#ifdef OPAQUE\\n\t\tgl_FragColor.a = 1.0;\\n\t#endif\\n}\";\nconst vertex$6 = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_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}\";\nconst fragment$6 = \"#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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$5 = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifdef USE_TRANSMISSION\\n\tvarying vec3 vWorldPosition;\\n#endif\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_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}\";\nconst fragment$5 = \"#define STANDARD\\n#ifdef PHYSICAL\\n\t#define IOR\\n\t#define USE_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 USE_SPECULAR\\n\tuniform float specularIntensity;\\n\tuniform vec3 specularColor;\\n\t#ifdef USE_SPECULAR_COLORMAP\\n\t\tuniform sampler2D specularColorMap;\\n\t#endif\\n\t#ifdef USE_SPECULAR_INTENSITYMAP\\n\t\tuniform sampler2D specularIntensityMap;\\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_SHEEN_COLORMAP\\n\t\tuniform sampler2D sheenColorMap;\\n\t#endif\\n\t#ifdef USE_SHEEN_ROUGHNESSMAP\\n\t\tuniform sampler2D sheenRoughnessMap;\\n\t#endif\\n#endif\\n#ifdef USE_ANISOTROPY\\n\tuniform vec2 anisotropyVector;\\n\t#ifdef USE_ANISOTROPYMAP\\n\t\tuniform sampler2D anisotropyMap;\\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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_pars_fragment>\\n#include <aomap_pars_fragment>\\n#include <lightmap_pars_fragment>\\n#include <emissivemap_pars_fragment>\\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\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\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 <alphahash_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 + sheenSpecularDirect + sheenSpecularIndirect;\\n\t#endif\\n\t#ifdef USE_CLEARCOAT\\n\t\tfloat dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\\n\t#endif\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$4 = \"#define TOON\\nvarying vec3 vViewPosition;\\n#include <common>\\n#include <batching_pars_vertex>\\n#include <uv_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 <color_vertex>\\n\t#include <morphcolor_vertex>\\n\t#include <batching_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}\";\nconst fragment$4 = \"#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 <map_pars_fragment>\\n#include <alphamap_pars_fragment>\\n#include <alphatest_pars_fragment>\\n#include <alphahash_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\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\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 <alphahash_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 <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n\t#include <dithering_fragment>\\n}\";\nconst vertex$3 = \"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>\\n#ifdef USE_POINTS_UV\\n\tvarying vec2 vUv;\\n\tuniform mat3 uvTransform;\\n#endif\\nvoid main() {\\n\t#ifdef USE_POINTS_UV\\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\t#endif\\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}\";\nconst fragment$3 = \"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 <alphahash_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_particle_fragment>\\n\t#include <color_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n\t#include <premultiplied_alpha_fragment>\\n}\";\nconst vertex$2 = \"#include <common>\\n#include <batching_pars_vertex>\\n#include <fog_pars_vertex>\\n#include <morphtarget_pars_vertex>\\n#include <skinning_pars_vertex>\\n#include <logdepthbuf_pars_vertex>\\n#include <shadowmap_pars_vertex>\\nvoid main() {\\n\t#include <batching_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 <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 <worldpos_vertex>\\n\t#include <shadowmap_vertex>\\n\t#include <fog_vertex>\\n}\";\nconst fragment$2 = \"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 <logdepthbuf_pars_fragment>\\n#include <shadowmap_pars_fragment>\\n#include <shadowmask_pars_fragment>\\nvoid main() {\\n\t#include <logdepthbuf_fragment>\\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n}\";\nconst vertex$1 = \"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}\";\nconst fragment$1 = \"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 <alphahash_pars_fragment>\\n#include <fog_pars_fragment>\\n#include <logdepthbuf_pars_fragment>\\n#include <clipping_planes_pars_fragment>\\nvoid main() {\\n\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\t#include <clipping_planes_fragment>\\n\tvec3 outgoingLight = vec3( 0.0 );\\n\t#include <logdepthbuf_fragment>\\n\t#include <map_fragment>\\n\t#include <alphamap_fragment>\\n\t#include <alphatest_fragment>\\n\t#include <alphahash_fragment>\\n\toutgoingLight = diffuseColor.rgb;\\n\t#include <opaque_fragment>\\n\t#include <tonemapping_fragment>\\n\t#include <colorspace_fragment>\\n\t#include <fog_fragment>\\n}\";\nconst ShaderChunk = {\n  alphahash_fragment,\n  alphahash_pars_fragment,\n  alphamap_fragment,\n  alphamap_pars_fragment,\n  alphatest_fragment,\n  alphatest_pars_fragment,\n  aomap_fragment,\n  aomap_pars_fragment,\n  batching_pars_vertex,\n  batching_vertex,\n  begin_vertex,\n  beginnormal_vertex,\n  bsdfs,\n  iridescence_fragment,\n  bumpmap_pars_fragment,\n  clipping_planes_fragment,\n  clipping_planes_pars_fragment,\n  clipping_planes_pars_vertex,\n  clipping_planes_vertex,\n  color_fragment,\n  color_pars_fragment,\n  color_pars_vertex,\n  color_vertex,\n  common,\n  cube_uv_reflection_fragment,\n  defaultnormal_vertex,\n  displacementmap_pars_vertex,\n  displacementmap_vertex,\n  emissivemap_fragment,\n  emissivemap_pars_fragment,\n  colorspace_fragment: colorspace_fragment$1,\n  colorspace_pars_fragment,\n  envmap_fragment,\n  envmap_common_pars_fragment,\n  envmap_pars_fragment,\n  envmap_pars_vertex,\n  envmap_physical_pars_fragment,\n  envmap_vertex,\n  fog_vertex,\n  fog_pars_vertex,\n  fog_fragment,\n  fog_pars_fragment,\n  gradientmap_pars_fragment,\n  lightmap_fragment,\n  lightmap_pars_fragment,\n  lights_lambert_fragment,\n  lights_lambert_pars_fragment,\n  lights_pars_begin,\n  lights_toon_fragment,\n  lights_toon_pars_fragment,\n  lights_phong_fragment,\n  lights_phong_pars_fragment,\n  lights_physical_fragment,\n  lights_physical_pars_fragment,\n  lights_fragment_begin,\n  lights_fragment_maps,\n  lights_fragment_end,\n  logdepthbuf_fragment,\n  logdepthbuf_pars_fragment,\n  logdepthbuf_pars_vertex,\n  logdepthbuf_vertex,\n  map_fragment,\n  map_pars_fragment,\n  map_particle_fragment,\n  map_particle_pars_fragment,\n  metalnessmap_fragment,\n  metalnessmap_pars_fragment,\n  morphcolor_vertex,\n  morphnormal_vertex,\n  morphtarget_pars_vertex,\n  morphtarget_vertex,\n  normal_fragment_begin,\n  normal_fragment_maps,\n  normal_pars_fragment,\n  normal_pars_vertex,\n  normal_vertex,\n  normalmap_pars_fragment,\n  clearcoat_normal_fragment_begin,\n  clearcoat_normal_fragment_maps,\n  clearcoat_pars_fragment,\n  iridescence_pars_fragment,\n  opaque_fragment,\n  packing,\n  premultiplied_alpha_fragment,\n  project_vertex,\n  dithering_fragment,\n  dithering_pars_fragment,\n  roughnessmap_fragment,\n  roughnessmap_pars_fragment,\n  shadowmap_pars_fragment,\n  shadowmap_pars_vertex,\n  shadowmap_vertex,\n  shadowmask_pars_fragment,\n  skinbase_vertex,\n  skinning_pars_vertex,\n  skinning_vertex,\n  skinnormal_vertex,\n  specularmap_fragment,\n  specularmap_pars_fragment,\n  tonemapping_fragment,\n  tonemapping_pars_fragment,\n  transmission_fragment,\n  transmission_pars_fragment,\n  uv_pars_fragment,\n  uv_pars_vertex,\n  uv_vertex,\n  worldpos_vertex,\n  background_vert: vertex$h,\n  background_frag: fragment$h,\n  backgroundCube_vert: vertex$g,\n  backgroundCube_frag: fragment$g,\n  cube_vert: vertex$f,\n  cube_frag: fragment$f,\n  depth_vert: vertex$e,\n  depth_frag: fragment$e,\n  distanceRGBA_vert: vertex$d,\n  distanceRGBA_frag: fragment$d,\n  equirect_vert: vertex$c,\n  equirect_frag: fragment$c,\n  linedashed_vert: vertex$b,\n  linedashed_frag: fragment$b,\n  meshbasic_vert: vertex$a,\n  meshbasic_frag: fragment$a,\n  meshlambert_vert: vertex$9,\n  meshlambert_frag: fragment$9,\n  meshmatcap_vert: vertex$8,\n  meshmatcap_frag: fragment$8,\n  meshnormal_vert: vertex$7,\n  meshnormal_frag: fragment$7,\n  meshphong_vert: vertex$6,\n  meshphong_frag: fragment$6,\n  meshphysical_vert: vertex$5,\n  meshphysical_frag: fragment$5,\n  meshtoon_vert: vertex$4,\n  meshtoon_frag: fragment$4,\n  points_vert: vertex$3,\n  points_frag: fragment$3,\n  shadow_vert: vertex$2,\n  shadow_frag: fragment$2,\n  sprite_vert: vertex$1,\n  sprite_frag: fragment$1\n};\nconst UniformsLib = {\n  common: {\n    diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n    opacity: { value: 1 },\n    map: { value: null },\n    mapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    alphaMap: { value: null },\n    alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    alphaTest: { value: 0 }\n  },\n  specularmap: {\n    specularMap: { value: null },\n    specularMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  envmap: {\n    envMap: { value: null },\n    flipEnvMap: { value: -1 },\n    reflectivity: { value: 1 },\n    // basic, lambert, phong\n    ior: { value: 1.5 },\n    // physical\n    refractionRatio: { value: 0.98 }\n    // basic, lambert, phong\n  },\n  aomap: {\n    aoMap: { value: null },\n    aoMapIntensity: { value: 1 },\n    aoMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  lightmap: {\n    lightMap: { value: null },\n    lightMapIntensity: { value: 1 },\n    lightMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  bumpmap: {\n    bumpMap: { value: null },\n    bumpMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    bumpScale: { value: 1 }\n  },\n  normalmap: {\n    normalMap: { value: null },\n    normalMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    normalScale: { value: /* @__PURE__ */ new Vector2(1, 1) }\n  },\n  displacementmap: {\n    displacementMap: { value: null },\n    displacementMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    displacementScale: { value: 1 },\n    displacementBias: { value: 0 }\n  },\n  emissivemap: {\n    emissiveMap: { value: null },\n    emissiveMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  metalnessmap: {\n    metalnessMap: { value: null },\n    metalnessMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  roughnessmap: {\n    roughnessMap: { value: null },\n    roughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  gradientmap: {\n    gradientMap: { value: null }\n  },\n  fog: {\n    fogDensity: { value: 25e-5 },\n    fogNear: { value: 1 },\n    fogFar: { value: 2e3 },\n    fogColor: { value: /* @__PURE__ */ new Color(16777215) }\n  },\n  lights: {\n    ambientLightColor: { value: [] },\n    lightProbe: { value: [] },\n    directionalLights: { value: [], properties: {\n      direction: {},\n      color: {}\n    } },\n    directionalLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {}\n    } },\n    directionalShadowMap: { value: [] },\n    directionalShadowMatrix: { value: [] },\n    spotLights: { value: [], properties: {\n      color: {},\n      position: {},\n      direction: {},\n      distance: {},\n      coneCos: {},\n      penumbraCos: {},\n      decay: {}\n    } },\n    spotLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {}\n    } },\n    spotLightMap: { value: [] },\n    spotShadowMap: { value: [] },\n    spotLightMatrix: { value: [] },\n    pointLights: { value: [], properties: {\n      color: {},\n      position: {},\n      decay: {},\n      distance: {}\n    } },\n    pointLightShadows: { value: [], properties: {\n      shadowBias: {},\n      shadowNormalBias: {},\n      shadowRadius: {},\n      shadowMapSize: {},\n      shadowCameraNear: {},\n      shadowCameraFar: {}\n    } },\n    pointShadowMap: { value: [] },\n    pointShadowMatrix: { value: [] },\n    hemisphereLights: { value: [], properties: {\n      direction: {},\n      skyColor: {},\n      groundColor: {}\n    } },\n    // TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\n    rectAreaLights: { value: [], properties: {\n      color: {},\n      position: {},\n      width: {},\n      height: {}\n    } },\n    ltc_1: { value: null },\n    ltc_2: { value: null }\n  },\n  points: {\n    diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n    opacity: { value: 1 },\n    size: { value: 1 },\n    scale: { value: 1 },\n    map: { value: null },\n    alphaMap: { value: null },\n    alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    alphaTest: { value: 0 },\n    uvTransform: { value: /* @__PURE__ */ new Matrix3() }\n  },\n  sprite: {\n    diffuse: { value: /* @__PURE__ */ new Color(16777215) },\n    opacity: { value: 1 },\n    center: { value: /* @__PURE__ */ new Vector2(0.5, 0.5) },\n    rotation: { value: 0 },\n    map: { value: null },\n    mapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    alphaMap: { value: null },\n    alphaMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n    alphaTest: { value: 0 }\n  }\n};\nconst ShaderLib = {\n  basic: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.meshbasic_vert,\n    fragmentShader: ShaderChunk.meshbasic_frag\n  },\n  lambert: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshlambert_vert,\n    fragmentShader: ShaderChunk.meshlambert_frag\n  },\n  phong: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.specularmap,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) },\n        specular: { value: /* @__PURE__ */ new Color(1118481) },\n        shininess: { value: 30 }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshphong_vert,\n    fragmentShader: ShaderChunk.meshphong_frag\n  },\n  standard: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.envmap,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.roughnessmap,\n      UniformsLib.metalnessmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) },\n        roughness: { value: 1 },\n        metalness: { value: 0 },\n        envMapIntensity: { value: 1 }\n        // temporary\n      }\n    ]),\n    vertexShader: ShaderChunk.meshphysical_vert,\n    fragmentShader: ShaderChunk.meshphysical_frag\n  },\n  toon: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.aomap,\n      UniformsLib.lightmap,\n      UniformsLib.emissivemap,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.gradientmap,\n      UniformsLib.fog,\n      UniformsLib.lights,\n      {\n        emissive: { value: /* @__PURE__ */ new Color(0) }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshtoon_vert,\n    fragmentShader: ShaderChunk.meshtoon_frag\n  },\n  matcap: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      UniformsLib.fog,\n      {\n        matcap: { value: null }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshmatcap_vert,\n    fragmentShader: ShaderChunk.meshmatcap_frag\n  },\n  points: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.points,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.points_vert,\n    fragmentShader: ShaderChunk.points_frag\n  },\n  dashed: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.fog,\n      {\n        scale: { value: 1 },\n        dashSize: { value: 1 },\n        totalSize: { value: 2 }\n      }\n    ]),\n    vertexShader: ShaderChunk.linedashed_vert,\n    fragmentShader: ShaderChunk.linedashed_frag\n  },\n  depth: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.displacementmap\n    ]),\n    vertexShader: ShaderChunk.depth_vert,\n    fragmentShader: ShaderChunk.depth_frag\n  },\n  normal: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.bumpmap,\n      UniformsLib.normalmap,\n      UniformsLib.displacementmap,\n      {\n        opacity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.meshnormal_vert,\n    fragmentShader: ShaderChunk.meshnormal_frag\n  },\n  sprite: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.sprite,\n      UniformsLib.fog\n    ]),\n    vertexShader: ShaderChunk.sprite_vert,\n    fragmentShader: ShaderChunk.sprite_frag\n  },\n  background: {\n    uniforms: {\n      uvTransform: { value: /* @__PURE__ */ new Matrix3() },\n      t2D: { value: null },\n      backgroundIntensity: { value: 1 }\n    },\n    vertexShader: ShaderChunk.background_vert,\n    fragmentShader: ShaderChunk.background_frag\n  },\n  backgroundCube: {\n    uniforms: {\n      envMap: { value: null },\n      flipEnvMap: { value: -1 },\n      backgroundBlurriness: { value: 0 },\n      backgroundIntensity: { value: 1 }\n    },\n    vertexShader: ShaderChunk.backgroundCube_vert,\n    fragmentShader: ShaderChunk.backgroundCube_frag\n  },\n  cube: {\n    uniforms: {\n      tCube: { value: null },\n      tFlip: { value: -1 },\n      opacity: { value: 1 }\n    },\n    vertexShader: ShaderChunk.cube_vert,\n    fragmentShader: ShaderChunk.cube_frag\n  },\n  equirect: {\n    uniforms: {\n      tEquirect: { value: null }\n    },\n    vertexShader: ShaderChunk.equirect_vert,\n    fragmentShader: ShaderChunk.equirect_frag\n  },\n  distanceRGBA: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.common,\n      UniformsLib.displacementmap,\n      {\n        referencePosition: { value: /* @__PURE__ */ new Vector3() },\n        nearDistance: { value: 1 },\n        farDistance: { value: 1e3 }\n      }\n    ]),\n    vertexShader: ShaderChunk.distanceRGBA_vert,\n    fragmentShader: ShaderChunk.distanceRGBA_frag\n  },\n  shadow: {\n    uniforms: /* @__PURE__ */ mergeUniforms([\n      UniformsLib.lights,\n      UniformsLib.fog,\n      {\n        color: { value: /* @__PURE__ */ new Color(0) },\n        opacity: { value: 1 }\n      }\n    ]),\n    vertexShader: ShaderChunk.shadow_vert,\n    fragmentShader: ShaderChunk.shadow_frag\n  }\n};\nShaderLib.physical = {\n  uniforms: /* @__PURE__ */ mergeUniforms([\n    ShaderLib.standard.uniforms,\n    {\n      clearcoat: { value: 0 },\n      clearcoatMap: { value: null },\n      clearcoatMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      clearcoatNormalMap: { value: null },\n      clearcoatNormalMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      clearcoatNormalScale: { value: /* @__PURE__ */ new Vector2(1, 1) },\n      clearcoatRoughness: { value: 0 },\n      clearcoatRoughnessMap: { value: null },\n      clearcoatRoughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      iridescence: { value: 0 },\n      iridescenceMap: { value: null },\n      iridescenceMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      iridescenceIOR: { value: 1.3 },\n      iridescenceThicknessMinimum: { value: 100 },\n      iridescenceThicknessMaximum: { value: 400 },\n      iridescenceThicknessMap: { value: null },\n      iridescenceThicknessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      sheen: { value: 0 },\n      sheenColor: { value: /* @__PURE__ */ new Color(0) },\n      sheenColorMap: { value: null },\n      sheenColorMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      sheenRoughness: { value: 1 },\n      sheenRoughnessMap: { value: null },\n      sheenRoughnessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      transmission: { value: 0 },\n      transmissionMap: { value: null },\n      transmissionMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      transmissionSamplerSize: { value: /* @__PURE__ */ new Vector2() },\n      transmissionSamplerMap: { value: null },\n      thickness: { value: 0 },\n      thicknessMap: { value: null },\n      thicknessMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      attenuationDistance: { value: 0 },\n      attenuationColor: { value: /* @__PURE__ */ new Color(0) },\n      specularColor: { value: /* @__PURE__ */ new Color(1, 1, 1) },\n      specularColorMap: { value: null },\n      specularColorMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      specularIntensity: { value: 1 },\n      specularIntensityMap: { value: null },\n      specularIntensityMapTransform: { value: /* @__PURE__ */ new Matrix3() },\n      anisotropyVector: { value: /* @__PURE__ */ new Vector2() },\n      anisotropyMap: { value: null },\n      anisotropyMapTransform: { value: /* @__PURE__ */ new Matrix3() }\n    }\n  ]),\n  vertexShader: ShaderChunk.meshphysical_vert,\n  fragmentShader: ShaderChunk.meshphysical_frag\n};\nconst _rgb = { r: 0, b: 0, g: 0 };\nfunction WebGLBackground(renderer, cubemaps, cubeuvmaps, state, objects, alpha, premultipliedAlpha) {\n  const clearColor = new Color(0);\n  let clearAlpha = alpha === true ? 0 : 1;\n  let planeMesh;\n  let boxMesh;\n  let currentBackground = null;\n  let currentBackgroundVersion = 0;\n  let currentTonemapping = null;\n  function render(renderList, scene) {\n    let forceClear = false;\n    let background = scene.isScene === true ? scene.background : null;\n    if (background && background.isTexture) {\n      const usePMREM = scene.backgroundBlurriness > 0;\n      background = (usePMREM ? cubeuvmaps : cubemaps).get(background);\n    }\n    if (background === null) {\n      setClear(clearColor, clearAlpha);\n    } else if (background && background.isColor) {\n      setClear(background, 1);\n      forceClear = true;\n    }\n    const environmentBlendMode = renderer.xr.getEnvironmentBlendMode();\n    if (environmentBlendMode === \"additive\") {\n      state.buffers.color.setClear(0, 0, 0, 1, premultipliedAlpha);\n    } else if (environmentBlendMode === \"alpha-blend\") {\n      state.buffers.color.setClear(0, 0, 0, 0, premultipliedAlpha);\n    }\n    if (renderer.autoClear || forceClear) {\n      renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil);\n    }\n    if (background && (background.isCubeTexture || background.mapping === CubeUVReflectionMapping)) {\n      if (boxMesh === void 0) {\n        boxMesh = new Mesh(\n          new BoxGeometry(1, 1, 1),\n          new ShaderMaterial({\n            name: \"BackgroundCubeMaterial\",\n            uniforms: cloneUniforms(ShaderLib.backgroundCube.uniforms),\n            vertexShader: ShaderLib.backgroundCube.vertexShader,\n            fragmentShader: ShaderLib.backgroundCube.fragmentShader,\n            side: BackSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        boxMesh.geometry.deleteAttribute(\"normal\");\n        boxMesh.geometry.deleteAttribute(\"uv\");\n        boxMesh.onBeforeRender = function(renderer2, scene2, camera) {\n          this.matrixWorld.copyPosition(camera.matrixWorld);\n        };\n        Object.defineProperty(boxMesh.material, \"envMap\", {\n          get: function() {\n            return this.uniforms.envMap.value;\n          }\n        });\n        objects.update(boxMesh);\n      }\n      boxMesh.material.uniforms.envMap.value = background;\n      boxMesh.material.uniforms.flipEnvMap.value = background.isCubeTexture && background.isRenderTargetTexture === false ? -1 : 1;\n      boxMesh.material.uniforms.backgroundBlurriness.value = scene.backgroundBlurriness;\n      boxMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n      boxMesh.material.toneMapped = ColorManagement.getTransfer(background.colorSpace) !== SRGBTransfer;\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        boxMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      boxMesh.layers.enableAll();\n      renderList.unshift(boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null);\n    } else if (background && background.isTexture) {\n      if (planeMesh === void 0) {\n        planeMesh = new Mesh(\n          new PlaneGeometry(2, 2),\n          new ShaderMaterial({\n            name: \"BackgroundMaterial\",\n            uniforms: cloneUniforms(ShaderLib.background.uniforms),\n            vertexShader: ShaderLib.background.vertexShader,\n            fragmentShader: ShaderLib.background.fragmentShader,\n            side: FrontSide,\n            depthTest: false,\n            depthWrite: false,\n            fog: false\n          })\n        );\n        planeMesh.geometry.deleteAttribute(\"normal\");\n        Object.defineProperty(planeMesh.material, \"map\", {\n          get: function() {\n            return this.uniforms.t2D.value;\n          }\n        });\n        objects.update(planeMesh);\n      }\n      planeMesh.material.uniforms.t2D.value = background;\n      planeMesh.material.uniforms.backgroundIntensity.value = scene.backgroundIntensity;\n      planeMesh.material.toneMapped = ColorManagement.getTransfer(background.colorSpace) !== SRGBTransfer;\n      if (background.matrixAutoUpdate === true) {\n        background.updateMatrix();\n      }\n      planeMesh.material.uniforms.uvTransform.value.copy(background.matrix);\n      if (currentBackground !== background || currentBackgroundVersion !== background.version || currentTonemapping !== renderer.toneMapping) {\n        planeMesh.material.needsUpdate = true;\n        currentBackground = background;\n        currentBackgroundVersion = background.version;\n        currentTonemapping = renderer.toneMapping;\n      }\n      planeMesh.layers.enableAll();\n      renderList.unshift(planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null);\n    }\n  }\n  function setClear(color, alpha2) {\n    color.getRGB(_rgb, getUnlitUniformColorSpace(renderer));\n    state.buffers.color.setClear(_rgb.r, _rgb.g, _rgb.b, alpha2, premultipliedAlpha);\n  }\n  return {\n    getClearColor: function() {\n      return clearColor;\n    },\n    setClearColor: function(color, alpha2 = 1) {\n      clearColor.set(color);\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    getClearAlpha: function() {\n      return clearAlpha;\n    },\n    setClearAlpha: function(alpha2) {\n      clearAlpha = alpha2;\n      setClear(clearColor, clearAlpha);\n    },\n    render\n  };\n}\nfunction WebGLBindingStates(gl, extensions2, attributes, capabilities) {\n  const maxVertexAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n  const extension = capabilities.isWebGL2 ? null : extensions2.get(\"OES_vertex_array_object\");\n  const vaoAvailable = capabilities.isWebGL2 || extension !== null;\n  const bindingStates = {};\n  const defaultState = createBindingState(null);\n  let currentState = defaultState;\n  let forceUpdate = false;\n  function setup(object, material, program, geometry, index) {\n    let updateBuffers = false;\n    if (vaoAvailable) {\n      const state = getBindingState(geometry, program, material);\n      if (currentState !== state) {\n        currentState = state;\n        bindVertexArrayObject(currentState.object);\n      }\n      updateBuffers = needsUpdate(object, geometry, program, index);\n      if (updateBuffers) saveCache(object, geometry, program, index);\n    } else {\n      const wireframe = material.wireframe === true;\n      if (currentState.geometry !== geometry.id || currentState.program !== program.id || currentState.wireframe !== wireframe) {\n        currentState.geometry = geometry.id;\n        currentState.program = program.id;\n        currentState.wireframe = wireframe;\n        updateBuffers = true;\n      }\n    }\n    if (index !== null) {\n      attributes.update(index, gl.ELEMENT_ARRAY_BUFFER);\n    }\n    if (updateBuffers || forceUpdate) {\n      forceUpdate = false;\n      setupVertexAttributes(object, material, program, geometry);\n      if (index !== null) {\n        gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, attributes.get(index).buffer);\n      }\n    }\n  }\n  function createVertexArrayObject() {\n    if (capabilities.isWebGL2) return gl.createVertexArray();\n    return extension.createVertexArrayOES();\n  }\n  function bindVertexArrayObject(vao) {\n    if (capabilities.isWebGL2) return gl.bindVertexArray(vao);\n    return extension.bindVertexArrayOES(vao);\n  }\n  function deleteVertexArrayObject(vao) {\n    if (capabilities.isWebGL2) return gl.deleteVertexArray(vao);\n    return extension.deleteVertexArrayOES(vao);\n  }\n  function getBindingState(geometry, program, material) {\n    const wireframe = material.wireframe === true;\n    let programMap = bindingStates[geometry.id];\n    if (programMap === void 0) {\n      programMap = {};\n      bindingStates[geometry.id] = programMap;\n    }\n    let stateMap = programMap[program.id];\n    if (stateMap === void 0) {\n      stateMap = {};\n      programMap[program.id] = stateMap;\n    }\n    let state = stateMap[wireframe];\n    if (state === void 0) {\n      state = createBindingState(createVertexArrayObject());\n      stateMap[wireframe] = state;\n    }\n    return state;\n  }\n  function createBindingState(vao) {\n    const newAttributes = [];\n    const enabledAttributes = [];\n    const attributeDivisors = [];\n    for (let i2 = 0; i2 < maxVertexAttributes; i2++) {\n      newAttributes[i2] = 0;\n      enabledAttributes[i2] = 0;\n      attributeDivisors[i2] = 0;\n    }\n    return {\n      // for backward compatibility on non-VAO support browser\n      geometry: null,\n      program: null,\n      wireframe: false,\n      newAttributes,\n      enabledAttributes,\n      attributeDivisors,\n      object: vao,\n      attributes: {},\n      index: null\n    };\n  }\n  function needsUpdate(object, geometry, program, index) {\n    const cachedAttributes = currentState.attributes;\n    const geometryAttributes = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        const cachedAttribute = cachedAttributes[name];\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix) geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor) geometryAttribute = object.instanceColor;\n        }\n        if (cachedAttribute === void 0) return true;\n        if (cachedAttribute.attribute !== geometryAttribute) return true;\n        if (geometryAttribute && cachedAttribute.data !== geometryAttribute.data) return true;\n        attributesNum++;\n      }\n    }\n    if (currentState.attributesNum !== attributesNum) return true;\n    if (currentState.index !== index) return true;\n    return false;\n  }\n  function saveCache(object, geometry, program, index) {\n    const cache = {};\n    const attributes2 = geometry.attributes;\n    let attributesNum = 0;\n    const programAttributes = program.getAttributes();\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let attribute = attributes2[name];\n        if (attribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix) attribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor) attribute = object.instanceColor;\n        }\n        const data = {};\n        data.attribute = attribute;\n        if (attribute && attribute.data) {\n          data.data = attribute.data;\n        }\n        cache[name] = data;\n        attributesNum++;\n      }\n    }\n    currentState.attributes = cache;\n    currentState.attributesNum = attributesNum;\n    currentState.index = index;\n  }\n  function initAttributes() {\n    const newAttributes = currentState.newAttributes;\n    for (let i2 = 0, il = newAttributes.length; i2 < il; i2++) {\n      newAttributes[i2] = 0;\n    }\n  }\n  function enableAttribute(attribute) {\n    enableAttributeAndDivisor(attribute, 0);\n  }\n  function enableAttributeAndDivisor(attribute, meshPerAttribute) {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    const attributeDivisors = currentState.attributeDivisors;\n    newAttributes[attribute] = 1;\n    if (enabledAttributes[attribute] === 0) {\n      gl.enableVertexAttribArray(attribute);\n      enabledAttributes[attribute] = 1;\n    }\n    if (attributeDivisors[attribute] !== meshPerAttribute) {\n      const extension2 = capabilities.isWebGL2 ? gl : extensions2.get(\"ANGLE_instanced_arrays\");\n      extension2[capabilities.isWebGL2 ? \"vertexAttribDivisor\" : \"vertexAttribDivisorANGLE\"](attribute, meshPerAttribute);\n      attributeDivisors[attribute] = meshPerAttribute;\n    }\n  }\n  function disableUnusedAttributes() {\n    const newAttributes = currentState.newAttributes;\n    const enabledAttributes = currentState.enabledAttributes;\n    for (let i2 = 0, il = enabledAttributes.length; i2 < il; i2++) {\n      if (enabledAttributes[i2] !== newAttributes[i2]) {\n        gl.disableVertexAttribArray(i2);\n        enabledAttributes[i2] = 0;\n      }\n    }\n  }\n  function vertexAttribPointer(index, size, type, normalized, stride, offset, integer) {\n    if (integer === true) {\n      gl.vertexAttribIPointer(index, size, type, stride, offset);\n    } else {\n      gl.vertexAttribPointer(index, size, type, normalized, stride, offset);\n    }\n  }\n  function setupVertexAttributes(object, material, program, geometry) {\n    if (capabilities.isWebGL2 === false && (object.isInstancedMesh || geometry.isInstancedBufferGeometry)) {\n      if (extensions2.get(\"ANGLE_instanced_arrays\") === null) return;\n    }\n    initAttributes();\n    const geometryAttributes = geometry.attributes;\n    const programAttributes = program.getAttributes();\n    const materialDefaultAttributeValues = material.defaultAttributeValues;\n    for (const name in programAttributes) {\n      const programAttribute = programAttributes[name];\n      if (programAttribute.location >= 0) {\n        let geometryAttribute = geometryAttributes[name];\n        if (geometryAttribute === void 0) {\n          if (name === \"instanceMatrix\" && object.instanceMatrix) geometryAttribute = object.instanceMatrix;\n          if (name === \"instanceColor\" && object.instanceColor) geometryAttribute = object.instanceColor;\n        }\n        if (geometryAttribute !== void 0) {\n          const normalized = geometryAttribute.normalized;\n          const size = geometryAttribute.itemSize;\n          const attribute = attributes.get(geometryAttribute);\n          if (attribute === void 0) continue;\n          const buffer = attribute.buffer;\n          const type = attribute.type;\n          const bytesPerElement = attribute.bytesPerElement;\n          const integer = capabilities.isWebGL2 === true && (type === gl.INT || type === gl.UNSIGNED_INT || geometryAttribute.gpuType === IntType);\n          if (geometryAttribute.isInterleavedBufferAttribute) {\n            const data = geometryAttribute.data;\n            const stride = data.stride;\n            const offset = geometryAttribute.offset;\n            if (data.isInstancedInterleavedBuffer) {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttributeAndDivisor(programAttribute.location + i2, data.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = data.meshPerAttribute * data.count;\n              }\n            } else {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttribute(programAttribute.location + i2);\n              }\n            }\n            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n            for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n              vertexAttribPointer(\n                programAttribute.location + i2,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                stride * bytesPerElement,\n                (offset + size / programAttribute.locationSize * i2) * bytesPerElement,\n                integer\n              );\n            }\n          } else {\n            if (geometryAttribute.isInstancedBufferAttribute) {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttributeAndDivisor(programAttribute.location + i2, geometryAttribute.meshPerAttribute);\n              }\n              if (object.isInstancedMesh !== true && geometry._maxInstanceCount === void 0) {\n                geometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\n              }\n            } else {\n              for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n                enableAttribute(programAttribute.location + i2);\n              }\n            }\n            gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n            for (let i2 = 0; i2 < programAttribute.locationSize; i2++) {\n              vertexAttribPointer(\n                programAttribute.location + i2,\n                size / programAttribute.locationSize,\n                type,\n                normalized,\n                size * bytesPerElement,\n                size / programAttribute.locationSize * i2 * bytesPerElement,\n                integer\n              );\n            }\n          }\n        } else if (materialDefaultAttributeValues !== void 0) {\n          const value = materialDefaultAttributeValues[name];\n          if (value !== void 0) {\n            switch (value.length) {\n              case 2:\n                gl.vertexAttrib2fv(programAttribute.location, value);\n                break;\n              case 3:\n                gl.vertexAttrib3fv(programAttribute.location, value);\n                break;\n              case 4:\n                gl.vertexAttrib4fv(programAttribute.location, value);\n                break;\n              default:\n                gl.vertexAttrib1fv(programAttribute.location, value);\n            }\n          }\n        }\n      }\n    }\n    disableUnusedAttributes();\n  }\n  function dispose2() {\n    reset();\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      for (const programId in programMap) {\n        const stateMap = programMap[programId];\n        for (const wireframe in stateMap) {\n          deleteVertexArrayObject(stateMap[wireframe].object);\n          delete stateMap[wireframe];\n        }\n        delete programMap[programId];\n      }\n      delete bindingStates[geometryId];\n    }\n  }\n  function releaseStatesOfGeometry(geometry) {\n    if (bindingStates[geometry.id] === void 0) return;\n    const programMap = bindingStates[geometry.id];\n    for (const programId in programMap) {\n      const stateMap = programMap[programId];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[programId];\n    }\n    delete bindingStates[geometry.id];\n  }\n  function releaseStatesOfProgram(program) {\n    for (const geometryId in bindingStates) {\n      const programMap = bindingStates[geometryId];\n      if (programMap[program.id] === void 0) continue;\n      const stateMap = programMap[program.id];\n      for (const wireframe in stateMap) {\n        deleteVertexArrayObject(stateMap[wireframe].object);\n        delete stateMap[wireframe];\n      }\n      delete programMap[program.id];\n    }\n  }\n  function reset() {\n    resetDefaultState();\n    forceUpdate = true;\n    if (currentState === defaultState) return;\n    currentState = defaultState;\n    bindVertexArrayObject(currentState.object);\n  }\n  function resetDefaultState() {\n    defaultState.geometry = null;\n    defaultState.program = null;\n    defaultState.wireframe = false;\n  }\n  return {\n    setup,\n    reset,\n    resetDefaultState,\n    dispose: dispose2,\n    releaseStatesOfGeometry,\n    releaseStatesOfProgram,\n    initAttributes,\n    enableAttribute,\n    disableUnusedAttributes\n  };\n}\nfunction WebGLBufferRenderer(gl, extensions2, info, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  function render(start, count) {\n    gl.drawArrays(mode, start, count);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0) return;\n    let extension, methodName;\n    if (isWebGL2) {\n      extension = gl;\n      methodName = \"drawArraysInstanced\";\n    } else {\n      extension = extensions2.get(\"ANGLE_instanced_arrays\");\n      methodName = \"drawArraysInstancedANGLE\";\n      if (extension === null) {\n        console.error(\"THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n        return;\n      }\n    }\n    extension[methodName](mode, start, count, primcount);\n    info.update(count, mode, primcount);\n  }\n  function renderMultiDraw(starts, counts, drawCount) {\n    if (drawCount === 0) return;\n    const extension = extensions2.get(\"WEBGL_multi_draw\");\n    if (extension === null) {\n      for (let i2 = 0; i2 < drawCount; i2++) {\n        this.render(starts[i2], counts[i2]);\n      }\n    } else {\n      extension.multiDrawArraysWEBGL(mode, starts, 0, counts, 0, drawCount);\n      let elementCount = 0;\n      for (let i2 = 0; i2 < drawCount; i2++) {\n        elementCount += counts[i2];\n      }\n      info.update(elementCount, mode, 1);\n    }\n  }\n  this.setMode = setMode;\n  this.render = render;\n  this.renderInstances = renderInstances;\n  this.renderMultiDraw = renderMultiDraw;\n}\nfunction WebGLCapabilities(gl, extensions2, parameters) {\n  let maxAnisotropy;\n  function getMaxAnisotropy() {\n    if (maxAnisotropy !== void 0) return maxAnisotropy;\n    if (extensions2.has(\"EXT_texture_filter_anisotropic\") === true) {\n      const extension = extensions2.get(\"EXT_texture_filter_anisotropic\");\n      maxAnisotropy = gl.getParameter(extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT);\n    } else {\n      maxAnisotropy = 0;\n    }\n    return maxAnisotropy;\n  }\n  function getMaxPrecision(precision2) {\n    if (precision2 === \"highp\") {\n      if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision > 0) {\n        return \"highp\";\n      }\n      precision2 = \"mediump\";\n    }\n    if (precision2 === \"mediump\") {\n      if (gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT).precision > 0 && gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision > 0) {\n        return \"mediump\";\n      }\n    }\n    return \"lowp\";\n  }\n  const isWebGL2 = typeof WebGL2RenderingContext !== \"undefined\" && gl.constructor.name === \"WebGL2RenderingContext\";\n  let precision = parameters.precision !== void 0 ? parameters.precision : \"highp\";\n  const maxPrecision = getMaxPrecision(precision);\n  if (maxPrecision !== precision) {\n    console.warn(\"THREE.WebGLRenderer:\", precision, \"not supported, using\", maxPrecision, \"instead.\");\n    precision = maxPrecision;\n  }\n  const drawBuffers = isWebGL2 || extensions2.has(\"WEBGL_draw_buffers\");\n  const logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\n  const maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n  const maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n  const maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n  const maxCubemapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n  const maxAttributes = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n  const maxVertexUniforms = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n  const maxVaryings = gl.getParameter(gl.MAX_VARYING_VECTORS);\n  const maxFragmentUniforms = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n  const vertexTextures = maxVertexTextures > 0;\n  const floatFragmentTextures = isWebGL2 || extensions2.has(\"OES_texture_float\");\n  const floatVertexTextures = vertexTextures && floatFragmentTextures;\n  const maxSamples = isWebGL2 ? gl.getParameter(gl.MAX_SAMPLES) : 0;\n  return {\n    isWebGL2,\n    drawBuffers,\n    getMaxAnisotropy,\n    getMaxPrecision,\n    precision,\n    logarithmicDepthBuffer,\n    maxTextures,\n    maxVertexTextures,\n    maxTextureSize,\n    maxCubemapSize,\n    maxAttributes,\n    maxVertexUniforms,\n    maxVaryings,\n    maxFragmentUniforms,\n    vertexTextures,\n    floatFragmentTextures,\n    floatVertexTextures,\n    maxSamples\n  };\n}\nfunction WebGLClipping(properties) {\n  const scope = this;\n  let globalState = null, numGlobalPlanes = 0, localClippingEnabled = false, renderingShadows = false;\n  const plane = new Plane(), viewNormalMatrix = new Matrix3(), uniform = { value: null, needsUpdate: false };\n  this.uniform = uniform;\n  this.numPlanes = 0;\n  this.numIntersection = 0;\n  this.init = function(planes, enableLocalClipping) {\n    const enabled = planes.length !== 0 || enableLocalClipping || // enable state of previous frame - the clipping code has to\n    // run another frame in order to reset the state:\n    numGlobalPlanes !== 0 || localClippingEnabled;\n    localClippingEnabled = enableLocalClipping;\n    numGlobalPlanes = planes.length;\n    return enabled;\n  };\n  this.beginShadows = function() {\n    renderingShadows = true;\n    projectPlanes(null);\n  };\n  this.endShadows = function() {\n    renderingShadows = false;\n  };\n  this.setGlobalState = function(planes, camera) {\n    globalState = projectPlanes(planes, camera, 0);\n  };\n  this.setState = function(material, camera, useCache) {\n    const planes = material.clippingPlanes, clipIntersection = material.clipIntersection, clipShadows = material.clipShadows;\n    const materialProperties = properties.get(material);\n    if (!localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && !clipShadows) {\n      if (renderingShadows) {\n        projectPlanes(null);\n      } else {\n        resetGlobalState();\n      }\n    } else {\n      const nGlobal = renderingShadows ? 0 : numGlobalPlanes, lGlobal = nGlobal * 4;\n      let dstArray = materialProperties.clippingState || null;\n      uniform.value = dstArray;\n      dstArray = projectPlanes(planes, camera, lGlobal, useCache);\n      for (let i2 = 0; i2 !== lGlobal; ++i2) {\n        dstArray[i2] = globalState[i2];\n      }\n      materialProperties.clippingState = dstArray;\n      this.numIntersection = clipIntersection ? this.numPlanes : 0;\n      this.numPlanes += nGlobal;\n    }\n  };\n  function resetGlobalState() {\n    if (uniform.value !== globalState) {\n      uniform.value = globalState;\n      uniform.needsUpdate = numGlobalPlanes > 0;\n    }\n    scope.numPlanes = numGlobalPlanes;\n    scope.numIntersection = 0;\n  }\n  function projectPlanes(planes, camera, dstOffset, skipTransform) {\n    const nPlanes = planes !== null ? planes.length : 0;\n    let dstArray = null;\n    if (nPlanes !== 0) {\n      dstArray = uniform.value;\n      if (skipTransform !== true || dstArray === null) {\n        const flatSize = dstOffset + nPlanes * 4, viewMatrix = camera.matrixWorldInverse;\n        viewNormalMatrix.getNormalMatrix(viewMatrix);\n        if (dstArray === null || dstArray.length < flatSize) {\n          dstArray = new Float32Array(flatSize);\n        }\n        for (let i2 = 0, i4 = dstOffset; i2 !== nPlanes; ++i2, i4 += 4) {\n          plane.copy(planes[i2]).applyMatrix4(viewMatrix, viewNormalMatrix);\n          plane.normal.toArray(dstArray, i4);\n          dstArray[i4 + 3] = plane.constant;\n        }\n      }\n      uniform.value = dstArray;\n      uniform.needsUpdate = true;\n    }\n    scope.numPlanes = nPlanes;\n    scope.numIntersection = 0;\n    return dstArray;\n  }\n}\nfunction WebGLCubeMaps(renderer) {\n  let cubemaps = /* @__PURE__ */ new WeakMap();\n  function mapTextureMapping(texture, mapping) {\n    if (mapping === EquirectangularReflectionMapping) {\n      texture.mapping = CubeReflectionMapping;\n    } else if (mapping === EquirectangularRefractionMapping) {\n      texture.mapping = CubeRefractionMapping;\n    }\n    return texture;\n  }\n  function get(texture) {\n    if (texture && texture.isTexture) {\n      const mapping = texture.mapping;\n      if (mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping) {\n        if (cubemaps.has(texture)) {\n          const cubemap = cubemaps.get(texture).texture;\n          return mapTextureMapping(cubemap, texture.mapping);\n        } else {\n          const image = texture.image;\n          if (image && image.height > 0) {\n            const renderTarget = new WebGLCubeRenderTarget(image.height);\n            renderTarget.fromEquirectangularTexture(renderer, texture);\n            cubemaps.set(texture, renderTarget);\n            texture.addEventListener(\"dispose\", onTextureDispose);\n            return mapTextureMapping(renderTarget.texture, texture.mapping);\n          } else {\n            return null;\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemap = cubemaps.get(texture);\n    if (cubemap !== void 0) {\n      cubemaps.delete(texture);\n      cubemap.dispose();\n    }\n  }\n  function dispose2() {\n    cubemaps = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nclass OrthographicCamera extends Camera {\n  constructor(left = -1, right = 1, top = 1, bottom = -1, near = 0.1, far = 2e3) {\n    super();\n    this.isOrthographicCamera = true;\n    this.type = \"OrthographicCamera\";\n    this.zoom = 1;\n    this.view = null;\n    this.left = left;\n    this.right = right;\n    this.top = top;\n    this.bottom = bottom;\n    this.near = near;\n    this.far = far;\n    this.updateProjectionMatrix();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.left = source.left;\n    this.right = source.right;\n    this.top = source.top;\n    this.bottom = source.bottom;\n    this.near = source.near;\n    this.far = source.far;\n    this.zoom = source.zoom;\n    this.view = source.view === null ? null : Object.assign({}, source.view);\n    return this;\n  }\n  setViewOffset(fullWidth, fullHeight, x2, y2, width, height) {\n    if (this.view === null) {\n      this.view = {\n        enabled: true,\n        fullWidth: 1,\n        fullHeight: 1,\n        offsetX: 0,\n        offsetY: 0,\n        width: 1,\n        height: 1\n      };\n    }\n    this.view.enabled = true;\n    this.view.fullWidth = fullWidth;\n    this.view.fullHeight = fullHeight;\n    this.view.offsetX = x2;\n    this.view.offsetY = y2;\n    this.view.width = width;\n    this.view.height = height;\n    this.updateProjectionMatrix();\n  }\n  clearViewOffset() {\n    if (this.view !== null) {\n      this.view.enabled = false;\n    }\n    this.updateProjectionMatrix();\n  }\n  updateProjectionMatrix() {\n    const dx = (this.right - this.left) / (2 * this.zoom);\n    const dy = (this.top - this.bottom) / (2 * this.zoom);\n    const cx = (this.right + this.left) / 2;\n    const cy = (this.top + this.bottom) / 2;\n    let left = cx - dx;\n    let right = cx + dx;\n    let top = cy + dy;\n    let bottom = cy - dy;\n    if (this.view !== null && this.view.enabled) {\n      const scaleW = (this.right - this.left) / this.view.fullWidth / this.zoom;\n      const scaleH = (this.top - this.bottom) / this.view.fullHeight / this.zoom;\n      left += scaleW * this.view.offsetX;\n      right = left + scaleW * this.view.width;\n      top -= scaleH * this.view.offsetY;\n      bottom = top - scaleH * this.view.height;\n    }\n    this.projectionMatrix.makeOrthographic(left, right, top, bottom, this.near, this.far, this.coordinateSystem);\n    this.projectionMatrixInverse.copy(this.projectionMatrix).invert();\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.zoom = this.zoom;\n    data.object.left = this.left;\n    data.object.right = this.right;\n    data.object.top = this.top;\n    data.object.bottom = this.bottom;\n    data.object.near = this.near;\n    data.object.far = this.far;\n    if (this.view !== null) data.object.view = Object.assign({}, this.view);\n    return data;\n  }\n}\nconst LOD_MIN = 4;\nconst EXTRA_LOD_SIGMA = [0.125, 0.215, 0.35, 0.446, 0.526, 0.582];\nconst MAX_SAMPLES = 20;\nconst _flatCamera = /* @__PURE__ */ new OrthographicCamera();\nconst _clearColor = /* @__PURE__ */ new Color();\nlet _oldTarget = null;\nlet _oldActiveCubeFace = 0;\nlet _oldActiveMipmapLevel = 0;\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\nconst _axisDirections = [\n  /* @__PURE__ */ new Vector3(1, 1, 1),\n  /* @__PURE__ */ new Vector3(-1, 1, 1),\n  /* @__PURE__ */ new Vector3(1, 1, -1),\n  /* @__PURE__ */ new Vector3(-1, 1, -1),\n  /* @__PURE__ */ new Vector3(0, PHI, INV_PHI),\n  /* @__PURE__ */ new Vector3(0, PHI, -INV_PHI),\n  /* @__PURE__ */ new Vector3(INV_PHI, 0, PHI),\n  /* @__PURE__ */ new Vector3(-INV_PHI, 0, PHI),\n  /* @__PURE__ */ new Vector3(PHI, INV_PHI, 0),\n  /* @__PURE__ */ new Vector3(-PHI, INV_PHI, 0)\n];\nclass PMREMGenerator {\n  constructor(renderer) {\n    this._renderer = renderer;\n    this._pingPongRenderTarget = null;\n    this._lodMax = 0;\n    this._cubeSize = 0;\n    this._lodPlanes = [];\n    this._sizeLods = [];\n    this._sigmas = [];\n    this._blurMaterial = null;\n    this._cubemapMaterial = null;\n    this._equirectMaterial = null;\n    this._compileMaterial(this._blurMaterial);\n  }\n  /**\n   * Generates a PMREM from a supplied Scene, which can be faster than using an\n   * image if networking bandwidth is low. Optional sigma specifies a blur radius\n   * in radians to be applied to the scene before PMREM generation. Optional near\n   * and far planes ensure the scene is rendered in its entirety (the cubeCamera\n   * is placed at the origin).\n   */\n  fromScene(scene, sigma = 0, near = 0.1, far = 100) {\n    _oldTarget = this._renderer.getRenderTarget();\n    _oldActiveCubeFace = this._renderer.getActiveCubeFace();\n    _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n    this._setSize(256);\n    const cubeUVRenderTarget = this._allocateTargets();\n    cubeUVRenderTarget.depthBuffer = true;\n    this._sceneToCubeUV(scene, near, far, cubeUVRenderTarget);\n    if (sigma > 0) {\n      this._blur(cubeUVRenderTarget, 0, 0, sigma);\n    }\n    this._applyPMREM(cubeUVRenderTarget);\n    this._cleanup(cubeUVRenderTarget);\n    return cubeUVRenderTarget;\n  }\n  /**\n   * Generates a PMREM from an equirectangular texture, which can be either LDR\n   * or HDR. The ideal input image size is 1k (1024 x 512),\n   * as this matches best with the 256 x 256 cubemap output.\n   */\n  fromEquirectangular(equirectangular, renderTarget = null) {\n    return this._fromTexture(equirectangular, renderTarget);\n  }\n  /**\n   * Generates a PMREM from an cubemap texture, which can be either LDR\n   * or HDR. The ideal input cube size is 256 x 256,\n   * as this matches best with the 256 x 256 cubemap output.\n   */\n  fromCubemap(cubemap, renderTarget = null) {\n    return this._fromTexture(cubemap, renderTarget);\n  }\n  /**\n   * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\n   * your texture's network fetch for increased concurrency.\n   */\n  compileCubemapShader() {\n    if (this._cubemapMaterial === null) {\n      this._cubemapMaterial = _getCubemapMaterial();\n      this._compileMaterial(this._cubemapMaterial);\n    }\n  }\n  /**\n   * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\n   * your texture's network fetch for increased concurrency.\n   */\n  compileEquirectangularShader() {\n    if (this._equirectMaterial === null) {\n      this._equirectMaterial = _getEquirectMaterial();\n      this._compileMaterial(this._equirectMaterial);\n    }\n  }\n  /**\n   * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\n   * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\n   * one of them will cause any others to also become unusable.\n   */\n  dispose() {\n    this._dispose();\n    if (this._cubemapMaterial !== null) this._cubemapMaterial.dispose();\n    if (this._equirectMaterial !== null) this._equirectMaterial.dispose();\n  }\n  // private interface\n  _setSize(cubeSize) {\n    this._lodMax = Math.floor(Math.log2(cubeSize));\n    this._cubeSize = Math.pow(2, this._lodMax);\n  }\n  _dispose() {\n    if (this._blurMaterial !== null) this._blurMaterial.dispose();\n    if (this._pingPongRenderTarget !== null) this._pingPongRenderTarget.dispose();\n    for (let i2 = 0; i2 < this._lodPlanes.length; i2++) {\n      this._lodPlanes[i2].dispose();\n    }\n  }\n  _cleanup(outputTarget) {\n    this._renderer.setRenderTarget(_oldTarget, _oldActiveCubeFace, _oldActiveMipmapLevel);\n    outputTarget.scissorTest = false;\n    _setViewport(outputTarget, 0, 0, outputTarget.width, outputTarget.height);\n  }\n  _fromTexture(texture, renderTarget) {\n    if (texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping) {\n      this._setSize(texture.image.length === 0 ? 16 : texture.image[0].width || texture.image[0].image.width);\n    } else {\n      this._setSize(texture.image.width / 4);\n    }\n    _oldTarget = this._renderer.getRenderTarget();\n    _oldActiveCubeFace = this._renderer.getActiveCubeFace();\n    _oldActiveMipmapLevel = this._renderer.getActiveMipmapLevel();\n    const cubeUVRenderTarget = renderTarget || this._allocateTargets();\n    this._textureToCubeUV(texture, cubeUVRenderTarget);\n    this._applyPMREM(cubeUVRenderTarget);\n    this._cleanup(cubeUVRenderTarget);\n    return cubeUVRenderTarget;\n  }\n  _allocateTargets() {\n    const width = 3 * Math.max(this._cubeSize, 16 * 7);\n    const height = 4 * this._cubeSize;\n    const params = {\n      magFilter: LinearFilter,\n      minFilter: LinearFilter,\n      generateMipmaps: false,\n      type: HalfFloatType,\n      format: RGBAFormat,\n      colorSpace: LinearSRGBColorSpace$1,\n      depthBuffer: false\n    };\n    const cubeUVRenderTarget = _createRenderTarget(width, height, params);\n    if (this._pingPongRenderTarget === null || this._pingPongRenderTarget.width !== width || this._pingPongRenderTarget.height !== height) {\n      if (this._pingPongRenderTarget !== null) {\n        this._dispose();\n      }\n      this._pingPongRenderTarget = _createRenderTarget(width, height, params);\n      const { _lodMax } = this;\n      ({ sizeLods: this._sizeLods, lodPlanes: this._lodPlanes, sigmas: this._sigmas } = _createPlanes(_lodMax));\n      this._blurMaterial = _getBlurShader(_lodMax, width, height);\n    }\n    return cubeUVRenderTarget;\n  }\n  _compileMaterial(material) {\n    const tmpMesh = new Mesh(this._lodPlanes[0], material);\n    this._renderer.compile(tmpMesh, _flatCamera);\n  }\n  _sceneToCubeUV(scene, near, far, cubeUVRenderTarget) {\n    const fov2 = 90;\n    const aspect2 = 1;\n    const cubeCamera = new PerspectiveCamera(fov2, aspect2, near, far);\n    const upSign = [1, -1, 1, 1, 1, 1];\n    const forwardSign = [1, 1, 1, -1, -1, -1];\n    const renderer = this._renderer;\n    const originalAutoClear = renderer.autoClear;\n    const toneMapping = renderer.toneMapping;\n    renderer.getClearColor(_clearColor);\n    renderer.toneMapping = NoToneMapping;\n    renderer.autoClear = false;\n    const backgroundMaterial = new MeshBasicMaterial({\n      name: \"PMREM.Background\",\n      side: BackSide,\n      depthWrite: false,\n      depthTest: false\n    });\n    const backgroundBox = new Mesh(new BoxGeometry(), backgroundMaterial);\n    let useSolidColor = false;\n    const background = scene.background;\n    if (background) {\n      if (background.isColor) {\n        backgroundMaterial.color.copy(background);\n        scene.background = null;\n        useSolidColor = true;\n      }\n    } else {\n      backgroundMaterial.color.copy(_clearColor);\n      useSolidColor = true;\n    }\n    for (let i2 = 0; i2 < 6; i2++) {\n      const col = i2 % 3;\n      if (col === 0) {\n        cubeCamera.up.set(0, upSign[i2], 0);\n        cubeCamera.lookAt(forwardSign[i2], 0, 0);\n      } else if (col === 1) {\n        cubeCamera.up.set(0, 0, upSign[i2]);\n        cubeCamera.lookAt(0, forwardSign[i2], 0);\n      } else {\n        cubeCamera.up.set(0, upSign[i2], 0);\n        cubeCamera.lookAt(0, 0, forwardSign[i2]);\n      }\n      const size = this._cubeSize;\n      _setViewport(cubeUVRenderTarget, col * size, i2 > 2 ? size : 0, size, size);\n      renderer.setRenderTarget(cubeUVRenderTarget);\n      if (useSolidColor) {\n        renderer.render(backgroundBox, cubeCamera);\n      }\n      renderer.render(scene, cubeCamera);\n    }\n    backgroundBox.geometry.dispose();\n    backgroundBox.material.dispose();\n    renderer.toneMapping = toneMapping;\n    renderer.autoClear = originalAutoClear;\n    scene.background = background;\n  }\n  _textureToCubeUV(texture, cubeUVRenderTarget) {\n    const renderer = this._renderer;\n    const isCubeTexture2 = texture.mapping === CubeReflectionMapping || texture.mapping === CubeRefractionMapping;\n    if (isCubeTexture2) {\n      if (this._cubemapMaterial === null) {\n        this._cubemapMaterial = _getCubemapMaterial();\n      }\n      this._cubemapMaterial.uniforms.flipEnvMap.value = texture.isRenderTargetTexture === false ? -1 : 1;\n    } else {\n      if (this._equirectMaterial === null) {\n        this._equirectMaterial = _getEquirectMaterial();\n      }\n    }\n    const material = isCubeTexture2 ? this._cubemapMaterial : this._equirectMaterial;\n    const mesh = new Mesh(this._lodPlanes[0], material);\n    const uniforms = material.uniforms;\n    uniforms[\"envMap\"].value = texture;\n    const size = this._cubeSize;\n    _setViewport(cubeUVRenderTarget, 0, 0, 3 * size, 2 * size);\n    renderer.setRenderTarget(cubeUVRenderTarget);\n    renderer.render(mesh, _flatCamera);\n  }\n  _applyPMREM(cubeUVRenderTarget) {\n    const renderer = this._renderer;\n    const autoClear = renderer.autoClear;\n    renderer.autoClear = false;\n    for (let i2 = 1; i2 < this._lodPlanes.length; i2++) {\n      const sigma = Math.sqrt(this._sigmas[i2] * this._sigmas[i2] - this._sigmas[i2 - 1] * this._sigmas[i2 - 1]);\n      const poleAxis = _axisDirections[(i2 - 1) % _axisDirections.length];\n      this._blur(cubeUVRenderTarget, i2 - 1, i2, sigma, poleAxis);\n    }\n    renderer.autoClear = autoClear;\n  }\n  /**\n   * This is a two-pass Gaussian blur for a cubemap. Normally this is done\n   * vertically and horizontally, but this breaks down on a cube. Here we apply\n   * the blur latitudinally (around the poles), and then longitudinally (towards\n   * the poles) to approximate the orthogonally-separable blur. It is least\n   * accurate at the poles, but still does a decent job.\n   */\n  _blur(cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis) {\n    const pingPongRenderTarget = this._pingPongRenderTarget;\n    this._halfBlur(\n      cubeUVRenderTarget,\n      pingPongRenderTarget,\n      lodIn,\n      lodOut,\n      sigma,\n      \"latitudinal\",\n      poleAxis\n    );\n    this._halfBlur(\n      pingPongRenderTarget,\n      cubeUVRenderTarget,\n      lodOut,\n      lodOut,\n      sigma,\n      \"longitudinal\",\n      poleAxis\n    );\n  }\n  _halfBlur(targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis) {\n    const renderer = this._renderer;\n    const blurMaterial = this._blurMaterial;\n    if (direction !== \"latitudinal\" && direction !== \"longitudinal\") {\n      console.error(\n        \"blur direction must be either latitudinal or longitudinal!\"\n      );\n    }\n    const STANDARD_DEVIATIONS = 3;\n    const blurMesh = new Mesh(this._lodPlanes[lodOut], blurMaterial);\n    const blurUniforms = blurMaterial.uniforms;\n    const pixels = this._sizeLods[lodIn] - 1;\n    const radiansPerPixel = isFinite(sigmaRadians) ? Math.PI / (2 * pixels) : 2 * Math.PI / (2 * MAX_SAMPLES - 1);\n    const sigmaPixels = sigmaRadians / radiansPerPixel;\n    const samples = isFinite(sigmaRadians) ? 1 + Math.floor(STANDARD_DEVIATIONS * sigmaPixels) : MAX_SAMPLES;\n    if (samples > MAX_SAMPLES) {\n      console.warn(`sigmaRadians, ${sigmaRadians}, is too large and will clip, as it requested ${samples} samples when the maximum is set to ${MAX_SAMPLES}`);\n    }\n    const weights = [];\n    let sum = 0;\n    for (let i2 = 0; i2 < MAX_SAMPLES; ++i2) {\n      const x3 = i2 / sigmaPixels;\n      const weight = Math.exp(-x3 * x3 / 2);\n      weights.push(weight);\n      if (i2 === 0) {\n        sum += weight;\n      } else if (i2 < samples) {\n        sum += 2 * weight;\n      }\n    }\n    for (let i2 = 0; i2 < weights.length; i2++) {\n      weights[i2] = weights[i2] / sum;\n    }\n    blurUniforms[\"envMap\"].value = targetIn.texture;\n    blurUniforms[\"samples\"].value = samples;\n    blurUniforms[\"weights\"].value = weights;\n    blurUniforms[\"latitudinal\"].value = direction === \"latitudinal\";\n    if (poleAxis) {\n      blurUniforms[\"poleAxis\"].value = poleAxis;\n    }\n    const { _lodMax } = this;\n    blurUniforms[\"dTheta\"].value = radiansPerPixel;\n    blurUniforms[\"mipInt\"].value = _lodMax - lodIn;\n    const outputSize = this._sizeLods[lodOut];\n    const x2 = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n    const y2 = 4 * (this._cubeSize - outputSize);\n    _setViewport(targetOut, x2, y2, 3 * outputSize, 2 * outputSize);\n    renderer.setRenderTarget(targetOut);\n    renderer.render(blurMesh, _flatCamera);\n  }\n}\nfunction _createPlanes(lodMax) {\n  const lodPlanes = [];\n  const sizeLods = [];\n  const sigmas = [];\n  let lod = lodMax;\n  const totalLods = lodMax - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\n  for (let i2 = 0; i2 < totalLods; i2++) {\n    const sizeLod = Math.pow(2, lod);\n    sizeLods.push(sizeLod);\n    let sigma = 1 / sizeLod;\n    if (i2 > lodMax - LOD_MIN) {\n      sigma = EXTRA_LOD_SIGMA[i2 - lodMax + LOD_MIN - 1];\n    } else if (i2 === 0) {\n      sigma = 0;\n    }\n    sigmas.push(sigma);\n    const texelSize = 1 / (sizeLod - 2);\n    const min = -texelSize;\n    const max2 = 1 + texelSize;\n    const uv1 = [min, min, max2, min, max2, max2, min, min, max2, max2, min, max2];\n    const cubeFaces = 6;\n    const vertices = 6;\n    const positionSize = 3;\n    const uvSize = 2;\n    const faceIndexSize = 1;\n    const position = new Float32Array(positionSize * vertices * cubeFaces);\n    const uv = new Float32Array(uvSize * vertices * cubeFaces);\n    const faceIndex = new Float32Array(faceIndexSize * vertices * cubeFaces);\n    for (let face = 0; face < cubeFaces; face++) {\n      const x2 = face % 3 * 2 / 3 - 1;\n      const y2 = face > 2 ? 0 : -1;\n      const coordinates = [\n        x2,\n        y2,\n        0,\n        x2 + 2 / 3,\n        y2,\n        0,\n        x2 + 2 / 3,\n        y2 + 1,\n        0,\n        x2,\n        y2,\n        0,\n        x2 + 2 / 3,\n        y2 + 1,\n        0,\n        x2,\n        y2 + 1,\n        0\n      ];\n      position.set(coordinates, positionSize * vertices * face);\n      uv.set(uv1, uvSize * vertices * face);\n      const fill = [face, face, face, face, face, face];\n      faceIndex.set(fill, faceIndexSize * vertices * face);\n    }\n    const planes = new BufferGeometry();\n    planes.setAttribute(\"position\", new BufferAttribute(position, positionSize));\n    planes.setAttribute(\"uv\", new BufferAttribute(uv, uvSize));\n    planes.setAttribute(\"faceIndex\", new BufferAttribute(faceIndex, faceIndexSize));\n    lodPlanes.push(planes);\n    if (lod > LOD_MIN) {\n      lod--;\n    }\n  }\n  return { lodPlanes, sizeLods, sigmas };\n}\nfunction _createRenderTarget(width, height, params) {\n  const cubeUVRenderTarget = new WebGLRenderTarget(width, height, params);\n  cubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\n  cubeUVRenderTarget.texture.name = \"PMREM.cubeUv\";\n  cubeUVRenderTarget.scissorTest = true;\n  return cubeUVRenderTarget;\n}\nfunction _setViewport(target, x2, y2, width, height) {\n  target.viewport.set(x2, y2, width, height);\n  target.scissor.set(x2, y2, width, height);\n}\nfunction _getBlurShader(lodMax, width, height) {\n  const weights = new Float32Array(MAX_SAMPLES);\n  const poleAxis = new Vector3(0, 1, 0);\n  const shaderMaterial = new ShaderMaterial({\n    name: \"SphericalGaussianBlur\",\n    defines: {\n      \"n\": MAX_SAMPLES,\n      \"CUBEUV_TEXEL_WIDTH\": 1 / width,\n      \"CUBEUV_TEXEL_HEIGHT\": 1 / height,\n      \"CUBEUV_MAX_MIP\": `${lodMax}.0`\n    },\n    uniforms: {\n      \"envMap\": { value: null },\n      \"samples\": { value: 1 },\n      \"weights\": { value: weights },\n      \"latitudinal\": { value: false },\n      \"dTheta\": { value: 0 },\n      \"mipInt\": { value: 0 },\n      \"poleAxis\": { value: poleAxis }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\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`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n  return shaderMaterial;\n}\nfunction _getEquirectMaterial() {\n  return new ShaderMaterial({\n    name: \"EquirectangularToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\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`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCubemapMaterial() {\n  return new ShaderMaterial({\n    name: \"CubemapToCubeUV\",\n    uniforms: {\n      \"envMap\": { value: null },\n      \"flipEnvMap\": { value: -1 }\n    },\n    vertexShader: _getCommonVertexShader(),\n    fragmentShader: (\n      /* glsl */\n      `\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`\n    ),\n    blending: NoBlending,\n    depthTest: false,\n    depthWrite: false\n  });\n}\nfunction _getCommonVertexShader() {\n  return (\n    /* glsl */\n    `\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`\n  );\n}\nfunction WebGLCubeUVMaps(renderer) {\n  let cubeUVmaps = /* @__PURE__ */ new WeakMap();\n  let pmremGenerator = null;\n  function get(texture) {\n    if (texture && texture.isTexture) {\n      const mapping = texture.mapping;\n      const isEquirectMap = mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping;\n      const isCubeMap = mapping === CubeReflectionMapping || mapping === CubeRefractionMapping;\n      if (isEquirectMap || isCubeMap) {\n        if (texture.isRenderTargetTexture && texture.needsPMREMUpdate === true) {\n          texture.needsPMREMUpdate = false;\n          let renderTarget = cubeUVmaps.get(texture);\n          if (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer);\n          renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture, renderTarget) : pmremGenerator.fromCubemap(texture, renderTarget);\n          cubeUVmaps.set(texture, renderTarget);\n          return renderTarget.texture;\n        } else {\n          if (cubeUVmaps.has(texture)) {\n            return cubeUVmaps.get(texture).texture;\n          } else {\n            const image = texture.image;\n            if (isEquirectMap && image && image.height > 0 || isCubeMap && image && isCubeTextureComplete(image)) {\n              if (pmremGenerator === null) pmremGenerator = new PMREMGenerator(renderer);\n              const renderTarget = isEquirectMap ? pmremGenerator.fromEquirectangular(texture) : pmremGenerator.fromCubemap(texture);\n              cubeUVmaps.set(texture, renderTarget);\n              texture.addEventListener(\"dispose\", onTextureDispose);\n              return renderTarget.texture;\n            } else {\n              return null;\n            }\n          }\n        }\n      }\n    }\n    return texture;\n  }\n  function isCubeTextureComplete(image) {\n    let count = 0;\n    const length = 6;\n    for (let i2 = 0; i2 < length; i2++) {\n      if (image[i2] !== void 0) count++;\n    }\n    return count === length;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    const cubemapUV = cubeUVmaps.get(texture);\n    if (cubemapUV !== void 0) {\n      cubeUVmaps.delete(texture);\n      cubemapUV.dispose();\n    }\n  }\n  function dispose2() {\n    cubeUVmaps = /* @__PURE__ */ new WeakMap();\n    if (pmremGenerator !== null) {\n      pmremGenerator.dispose();\n      pmremGenerator = null;\n    }\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nfunction WebGLExtensions(gl) {\n  const extensions2 = {};\n  function getExtension2(name) {\n    if (extensions2[name] !== void 0) {\n      return extensions2[name];\n    }\n    let extension;\n    switch (name) {\n      case \"WEBGL_depth_texture\":\n        extension = gl.getExtension(\"WEBGL_depth_texture\") || gl.getExtension(\"MOZ_WEBGL_depth_texture\") || gl.getExtension(\"WEBKIT_WEBGL_depth_texture\");\n        break;\n      case \"EXT_texture_filter_anisotropic\":\n        extension = gl.getExtension(\"EXT_texture_filter_anisotropic\") || gl.getExtension(\"MOZ_EXT_texture_filter_anisotropic\") || gl.getExtension(\"WEBKIT_EXT_texture_filter_anisotropic\");\n        break;\n      case \"WEBGL_compressed_texture_s3tc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"MOZ_WEBGL_compressed_texture_s3tc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_s3tc\");\n        break;\n      case \"WEBGL_compressed_texture_pvrtc\":\n        extension = gl.getExtension(\"WEBGL_compressed_texture_pvrtc\") || gl.getExtension(\"WEBKIT_WEBGL_compressed_texture_pvrtc\");\n        break;\n      default:\n        extension = gl.getExtension(name);\n    }\n    extensions2[name] = extension;\n    return extension;\n  }\n  return {\n    has: function(name) {\n      return getExtension2(name) !== null;\n    },\n    init: function(capabilities) {\n      if (capabilities.isWebGL2) {\n        getExtension2(\"EXT_color_buffer_float\");\n        getExtension2(\"WEBGL_clip_cull_distance\");\n      } else {\n        getExtension2(\"WEBGL_depth_texture\");\n        getExtension2(\"OES_texture_float\");\n        getExtension2(\"OES_texture_half_float\");\n        getExtension2(\"OES_texture_half_float_linear\");\n        getExtension2(\"OES_standard_derivatives\");\n        getExtension2(\"OES_element_index_uint\");\n        getExtension2(\"OES_vertex_array_object\");\n        getExtension2(\"ANGLE_instanced_arrays\");\n      }\n      getExtension2(\"OES_texture_float_linear\");\n      getExtension2(\"EXT_color_buffer_half_float\");\n      getExtension2(\"WEBGL_multisampled_render_to_texture\");\n    },\n    get: function(name) {\n      const extension = getExtension2(name);\n      if (extension === null) {\n        console.warn(\"THREE.WebGLRenderer: \" + name + \" extension not supported.\");\n      }\n      return extension;\n    }\n  };\n}\nfunction WebGLGeometries(gl, attributes, info, bindingStates) {\n  const geometries = {};\n  const wireframeAttributes = /* @__PURE__ */ new WeakMap();\n  function onGeometryDispose(event) {\n    const geometry = event.target;\n    if (geometry.index !== null) {\n      attributes.remove(geometry.index);\n    }\n    for (const name in geometry.attributes) {\n      attributes.remove(geometry.attributes[name]);\n    }\n    for (const name in geometry.morphAttributes) {\n      const array = geometry.morphAttributes[name];\n      for (let i2 = 0, l2 = array.length; i2 < l2; i2++) {\n        attributes.remove(array[i2]);\n      }\n    }\n    geometry.removeEventListener(\"dispose\", onGeometryDispose);\n    delete geometries[geometry.id];\n    const attribute = wireframeAttributes.get(geometry);\n    if (attribute) {\n      attributes.remove(attribute);\n      wireframeAttributes.delete(geometry);\n    }\n    bindingStates.releaseStatesOfGeometry(geometry);\n    if (geometry.isInstancedBufferGeometry === true) {\n      delete geometry._maxInstanceCount;\n    }\n    info.memory.geometries--;\n  }\n  function get(object, geometry) {\n    if (geometries[geometry.id] === true) return geometry;\n    geometry.addEventListener(\"dispose\", onGeometryDispose);\n    geometries[geometry.id] = true;\n    info.memory.geometries++;\n    return geometry;\n  }\n  function update(geometry) {\n    const geometryAttributes = geometry.attributes;\n    for (const name in geometryAttributes) {\n      attributes.update(geometryAttributes[name], gl.ARRAY_BUFFER);\n    }\n    const morphAttributes = geometry.morphAttributes;\n    for (const name in morphAttributes) {\n      const array = morphAttributes[name];\n      for (let i2 = 0, l2 = array.length; i2 < l2; i2++) {\n        attributes.update(array[i2], gl.ARRAY_BUFFER);\n      }\n    }\n  }\n  function updateWireframeAttribute(geometry) {\n    const indices = [];\n    const geometryIndex = geometry.index;\n    const geometryPosition = geometry.attributes.position;\n    let version2 = 0;\n    if (geometryIndex !== null) {\n      const array = geometryIndex.array;\n      version2 = geometryIndex.version;\n      for (let i2 = 0, l2 = array.length; i2 < l2; i2 += 3) {\n        const a2 = array[i2 + 0];\n        const b2 = array[i2 + 1];\n        const c2 = array[i2 + 2];\n        indices.push(a2, b2, b2, c2, c2, a2);\n      }\n    } else if (geometryPosition !== void 0) {\n      const array = geometryPosition.array;\n      version2 = geometryPosition.version;\n      for (let i2 = 0, l2 = array.length / 3 - 1; i2 < l2; i2 += 3) {\n        const a2 = i2 + 0;\n        const b2 = i2 + 1;\n        const c2 = i2 + 2;\n        indices.push(a2, b2, b2, c2, c2, a2);\n      }\n    } else {\n      return;\n    }\n    const attribute = new (arrayNeedsUint32(indices) ? Uint32BufferAttribute : Uint16BufferAttribute)(indices, 1);\n    attribute.version = version2;\n    const previousAttribute = wireframeAttributes.get(geometry);\n    if (previousAttribute) attributes.remove(previousAttribute);\n    wireframeAttributes.set(geometry, attribute);\n  }\n  function getWireframeAttribute(geometry) {\n    const currentAttribute = wireframeAttributes.get(geometry);\n    if (currentAttribute) {\n      const geometryIndex = geometry.index;\n      if (geometryIndex !== null) {\n        if (currentAttribute.version < geometryIndex.version) {\n          updateWireframeAttribute(geometry);\n        }\n      }\n    } else {\n      updateWireframeAttribute(geometry);\n    }\n    return wireframeAttributes.get(geometry);\n  }\n  return {\n    get,\n    update,\n    getWireframeAttribute\n  };\n}\nfunction WebGLIndexedBufferRenderer(gl, extensions2, info, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  let mode;\n  function setMode(value) {\n    mode = value;\n  }\n  let type, bytesPerElement;\n  function setIndex(value) {\n    type = value.type;\n    bytesPerElement = value.bytesPerElement;\n  }\n  function render(start, count) {\n    gl.drawElements(mode, count, type, start * bytesPerElement);\n    info.update(count, mode, 1);\n  }\n  function renderInstances(start, count, primcount) {\n    if (primcount === 0) return;\n    let extension, methodName;\n    if (isWebGL2) {\n      extension = gl;\n      methodName = \"drawElementsInstanced\";\n    } else {\n      extension = extensions2.get(\"ANGLE_instanced_arrays\");\n      methodName = \"drawElementsInstancedANGLE\";\n      if (extension === null) {\n        console.error(\"THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.\");\n        return;\n      }\n    }\n    extension[methodName](mode, count, type, start * bytesPerElement, primcount);\n    info.update(count, mode, primcount);\n  }\n  function renderMultiDraw(starts, counts, drawCount) {\n    if (drawCount === 0) return;\n    const extension = extensions2.get(\"WEBGL_multi_draw\");\n    if (extension === null) {\n      for (let i2 = 0; i2 < drawCount; i2++) {\n        this.render(starts[i2] / bytesPerElement, counts[i2]);\n      }\n    } else {\n      extension.multiDrawElementsWEBGL(mode, counts, 0, type, starts, 0, drawCount);\n      let elementCount = 0;\n      for (let i2 = 0; i2 < drawCount; i2++) {\n        elementCount += counts[i2];\n      }\n      info.update(elementCount, mode, 1);\n    }\n  }\n  this.setMode = setMode;\n  this.setIndex = setIndex;\n  this.render = render;\n  this.renderInstances = renderInstances;\n  this.renderMultiDraw = renderMultiDraw;\n}\nfunction WebGLInfo(gl) {\n  const memory = {\n    geometries: 0,\n    textures: 0\n  };\n  const render = {\n    frame: 0,\n    calls: 0,\n    triangles: 0,\n    points: 0,\n    lines: 0\n  };\n  function update(count, mode, instanceCount) {\n    render.calls++;\n    switch (mode) {\n      case gl.TRIANGLES:\n        render.triangles += instanceCount * (count / 3);\n        break;\n      case gl.LINES:\n        render.lines += instanceCount * (count / 2);\n        break;\n      case gl.LINE_STRIP:\n        render.lines += instanceCount * (count - 1);\n        break;\n      case gl.LINE_LOOP:\n        render.lines += instanceCount * count;\n        break;\n      case gl.POINTS:\n        render.points += instanceCount * count;\n        break;\n      default:\n        console.error(\"THREE.WebGLInfo: Unknown draw mode:\", mode);\n        break;\n    }\n  }\n  function reset() {\n    render.calls = 0;\n    render.triangles = 0;\n    render.points = 0;\n    render.lines = 0;\n  }\n  return {\n    memory,\n    render,\n    programs: null,\n    autoReset: true,\n    reset,\n    update\n  };\n}\nfunction numericalSort(a2, b2) {\n  return a2[0] - b2[0];\n}\nfunction absNumericalSort(a2, b2) {\n  return Math.abs(b2[1]) - Math.abs(a2[1]);\n}\nfunction WebGLMorphtargets(gl, capabilities, textures) {\n  const influencesList = {};\n  const morphInfluences = new Float32Array(8);\n  const morphTextures = /* @__PURE__ */ new WeakMap();\n  const morph = new Vector4();\n  const workInfluences = [];\n  for (let i2 = 0; i2 < 8; i2++) {\n    workInfluences[i2] = [i2, 0];\n  }\n  function update(object, geometry, program) {\n    const objectInfluences = object.morphTargetInfluences;\n    if (capabilities.isWebGL2 === true) {\n      const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n      const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n      let entry = morphTextures.get(geometry);\n      if (entry === void 0 || entry.count !== morphTargetsCount) {\n        let disposeTexture = function() {\n          texture.dispose();\n          morphTextures.delete(geometry);\n          geometry.removeEventListener(\"dispose\", disposeTexture);\n        };\n        if (entry !== void 0) entry.texture.dispose();\n        const hasMorphPosition = geometry.morphAttributes.position !== void 0;\n        const hasMorphNormals = geometry.morphAttributes.normal !== void 0;\n        const hasMorphColors = geometry.morphAttributes.color !== void 0;\n        const morphTargets = geometry.morphAttributes.position || [];\n        const morphNormals = geometry.morphAttributes.normal || [];\n        const morphColors = geometry.morphAttributes.color || [];\n        let vertexDataCount = 0;\n        if (hasMorphPosition === true) vertexDataCount = 1;\n        if (hasMorphNormals === true) vertexDataCount = 2;\n        if (hasMorphColors === true) vertexDataCount = 3;\n        let width = geometry.attributes.position.count * vertexDataCount;\n        let height = 1;\n        if (width > capabilities.maxTextureSize) {\n          height = Math.ceil(width / capabilities.maxTextureSize);\n          width = capabilities.maxTextureSize;\n        }\n        const buffer = new Float32Array(width * height * 4 * morphTargetsCount);\n        const texture = new DataArrayTexture(buffer, width, height, morphTargetsCount);\n        texture.type = FloatType;\n        texture.needsUpdate = true;\n        const vertexDataStride = vertexDataCount * 4;\n        for (let i2 = 0; i2 < morphTargetsCount; i2++) {\n          const morphTarget = morphTargets[i2];\n          const morphNormal = morphNormals[i2];\n          const morphColor = morphColors[i2];\n          const offset = width * height * 4 * i2;\n          for (let j2 = 0; j2 < morphTarget.count; j2++) {\n            const stride = j2 * vertexDataStride;\n            if (hasMorphPosition === true) {\n              morph.fromBufferAttribute(morphTarget, j2);\n              buffer[offset + stride + 0] = morph.x;\n              buffer[offset + stride + 1] = morph.y;\n              buffer[offset + stride + 2] = morph.z;\n              buffer[offset + stride + 3] = 0;\n            }\n            if (hasMorphNormals === true) {\n              morph.fromBufferAttribute(morphNormal, j2);\n              buffer[offset + stride + 4] = morph.x;\n              buffer[offset + stride + 5] = morph.y;\n              buffer[offset + stride + 6] = morph.z;\n              buffer[offset + stride + 7] = 0;\n            }\n            if (hasMorphColors === true) {\n              morph.fromBufferAttribute(morphColor, j2);\n              buffer[offset + stride + 8] = morph.x;\n              buffer[offset + stride + 9] = morph.y;\n              buffer[offset + stride + 10] = morph.z;\n              buffer[offset + stride + 11] = morphColor.itemSize === 4 ? morph.w : 1;\n            }\n          }\n        }\n        entry = {\n          count: morphTargetsCount,\n          texture,\n          size: new Vector2(width, height)\n        };\n        morphTextures.set(geometry, entry);\n        geometry.addEventListener(\"dispose\", disposeTexture);\n      }\n      let morphInfluencesSum = 0;\n      for (let i2 = 0; i2 < objectInfluences.length; i2++) {\n        morphInfluencesSum += objectInfluences[i2];\n      }\n      const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n      program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n      program.getUniforms().setValue(gl, \"morphTargetInfluences\", objectInfluences);\n      program.getUniforms().setValue(gl, \"morphTargetsTexture\", entry.texture, textures);\n      program.getUniforms().setValue(gl, \"morphTargetsTextureSize\", entry.size);\n    } else {\n      const length = objectInfluences === void 0 ? 0 : objectInfluences.length;\n      let influences = influencesList[geometry.id];\n      if (influences === void 0 || influences.length !== length) {\n        influences = [];\n        for (let i2 = 0; i2 < length; i2++) {\n          influences[i2] = [i2, 0];\n        }\n        influencesList[geometry.id] = influences;\n      }\n      for (let i2 = 0; i2 < length; i2++) {\n        const influence = influences[i2];\n        influence[0] = i2;\n        influence[1] = objectInfluences[i2];\n      }\n      influences.sort(absNumericalSort);\n      for (let i2 = 0; i2 < 8; i2++) {\n        if (i2 < length && influences[i2][1]) {\n          workInfluences[i2][0] = influences[i2][0];\n          workInfluences[i2][1] = influences[i2][1];\n        } else {\n          workInfluences[i2][0] = Number.MAX_SAFE_INTEGER;\n          workInfluences[i2][1] = 0;\n        }\n      }\n      workInfluences.sort(numericalSort);\n      const morphTargets = geometry.morphAttributes.position;\n      const morphNormals = geometry.morphAttributes.normal;\n      let morphInfluencesSum = 0;\n      for (let i2 = 0; i2 < 8; i2++) {\n        const influence = workInfluences[i2];\n        const index = influence[0];\n        const value = influence[1];\n        if (index !== Number.MAX_SAFE_INTEGER && value) {\n          if (morphTargets && geometry.getAttribute(\"morphTarget\" + i2) !== morphTargets[index]) {\n            geometry.setAttribute(\"morphTarget\" + i2, morphTargets[index]);\n          }\n          if (morphNormals && geometry.getAttribute(\"morphNormal\" + i2) !== morphNormals[index]) {\n            geometry.setAttribute(\"morphNormal\" + i2, morphNormals[index]);\n          }\n          morphInfluences[i2] = value;\n          morphInfluencesSum += value;\n        } else {\n          if (morphTargets && geometry.hasAttribute(\"morphTarget\" + i2) === true) {\n            geometry.deleteAttribute(\"morphTarget\" + i2);\n          }\n          if (morphNormals && geometry.hasAttribute(\"morphNormal\" + i2) === true) {\n            geometry.deleteAttribute(\"morphNormal\" + i2);\n          }\n          morphInfluences[i2] = 0;\n        }\n      }\n      const morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\n      program.getUniforms().setValue(gl, \"morphTargetBaseInfluence\", morphBaseInfluence);\n      program.getUniforms().setValue(gl, \"morphTargetInfluences\", morphInfluences);\n    }\n  }\n  return {\n    update\n  };\n}\nfunction WebGLObjects(gl, geometries, attributes, info) {\n  let updateMap = /* @__PURE__ */ new WeakMap();\n  function update(object) {\n    const frame = info.render.frame;\n    const geometry = object.geometry;\n    const buffergeometry = geometries.get(object, geometry);\n    if (updateMap.get(buffergeometry) !== frame) {\n      geometries.update(buffergeometry);\n      updateMap.set(buffergeometry, frame);\n    }\n    if (object.isInstancedMesh) {\n      if (object.hasEventListener(\"dispose\", onInstancedMeshDispose) === false) {\n        object.addEventListener(\"dispose\", onInstancedMeshDispose);\n      }\n      if (updateMap.get(object) !== frame) {\n        attributes.update(object.instanceMatrix, gl.ARRAY_BUFFER);\n        if (object.instanceColor !== null) {\n          attributes.update(object.instanceColor, gl.ARRAY_BUFFER);\n        }\n        updateMap.set(object, frame);\n      }\n    }\n    if (object.isSkinnedMesh) {\n      const skeleton = object.skeleton;\n      if (updateMap.get(skeleton) !== frame) {\n        skeleton.update();\n        updateMap.set(skeleton, frame);\n      }\n    }\n    return buffergeometry;\n  }\n  function dispose2() {\n    updateMap = /* @__PURE__ */ new WeakMap();\n  }\n  function onInstancedMeshDispose(event) {\n    const instancedMesh = event.target;\n    instancedMesh.removeEventListener(\"dispose\", onInstancedMeshDispose);\n    attributes.remove(instancedMesh.instanceMatrix);\n    if (instancedMesh.instanceColor !== null) attributes.remove(instancedMesh.instanceColor);\n  }\n  return {\n    update,\n    dispose: dispose2\n  };\n}\nclass DepthTexture extends Texture {\n  constructor(width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format) {\n    format = format !== void 0 ? format : DepthFormat;\n    if (format !== DepthFormat && format !== DepthStencilFormat) {\n      throw new Error(\"DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat\");\n    }\n    if (type === void 0 && format === DepthFormat) type = UnsignedIntType;\n    if (type === void 0 && format === DepthStencilFormat) type = UnsignedInt248Type;\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n    this.isDepthTexture = true;\n    this.image = { width, height };\n    this.magFilter = magFilter !== void 0 ? magFilter : NearestFilter;\n    this.minFilter = minFilter !== void 0 ? minFilter : NearestFilter;\n    this.flipY = false;\n    this.generateMipmaps = false;\n    this.compareFunction = null;\n  }\n  copy(source) {\n    super.copy(source);\n    this.compareFunction = source.compareFunction;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    if (this.compareFunction !== null) data.compareFunction = this.compareFunction;\n    return data;\n  }\n}\nconst emptyTexture = /* @__PURE__ */ new Texture();\nconst emptyShadowTexture = /* @__PURE__ */ new DepthTexture(1, 1);\nemptyShadowTexture.compareFunction = LessEqualCompare;\nconst emptyArrayTexture = /* @__PURE__ */ new DataArrayTexture();\nconst empty3dTexture = /* @__PURE__ */ new Data3DTexture();\nconst emptyCubeTexture = /* @__PURE__ */ new CubeTexture();\nconst arrayCacheF32 = [];\nconst arrayCacheI32 = [];\nconst mat4array = new Float32Array(16);\nconst mat3array = new Float32Array(9);\nconst mat2array = new Float32Array(4);\nfunction flatten(array, nBlocks, blockSize) {\n  const firstElem = array[0];\n  if (firstElem <= 0 || firstElem > 0) return array;\n  const n2 = nBlocks * blockSize;\n  let r2 = arrayCacheF32[n2];\n  if (r2 === void 0) {\n    r2 = new Float32Array(n2);\n    arrayCacheF32[n2] = r2;\n  }\n  if (nBlocks !== 0) {\n    firstElem.toArray(r2, 0);\n    for (let i2 = 1, offset = 0; i2 !== nBlocks; ++i2) {\n      offset += blockSize;\n      array[i2].toArray(r2, offset);\n    }\n  }\n  return r2;\n}\nfunction arraysEqual(a2, b2) {\n  if (a2.length !== b2.length) return false;\n  for (let i2 = 0, l2 = a2.length; i2 < l2; i2++) {\n    if (a2[i2] !== b2[i2]) return false;\n  }\n  return true;\n}\nfunction copyArray(a2, b2) {\n  for (let i2 = 0, l2 = b2.length; i2 < l2; i2++) {\n    a2[i2] = b2[i2];\n  }\n}\nfunction allocTexUnits(textures, n2) {\n  let r2 = arrayCacheI32[n2];\n  if (r2 === void 0) {\n    r2 = new Int32Array(n2);\n    arrayCacheI32[n2] = r2;\n  }\n  for (let i2 = 0; i2 !== n2; ++i2) {\n    r2[i2] = textures.allocateTextureUnit();\n  }\n  return r2;\n}\nfunction setValueV1f(gl, v2) {\n  const cache = this.cache;\n  if (cache[0] === v2) return;\n  gl.uniform1f(this.addr, v2);\n  cache[0] = v2;\n}\nfunction setValueV2f(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y) {\n      gl.uniform2f(this.addr, v2.x, v2.y);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform2fv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV3f(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z) {\n      gl.uniform3f(this.addr, v2.x, v2.y, v2.z);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n    }\n  } else if (v2.r !== void 0) {\n    if (cache[0] !== v2.r || cache[1] !== v2.g || cache[2] !== v2.b) {\n      gl.uniform3f(this.addr, v2.r, v2.g, v2.b);\n      cache[0] = v2.r;\n      cache[1] = v2.g;\n      cache[2] = v2.b;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform3fv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV4f(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z || cache[3] !== v2.w) {\n      gl.uniform4f(this.addr, v2.x, v2.y, v2.z, v2.w);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n      cache[3] = v2.w;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform4fv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueM2(gl, v2) {\n  const cache = this.cache;\n  const elements = v2.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniformMatrix2fv(this.addr, false, v2);\n    copyArray(cache, v2);\n  } else {\n    if (arraysEqual(cache, elements)) return;\n    mat2array.set(elements);\n    gl.uniformMatrix2fv(this.addr, false, mat2array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueM3(gl, v2) {\n  const cache = this.cache;\n  const elements = v2.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniformMatrix3fv(this.addr, false, v2);\n    copyArray(cache, v2);\n  } else {\n    if (arraysEqual(cache, elements)) return;\n    mat3array.set(elements);\n    gl.uniformMatrix3fv(this.addr, false, mat3array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueM4(gl, v2) {\n  const cache = this.cache;\n  const elements = v2.elements;\n  if (elements === void 0) {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniformMatrix4fv(this.addr, false, v2);\n    copyArray(cache, v2);\n  } else {\n    if (arraysEqual(cache, elements)) return;\n    mat4array.set(elements);\n    gl.uniformMatrix4fv(this.addr, false, mat4array);\n    copyArray(cache, elements);\n  }\n}\nfunction setValueV1i(gl, v2) {\n  const cache = this.cache;\n  if (cache[0] === v2) return;\n  gl.uniform1i(this.addr, v2);\n  cache[0] = v2;\n}\nfunction setValueV2i(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y) {\n      gl.uniform2i(this.addr, v2.x, v2.y);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform2iv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV3i(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z) {\n      gl.uniform3i(this.addr, v2.x, v2.y, v2.z);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform3iv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV4i(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z || cache[3] !== v2.w) {\n      gl.uniform4i(this.addr, v2.x, v2.y, v2.z, v2.w);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n      cache[3] = v2.w;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform4iv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV1ui(gl, v2) {\n  const cache = this.cache;\n  if (cache[0] === v2) return;\n  gl.uniform1ui(this.addr, v2);\n  cache[0] = v2;\n}\nfunction setValueV2ui(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y) {\n      gl.uniform2ui(this.addr, v2.x, v2.y);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform2uiv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV3ui(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z) {\n      gl.uniform3ui(this.addr, v2.x, v2.y, v2.z);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform3uiv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueV4ui(gl, v2) {\n  const cache = this.cache;\n  if (v2.x !== void 0) {\n    if (cache[0] !== v2.x || cache[1] !== v2.y || cache[2] !== v2.z || cache[3] !== v2.w) {\n      gl.uniform4ui(this.addr, v2.x, v2.y, v2.z, v2.w);\n      cache[0] = v2.x;\n      cache[1] = v2.y;\n      cache[2] = v2.z;\n      cache[3] = v2.w;\n    }\n  } else {\n    if (arraysEqual(cache, v2)) return;\n    gl.uniform4uiv(this.addr, v2);\n    copyArray(cache, v2);\n  }\n}\nfunction setValueT1(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  const emptyTexture2D = this.type === gl.SAMPLER_2D_SHADOW ? emptyShadowTexture : emptyTexture;\n  textures.setTexture2D(v2 || emptyTexture2D, unit);\n}\nfunction setValueT3D1(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTexture3D(v2 || empty3dTexture, unit);\n}\nfunction setValueT6(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTextureCube(v2 || emptyCubeTexture, unit);\n}\nfunction setValueT2DArray1(gl, v2, textures) {\n  const cache = this.cache;\n  const unit = textures.allocateTextureUnit();\n  if (cache[0] !== unit) {\n    gl.uniform1i(this.addr, unit);\n    cache[0] = unit;\n  }\n  textures.setTexture2DArray(v2 || emptyArrayTexture, unit);\n}\nfunction getSingularSetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1f;\n    // FLOAT\n    case 35664:\n      return setValueV2f;\n    // _VEC2\n    case 35665:\n      return setValueV3f;\n    // _VEC3\n    case 35666:\n      return setValueV4f;\n    // _VEC4\n    case 35674:\n      return setValueM2;\n    // _MAT2\n    case 35675:\n      return setValueM3;\n    // _MAT3\n    case 35676:\n      return setValueM4;\n    // _MAT4\n    case 5124:\n    case 35670:\n      return setValueV1i;\n    // INT, BOOL\n    case 35667:\n    case 35671:\n      return setValueV2i;\n    // _VEC2\n    case 35668:\n    case 35672:\n      return setValueV3i;\n    // _VEC3\n    case 35669:\n    case 35673:\n      return setValueV4i;\n    // _VEC4\n    case 5125:\n      return setValueV1ui;\n    // UINT\n    case 36294:\n      return setValueV2ui;\n    // _VEC2\n    case 36295:\n      return setValueV3ui;\n    // _VEC3\n    case 36296:\n      return setValueV4ui;\n    // _VEC4\n    case 35678:\n    // SAMPLER_2D\n    case 36198:\n    // SAMPLER_EXTERNAL_OES\n    case 36298:\n    // INT_SAMPLER_2D\n    case 36306:\n    // UNSIGNED_INT_SAMPLER_2D\n    case 35682:\n      return setValueT1;\n    case 35679:\n    // SAMPLER_3D\n    case 36299:\n    // INT_SAMPLER_3D\n    case 36307:\n      return setValueT3D1;\n    case 35680:\n    // SAMPLER_CUBE\n    case 36300:\n    // INT_SAMPLER_CUBE\n    case 36308:\n    // UNSIGNED_INT_SAMPLER_CUBE\n    case 36293:\n      return setValueT6;\n    case 36289:\n    // SAMPLER_2D_ARRAY\n    case 36303:\n    // INT_SAMPLER_2D_ARRAY\n    case 36311:\n    // UNSIGNED_INT_SAMPLER_2D_ARRAY\n    case 36292:\n      return setValueT2DArray1;\n  }\n}\nfunction setValueV1fArray(gl, v2) {\n  gl.uniform1fv(this.addr, v2);\n}\nfunction setValueV2fArray(gl, v2) {\n  const data = flatten(v2, this.size, 2);\n  gl.uniform2fv(this.addr, data);\n}\nfunction setValueV3fArray(gl, v2) {\n  const data = flatten(v2, this.size, 3);\n  gl.uniform3fv(this.addr, data);\n}\nfunction setValueV4fArray(gl, v2) {\n  const data = flatten(v2, this.size, 4);\n  gl.uniform4fv(this.addr, data);\n}\nfunction setValueM2Array(gl, v2) {\n  const data = flatten(v2, this.size, 4);\n  gl.uniformMatrix2fv(this.addr, false, data);\n}\nfunction setValueM3Array(gl, v2) {\n  const data = flatten(v2, this.size, 9);\n  gl.uniformMatrix3fv(this.addr, false, data);\n}\nfunction setValueM4Array(gl, v2) {\n  const data = flatten(v2, this.size, 16);\n  gl.uniformMatrix4fv(this.addr, false, data);\n}\nfunction setValueV1iArray(gl, v2) {\n  gl.uniform1iv(this.addr, v2);\n}\nfunction setValueV2iArray(gl, v2) {\n  gl.uniform2iv(this.addr, v2);\n}\nfunction setValueV3iArray(gl, v2) {\n  gl.uniform3iv(this.addr, v2);\n}\nfunction setValueV4iArray(gl, v2) {\n  gl.uniform4iv(this.addr, v2);\n}\nfunction setValueV1uiArray(gl, v2) {\n  gl.uniform1uiv(this.addr, v2);\n}\nfunction setValueV2uiArray(gl, v2) {\n  gl.uniform2uiv(this.addr, v2);\n}\nfunction setValueV3uiArray(gl, v2) {\n  gl.uniform3uiv(this.addr, v2);\n}\nfunction setValueV4uiArray(gl, v2) {\n  gl.uniform4uiv(this.addr, v2);\n}\nfunction setValueT1Array(gl, v2, textures) {\n  const cache = this.cache;\n  const n2 = v2.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n2; ++i2) {\n    textures.setTexture2D(v2[i2] || emptyTexture, units[i2]);\n  }\n}\nfunction setValueT3DArray(gl, v2, textures) {\n  const cache = this.cache;\n  const n2 = v2.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n2; ++i2) {\n    textures.setTexture3D(v2[i2] || empty3dTexture, units[i2]);\n  }\n}\nfunction setValueT6Array(gl, v2, textures) {\n  const cache = this.cache;\n  const n2 = v2.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n2; ++i2) {\n    textures.setTextureCube(v2[i2] || emptyCubeTexture, units[i2]);\n  }\n}\nfunction setValueT2DArrayArray(gl, v2, textures) {\n  const cache = this.cache;\n  const n2 = v2.length;\n  const units = allocTexUnits(textures, n2);\n  if (!arraysEqual(cache, units)) {\n    gl.uniform1iv(this.addr, units);\n    copyArray(cache, units);\n  }\n  for (let i2 = 0; i2 !== n2; ++i2) {\n    textures.setTexture2DArray(v2[i2] || emptyArrayTexture, units[i2]);\n  }\n}\nfunction getPureArraySetter(type) {\n  switch (type) {\n    case 5126:\n      return setValueV1fArray;\n    // FLOAT\n    case 35664:\n      return setValueV2fArray;\n    // _VEC2\n    case 35665:\n      return setValueV3fArray;\n    // _VEC3\n    case 35666:\n      return setValueV4fArray;\n    // _VEC4\n    case 35674:\n      return setValueM2Array;\n    // _MAT2\n    case 35675:\n      return setValueM3Array;\n    // _MAT3\n    case 35676:\n      return setValueM4Array;\n    // _MAT4\n    case 5124:\n    case 35670:\n      return setValueV1iArray;\n    // INT, BOOL\n    case 35667:\n    case 35671:\n      return setValueV2iArray;\n    // _VEC2\n    case 35668:\n    case 35672:\n      return setValueV3iArray;\n    // _VEC3\n    case 35669:\n    case 35673:\n      return setValueV4iArray;\n    // _VEC4\n    case 5125:\n      return setValueV1uiArray;\n    // UINT\n    case 36294:\n      return setValueV2uiArray;\n    // _VEC2\n    case 36295:\n      return setValueV3uiArray;\n    // _VEC3\n    case 36296:\n      return setValueV4uiArray;\n    // _VEC4\n    case 35678:\n    // SAMPLER_2D\n    case 36198:\n    // SAMPLER_EXTERNAL_OES\n    case 36298:\n    // INT_SAMPLER_2D\n    case 36306:\n    // UNSIGNED_INT_SAMPLER_2D\n    case 35682:\n      return setValueT1Array;\n    case 35679:\n    // SAMPLER_3D\n    case 36299:\n    // INT_SAMPLER_3D\n    case 36307:\n      return setValueT3DArray;\n    case 35680:\n    // SAMPLER_CUBE\n    case 36300:\n    // INT_SAMPLER_CUBE\n    case 36308:\n    // UNSIGNED_INT_SAMPLER_CUBE\n    case 36293:\n      return setValueT6Array;\n    case 36289:\n    // SAMPLER_2D_ARRAY\n    case 36303:\n    // INT_SAMPLER_2D_ARRAY\n    case 36311:\n    // UNSIGNED_INT_SAMPLER_2D_ARRAY\n    case 36292:\n      return setValueT2DArrayArray;\n  }\n}\nclass SingleUniform {\n  constructor(id, activeInfo, addr) {\n    this.id = id;\n    this.addr = addr;\n    this.cache = [];\n    this.type = activeInfo.type;\n    this.setValue = getSingularSetter(activeInfo.type);\n  }\n}\nclass PureArrayUniform {\n  constructor(id, activeInfo, addr) {\n    this.id = id;\n    this.addr = addr;\n    this.cache = [];\n    this.type = activeInfo.type;\n    this.size = activeInfo.size;\n    this.setValue = getPureArraySetter(activeInfo.type);\n  }\n}\nclass StructuredUniform {\n  constructor(id) {\n    this.id = id;\n    this.seq = [];\n    this.map = {};\n  }\n  setValue(gl, value, textures) {\n    const seq = this.seq;\n    for (let i2 = 0, n2 = seq.length; i2 !== n2; ++i2) {\n      const u2 = seq[i2];\n      u2.setValue(gl, value[u2.id], textures);\n    }\n  }\n}\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\nfunction addUniform(container, uniformObject) {\n  container.seq.push(uniformObject);\n  container.map[uniformObject.id] = uniformObject;\n}\nfunction parseUniform(activeInfo, addr, container) {\n  const path = activeInfo.name, pathLength = path.length;\n  RePathPart.lastIndex = 0;\n  while (true) {\n    const match = RePathPart.exec(path), matchEnd = RePathPart.lastIndex;\n    let id = match[1];\n    const idIsIndex = match[2] === \"]\", subscript = match[3];\n    if (idIsIndex) id = id | 0;\n    if (subscript === void 0 || subscript === \"[\" && matchEnd + 2 === pathLength) {\n      addUniform(container, subscript === void 0 ? new SingleUniform(id, activeInfo, addr) : new PureArrayUniform(id, activeInfo, addr));\n      break;\n    } else {\n      const map = container.map;\n      let next = map[id];\n      if (next === void 0) {\n        next = new StructuredUniform(id);\n        addUniform(container, next);\n      }\n      container = next;\n    }\n  }\n}\nclass WebGLUniforms {\n  constructor(gl, program) {\n    this.seq = [];\n    this.map = {};\n    const n2 = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\n    for (let i2 = 0; i2 < n2; ++i2) {\n      const info = gl.getActiveUniform(program, i2), addr = gl.getUniformLocation(program, info.name);\n      parseUniform(info, addr, this);\n    }\n  }\n  setValue(gl, name, value, textures) {\n    const u2 = this.map[name];\n    if (u2 !== void 0) u2.setValue(gl, value, textures);\n  }\n  setOptional(gl, object, name) {\n    const v2 = object[name];\n    if (v2 !== void 0) this.setValue(gl, name, v2);\n  }\n  static upload(gl, seq, values, textures) {\n    for (let i2 = 0, n2 = seq.length; i2 !== n2; ++i2) {\n      const u2 = seq[i2], v2 = values[u2.id];\n      if (v2.needsUpdate !== false) {\n        u2.setValue(gl, v2.value, textures);\n      }\n    }\n  }\n  static seqWithValue(seq, values) {\n    const r2 = [];\n    for (let i2 = 0, n2 = seq.length; i2 !== n2; ++i2) {\n      const u2 = seq[i2];\n      if (u2.id in values) r2.push(u2);\n    }\n    return r2;\n  }\n}\nfunction WebGLShader(gl, type, string) {\n  const shader = gl.createShader(type);\n  gl.shaderSource(shader, string);\n  gl.compileShader(shader);\n  return shader;\n}\nconst COMPLETION_STATUS_KHR = 37297;\nlet programIdCount = 0;\nfunction handleSource(string, errorLine) {\n  const lines = string.split(\"\\n\");\n  const lines2 = [];\n  const from = Math.max(errorLine - 6, 0);\n  const to = Math.min(errorLine + 6, lines.length);\n  for (let i2 = from; i2 < to; i2++) {\n    const line = i2 + 1;\n    lines2.push(`${line === errorLine ? \">\" : \" \"} ${line}: ${lines[i2]}`);\n  }\n  return lines2.join(\"\\n\");\n}\nfunction getEncodingComponents(colorSpace) {\n  const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace);\n  const encodingPrimaries = ColorManagement.getPrimaries(colorSpace);\n  let gamutMapping;\n  if (workingPrimaries === encodingPrimaries) {\n    gamutMapping = \"\";\n  } else if (workingPrimaries === P3Primaries && encodingPrimaries === Rec709Primaries) {\n    gamutMapping = \"LinearDisplayP3ToLinearSRGB\";\n  } else if (workingPrimaries === Rec709Primaries && encodingPrimaries === P3Primaries) {\n    gamutMapping = \"LinearSRGBToLinearDisplayP3\";\n  }\n  switch (colorSpace) {\n    case LinearSRGBColorSpace$1:\n    case LinearDisplayP3ColorSpace:\n      return [gamutMapping, \"LinearTransferOETF\"];\n    case SRGBColorSpace$1:\n    case DisplayP3ColorSpace:\n      return [gamutMapping, \"sRGBTransferOETF\"];\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported color space:\", colorSpace);\n      return [gamutMapping, \"LinearTransferOETF\"];\n  }\n}\nfunction getShaderErrors(gl, shader, type) {\n  const status = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n  const errors = gl.getShaderInfoLog(shader).trim();\n  if (status && errors === \"\") return \"\";\n  const errorMatches = /ERROR: 0:(\\d+)/.exec(errors);\n  if (errorMatches) {\n    const errorLine = parseInt(errorMatches[1]);\n    return type.toUpperCase() + \"\\n\\n\" + errors + \"\\n\\n\" + handleSource(gl.getShaderSource(shader), errorLine);\n  } else {\n    return errors;\n  }\n}\nfunction getTexelEncodingFunction(functionName, colorSpace) {\n  const components = getEncodingComponents(colorSpace);\n  return `vec4 ${functionName}( vec4 value ) { return ${components[0]}( ${components[1]}( value ) ); }`;\n}\nfunction getToneMappingFunction(functionName, toneMapping) {\n  let toneMappingName;\n  switch (toneMapping) {\n    case LinearToneMapping:\n      toneMappingName = \"Linear\";\n      break;\n    case ReinhardToneMapping:\n      toneMappingName = \"Reinhard\";\n      break;\n    case CineonToneMapping:\n      toneMappingName = \"OptimizedCineon\";\n      break;\n    case ACESFilmicToneMapping:\n      toneMappingName = \"ACESFilmic\";\n      break;\n    case AgXToneMapping:\n      toneMappingName = \"AgX\";\n      break;\n    case CustomToneMapping:\n      toneMappingName = \"Custom\";\n      break;\n    default:\n      console.warn(\"THREE.WebGLProgram: Unsupported toneMapping:\", toneMapping);\n      toneMappingName = \"Linear\";\n  }\n  return \"vec3 \" + functionName + \"( vec3 color ) { return \" + toneMappingName + \"ToneMapping( color ); }\";\n}\nfunction generateExtensions(parameters) {\n  const chunks = [\n    parameters.extensionDerivatives || !!parameters.envMapCubeUVHeight || parameters.bumpMap || parameters.normalMapTangentSpace || parameters.clearcoatNormalMap || parameters.flatShading || parameters.alphaToCoverage || parameters.shaderID === \"physical\" ? \"#extension GL_OES_standard_derivatives : enable\" : \"\",\n    (parameters.extensionFragDepth || parameters.logarithmicDepthBuffer) && parameters.rendererExtensionFragDepth ? \"#extension GL_EXT_frag_depth : enable\" : \"\",\n    parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ? \"#extension GL_EXT_draw_buffers : require\" : \"\",\n    (parameters.extensionShaderTextureLOD || parameters.envMap || parameters.transmission) && parameters.rendererExtensionShaderTextureLod ? \"#extension GL_EXT_shader_texture_lod : enable\" : \"\"\n  ];\n  return chunks.filter(filterEmptyLine).join(\"\\n\");\n}\nfunction generateVertexExtensions(parameters) {\n  const chunks = [\n    parameters.extensionClipCullDistance ? \"#extension GL_ANGLE_clip_cull_distance : require\" : \"\",\n    parameters.extensionMultiDraw ? \"#extension GL_ANGLE_multi_draw : require\" : \"\"\n  ];\n  return chunks.filter(filterEmptyLine).join(\"\\n\");\n}\nfunction generateDefines(defines) {\n  const chunks = [];\n  for (const name in defines) {\n    const value = defines[name];\n    if (value === false) continue;\n    chunks.push(\"#define \" + name + \" \" + value);\n  }\n  return chunks.join(\"\\n\");\n}\nfunction fetchAttributeLocations(gl, program) {\n  const attributes = {};\n  const n2 = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\n  for (let i2 = 0; i2 < n2; i2++) {\n    const info = gl.getActiveAttrib(program, i2);\n    const name = info.name;\n    let locationSize = 1;\n    if (info.type === gl.FLOAT_MAT2) locationSize = 2;\n    if (info.type === gl.FLOAT_MAT3) locationSize = 3;\n    if (info.type === gl.FLOAT_MAT4) locationSize = 4;\n    attributes[name] = {\n      type: info.type,\n      location: gl.getAttribLocation(program, name),\n      locationSize\n    };\n  }\n  return attributes;\n}\nfunction filterEmptyLine(string) {\n  return string !== \"\";\n}\nfunction replaceLightNums(string, parameters) {\n  const numSpotLightCoords = parameters.numSpotLightShadows + parameters.numSpotLightMaps - parameters.numSpotLightShadowsWithMaps;\n  return string.replace(/NUM_DIR_LIGHTS/g, parameters.numDirLights).replace(/NUM_SPOT_LIGHTS/g, parameters.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g, parameters.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g, numSpotLightCoords).replace(/NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g, parameters.numPointLights).replace(/NUM_HEMI_LIGHTS/g, parameters.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g, parameters.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows);\n}\nfunction replaceClippingPlaneNums(string, parameters) {\n  return string.replace(/NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g, parameters.numClippingPlanes - parameters.numClipIntersection);\n}\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\nfunction resolveIncludes(string) {\n  return string.replace(includePattern, includeReplacer);\n}\nconst shaderChunkMap = /* @__PURE__ */ new Map([\n  [\"encodings_fragment\", \"colorspace_fragment\"],\n  // @deprecated, r154\n  [\"encodings_pars_fragment\", \"colorspace_pars_fragment\"],\n  // @deprecated, r154\n  [\"output_fragment\", \"opaque_fragment\"]\n  // @deprecated, r154\n]);\nfunction includeReplacer(match, include) {\n  let string = ShaderChunk[include];\n  if (string === void 0) {\n    const newInclude = shaderChunkMap.get(include);\n    if (newInclude !== void 0) {\n      string = ShaderChunk[newInclude];\n      console.warn('THREE.WebGLRenderer: Shader chunk \"%s\" has been deprecated. Use \"%s\" instead.', include, newInclude);\n    } else {\n      throw new Error(\"Can not resolve #include <\" + include + \">\");\n    }\n  }\n  return resolveIncludes(string);\n}\nconst unrollLoopPattern = /#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;\nfunction unrollLoops(string) {\n  return string.replace(unrollLoopPattern, loopReplacer);\n}\nfunction loopReplacer(match, start, end, snippet) {\n  let string = \"\";\n  for (let i2 = parseInt(start); i2 < parseInt(end); i2++) {\n    string += snippet.replace(/\\[\\s*i\\s*\\]/g, \"[ \" + i2 + \" ]\").replace(/UNROLLED_LOOP_INDEX/g, i2);\n  }\n  return string;\n}\nfunction generatePrecision(parameters) {\n  let precisionstring = `precision ${parameters.precision} float;\n\tprecision ${parameters.precision} int;\n\tprecision ${parameters.precision} sampler2D;\n\tprecision ${parameters.precision} samplerCube;\n\t`;\n  if (parameters.isWebGL2) {\n    precisionstring += `precision ${parameters.precision} sampler3D;\n\t\tprecision ${parameters.precision} sampler2DArray;\n\t\tprecision ${parameters.precision} sampler2DShadow;\n\t\tprecision ${parameters.precision} samplerCubeShadow;\n\t\tprecision ${parameters.precision} sampler2DArrayShadow;\n\t\tprecision ${parameters.precision} isampler2D;\n\t\tprecision ${parameters.precision} isampler3D;\n\t\tprecision ${parameters.precision} isamplerCube;\n\t\tprecision ${parameters.precision} isampler2DArray;\n\t\tprecision ${parameters.precision} usampler2D;\n\t\tprecision ${parameters.precision} usampler3D;\n\t\tprecision ${parameters.precision} usamplerCube;\n\t\tprecision ${parameters.precision} usampler2DArray;\n\t\t`;\n  }\n  if (parameters.precision === \"highp\") {\n    precisionstring += \"\\n#define HIGH_PRECISION\";\n  } else if (parameters.precision === \"mediump\") {\n    precisionstring += \"\\n#define MEDIUM_PRECISION\";\n  } else if (parameters.precision === \"lowp\") {\n    precisionstring += \"\\n#define LOW_PRECISION\";\n  }\n  return precisionstring;\n}\nfunction generateShadowMapTypeDefine(parameters) {\n  let shadowMapTypeDefine = \"SHADOWMAP_TYPE_BASIC\";\n  if (parameters.shadowMapType === PCFShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF\";\n  } else if (parameters.shadowMapType === PCFSoftShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_PCF_SOFT\";\n  } else if (parameters.shadowMapType === VSMShadowMap) {\n    shadowMapTypeDefine = \"SHADOWMAP_TYPE_VSM\";\n  }\n  return shadowMapTypeDefine;\n}\nfunction generateEnvMapTypeDefine(parameters) {\n  let envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeReflectionMapping:\n      case CubeRefractionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE\";\n        break;\n      case CubeUVReflectionMapping:\n        envMapTypeDefine = \"ENVMAP_TYPE_CUBE_UV\";\n        break;\n    }\n  }\n  return envMapTypeDefine;\n}\nfunction generateEnvMapModeDefine(parameters) {\n  let envMapModeDefine = \"ENVMAP_MODE_REFLECTION\";\n  if (parameters.envMap) {\n    switch (parameters.envMapMode) {\n      case CubeRefractionMapping:\n        envMapModeDefine = \"ENVMAP_MODE_REFRACTION\";\n        break;\n    }\n  }\n  return envMapModeDefine;\n}\nfunction generateEnvMapBlendingDefine(parameters) {\n  let envMapBlendingDefine = \"ENVMAP_BLENDING_NONE\";\n  if (parameters.envMap) {\n    switch (parameters.combine) {\n      case MultiplyOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MULTIPLY\";\n        break;\n      case MixOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_MIX\";\n        break;\n      case AddOperation:\n        envMapBlendingDefine = \"ENVMAP_BLENDING_ADD\";\n        break;\n    }\n  }\n  return envMapBlendingDefine;\n}\nfunction generateCubeUVSize(parameters) {\n  const imageHeight = parameters.envMapCubeUVHeight;\n  if (imageHeight === null) return null;\n  const maxMip = Math.log2(imageHeight) - 2;\n  const texelHeight = 1 / imageHeight;\n  const texelWidth = 1 / (3 * Math.max(Math.pow(2, maxMip), 7 * 16));\n  return { texelWidth, texelHeight, maxMip };\n}\nfunction WebGLProgram(renderer, cacheKey, parameters, bindingStates) {\n  const gl = renderer.getContext();\n  const defines = parameters.defines;\n  let vertexShader2 = parameters.vertexShader;\n  let fragmentShader2 = parameters.fragmentShader;\n  const shadowMapTypeDefine = generateShadowMapTypeDefine(parameters);\n  const envMapTypeDefine = generateEnvMapTypeDefine(parameters);\n  const envMapModeDefine = generateEnvMapModeDefine(parameters);\n  const envMapBlendingDefine = generateEnvMapBlendingDefine(parameters);\n  const envMapCubeUVSize = generateCubeUVSize(parameters);\n  const customExtensions = parameters.isWebGL2 ? \"\" : generateExtensions(parameters);\n  const customVertexExtensions = generateVertexExtensions(parameters);\n  const customDefines = generateDefines(defines);\n  const program = gl.createProgram();\n  let prefixVertex, prefixFragment;\n  let versionString = parameters.glslVersion ? \"#version \" + parameters.glslVersion + \"\\n\" : \"\";\n  if (parameters.isRawShaderMaterial) {\n    prefixVertex = [\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixVertex.length > 0) {\n      prefixVertex += \"\\n\";\n    }\n    prefixFragment = [\n      customExtensions,\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines\n    ].filter(filterEmptyLine).join(\"\\n\");\n    if (prefixFragment.length > 0) {\n      prefixFragment += \"\\n\";\n    }\n  } else {\n    prefixVertex = [\n      generatePrecision(parameters),\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.extensionClipCullDistance ? \"#define USE_CLIP_DISTANCE\" : \"\",\n      parameters.batching ? \"#define USE_BATCHING\" : \"\",\n      parameters.instancing ? \"#define USE_INSTANCING\" : \"\",\n      parameters.instancingColor ? \"#define USE_INSTANCING_COLOR\" : \"\",\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMapObjectSpace ? \"#define USE_NORMALMAP_OBJECTSPACE\" : \"\",\n      parameters.normalMapTangentSpace ? \"#define USE_NORMALMAP_TANGENTSPACE\" : \"\",\n      parameters.displacementMap ? \"#define USE_DISPLACEMENTMAP\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.anisotropy ? \"#define USE_ANISOTROPY\" : \"\",\n      parameters.anisotropyMap ? \"#define USE_ANISOTROPYMAP\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULAR_COLORMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULAR_INTENSITYMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.alphaHash ? \"#define USE_ALPHAHASH\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEEN_COLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEEN_ROUGHNESSMAP\" : \"\",\n      //\n      parameters.mapUv ? \"#define MAP_UV \" + parameters.mapUv : \"\",\n      parameters.alphaMapUv ? \"#define ALPHAMAP_UV \" + parameters.alphaMapUv : \"\",\n      parameters.lightMapUv ? \"#define LIGHTMAP_UV \" + parameters.lightMapUv : \"\",\n      parameters.aoMapUv ? \"#define AOMAP_UV \" + parameters.aoMapUv : \"\",\n      parameters.emissiveMapUv ? \"#define EMISSIVEMAP_UV \" + parameters.emissiveMapUv : \"\",\n      parameters.bumpMapUv ? \"#define BUMPMAP_UV \" + parameters.bumpMapUv : \"\",\n      parameters.normalMapUv ? \"#define NORMALMAP_UV \" + parameters.normalMapUv : \"\",\n      parameters.displacementMapUv ? \"#define DISPLACEMENTMAP_UV \" + parameters.displacementMapUv : \"\",\n      parameters.metalnessMapUv ? \"#define METALNESSMAP_UV \" + parameters.metalnessMapUv : \"\",\n      parameters.roughnessMapUv ? \"#define ROUGHNESSMAP_UV \" + parameters.roughnessMapUv : \"\",\n      parameters.anisotropyMapUv ? \"#define ANISOTROPYMAP_UV \" + parameters.anisotropyMapUv : \"\",\n      parameters.clearcoatMapUv ? \"#define CLEARCOATMAP_UV \" + parameters.clearcoatMapUv : \"\",\n      parameters.clearcoatNormalMapUv ? \"#define CLEARCOAT_NORMALMAP_UV \" + parameters.clearcoatNormalMapUv : \"\",\n      parameters.clearcoatRoughnessMapUv ? \"#define CLEARCOAT_ROUGHNESSMAP_UV \" + parameters.clearcoatRoughnessMapUv : \"\",\n      parameters.iridescenceMapUv ? \"#define IRIDESCENCEMAP_UV \" + parameters.iridescenceMapUv : \"\",\n      parameters.iridescenceThicknessMapUv ? \"#define IRIDESCENCE_THICKNESSMAP_UV \" + parameters.iridescenceThicknessMapUv : \"\",\n      parameters.sheenColorMapUv ? \"#define SHEEN_COLORMAP_UV \" + parameters.sheenColorMapUv : \"\",\n      parameters.sheenRoughnessMapUv ? \"#define SHEEN_ROUGHNESSMAP_UV \" + parameters.sheenRoughnessMapUv : \"\",\n      parameters.specularMapUv ? \"#define SPECULARMAP_UV \" + parameters.specularMapUv : \"\",\n      parameters.specularColorMapUv ? \"#define SPECULAR_COLORMAP_UV \" + parameters.specularColorMapUv : \"\",\n      parameters.specularIntensityMapUv ? \"#define SPECULAR_INTENSITYMAP_UV \" + parameters.specularIntensityMapUv : \"\",\n      parameters.transmissionMapUv ? \"#define TRANSMISSIONMAP_UV \" + parameters.transmissionMapUv : \"\",\n      parameters.thicknessMapUv ? \"#define THICKNESSMAP_UV \" + parameters.thicknessMapUv : \"\",\n      //\n      parameters.vertexTangents && parameters.flatShading === false ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUv1s ? \"#define USE_UV1\" : \"\",\n      parameters.vertexUv2s ? \"#define USE_UV2\" : \"\",\n      parameters.vertexUv3s ? \"#define USE_UV3\" : \"\",\n      parameters.pointsUvs ? \"#define USE_POINTS_UV\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.skinning ? \"#define USE_SKINNING\" : \"\",\n      parameters.morphTargets ? \"#define USE_MORPHTARGETS\" : \"\",\n      parameters.morphNormals && parameters.flatShading === false ? \"#define USE_MORPHNORMALS\" : \"\",\n      parameters.morphColors && parameters.isWebGL2 ? \"#define USE_MORPHCOLORS\" : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE\" : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_TEXTURE_STRIDE \" + parameters.morphTextureStride : \"\",\n      parameters.morphTargetsCount > 0 && parameters.isWebGL2 ? \"#define MORPHTARGETS_COUNT \" + parameters.morphTargetsCount : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.sizeAttenuation ? \"#define USE_SIZEATTENUATION\" : \"\",\n      parameters.numLightProbes > 0 ? \"#define USE_LIGHT_PROBES\" : \"\",\n      parameters.useLegacyLights ? \"#define LEGACY_LIGHTS\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n      \"uniform mat4 modelMatrix;\",\n      \"uniform mat4 modelViewMatrix;\",\n      \"uniform mat4 projectionMatrix;\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform mat3 normalMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      \"#ifdef USE_INSTANCING\",\n      \"\tattribute mat4 instanceMatrix;\",\n      \"#endif\",\n      \"#ifdef USE_INSTANCING_COLOR\",\n      \"\tattribute vec3 instanceColor;\",\n      \"#endif\",\n      \"attribute vec3 position;\",\n      \"attribute vec3 normal;\",\n      \"attribute vec2 uv;\",\n      \"#ifdef USE_UV1\",\n      \"\tattribute vec2 uv1;\",\n      \"#endif\",\n      \"#ifdef USE_UV2\",\n      \"\tattribute vec2 uv2;\",\n      \"#endif\",\n      \"#ifdef USE_UV3\",\n      \"\tattribute vec2 uv3;\",\n      \"#endif\",\n      \"#ifdef USE_TANGENT\",\n      \"\tattribute vec4 tangent;\",\n      \"#endif\",\n      \"#if defined( USE_COLOR_ALPHA )\",\n      \"\tattribute vec4 color;\",\n      \"#elif defined( USE_COLOR )\",\n      \"\tattribute vec3 color;\",\n      \"#endif\",\n      \"#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )\",\n      \"\tattribute vec3 morphTarget0;\",\n      \"\tattribute vec3 morphTarget1;\",\n      \"\tattribute vec3 morphTarget2;\",\n      \"\tattribute vec3 morphTarget3;\",\n      \"\t#ifdef USE_MORPHNORMALS\",\n      \"\t\tattribute vec3 morphNormal0;\",\n      \"\t\tattribute vec3 morphNormal1;\",\n      \"\t\tattribute vec3 morphNormal2;\",\n      \"\t\tattribute vec3 morphNormal3;\",\n      \"\t#else\",\n      \"\t\tattribute vec3 morphTarget4;\",\n      \"\t\tattribute vec3 morphTarget5;\",\n      \"\t\tattribute vec3 morphTarget6;\",\n      \"\t\tattribute vec3 morphTarget7;\",\n      \"\t#endif\",\n      \"#endif\",\n      \"#ifdef USE_SKINNING\",\n      \"\tattribute vec4 skinIndex;\",\n      \"\tattribute vec4 skinWeight;\",\n      \"#endif\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n    prefixFragment = [\n      customExtensions,\n      generatePrecision(parameters),\n      \"#define SHADER_TYPE \" + parameters.shaderType,\n      \"#define SHADER_NAME \" + parameters.shaderName,\n      customDefines,\n      parameters.useFog && parameters.fog ? \"#define USE_FOG\" : \"\",\n      parameters.useFog && parameters.fogExp2 ? \"#define FOG_EXP2\" : \"\",\n      parameters.alphaToCoverage ? \"#define ALPHA_TO_COVERAGE\" : \"\",\n      parameters.map ? \"#define USE_MAP\" : \"\",\n      parameters.matcap ? \"#define USE_MATCAP\" : \"\",\n      parameters.envMap ? \"#define USE_ENVMAP\" : \"\",\n      parameters.envMap ? \"#define \" + envMapTypeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapModeDefine : \"\",\n      parameters.envMap ? \"#define \" + envMapBlendingDefine : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_WIDTH \" + envMapCubeUVSize.texelWidth : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_TEXEL_HEIGHT \" + envMapCubeUVSize.texelHeight : \"\",\n      envMapCubeUVSize ? \"#define CUBEUV_MAX_MIP \" + envMapCubeUVSize.maxMip + \".0\" : \"\",\n      parameters.lightMap ? \"#define USE_LIGHTMAP\" : \"\",\n      parameters.aoMap ? \"#define USE_AOMAP\" : \"\",\n      parameters.bumpMap ? \"#define USE_BUMPMAP\" : \"\",\n      parameters.normalMap ? \"#define USE_NORMALMAP\" : \"\",\n      parameters.normalMapObjectSpace ? \"#define USE_NORMALMAP_OBJECTSPACE\" : \"\",\n      parameters.normalMapTangentSpace ? \"#define USE_NORMALMAP_TANGENTSPACE\" : \"\",\n      parameters.emissiveMap ? \"#define USE_EMISSIVEMAP\" : \"\",\n      parameters.anisotropy ? \"#define USE_ANISOTROPY\" : \"\",\n      parameters.anisotropyMap ? \"#define USE_ANISOTROPYMAP\" : \"\",\n      parameters.clearcoat ? \"#define USE_CLEARCOAT\" : \"\",\n      parameters.clearcoatMap ? \"#define USE_CLEARCOATMAP\" : \"\",\n      parameters.clearcoatRoughnessMap ? \"#define USE_CLEARCOAT_ROUGHNESSMAP\" : \"\",\n      parameters.clearcoatNormalMap ? \"#define USE_CLEARCOAT_NORMALMAP\" : \"\",\n      parameters.iridescence ? \"#define USE_IRIDESCENCE\" : \"\",\n      parameters.iridescenceMap ? \"#define USE_IRIDESCENCEMAP\" : \"\",\n      parameters.iridescenceThicknessMap ? \"#define USE_IRIDESCENCE_THICKNESSMAP\" : \"\",\n      parameters.specularMap ? \"#define USE_SPECULARMAP\" : \"\",\n      parameters.specularColorMap ? \"#define USE_SPECULAR_COLORMAP\" : \"\",\n      parameters.specularIntensityMap ? \"#define USE_SPECULAR_INTENSITYMAP\" : \"\",\n      parameters.roughnessMap ? \"#define USE_ROUGHNESSMAP\" : \"\",\n      parameters.metalnessMap ? \"#define USE_METALNESSMAP\" : \"\",\n      parameters.alphaMap ? \"#define USE_ALPHAMAP\" : \"\",\n      parameters.alphaTest ? \"#define USE_ALPHATEST\" : \"\",\n      parameters.alphaHash ? \"#define USE_ALPHAHASH\" : \"\",\n      parameters.sheen ? \"#define USE_SHEEN\" : \"\",\n      parameters.sheenColorMap ? \"#define USE_SHEEN_COLORMAP\" : \"\",\n      parameters.sheenRoughnessMap ? \"#define USE_SHEEN_ROUGHNESSMAP\" : \"\",\n      parameters.transmission ? \"#define USE_TRANSMISSION\" : \"\",\n      parameters.transmissionMap ? \"#define USE_TRANSMISSIONMAP\" : \"\",\n      parameters.thicknessMap ? \"#define USE_THICKNESSMAP\" : \"\",\n      parameters.vertexTangents && parameters.flatShading === false ? \"#define USE_TANGENT\" : \"\",\n      parameters.vertexColors || parameters.instancingColor ? \"#define USE_COLOR\" : \"\",\n      parameters.vertexAlphas ? \"#define USE_COLOR_ALPHA\" : \"\",\n      parameters.vertexUv1s ? \"#define USE_UV1\" : \"\",\n      parameters.vertexUv2s ? \"#define USE_UV2\" : \"\",\n      parameters.vertexUv3s ? \"#define USE_UV3\" : \"\",\n      parameters.pointsUvs ? \"#define USE_POINTS_UV\" : \"\",\n      parameters.gradientMap ? \"#define USE_GRADIENTMAP\" : \"\",\n      parameters.flatShading ? \"#define FLAT_SHADED\" : \"\",\n      parameters.doubleSided ? \"#define DOUBLE_SIDED\" : \"\",\n      parameters.flipSided ? \"#define FLIP_SIDED\" : \"\",\n      parameters.shadowMapEnabled ? \"#define USE_SHADOWMAP\" : \"\",\n      parameters.shadowMapEnabled ? \"#define \" + shadowMapTypeDefine : \"\",\n      parameters.premultipliedAlpha ? \"#define PREMULTIPLIED_ALPHA\" : \"\",\n      parameters.numLightProbes > 0 ? \"#define USE_LIGHT_PROBES\" : \"\",\n      parameters.useLegacyLights ? \"#define LEGACY_LIGHTS\" : \"\",\n      parameters.decodeVideoTexture ? \"#define DECODE_VIDEO_TEXTURE\" : \"\",\n      parameters.logarithmicDepthBuffer ? \"#define USE_LOGDEPTHBUF\" : \"\",\n      parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ? \"#define USE_LOGDEPTHBUF_EXT\" : \"\",\n      \"uniform mat4 viewMatrix;\",\n      \"uniform vec3 cameraPosition;\",\n      \"uniform bool isOrthographic;\",\n      parameters.toneMapping !== NoToneMapping ? \"#define TONE_MAPPING\" : \"\",\n      parameters.toneMapping !== NoToneMapping ? ShaderChunk[\"tonemapping_pars_fragment\"] : \"\",\n      // this code is required here because it is used by the toneMapping() function defined below\n      parameters.toneMapping !== NoToneMapping ? getToneMappingFunction(\"toneMapping\", parameters.toneMapping) : \"\",\n      parameters.dithering ? \"#define DITHERING\" : \"\",\n      parameters.opaque ? \"#define OPAQUE\" : \"\",\n      ShaderChunk[\"colorspace_pars_fragment\"],\n      // this code is required here because it is used by the various encoding/decoding function defined below\n      getTexelEncodingFunction(\"linearToOutputTexel\", parameters.outputColorSpace),\n      parameters.useDepthPacking ? \"#define DEPTH_PACKING \" + parameters.depthPacking : \"\",\n      \"\\n\"\n    ].filter(filterEmptyLine).join(\"\\n\");\n  }\n  vertexShader2 = resolveIncludes(vertexShader2);\n  vertexShader2 = replaceLightNums(vertexShader2, parameters);\n  vertexShader2 = replaceClippingPlaneNums(vertexShader2, parameters);\n  fragmentShader2 = resolveIncludes(fragmentShader2);\n  fragmentShader2 = replaceLightNums(fragmentShader2, parameters);\n  fragmentShader2 = replaceClippingPlaneNums(fragmentShader2, parameters);\n  vertexShader2 = unrollLoops(vertexShader2);\n  fragmentShader2 = unrollLoops(fragmentShader2);\n  if (parameters.isWebGL2 && parameters.isRawShaderMaterial !== true) {\n    versionString = \"#version 300 es\\n\";\n    prefixVertex = [\n      customVertexExtensions,\n      \"precision mediump sampler2DArray;\",\n      \"#define attribute in\",\n      \"#define varying out\",\n      \"#define texture2D texture\"\n    ].join(\"\\n\") + \"\\n\" + prefixVertex;\n    prefixFragment = [\n      \"precision mediump sampler2DArray;\",\n      \"#define varying in\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"layout(location = 0) out highp vec4 pc_fragColor;\",\n      parameters.glslVersion === GLSL3 ? \"\" : \"#define gl_FragColor pc_fragColor\",\n      \"#define gl_FragDepthEXT gl_FragDepth\",\n      \"#define texture2D texture\",\n      \"#define textureCube texture\",\n      \"#define texture2DProj textureProj\",\n      \"#define texture2DLodEXT textureLod\",\n      \"#define texture2DProjLodEXT textureProjLod\",\n      \"#define textureCubeLodEXT textureLod\",\n      \"#define texture2DGradEXT textureGrad\",\n      \"#define texture2DProjGradEXT textureProjGrad\",\n      \"#define textureCubeGradEXT textureGrad\"\n    ].join(\"\\n\") + \"\\n\" + prefixFragment;\n  }\n  const vertexGlsl = versionString + prefixVertex + vertexShader2;\n  const fragmentGlsl = versionString + prefixFragment + fragmentShader2;\n  const glVertexShader = WebGLShader(gl, gl.VERTEX_SHADER, vertexGlsl);\n  const glFragmentShader = WebGLShader(gl, gl.FRAGMENT_SHADER, fragmentGlsl);\n  gl.attachShader(program, glVertexShader);\n  gl.attachShader(program, glFragmentShader);\n  if (parameters.index0AttributeName !== void 0) {\n    gl.bindAttribLocation(program, 0, parameters.index0AttributeName);\n  } else if (parameters.morphTargets === true) {\n    gl.bindAttribLocation(program, 0, \"position\");\n  }\n  gl.linkProgram(program);\n  function onFirstUse(self2) {\n    if (renderer.debug.checkShaderErrors) {\n      const programLog = gl.getProgramInfoLog(program).trim();\n      const vertexLog = gl.getShaderInfoLog(glVertexShader).trim();\n      const fragmentLog = gl.getShaderInfoLog(glFragmentShader).trim();\n      let runnable = true;\n      let haveDiagnostics = true;\n      if (gl.getProgramParameter(program, gl.LINK_STATUS) === false) {\n        runnable = false;\n        if (typeof renderer.debug.onShaderError === \"function\") {\n          renderer.debug.onShaderError(gl, program, glVertexShader, glFragmentShader);\n        } else {\n          const vertexErrors = getShaderErrors(gl, glVertexShader, \"vertex\");\n          const fragmentErrors = getShaderErrors(gl, glFragmentShader, \"fragment\");\n          console.error(\n            \"THREE.WebGLProgram: Shader Error \" + gl.getError() + \" - VALIDATE_STATUS \" + gl.getProgramParameter(program, gl.VALIDATE_STATUS) + \"\\n\\nMaterial Name: \" + self2.name + \"\\nMaterial Type: \" + self2.type + \"\\n\\nProgram Info Log: \" + programLog + \"\\n\" + vertexErrors + \"\\n\" + fragmentErrors\n          );\n        }\n      } else if (programLog !== \"\") {\n        console.warn(\"THREE.WebGLProgram: Program Info Log:\", programLog);\n      } else if (vertexLog === \"\" || fragmentLog === \"\") {\n        haveDiagnostics = false;\n      }\n      if (haveDiagnostics) {\n        self2.diagnostics = {\n          runnable,\n          programLog,\n          vertexShader: {\n            log: vertexLog,\n            prefix: prefixVertex\n          },\n          fragmentShader: {\n            log: fragmentLog,\n            prefix: prefixFragment\n          }\n        };\n      }\n    }\n    gl.deleteShader(glVertexShader);\n    gl.deleteShader(glFragmentShader);\n    cachedUniforms = new WebGLUniforms(gl, program);\n    cachedAttributes = fetchAttributeLocations(gl, program);\n  }\n  let cachedUniforms;\n  this.getUniforms = function() {\n    if (cachedUniforms === void 0) {\n      onFirstUse(this);\n    }\n    return cachedUniforms;\n  };\n  let cachedAttributes;\n  this.getAttributes = function() {\n    if (cachedAttributes === void 0) {\n      onFirstUse(this);\n    }\n    return cachedAttributes;\n  };\n  let programReady = parameters.rendererExtensionParallelShaderCompile === false;\n  this.isReady = function() {\n    if (programReady === false) {\n      programReady = gl.getProgramParameter(program, COMPLETION_STATUS_KHR);\n    }\n    return programReady;\n  };\n  this.destroy = function() {\n    bindingStates.releaseStatesOfProgram(this);\n    gl.deleteProgram(program);\n    this.program = void 0;\n  };\n  this.type = parameters.shaderType;\n  this.name = parameters.shaderName;\n  this.id = programIdCount++;\n  this.cacheKey = cacheKey;\n  this.usedTimes = 1;\n  this.program = program;\n  this.vertexShader = glVertexShader;\n  this.fragmentShader = glFragmentShader;\n  return this;\n}\nlet _id$1 = 0;\nclass WebGLShaderCache {\n  constructor() {\n    this.shaderCache = /* @__PURE__ */ new Map();\n    this.materialCache = /* @__PURE__ */ new Map();\n  }\n  update(material) {\n    const vertexShader2 = material.vertexShader;\n    const fragmentShader2 = material.fragmentShader;\n    const vertexShaderStage = this._getShaderStage(vertexShader2);\n    const fragmentShaderStage = this._getShaderStage(fragmentShader2);\n    const materialShaders = this._getShaderCacheForMaterial(material);\n    if (materialShaders.has(vertexShaderStage) === false) {\n      materialShaders.add(vertexShaderStage);\n      vertexShaderStage.usedTimes++;\n    }\n    if (materialShaders.has(fragmentShaderStage) === false) {\n      materialShaders.add(fragmentShaderStage);\n      fragmentShaderStage.usedTimes++;\n    }\n    return this;\n  }\n  remove(material) {\n    const materialShaders = this.materialCache.get(material);\n    for (const shaderStage of materialShaders) {\n      shaderStage.usedTimes--;\n      if (shaderStage.usedTimes === 0) this.shaderCache.delete(shaderStage.code);\n    }\n    this.materialCache.delete(material);\n    return this;\n  }\n  getVertexShaderID(material) {\n    return this._getShaderStage(material.vertexShader).id;\n  }\n  getFragmentShaderID(material) {\n    return this._getShaderStage(material.fragmentShader).id;\n  }\n  dispose() {\n    this.shaderCache.clear();\n    this.materialCache.clear();\n  }\n  _getShaderCacheForMaterial(material) {\n    const cache = this.materialCache;\n    let set = cache.get(material);\n    if (set === void 0) {\n      set = /* @__PURE__ */ new Set();\n      cache.set(material, set);\n    }\n    return set;\n  }\n  _getShaderStage(code) {\n    const cache = this.shaderCache;\n    let stage = cache.get(code);\n    if (stage === void 0) {\n      stage = new WebGLShaderStage(code);\n      cache.set(code, stage);\n    }\n    return stage;\n  }\n}\nclass WebGLShaderStage {\n  constructor(code) {\n    this.id = _id$1++;\n    this.code = code;\n    this.usedTimes = 0;\n  }\n}\nfunction WebGLPrograms(renderer, cubemaps, cubeuvmaps, extensions2, capabilities, bindingStates, clipping) {\n  const _programLayers = new Layers();\n  const _customShaders = new WebGLShaderCache();\n  const _activeChannels = /* @__PURE__ */ new Set();\n  const programs = [];\n  const IS_WEBGL2 = capabilities.isWebGL2;\n  const logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\n  const SUPPORTS_VERTEX_TEXTURES = capabilities.vertexTextures;\n  let precision = capabilities.precision;\n  const shaderIDs = {\n    MeshDepthMaterial: \"depth\",\n    MeshDistanceMaterial: \"distanceRGBA\",\n    MeshNormalMaterial: \"normal\",\n    MeshBasicMaterial: \"basic\",\n    MeshLambertMaterial: \"lambert\",\n    MeshPhongMaterial: \"phong\",\n    MeshToonMaterial: \"toon\",\n    MeshStandardMaterial: \"physical\",\n    MeshPhysicalMaterial: \"physical\",\n    MeshMatcapMaterial: \"matcap\",\n    LineBasicMaterial: \"basic\",\n    LineDashedMaterial: \"dashed\",\n    PointsMaterial: \"points\",\n    ShadowMaterial: \"shadow\",\n    SpriteMaterial: \"sprite\"\n  };\n  function getChannel(value) {\n    _activeChannels.add(value);\n    if (value === 0) return \"uv\";\n    return `uv${value}`;\n  }\n  function getParameters(material, lights, shadows, scene, object) {\n    const fog = scene.fog;\n    const geometry = object.geometry;\n    const environment = material.isMeshStandardMaterial ? scene.environment : null;\n    const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n    const envMapCubeUVHeight = !!envMap && envMap.mapping === CubeUVReflectionMapping ? envMap.image.height : null;\n    const shaderID = shaderIDs[material.type];\n    if (material.precision !== null) {\n      precision = capabilities.getMaxPrecision(material.precision);\n      if (precision !== material.precision) {\n        console.warn(\"THREE.WebGLProgram.getParameters:\", material.precision, \"not supported, using\", precision, \"instead.\");\n      }\n    }\n    const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n    const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n    let morphTextureStride = 0;\n    if (geometry.morphAttributes.position !== void 0) morphTextureStride = 1;\n    if (geometry.morphAttributes.normal !== void 0) morphTextureStride = 2;\n    if (geometry.morphAttributes.color !== void 0) morphTextureStride = 3;\n    let vertexShader2, fragmentShader2;\n    let customVertexShaderID, customFragmentShaderID;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      vertexShader2 = shader.vertexShader;\n      fragmentShader2 = shader.fragmentShader;\n    } else {\n      vertexShader2 = material.vertexShader;\n      fragmentShader2 = material.fragmentShader;\n      _customShaders.update(material);\n      customVertexShaderID = _customShaders.getVertexShaderID(material);\n      customFragmentShaderID = _customShaders.getFragmentShaderID(material);\n    }\n    const currentRenderTarget = renderer.getRenderTarget();\n    const IS_INSTANCEDMESH = object.isInstancedMesh === true;\n    const IS_BATCHEDMESH = object.isBatchedMesh === true;\n    const HAS_MAP = !!material.map;\n    const HAS_MATCAP = !!material.matcap;\n    const HAS_ENVMAP = !!envMap;\n    const HAS_AOMAP = !!material.aoMap;\n    const HAS_LIGHTMAP = !!material.lightMap;\n    const HAS_BUMPMAP = !!material.bumpMap;\n    const HAS_NORMALMAP = !!material.normalMap;\n    const HAS_DISPLACEMENTMAP = !!material.displacementMap;\n    const HAS_EMISSIVEMAP = !!material.emissiveMap;\n    const HAS_METALNESSMAP = !!material.metalnessMap;\n    const HAS_ROUGHNESSMAP = !!material.roughnessMap;\n    const HAS_ANISOTROPY = material.anisotropy > 0;\n    const HAS_CLEARCOAT = material.clearcoat > 0;\n    const HAS_IRIDESCENCE = material.iridescence > 0;\n    const HAS_SHEEN = material.sheen > 0;\n    const HAS_TRANSMISSION = material.transmission > 0;\n    const HAS_ANISOTROPYMAP = HAS_ANISOTROPY && !!material.anisotropyMap;\n    const HAS_CLEARCOATMAP = HAS_CLEARCOAT && !!material.clearcoatMap;\n    const HAS_CLEARCOAT_NORMALMAP = HAS_CLEARCOAT && !!material.clearcoatNormalMap;\n    const HAS_CLEARCOAT_ROUGHNESSMAP = HAS_CLEARCOAT && !!material.clearcoatRoughnessMap;\n    const HAS_IRIDESCENCEMAP = HAS_IRIDESCENCE && !!material.iridescenceMap;\n    const HAS_IRIDESCENCE_THICKNESSMAP = HAS_IRIDESCENCE && !!material.iridescenceThicknessMap;\n    const HAS_SHEEN_COLORMAP = HAS_SHEEN && !!material.sheenColorMap;\n    const HAS_SHEEN_ROUGHNESSMAP = HAS_SHEEN && !!material.sheenRoughnessMap;\n    const HAS_SPECULARMAP = !!material.specularMap;\n    const HAS_SPECULAR_COLORMAP = !!material.specularColorMap;\n    const HAS_SPECULAR_INTENSITYMAP = !!material.specularIntensityMap;\n    const HAS_TRANSMISSIONMAP = HAS_TRANSMISSION && !!material.transmissionMap;\n    const HAS_THICKNESSMAP = HAS_TRANSMISSION && !!material.thicknessMap;\n    const HAS_GRADIENTMAP = !!material.gradientMap;\n    const HAS_ALPHAMAP = !!material.alphaMap;\n    const HAS_ALPHATEST = material.alphaTest > 0;\n    const HAS_ALPHAHASH = !!material.alphaHash;\n    const HAS_EXTENSIONS = !!material.extensions;\n    let toneMapping = NoToneMapping;\n    if (material.toneMapped) {\n      if (currentRenderTarget === null || currentRenderTarget.isXRRenderTarget === true) {\n        toneMapping = renderer.toneMapping;\n      }\n    }\n    const parameters = {\n      isWebGL2: IS_WEBGL2,\n      shaderID,\n      shaderType: material.type,\n      shaderName: material.name,\n      vertexShader: vertexShader2,\n      fragmentShader: fragmentShader2,\n      defines: material.defines,\n      customVertexShaderID,\n      customFragmentShaderID,\n      isRawShaderMaterial: material.isRawShaderMaterial === true,\n      glslVersion: material.glslVersion,\n      precision,\n      batching: IS_BATCHEDMESH,\n      instancing: IS_INSTANCEDMESH,\n      instancingColor: IS_INSTANCEDMESH && object.instanceColor !== null,\n      supportsVertexTextures: SUPPORTS_VERTEX_TEXTURES,\n      outputColorSpace: currentRenderTarget === null ? renderer.outputColorSpace : currentRenderTarget.isXRRenderTarget === true ? currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace$1,\n      alphaToCoverage: !!material.alphaToCoverage,\n      map: HAS_MAP,\n      matcap: HAS_MATCAP,\n      envMap: HAS_ENVMAP,\n      envMapMode: HAS_ENVMAP && envMap.mapping,\n      envMapCubeUVHeight,\n      aoMap: HAS_AOMAP,\n      lightMap: HAS_LIGHTMAP,\n      bumpMap: HAS_BUMPMAP,\n      normalMap: HAS_NORMALMAP,\n      displacementMap: SUPPORTS_VERTEX_TEXTURES && HAS_DISPLACEMENTMAP,\n      emissiveMap: HAS_EMISSIVEMAP,\n      normalMapObjectSpace: HAS_NORMALMAP && material.normalMapType === ObjectSpaceNormalMap,\n      normalMapTangentSpace: HAS_NORMALMAP && material.normalMapType === TangentSpaceNormalMap,\n      metalnessMap: HAS_METALNESSMAP,\n      roughnessMap: HAS_ROUGHNESSMAP,\n      anisotropy: HAS_ANISOTROPY,\n      anisotropyMap: HAS_ANISOTROPYMAP,\n      clearcoat: HAS_CLEARCOAT,\n      clearcoatMap: HAS_CLEARCOATMAP,\n      clearcoatNormalMap: HAS_CLEARCOAT_NORMALMAP,\n      clearcoatRoughnessMap: HAS_CLEARCOAT_ROUGHNESSMAP,\n      iridescence: HAS_IRIDESCENCE,\n      iridescenceMap: HAS_IRIDESCENCEMAP,\n      iridescenceThicknessMap: HAS_IRIDESCENCE_THICKNESSMAP,\n      sheen: HAS_SHEEN,\n      sheenColorMap: HAS_SHEEN_COLORMAP,\n      sheenRoughnessMap: HAS_SHEEN_ROUGHNESSMAP,\n      specularMap: HAS_SPECULARMAP,\n      specularColorMap: HAS_SPECULAR_COLORMAP,\n      specularIntensityMap: HAS_SPECULAR_INTENSITYMAP,\n      transmission: HAS_TRANSMISSION,\n      transmissionMap: HAS_TRANSMISSIONMAP,\n      thicknessMap: HAS_THICKNESSMAP,\n      gradientMap: HAS_GRADIENTMAP,\n      opaque: material.transparent === false && material.blending === NormalBlending && material.alphaToCoverage === false,\n      alphaMap: HAS_ALPHAMAP,\n      alphaTest: HAS_ALPHATEST,\n      alphaHash: HAS_ALPHAHASH,\n      combine: material.combine,\n      //\n      mapUv: HAS_MAP && getChannel(material.map.channel),\n      aoMapUv: HAS_AOMAP && getChannel(material.aoMap.channel),\n      lightMapUv: HAS_LIGHTMAP && getChannel(material.lightMap.channel),\n      bumpMapUv: HAS_BUMPMAP && getChannel(material.bumpMap.channel),\n      normalMapUv: HAS_NORMALMAP && getChannel(material.normalMap.channel),\n      displacementMapUv: HAS_DISPLACEMENTMAP && getChannel(material.displacementMap.channel),\n      emissiveMapUv: HAS_EMISSIVEMAP && getChannel(material.emissiveMap.channel),\n      metalnessMapUv: HAS_METALNESSMAP && getChannel(material.metalnessMap.channel),\n      roughnessMapUv: HAS_ROUGHNESSMAP && getChannel(material.roughnessMap.channel),\n      anisotropyMapUv: HAS_ANISOTROPYMAP && getChannel(material.anisotropyMap.channel),\n      clearcoatMapUv: HAS_CLEARCOATMAP && getChannel(material.clearcoatMap.channel),\n      clearcoatNormalMapUv: HAS_CLEARCOAT_NORMALMAP && getChannel(material.clearcoatNormalMap.channel),\n      clearcoatRoughnessMapUv: HAS_CLEARCOAT_ROUGHNESSMAP && getChannel(material.clearcoatRoughnessMap.channel),\n      iridescenceMapUv: HAS_IRIDESCENCEMAP && getChannel(material.iridescenceMap.channel),\n      iridescenceThicknessMapUv: HAS_IRIDESCENCE_THICKNESSMAP && getChannel(material.iridescenceThicknessMap.channel),\n      sheenColorMapUv: HAS_SHEEN_COLORMAP && getChannel(material.sheenColorMap.channel),\n      sheenRoughnessMapUv: HAS_SHEEN_ROUGHNESSMAP && getChannel(material.sheenRoughnessMap.channel),\n      specularMapUv: HAS_SPECULARMAP && getChannel(material.specularMap.channel),\n      specularColorMapUv: HAS_SPECULAR_COLORMAP && getChannel(material.specularColorMap.channel),\n      specularIntensityMapUv: HAS_SPECULAR_INTENSITYMAP && getChannel(material.specularIntensityMap.channel),\n      transmissionMapUv: HAS_TRANSMISSIONMAP && getChannel(material.transmissionMap.channel),\n      thicknessMapUv: HAS_THICKNESSMAP && getChannel(material.thicknessMap.channel),\n      alphaMapUv: HAS_ALPHAMAP && getChannel(material.alphaMap.channel),\n      //\n      vertexTangents: !!geometry.attributes.tangent && (HAS_NORMALMAP || HAS_ANISOTROPY),\n      vertexColors: material.vertexColors,\n      vertexAlphas: material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4,\n      pointsUvs: object.isPoints === true && !!geometry.attributes.uv && (HAS_MAP || HAS_ALPHAMAP),\n      fog: !!fog,\n      useFog: material.fog === true,\n      fogExp2: !!fog && fog.isFogExp2,\n      flatShading: material.flatShading === true,\n      sizeAttenuation: material.sizeAttenuation === true,\n      logarithmicDepthBuffer,\n      skinning: object.isSkinnedMesh === true,\n      morphTargets: geometry.morphAttributes.position !== void 0,\n      morphNormals: geometry.morphAttributes.normal !== void 0,\n      morphColors: geometry.morphAttributes.color !== void 0,\n      morphTargetsCount,\n      morphTextureStride,\n      numDirLights: lights.directional.length,\n      numPointLights: lights.point.length,\n      numSpotLights: lights.spot.length,\n      numSpotLightMaps: lights.spotLightMap.length,\n      numRectAreaLights: lights.rectArea.length,\n      numHemiLights: lights.hemi.length,\n      numDirLightShadows: lights.directionalShadowMap.length,\n      numPointLightShadows: lights.pointShadowMap.length,\n      numSpotLightShadows: lights.spotShadowMap.length,\n      numSpotLightShadowsWithMaps: lights.numSpotLightShadowsWithMaps,\n      numLightProbes: lights.numLightProbes,\n      numClippingPlanes: clipping.numPlanes,\n      numClipIntersection: clipping.numIntersection,\n      dithering: material.dithering,\n      shadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\n      shadowMapType: renderer.shadowMap.type,\n      toneMapping,\n      useLegacyLights: renderer._useLegacyLights,\n      decodeVideoTexture: HAS_MAP && material.map.isVideoTexture === true && ColorManagement.getTransfer(material.map.colorSpace) === SRGBTransfer,\n      premultipliedAlpha: material.premultipliedAlpha,\n      doubleSided: material.side === DoubleSide,\n      flipSided: material.side === BackSide,\n      useDepthPacking: material.depthPacking >= 0,\n      depthPacking: material.depthPacking || 0,\n      index0AttributeName: material.index0AttributeName,\n      extensionDerivatives: HAS_EXTENSIONS && material.extensions.derivatives === true,\n      extensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,\n      extensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,\n      extensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,\n      extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions2.has(\"WEBGL_clip_cull_distance\"),\n      extensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions2.has(\"WEBGL_multi_draw\"),\n      rendererExtensionFragDepth: IS_WEBGL2 || extensions2.has(\"EXT_frag_depth\"),\n      rendererExtensionDrawBuffers: IS_WEBGL2 || extensions2.has(\"WEBGL_draw_buffers\"),\n      rendererExtensionShaderTextureLod: IS_WEBGL2 || extensions2.has(\"EXT_shader_texture_lod\"),\n      rendererExtensionParallelShaderCompile: extensions2.has(\"KHR_parallel_shader_compile\"),\n      customProgramCacheKey: material.customProgramCacheKey()\n    };\n    parameters.vertexUv1s = _activeChannels.has(1);\n    parameters.vertexUv2s = _activeChannels.has(2);\n    parameters.vertexUv3s = _activeChannels.has(3);\n    _activeChannels.clear();\n    return parameters;\n  }\n  function getProgramCacheKey(parameters) {\n    const array = [];\n    if (parameters.shaderID) {\n      array.push(parameters.shaderID);\n    } else {\n      array.push(parameters.customVertexShaderID);\n      array.push(parameters.customFragmentShaderID);\n    }\n    if (parameters.defines !== void 0) {\n      for (const name in parameters.defines) {\n        array.push(name);\n        array.push(parameters.defines[name]);\n      }\n    }\n    if (parameters.isRawShaderMaterial === false) {\n      getProgramCacheKeyParameters(array, parameters);\n      getProgramCacheKeyBooleans(array, parameters);\n      array.push(renderer.outputColorSpace);\n    }\n    array.push(parameters.customProgramCacheKey);\n    return array.join();\n  }\n  function getProgramCacheKeyParameters(array, parameters) {\n    array.push(parameters.precision);\n    array.push(parameters.outputColorSpace);\n    array.push(parameters.envMapMode);\n    array.push(parameters.envMapCubeUVHeight);\n    array.push(parameters.mapUv);\n    array.push(parameters.alphaMapUv);\n    array.push(parameters.lightMapUv);\n    array.push(parameters.aoMapUv);\n    array.push(parameters.bumpMapUv);\n    array.push(parameters.normalMapUv);\n    array.push(parameters.displacementMapUv);\n    array.push(parameters.emissiveMapUv);\n    array.push(parameters.metalnessMapUv);\n    array.push(parameters.roughnessMapUv);\n    array.push(parameters.anisotropyMapUv);\n    array.push(parameters.clearcoatMapUv);\n    array.push(parameters.clearcoatNormalMapUv);\n    array.push(parameters.clearcoatRoughnessMapUv);\n    array.push(parameters.iridescenceMapUv);\n    array.push(parameters.iridescenceThicknessMapUv);\n    array.push(parameters.sheenColorMapUv);\n    array.push(parameters.sheenRoughnessMapUv);\n    array.push(parameters.specularMapUv);\n    array.push(parameters.specularColorMapUv);\n    array.push(parameters.specularIntensityMapUv);\n    array.push(parameters.transmissionMapUv);\n    array.push(parameters.thicknessMapUv);\n    array.push(parameters.combine);\n    array.push(parameters.fogExp2);\n    array.push(parameters.sizeAttenuation);\n    array.push(parameters.morphTargetsCount);\n    array.push(parameters.morphAttributeCount);\n    array.push(parameters.numDirLights);\n    array.push(parameters.numPointLights);\n    array.push(parameters.numSpotLights);\n    array.push(parameters.numSpotLightMaps);\n    array.push(parameters.numHemiLights);\n    array.push(parameters.numRectAreaLights);\n    array.push(parameters.numDirLightShadows);\n    array.push(parameters.numPointLightShadows);\n    array.push(parameters.numSpotLightShadows);\n    array.push(parameters.numSpotLightShadowsWithMaps);\n    array.push(parameters.numLightProbes);\n    array.push(parameters.shadowMapType);\n    array.push(parameters.toneMapping);\n    array.push(parameters.numClippingPlanes);\n    array.push(parameters.numClipIntersection);\n    array.push(parameters.depthPacking);\n  }\n  function getProgramCacheKeyBooleans(array, parameters) {\n    _programLayers.disableAll();\n    if (parameters.isWebGL2)\n      _programLayers.enable(0);\n    if (parameters.supportsVertexTextures)\n      _programLayers.enable(1);\n    if (parameters.instancing)\n      _programLayers.enable(2);\n    if (parameters.instancingColor)\n      _programLayers.enable(3);\n    if (parameters.matcap)\n      _programLayers.enable(4);\n    if (parameters.envMap)\n      _programLayers.enable(5);\n    if (parameters.normalMapObjectSpace)\n      _programLayers.enable(6);\n    if (parameters.normalMapTangentSpace)\n      _programLayers.enable(7);\n    if (parameters.clearcoat)\n      _programLayers.enable(8);\n    if (parameters.iridescence)\n      _programLayers.enable(9);\n    if (parameters.alphaTest)\n      _programLayers.enable(10);\n    if (parameters.vertexColors)\n      _programLayers.enable(11);\n    if (parameters.vertexAlphas)\n      _programLayers.enable(12);\n    if (parameters.vertexUv1s)\n      _programLayers.enable(13);\n    if (parameters.vertexUv2s)\n      _programLayers.enable(14);\n    if (parameters.vertexUv3s)\n      _programLayers.enable(15);\n    if (parameters.vertexTangents)\n      _programLayers.enable(16);\n    if (parameters.anisotropy)\n      _programLayers.enable(17);\n    if (parameters.alphaHash)\n      _programLayers.enable(18);\n    if (parameters.batching)\n      _programLayers.enable(19);\n    array.push(_programLayers.mask);\n    _programLayers.disableAll();\n    if (parameters.fog)\n      _programLayers.enable(0);\n    if (parameters.useFog)\n      _programLayers.enable(1);\n    if (parameters.flatShading)\n      _programLayers.enable(2);\n    if (parameters.logarithmicDepthBuffer)\n      _programLayers.enable(3);\n    if (parameters.skinning)\n      _programLayers.enable(4);\n    if (parameters.morphTargets)\n      _programLayers.enable(5);\n    if (parameters.morphNormals)\n      _programLayers.enable(6);\n    if (parameters.morphColors)\n      _programLayers.enable(7);\n    if (parameters.premultipliedAlpha)\n      _programLayers.enable(8);\n    if (parameters.shadowMapEnabled)\n      _programLayers.enable(9);\n    if (parameters.useLegacyLights)\n      _programLayers.enable(10);\n    if (parameters.doubleSided)\n      _programLayers.enable(11);\n    if (parameters.flipSided)\n      _programLayers.enable(12);\n    if (parameters.useDepthPacking)\n      _programLayers.enable(13);\n    if (parameters.dithering)\n      _programLayers.enable(14);\n    if (parameters.transmission)\n      _programLayers.enable(15);\n    if (parameters.sheen)\n      _programLayers.enable(16);\n    if (parameters.opaque)\n      _programLayers.enable(17);\n    if (parameters.pointsUvs)\n      _programLayers.enable(18);\n    if (parameters.decodeVideoTexture)\n      _programLayers.enable(19);\n    if (parameters.alphaToCoverage)\n      _programLayers.enable(20);\n    array.push(_programLayers.mask);\n  }\n  function getUniforms(material) {\n    const shaderID = shaderIDs[material.type];\n    let uniforms;\n    if (shaderID) {\n      const shader = ShaderLib[shaderID];\n      uniforms = UniformsUtils.clone(shader.uniforms);\n    } else {\n      uniforms = material.uniforms;\n    }\n    return uniforms;\n  }\n  function acquireProgram(parameters, cacheKey) {\n    let program;\n    for (let p2 = 0, pl = programs.length; p2 < pl; p2++) {\n      const preexistingProgram = programs[p2];\n      if (preexistingProgram.cacheKey === cacheKey) {\n        program = preexistingProgram;\n        ++program.usedTimes;\n        break;\n      }\n    }\n    if (program === void 0) {\n      program = new WebGLProgram(renderer, cacheKey, parameters, bindingStates);\n      programs.push(program);\n    }\n    return program;\n  }\n  function releaseProgram(program) {\n    if (--program.usedTimes === 0) {\n      const i2 = programs.indexOf(program);\n      programs[i2] = programs[programs.length - 1];\n      programs.pop();\n      program.destroy();\n    }\n  }\n  function releaseShaderCache(material) {\n    _customShaders.remove(material);\n  }\n  function dispose2() {\n    _customShaders.dispose();\n  }\n  return {\n    getParameters,\n    getProgramCacheKey,\n    getUniforms,\n    acquireProgram,\n    releaseProgram,\n    releaseShaderCache,\n    // Exposed for resource monitoring & error feedback via renderer.info:\n    programs,\n    dispose: dispose2\n  };\n}\nfunction WebGLProperties() {\n  let properties = /* @__PURE__ */ new WeakMap();\n  function get(object) {\n    let map = properties.get(object);\n    if (map === void 0) {\n      map = {};\n      properties.set(object, map);\n    }\n    return map;\n  }\n  function remove(object) {\n    properties.delete(object);\n  }\n  function update(object, key, value) {\n    properties.get(object)[key] = value;\n  }\n  function dispose2() {\n    properties = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    remove,\n    update,\n    dispose: dispose2\n  };\n}\nfunction painterSortStable(a2, b2) {\n  if (a2.groupOrder !== b2.groupOrder) {\n    return a2.groupOrder - b2.groupOrder;\n  } else if (a2.renderOrder !== b2.renderOrder) {\n    return a2.renderOrder - b2.renderOrder;\n  } else if (a2.material.id !== b2.material.id) {\n    return a2.material.id - b2.material.id;\n  } else if (a2.z !== b2.z) {\n    return a2.z - b2.z;\n  } else {\n    return a2.id - b2.id;\n  }\n}\nfunction reversePainterSortStable(a2, b2) {\n  if (a2.groupOrder !== b2.groupOrder) {\n    return a2.groupOrder - b2.groupOrder;\n  } else if (a2.renderOrder !== b2.renderOrder) {\n    return a2.renderOrder - b2.renderOrder;\n  } else if (a2.z !== b2.z) {\n    return b2.z - a2.z;\n  } else {\n    return a2.id - b2.id;\n  }\n}\nfunction WebGLRenderList() {\n  const renderItems = [];\n  let renderItemsIndex = 0;\n  const opaque = [];\n  const transmissive = [];\n  const transparent = [];\n  function init() {\n    renderItemsIndex = 0;\n    opaque.length = 0;\n    transmissive.length = 0;\n    transparent.length = 0;\n  }\n  function getNextRenderItem(object, geometry, material, groupOrder, z2, group) {\n    let renderItem = renderItems[renderItemsIndex];\n    if (renderItem === void 0) {\n      renderItem = {\n        id: object.id,\n        object,\n        geometry,\n        material,\n        groupOrder,\n        renderOrder: object.renderOrder,\n        z: z2,\n        group\n      };\n      renderItems[renderItemsIndex] = renderItem;\n    } else {\n      renderItem.id = object.id;\n      renderItem.object = object;\n      renderItem.geometry = geometry;\n      renderItem.material = material;\n      renderItem.groupOrder = groupOrder;\n      renderItem.renderOrder = object.renderOrder;\n      renderItem.z = z2;\n      renderItem.group = group;\n    }\n    renderItemsIndex++;\n    return renderItem;\n  }\n  function push(object, geometry, material, groupOrder, z2, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z2, group);\n    if (material.transmission > 0) {\n      transmissive.push(renderItem);\n    } else if (material.transparent === true) {\n      transparent.push(renderItem);\n    } else {\n      opaque.push(renderItem);\n    }\n  }\n  function unshift(object, geometry, material, groupOrder, z2, group) {\n    const renderItem = getNextRenderItem(object, geometry, material, groupOrder, z2, group);\n    if (material.transmission > 0) {\n      transmissive.unshift(renderItem);\n    } else if (material.transparent === true) {\n      transparent.unshift(renderItem);\n    } else {\n      opaque.unshift(renderItem);\n    }\n  }\n  function sort(customOpaqueSort, customTransparentSort) {\n    if (opaque.length > 1) opaque.sort(customOpaqueSort || painterSortStable);\n    if (transmissive.length > 1) transmissive.sort(customTransparentSort || reversePainterSortStable);\n    if (transparent.length > 1) transparent.sort(customTransparentSort || reversePainterSortStable);\n  }\n  function finish() {\n    for (let i2 = renderItemsIndex, il = renderItems.length; i2 < il; i2++) {\n      const renderItem = renderItems[i2];\n      if (renderItem.id === null) break;\n      renderItem.id = null;\n      renderItem.object = null;\n      renderItem.geometry = null;\n      renderItem.material = null;\n      renderItem.group = null;\n    }\n  }\n  return {\n    opaque,\n    transmissive,\n    transparent,\n    init,\n    push,\n    unshift,\n    finish,\n    sort\n  };\n}\nfunction WebGLRenderLists() {\n  let lists = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth) {\n    const listArray = lists.get(scene);\n    let list;\n    if (listArray === void 0) {\n      list = new WebGLRenderList();\n      lists.set(scene, [list]);\n    } else {\n      if (renderCallDepth >= listArray.length) {\n        list = new WebGLRenderList();\n        listArray.push(list);\n      } else {\n        list = listArray[renderCallDepth];\n      }\n    }\n    return list;\n  }\n  function dispose2() {\n    lists = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nfunction UniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            direction: new Vector3(),\n            color: new Color()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            position: new Vector3(),\n            direction: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            coneCos: 0,\n            penumbraCos: 0,\n            decay: 0\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            position: new Vector3(),\n            color: new Color(),\n            distance: 0,\n            decay: 0\n          };\n          break;\n        case \"HemisphereLight\":\n          uniforms = {\n            direction: new Vector3(),\n            skyColor: new Color(),\n            groundColor: new Color()\n          };\n          break;\n        case \"RectAreaLight\":\n          uniforms = {\n            color: new Color(),\n            position: new Vector3(),\n            halfWidth: new Vector3(),\n            halfHeight: new Vector3()\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nfunction ShadowUniformsCache() {\n  const lights = {};\n  return {\n    get: function(light) {\n      if (lights[light.id] !== void 0) {\n        return lights[light.id];\n      }\n      let uniforms;\n      switch (light.type) {\n        case \"DirectionalLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"SpotLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2()\n          };\n          break;\n        case \"PointLight\":\n          uniforms = {\n            shadowBias: 0,\n            shadowNormalBias: 0,\n            shadowRadius: 1,\n            shadowMapSize: new Vector2(),\n            shadowCameraNear: 1,\n            shadowCameraFar: 1e3\n          };\n          break;\n      }\n      lights[light.id] = uniforms;\n      return uniforms;\n    }\n  };\n}\nlet nextVersion = 0;\nfunction shadowCastingAndTexturingLightsFirst(lightA, lightB) {\n  return (lightB.castShadow ? 2 : 0) - (lightA.castShadow ? 2 : 0) + (lightB.map ? 1 : 0) - (lightA.map ? 1 : 0);\n}\nfunction WebGLLights(extensions2, capabilities) {\n  const cache = new UniformsCache();\n  const shadowCache = ShadowUniformsCache();\n  const state = {\n    version: 0,\n    hash: {\n      directionalLength: -1,\n      pointLength: -1,\n      spotLength: -1,\n      rectAreaLength: -1,\n      hemiLength: -1,\n      numDirectionalShadows: -1,\n      numPointShadows: -1,\n      numSpotShadows: -1,\n      numSpotMaps: -1,\n      numLightProbes: -1\n    },\n    ambient: [0, 0, 0],\n    probe: [],\n    directional: [],\n    directionalShadow: [],\n    directionalShadowMap: [],\n    directionalShadowMatrix: [],\n    spot: [],\n    spotLightMap: [],\n    spotShadow: [],\n    spotShadowMap: [],\n    spotLightMatrix: [],\n    rectArea: [],\n    rectAreaLTC1: null,\n    rectAreaLTC2: null,\n    point: [],\n    pointShadow: [],\n    pointShadowMap: [],\n    pointShadowMatrix: [],\n    hemi: [],\n    numSpotLightShadowsWithMaps: 0,\n    numLightProbes: 0\n  };\n  for (let i2 = 0; i2 < 9; i2++) state.probe.push(new Vector3());\n  const vector3 = new Vector3();\n  const matrix4 = new Matrix4();\n  const matrix42 = new Matrix4();\n  function setup(lights, useLegacyLights) {\n    let r2 = 0, g2 = 0, b2 = 0;\n    for (let i2 = 0; i2 < 9; i2++) state.probe[i2].set(0, 0, 0);\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    let numDirectionalShadows = 0;\n    let numPointShadows = 0;\n    let numSpotShadows = 0;\n    let numSpotMaps = 0;\n    let numSpotShadowsWithMaps = 0;\n    let numLightProbes = 0;\n    lights.sort(shadowCastingAndTexturingLightsFirst);\n    const scaleFactor = useLegacyLights === true ? Math.PI : 1;\n    for (let i2 = 0, l2 = lights.length; i2 < l2; i2++) {\n      const light = lights[i2];\n      const color = light.color;\n      const intensity = light.intensity;\n      const distance = light.distance;\n      const shadowMap = light.shadow && light.shadow.map ? light.shadow.map.texture : null;\n      if (light.isAmbientLight) {\n        r2 += color.r * intensity * scaleFactor;\n        g2 += color.g * intensity * scaleFactor;\n        b2 += color.b * intensity * scaleFactor;\n      } else if (light.isLightProbe) {\n        for (let j2 = 0; j2 < 9; j2++) {\n          state.probe[j2].addScaledVector(light.sh.coefficients[j2], intensity);\n        }\n        numLightProbes++;\n      } else if (light.isDirectionalLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.directionalShadow[directionalLength] = shadowUniforms;\n          state.directionalShadowMap[directionalLength] = shadowMap;\n          state.directionalShadowMatrix[directionalLength] = light.shadow.matrix;\n          numDirectionalShadows++;\n        }\n        state.directional[directionalLength] = uniforms;\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = cache.get(light);\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.color.copy(color).multiplyScalar(intensity * scaleFactor);\n        uniforms.distance = distance;\n        uniforms.coneCos = Math.cos(light.angle);\n        uniforms.penumbraCos = Math.cos(light.angle * (1 - light.penumbra));\n        uniforms.decay = light.decay;\n        state.spot[spotLength] = uniforms;\n        const shadow = light.shadow;\n        if (light.map) {\n          state.spotLightMap[numSpotMaps] = light.map;\n          numSpotMaps++;\n          shadow.updateMatrices(light);\n          if (light.castShadow) numSpotShadowsWithMaps++;\n        }\n        state.spotLightMatrix[spotLength] = shadow.matrix;\n        if (light.castShadow) {\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          state.spotShadow[spotLength] = shadowUniforms;\n          state.spotShadowMap[spotLength] = shadowMap;\n          numSpotShadows++;\n        }\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(color).multiplyScalar(intensity);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        state.rectArea[rectAreaLength] = uniforms;\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = cache.get(light);\n        uniforms.color.copy(light.color).multiplyScalar(light.intensity * scaleFactor);\n        uniforms.distance = light.distance;\n        uniforms.decay = light.decay;\n        if (light.castShadow) {\n          const shadow = light.shadow;\n          const shadowUniforms = shadowCache.get(light);\n          shadowUniforms.shadowBias = shadow.bias;\n          shadowUniforms.shadowNormalBias = shadow.normalBias;\n          shadowUniforms.shadowRadius = shadow.radius;\n          shadowUniforms.shadowMapSize = shadow.mapSize;\n          shadowUniforms.shadowCameraNear = shadow.camera.near;\n          shadowUniforms.shadowCameraFar = shadow.camera.far;\n          state.pointShadow[pointLength] = shadowUniforms;\n          state.pointShadowMap[pointLength] = shadowMap;\n          state.pointShadowMatrix[pointLength] = light.shadow.matrix;\n          numPointShadows++;\n        }\n        state.point[pointLength] = uniforms;\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = cache.get(light);\n        uniforms.skyColor.copy(light.color).multiplyScalar(intensity * scaleFactor);\n        uniforms.groundColor.copy(light.groundColor).multiplyScalar(intensity * scaleFactor);\n        state.hemi[hemiLength] = uniforms;\n        hemiLength++;\n      }\n    }\n    if (rectAreaLength > 0) {\n      if (capabilities.isWebGL2) {\n        if (extensions2.has(\"OES_texture_float_linear\") === true) {\n          state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n        } else {\n          state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n        }\n      } else {\n        if (extensions2.has(\"OES_texture_float_linear\") === true) {\n          state.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\n        } else if (extensions2.has(\"OES_texture_half_float_linear\") === true) {\n          state.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\n          state.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\n        } else {\n          console.error(\"THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.\");\n        }\n      }\n    }\n    state.ambient[0] = r2;\n    state.ambient[1] = g2;\n    state.ambient[2] = b2;\n    const hash = state.hash;\n    if (hash.directionalLength !== directionalLength || hash.pointLength !== pointLength || hash.spotLength !== spotLength || hash.rectAreaLength !== rectAreaLength || hash.hemiLength !== hemiLength || hash.numDirectionalShadows !== numDirectionalShadows || hash.numPointShadows !== numPointShadows || hash.numSpotShadows !== numSpotShadows || hash.numSpotMaps !== numSpotMaps || hash.numLightProbes !== numLightProbes) {\n      state.directional.length = directionalLength;\n      state.spot.length = spotLength;\n      state.rectArea.length = rectAreaLength;\n      state.point.length = pointLength;\n      state.hemi.length = hemiLength;\n      state.directionalShadow.length = numDirectionalShadows;\n      state.directionalShadowMap.length = numDirectionalShadows;\n      state.pointShadow.length = numPointShadows;\n      state.pointShadowMap.length = numPointShadows;\n      state.spotShadow.length = numSpotShadows;\n      state.spotShadowMap.length = numSpotShadows;\n      state.directionalShadowMatrix.length = numDirectionalShadows;\n      state.pointShadowMatrix.length = numPointShadows;\n      state.spotLightMatrix.length = numSpotShadows + numSpotMaps - numSpotShadowsWithMaps;\n      state.spotLightMap.length = numSpotMaps;\n      state.numSpotLightShadowsWithMaps = numSpotShadowsWithMaps;\n      state.numLightProbes = numLightProbes;\n      hash.directionalLength = directionalLength;\n      hash.pointLength = pointLength;\n      hash.spotLength = spotLength;\n      hash.rectAreaLength = rectAreaLength;\n      hash.hemiLength = hemiLength;\n      hash.numDirectionalShadows = numDirectionalShadows;\n      hash.numPointShadows = numPointShadows;\n      hash.numSpotShadows = numSpotShadows;\n      hash.numSpotMaps = numSpotMaps;\n      hash.numLightProbes = numLightProbes;\n      state.version = nextVersion++;\n    }\n  }\n  function setupView(lights, camera) {\n    let directionalLength = 0;\n    let pointLength = 0;\n    let spotLength = 0;\n    let rectAreaLength = 0;\n    let hemiLength = 0;\n    const viewMatrix = camera.matrixWorldInverse;\n    for (let i2 = 0, l2 = lights.length; i2 < l2; i2++) {\n      const light = lights[i2];\n      if (light.isDirectionalLight) {\n        const uniforms = state.directional[directionalLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector3.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector3);\n        uniforms.direction.transformDirection(viewMatrix);\n        directionalLength++;\n      } else if (light.isSpotLight) {\n        const uniforms = state.spot[spotLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        vector3.setFromMatrixPosition(light.target.matrixWorld);\n        uniforms.direction.sub(vector3);\n        uniforms.direction.transformDirection(viewMatrix);\n        spotLength++;\n      } else if (light.isRectAreaLight) {\n        const uniforms = state.rectArea[rectAreaLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        matrix42.identity();\n        matrix4.copy(light.matrixWorld);\n        matrix4.premultiply(viewMatrix);\n        matrix42.extractRotation(matrix4);\n        uniforms.halfWidth.set(light.width * 0.5, 0, 0);\n        uniforms.halfHeight.set(0, light.height * 0.5, 0);\n        uniforms.halfWidth.applyMatrix4(matrix42);\n        uniforms.halfHeight.applyMatrix4(matrix42);\n        rectAreaLength++;\n      } else if (light.isPointLight) {\n        const uniforms = state.point[pointLength];\n        uniforms.position.setFromMatrixPosition(light.matrixWorld);\n        uniforms.position.applyMatrix4(viewMatrix);\n        pointLength++;\n      } else if (light.isHemisphereLight) {\n        const uniforms = state.hemi[hemiLength];\n        uniforms.direction.setFromMatrixPosition(light.matrixWorld);\n        uniforms.direction.transformDirection(viewMatrix);\n        hemiLength++;\n      }\n    }\n  }\n  return {\n    setup,\n    setupView,\n    state\n  };\n}\nfunction WebGLRenderState(extensions2, capabilities) {\n  const lights = new WebGLLights(extensions2, capabilities);\n  const lightsArray = [];\n  const shadowsArray = [];\n  function init() {\n    lightsArray.length = 0;\n    shadowsArray.length = 0;\n  }\n  function pushLight(light) {\n    lightsArray.push(light);\n  }\n  function pushShadow(shadowLight) {\n    shadowsArray.push(shadowLight);\n  }\n  function setupLights(useLegacyLights) {\n    lights.setup(lightsArray, useLegacyLights);\n  }\n  function setupLightsView(camera) {\n    lights.setupView(lightsArray, camera);\n  }\n  const state = {\n    lightsArray,\n    shadowsArray,\n    lights\n  };\n  return {\n    init,\n    state,\n    setupLights,\n    setupLightsView,\n    pushLight,\n    pushShadow\n  };\n}\nfunction WebGLRenderStates(extensions2, capabilities) {\n  let renderStates = /* @__PURE__ */ new WeakMap();\n  function get(scene, renderCallDepth = 0) {\n    const renderStateArray = renderStates.get(scene);\n    let renderState;\n    if (renderStateArray === void 0) {\n      renderState = new WebGLRenderState(extensions2, capabilities);\n      renderStates.set(scene, [renderState]);\n    } else {\n      if (renderCallDepth >= renderStateArray.length) {\n        renderState = new WebGLRenderState(extensions2, capabilities);\n        renderStateArray.push(renderState);\n      } else {\n        renderState = renderStateArray[renderCallDepth];\n      }\n    }\n    return renderState;\n  }\n  function dispose2() {\n    renderStates = /* @__PURE__ */ new WeakMap();\n  }\n  return {\n    get,\n    dispose: dispose2\n  };\n}\nclass MeshDepthMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshDepthMaterial = true;\n    this.type = \"MeshDepthMaterial\";\n    this.depthPacking = BasicDepthPacking;\n    this.map = null;\n    this.alphaMap = null;\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.depthPacking = source.depthPacking;\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    return this;\n  }\n}\nclass MeshDistanceMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshDistanceMaterial = true;\n    this.type = \"MeshDistanceMaterial\";\n    this.map = null;\n    this.alphaMap = null;\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    return this;\n  }\n}\nconst vertex = \"void main() {\\n\tgl_Position = vec4( position, 1.0 );\\n}\";\nconst fragment = \"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}\";\nfunction WebGLShadowMap(_renderer, _objects, _capabilities) {\n  let _frustum2 = new Frustum();\n  const _shadowMapSize = new Vector2(), _viewportSize = new Vector2(), _viewport = new Vector4(), _depthMaterial = new MeshDepthMaterial({ depthPacking: RGBADepthPacking }), _distanceMaterial = new MeshDistanceMaterial(), _materialCache = {}, _maxTextureSize = _capabilities.maxTextureSize;\n  const shadowSide = { [FrontSide]: BackSide, [BackSide]: FrontSide, [DoubleSide]: DoubleSide };\n  const shadowMaterialVertical = new ShaderMaterial({\n    defines: {\n      VSM_SAMPLES: 8\n    },\n    uniforms: {\n      shadow_pass: { value: null },\n      resolution: { value: new Vector2() },\n      radius: { value: 4 }\n    },\n    vertexShader: vertex,\n    fragmentShader: fragment\n  });\n  const shadowMaterialHorizontal = shadowMaterialVertical.clone();\n  shadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\n  const fullScreenTri = new BufferGeometry();\n  fullScreenTri.setAttribute(\n    \"position\",\n    new BufferAttribute(\n      new Float32Array([-1, -1, 0.5, 3, -1, 0.5, -1, 3, 0.5]),\n      3\n    )\n  );\n  const fullScreenMesh = new Mesh(fullScreenTri, shadowMaterialVertical);\n  const scope = this;\n  this.enabled = false;\n  this.autoUpdate = true;\n  this.needsUpdate = false;\n  this.type = PCFShadowMap;\n  let _previousType = this.type;\n  this.render = function(lights, scene, camera) {\n    if (scope.enabled === false) return;\n    if (scope.autoUpdate === false && scope.needsUpdate === false) return;\n    if (lights.length === 0) return;\n    const currentRenderTarget = _renderer.getRenderTarget();\n    const activeCubeFace = _renderer.getActiveCubeFace();\n    const activeMipmapLevel = _renderer.getActiveMipmapLevel();\n    const _state = _renderer.state;\n    _state.setBlending(NoBlending);\n    _state.buffers.color.setClear(1, 1, 1, 1);\n    _state.buffers.depth.setTest(true);\n    _state.setScissorTest(false);\n    const toVSM = _previousType !== VSMShadowMap && this.type === VSMShadowMap;\n    const fromVSM = _previousType === VSMShadowMap && this.type !== VSMShadowMap;\n    for (let i2 = 0, il = lights.length; i2 < il; i2++) {\n      const light = lights[i2];\n      const shadow = light.shadow;\n      if (shadow === void 0) {\n        console.warn(\"THREE.WebGLShadowMap:\", light, \"has no shadow.\");\n        continue;\n      }\n      if (shadow.autoUpdate === false && shadow.needsUpdate === false) continue;\n      _shadowMapSize.copy(shadow.mapSize);\n      const shadowFrameExtents = shadow.getFrameExtents();\n      _shadowMapSize.multiply(shadowFrameExtents);\n      _viewportSize.copy(shadow.mapSize);\n      if (_shadowMapSize.x > _maxTextureSize || _shadowMapSize.y > _maxTextureSize) {\n        if (_shadowMapSize.x > _maxTextureSize) {\n          _viewportSize.x = Math.floor(_maxTextureSize / shadowFrameExtents.x);\n          _shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\n          shadow.mapSize.x = _viewportSize.x;\n        }\n        if (_shadowMapSize.y > _maxTextureSize) {\n          _viewportSize.y = Math.floor(_maxTextureSize / shadowFrameExtents.y);\n          _shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\n          shadow.mapSize.y = _viewportSize.y;\n        }\n      }\n      if (shadow.map === null || toVSM === true || fromVSM === true) {\n        const pars = this.type !== VSMShadowMap ? { minFilter: NearestFilter, magFilter: NearestFilter } : {};\n        if (shadow.map !== null) {\n          shadow.map.dispose();\n        }\n        shadow.map = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y, pars);\n        shadow.map.texture.name = light.name + \".shadowMap\";\n        shadow.camera.updateProjectionMatrix();\n      }\n      _renderer.setRenderTarget(shadow.map);\n      _renderer.clear();\n      const viewportCount = shadow.getViewportCount();\n      for (let vp = 0; vp < viewportCount; vp++) {\n        const viewport = shadow.getViewport(vp);\n        _viewport.set(\n          _viewportSize.x * viewport.x,\n          _viewportSize.y * viewport.y,\n          _viewportSize.x * viewport.z,\n          _viewportSize.y * viewport.w\n        );\n        _state.viewport(_viewport);\n        shadow.updateMatrices(light, vp);\n        _frustum2 = shadow.getFrustum();\n        renderObject(scene, camera, shadow.camera, light, this.type);\n      }\n      if (shadow.isPointLightShadow !== true && this.type === VSMShadowMap) {\n        VSMPass(shadow, camera);\n      }\n      shadow.needsUpdate = false;\n    }\n    _previousType = this.type;\n    scope.needsUpdate = false;\n    _renderer.setRenderTarget(currentRenderTarget, activeCubeFace, activeMipmapLevel);\n  };\n  function VSMPass(shadow, camera) {\n    const geometry = _objects.update(fullScreenMesh);\n    if (shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples) {\n      shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;\n      shadowMaterialVertical.needsUpdate = true;\n      shadowMaterialHorizontal.needsUpdate = true;\n    }\n    if (shadow.mapPass === null) {\n      shadow.mapPass = new WebGLRenderTarget(_shadowMapSize.x, _shadowMapSize.y);\n    }\n    shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\n    shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialVertical.uniforms.radius.value = shadow.radius;\n    _renderer.setRenderTarget(shadow.mapPass);\n    _renderer.clear();\n    _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null);\n    shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\n    shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\n    shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\n    _renderer.setRenderTarget(shadow.map);\n    _renderer.clear();\n    _renderer.renderBufferDirect(camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null);\n  }\n  function getDepthMaterial(object, material, light, type) {\n    let result = null;\n    const customMaterial = light.isPointLight === true ? object.customDistanceMaterial : object.customDepthMaterial;\n    if (customMaterial !== void 0) {\n      result = customMaterial;\n    } else {\n      result = light.isPointLight === true ? _distanceMaterial : _depthMaterial;\n      if (_renderer.localClippingEnabled && material.clipShadows === true && Array.isArray(material.clippingPlanes) && material.clippingPlanes.length !== 0 || material.displacementMap && material.displacementScale !== 0 || material.alphaMap && material.alphaTest > 0 || material.map && material.alphaTest > 0) {\n        const keyA = result.uuid, keyB = material.uuid;\n        let materialsForVariant = _materialCache[keyA];\n        if (materialsForVariant === void 0) {\n          materialsForVariant = {};\n          _materialCache[keyA] = materialsForVariant;\n        }\n        let cachedMaterial = materialsForVariant[keyB];\n        if (cachedMaterial === void 0) {\n          cachedMaterial = result.clone();\n          materialsForVariant[keyB] = cachedMaterial;\n          material.addEventListener(\"dispose\", onMaterialDispose);\n        }\n        result = cachedMaterial;\n      }\n    }\n    result.visible = material.visible;\n    result.wireframe = material.wireframe;\n    if (type === VSMShadowMap) {\n      result.side = material.shadowSide !== null ? material.shadowSide : material.side;\n    } else {\n      result.side = material.shadowSide !== null ? material.shadowSide : shadowSide[material.side];\n    }\n    result.alphaMap = material.alphaMap;\n    result.alphaTest = material.alphaTest;\n    result.map = material.map;\n    result.clipShadows = material.clipShadows;\n    result.clippingPlanes = material.clippingPlanes;\n    result.clipIntersection = material.clipIntersection;\n    result.displacementMap = material.displacementMap;\n    result.displacementScale = material.displacementScale;\n    result.displacementBias = material.displacementBias;\n    result.wireframeLinewidth = material.wireframeLinewidth;\n    result.linewidth = material.linewidth;\n    if (light.isPointLight === true && result.isMeshDistanceMaterial === true) {\n      const materialProperties = _renderer.properties.get(result);\n      materialProperties.light = light;\n    }\n    return result;\n  }\n  function renderObject(object, camera, shadowCamera, light, type) {\n    if (object.visible === false) return;\n    const visible = object.layers.test(camera.layers);\n    if (visible && (object.isMesh || object.isLine || object.isPoints)) {\n      if ((object.castShadow || object.receiveShadow && type === VSMShadowMap) && (!object.frustumCulled || _frustum2.intersectsObject(object))) {\n        object.modelViewMatrix.multiplyMatrices(shadowCamera.matrixWorldInverse, object.matrixWorld);\n        const geometry = _objects.update(object);\n        const material = object.material;\n        if (Array.isArray(material)) {\n          const groups = geometry.groups;\n          for (let k2 = 0, kl = groups.length; k2 < kl; k2++) {\n            const group = groups[k2];\n            const groupMaterial = material[group.materialIndex];\n            if (groupMaterial && groupMaterial.visible) {\n              const depthMaterial = getDepthMaterial(object, groupMaterial, light, type);\n              object.onBeforeShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, group);\n              _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, group);\n              object.onAfterShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, group);\n            }\n          }\n        } else if (material.visible) {\n          const depthMaterial = getDepthMaterial(object, material, light, type);\n          object.onBeforeShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, null);\n          _renderer.renderBufferDirect(shadowCamera, null, geometry, depthMaterial, object, null);\n          object.onAfterShadow(_renderer, object, camera, shadowCamera, geometry, depthMaterial, null);\n        }\n      }\n    }\n    const children = object.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      renderObject(children[i2], camera, shadowCamera, light, type);\n    }\n  }\n  function onMaterialDispose(event) {\n    const material = event.target;\n    material.removeEventListener(\"dispose\", onMaterialDispose);\n    for (const id in _materialCache) {\n      const cache = _materialCache[id];\n      const uuid = event.target.uuid;\n      if (uuid in cache) {\n        const shadowMaterial = cache[uuid];\n        shadowMaterial.dispose();\n        delete cache[uuid];\n      }\n    }\n  }\n}\nfunction WebGLState(gl, extensions2, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  function ColorBuffer() {\n    let locked = false;\n    const color = new Vector4();\n    let currentColorMask = null;\n    const currentColorClear = new Vector4(0, 0, 0, 0);\n    return {\n      setMask: function(colorMask) {\n        if (currentColorMask !== colorMask && !locked) {\n          gl.colorMask(colorMask, colorMask, colorMask, colorMask);\n          currentColorMask = colorMask;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(r2, g2, b2, a2, premultipliedAlpha) {\n        if (premultipliedAlpha === true) {\n          r2 *= a2;\n          g2 *= a2;\n          b2 *= a2;\n        }\n        color.set(r2, g2, b2, a2);\n        if (currentColorClear.equals(color) === false) {\n          gl.clearColor(r2, g2, b2, a2);\n          currentColorClear.copy(color);\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentColorMask = null;\n        currentColorClear.set(-1, 0, 0, 0);\n      }\n    };\n  }\n  function DepthBuffer() {\n    let locked = false;\n    let currentDepthMask = null;\n    let currentDepthFunc = null;\n    let currentDepthClear = null;\n    return {\n      setTest: function(depthTest) {\n        if (depthTest) {\n          enable(gl.DEPTH_TEST);\n        } else {\n          disable(gl.DEPTH_TEST);\n        }\n      },\n      setMask: function(depthMask) {\n        if (currentDepthMask !== depthMask && !locked) {\n          gl.depthMask(depthMask);\n          currentDepthMask = depthMask;\n        }\n      },\n      setFunc: function(depthFunc) {\n        if (currentDepthFunc !== depthFunc) {\n          switch (depthFunc) {\n            case NeverDepth:\n              gl.depthFunc(gl.NEVER);\n              break;\n            case AlwaysDepth:\n              gl.depthFunc(gl.ALWAYS);\n              break;\n            case LessDepth:\n              gl.depthFunc(gl.LESS);\n              break;\n            case LessEqualDepth:\n              gl.depthFunc(gl.LEQUAL);\n              break;\n            case EqualDepth:\n              gl.depthFunc(gl.EQUAL);\n              break;\n            case GreaterEqualDepth:\n              gl.depthFunc(gl.GEQUAL);\n              break;\n            case GreaterDepth:\n              gl.depthFunc(gl.GREATER);\n              break;\n            case NotEqualDepth:\n              gl.depthFunc(gl.NOTEQUAL);\n              break;\n            default:\n              gl.depthFunc(gl.LEQUAL);\n          }\n          currentDepthFunc = depthFunc;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(depth) {\n        if (currentDepthClear !== depth) {\n          gl.clearDepth(depth);\n          currentDepthClear = depth;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentDepthMask = null;\n        currentDepthFunc = null;\n        currentDepthClear = null;\n      }\n    };\n  }\n  function StencilBuffer() {\n    let locked = false;\n    let currentStencilMask = null;\n    let currentStencilFunc = null;\n    let currentStencilRef = null;\n    let currentStencilFuncMask = null;\n    let currentStencilFail = null;\n    let currentStencilZFail = null;\n    let currentStencilZPass = null;\n    let currentStencilClear = null;\n    return {\n      setTest: function(stencilTest) {\n        if (!locked) {\n          if (stencilTest) {\n            enable(gl.STENCIL_TEST);\n          } else {\n            disable(gl.STENCIL_TEST);\n          }\n        }\n      },\n      setMask: function(stencilMask) {\n        if (currentStencilMask !== stencilMask && !locked) {\n          gl.stencilMask(stencilMask);\n          currentStencilMask = stencilMask;\n        }\n      },\n      setFunc: function(stencilFunc, stencilRef, stencilMask) {\n        if (currentStencilFunc !== stencilFunc || currentStencilRef !== stencilRef || currentStencilFuncMask !== stencilMask) {\n          gl.stencilFunc(stencilFunc, stencilRef, stencilMask);\n          currentStencilFunc = stencilFunc;\n          currentStencilRef = stencilRef;\n          currentStencilFuncMask = stencilMask;\n        }\n      },\n      setOp: function(stencilFail, stencilZFail, stencilZPass) {\n        if (currentStencilFail !== stencilFail || currentStencilZFail !== stencilZFail || currentStencilZPass !== stencilZPass) {\n          gl.stencilOp(stencilFail, stencilZFail, stencilZPass);\n          currentStencilFail = stencilFail;\n          currentStencilZFail = stencilZFail;\n          currentStencilZPass = stencilZPass;\n        }\n      },\n      setLocked: function(lock) {\n        locked = lock;\n      },\n      setClear: function(stencil) {\n        if (currentStencilClear !== stencil) {\n          gl.clearStencil(stencil);\n          currentStencilClear = stencil;\n        }\n      },\n      reset: function() {\n        locked = false;\n        currentStencilMask = null;\n        currentStencilFunc = null;\n        currentStencilRef = null;\n        currentStencilFuncMask = null;\n        currentStencilFail = null;\n        currentStencilZFail = null;\n        currentStencilZPass = null;\n        currentStencilClear = null;\n      }\n    };\n  }\n  const colorBuffer = new ColorBuffer();\n  const depthBuffer = new DepthBuffer();\n  const stencilBuffer = new StencilBuffer();\n  const uboBindings = /* @__PURE__ */ new WeakMap();\n  const uboProgramMap = /* @__PURE__ */ new WeakMap();\n  let enabledCapabilities = {};\n  let currentBoundFramebuffers = {};\n  let currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n  let defaultDrawbuffers = [];\n  let currentProgram = null;\n  let currentBlendingEnabled = false;\n  let currentBlending = null;\n  let currentBlendEquation = null;\n  let currentBlendSrc = null;\n  let currentBlendDst = null;\n  let currentBlendEquationAlpha = null;\n  let currentBlendSrcAlpha = null;\n  let currentBlendDstAlpha = null;\n  let currentBlendColor = new Color(0, 0, 0);\n  let currentBlendAlpha = 0;\n  let currentPremultipledAlpha = false;\n  let currentFlipSided = null;\n  let currentCullFace = null;\n  let currentLineWidth = null;\n  let currentPolygonOffsetFactor = null;\n  let currentPolygonOffsetUnits = null;\n  const maxTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n  let lineWidthAvailable = false;\n  let version2 = 0;\n  const glVersion = gl.getParameter(gl.VERSION);\n  if (glVersion.indexOf(\"WebGL\") !== -1) {\n    version2 = parseFloat(/^WebGL (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version2 >= 1;\n  } else if (glVersion.indexOf(\"OpenGL ES\") !== -1) {\n    version2 = parseFloat(/^OpenGL ES (\\d)/.exec(glVersion)[1]);\n    lineWidthAvailable = version2 >= 2;\n  }\n  let currentTextureSlot = null;\n  let currentBoundTextures = {};\n  const scissorParam = gl.getParameter(gl.SCISSOR_BOX);\n  const viewportParam = gl.getParameter(gl.VIEWPORT);\n  const currentScissor = new Vector4().fromArray(scissorParam);\n  const currentViewport = new Vector4().fromArray(viewportParam);\n  function createTexture(type, target, count, dimensions) {\n    const data = new Uint8Array(4);\n    const texture = gl.createTexture();\n    gl.bindTexture(type, texture);\n    gl.texParameteri(type, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n    gl.texParameteri(type, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n    for (let i2 = 0; i2 < count; i2++) {\n      if (isWebGL2 && (type === gl.TEXTURE_3D || type === gl.TEXTURE_2D_ARRAY)) {\n        gl.texImage3D(target, 0, gl.RGBA, 1, 1, dimensions, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n      } else {\n        gl.texImage2D(target + i2, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, data);\n      }\n    }\n    return texture;\n  }\n  const emptyTextures = {};\n  emptyTextures[gl.TEXTURE_2D] = createTexture(gl.TEXTURE_2D, gl.TEXTURE_2D, 1);\n  emptyTextures[gl.TEXTURE_CUBE_MAP] = createTexture(gl.TEXTURE_CUBE_MAP, gl.TEXTURE_CUBE_MAP_POSITIVE_X, 6);\n  if (isWebGL2) {\n    emptyTextures[gl.TEXTURE_2D_ARRAY] = createTexture(gl.TEXTURE_2D_ARRAY, gl.TEXTURE_2D_ARRAY, 1, 1);\n    emptyTextures[gl.TEXTURE_3D] = createTexture(gl.TEXTURE_3D, gl.TEXTURE_3D, 1, 1);\n  }\n  colorBuffer.setClear(0, 0, 0, 1);\n  depthBuffer.setClear(1);\n  stencilBuffer.setClear(0);\n  enable(gl.DEPTH_TEST);\n  depthBuffer.setFunc(LessEqualDepth);\n  setFlipSided(false);\n  setCullFace(CullFaceBack);\n  enable(gl.CULL_FACE);\n  setBlending(NoBlending);\n  function enable(id) {\n    if (enabledCapabilities[id] !== true) {\n      gl.enable(id);\n      enabledCapabilities[id] = true;\n    }\n  }\n  function disable(id) {\n    if (enabledCapabilities[id] !== false) {\n      gl.disable(id);\n      enabledCapabilities[id] = false;\n    }\n  }\n  function bindFramebuffer(target, framebuffer) {\n    if (currentBoundFramebuffers[target] !== framebuffer) {\n      gl.bindFramebuffer(target, framebuffer);\n      currentBoundFramebuffers[target] = framebuffer;\n      if (isWebGL2) {\n        if (target === gl.DRAW_FRAMEBUFFER) {\n          currentBoundFramebuffers[gl.FRAMEBUFFER] = framebuffer;\n        }\n        if (target === gl.FRAMEBUFFER) {\n          currentBoundFramebuffers[gl.DRAW_FRAMEBUFFER] = framebuffer;\n        }\n      }\n      return true;\n    }\n    return false;\n  }\n  function drawBuffers(renderTarget, framebuffer) {\n    let drawBuffers2 = defaultDrawbuffers;\n    let needsUpdate = false;\n    if (renderTarget) {\n      drawBuffers2 = currentDrawbuffers.get(framebuffer);\n      if (drawBuffers2 === void 0) {\n        drawBuffers2 = [];\n        currentDrawbuffers.set(framebuffer, drawBuffers2);\n      }\n      if (renderTarget.isWebGLMultipleRenderTargets) {\n        const textures = renderTarget.texture;\n        if (drawBuffers2.length !== textures.length || drawBuffers2[0] !== gl.COLOR_ATTACHMENT0) {\n          for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n            drawBuffers2[i2] = gl.COLOR_ATTACHMENT0 + i2;\n          }\n          drawBuffers2.length = textures.length;\n          needsUpdate = true;\n        }\n      } else {\n        if (drawBuffers2[0] !== gl.COLOR_ATTACHMENT0) {\n          drawBuffers2[0] = gl.COLOR_ATTACHMENT0;\n          needsUpdate = true;\n        }\n      }\n    } else {\n      if (drawBuffers2[0] !== gl.BACK) {\n        drawBuffers2[0] = gl.BACK;\n        needsUpdate = true;\n      }\n    }\n    if (needsUpdate) {\n      if (capabilities.isWebGL2) {\n        gl.drawBuffers(drawBuffers2);\n      } else {\n        extensions2.get(\"WEBGL_draw_buffers\").drawBuffersWEBGL(drawBuffers2);\n      }\n    }\n  }\n  function useProgram(program) {\n    if (currentProgram !== program) {\n      gl.useProgram(program);\n      currentProgram = program;\n      return true;\n    }\n    return false;\n  }\n  const equationToGL = {\n    [AddEquation]: gl.FUNC_ADD,\n    [SubtractEquation]: gl.FUNC_SUBTRACT,\n    [ReverseSubtractEquation]: gl.FUNC_REVERSE_SUBTRACT\n  };\n  if (isWebGL2) {\n    equationToGL[MinEquation] = gl.MIN;\n    equationToGL[MaxEquation] = gl.MAX;\n  } else {\n    const extension = extensions2.get(\"EXT_blend_minmax\");\n    if (extension !== null) {\n      equationToGL[MinEquation] = extension.MIN_EXT;\n      equationToGL[MaxEquation] = extension.MAX_EXT;\n    }\n  }\n  const factorToGL = {\n    [ZeroFactor]: gl.ZERO,\n    [OneFactor]: gl.ONE,\n    [SrcColorFactor]: gl.SRC_COLOR,\n    [SrcAlphaFactor]: gl.SRC_ALPHA,\n    [SrcAlphaSaturateFactor]: gl.SRC_ALPHA_SATURATE,\n    [DstColorFactor]: gl.DST_COLOR,\n    [DstAlphaFactor]: gl.DST_ALPHA,\n    [OneMinusSrcColorFactor]: gl.ONE_MINUS_SRC_COLOR,\n    [OneMinusSrcAlphaFactor]: gl.ONE_MINUS_SRC_ALPHA,\n    [OneMinusDstColorFactor]: gl.ONE_MINUS_DST_COLOR,\n    [OneMinusDstAlphaFactor]: gl.ONE_MINUS_DST_ALPHA,\n    [ConstantColorFactor]: gl.CONSTANT_COLOR,\n    [OneMinusConstantColorFactor]: gl.ONE_MINUS_CONSTANT_COLOR,\n    [ConstantAlphaFactor]: gl.CONSTANT_ALPHA,\n    [OneMinusConstantAlphaFactor]: gl.ONE_MINUS_CONSTANT_ALPHA\n  };\n  function setBlending(blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, blendColor, blendAlpha, premultipliedAlpha) {\n    if (blending === NoBlending) {\n      if (currentBlendingEnabled === true) {\n        disable(gl.BLEND);\n        currentBlendingEnabled = false;\n      }\n      return;\n    }\n    if (currentBlendingEnabled === false) {\n      enable(gl.BLEND);\n      currentBlendingEnabled = true;\n    }\n    if (blending !== CustomBlending) {\n      if (blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha) {\n        if (currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation) {\n          gl.blendEquation(gl.FUNC_ADD);\n          currentBlendEquation = AddEquation;\n          currentBlendEquationAlpha = AddEquation;\n        }\n        if (premultipliedAlpha) {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(gl.ONE, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(gl.ONE, gl.ONE);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE);\n              break;\n            case MultiplyBlending:\n              gl.blendFuncSeparate(gl.ZERO, gl.SRC_COLOR, gl.ZERO, gl.SRC_ALPHA);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        } else {\n          switch (blending) {\n            case NormalBlending:\n              gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n              break;\n            case AdditiveBlending:\n              gl.blendFunc(gl.SRC_ALPHA, gl.ONE);\n              break;\n            case SubtractiveBlending:\n              gl.blendFuncSeparate(gl.ZERO, gl.ONE_MINUS_SRC_COLOR, gl.ZERO, gl.ONE);\n              break;\n            case MultiplyBlending:\n              gl.blendFunc(gl.ZERO, gl.SRC_COLOR);\n              break;\n            default:\n              console.error(\"THREE.WebGLState: Invalid blending: \", blending);\n              break;\n          }\n        }\n        currentBlendSrc = null;\n        currentBlendDst = null;\n        currentBlendSrcAlpha = null;\n        currentBlendDstAlpha = null;\n        currentBlendColor.set(0, 0, 0);\n        currentBlendAlpha = 0;\n        currentBlending = blending;\n        currentPremultipledAlpha = premultipliedAlpha;\n      }\n      return;\n    }\n    blendEquationAlpha = blendEquationAlpha || blendEquation;\n    blendSrcAlpha = blendSrcAlpha || blendSrc;\n    blendDstAlpha = blendDstAlpha || blendDst;\n    if (blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha) {\n      gl.blendEquationSeparate(equationToGL[blendEquation], equationToGL[blendEquationAlpha]);\n      currentBlendEquation = blendEquation;\n      currentBlendEquationAlpha = blendEquationAlpha;\n    }\n    if (blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha) {\n      gl.blendFuncSeparate(factorToGL[blendSrc], factorToGL[blendDst], factorToGL[blendSrcAlpha], factorToGL[blendDstAlpha]);\n      currentBlendSrc = blendSrc;\n      currentBlendDst = blendDst;\n      currentBlendSrcAlpha = blendSrcAlpha;\n      currentBlendDstAlpha = blendDstAlpha;\n    }\n    if (blendColor.equals(currentBlendColor) === false || blendAlpha !== currentBlendAlpha) {\n      gl.blendColor(blendColor.r, blendColor.g, blendColor.b, blendAlpha);\n      currentBlendColor.copy(blendColor);\n      currentBlendAlpha = blendAlpha;\n    }\n    currentBlending = blending;\n    currentPremultipledAlpha = false;\n  }\n  function setMaterial(material, frontFaceCW) {\n    material.side === DoubleSide ? disable(gl.CULL_FACE) : enable(gl.CULL_FACE);\n    let flipSided = material.side === BackSide;\n    if (frontFaceCW) flipSided = !flipSided;\n    setFlipSided(flipSided);\n    material.blending === NormalBlending && material.transparent === false ? setBlending(NoBlending) : setBlending(material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.blendColor, material.blendAlpha, material.premultipliedAlpha);\n    depthBuffer.setFunc(material.depthFunc);\n    depthBuffer.setTest(material.depthTest);\n    depthBuffer.setMask(material.depthWrite);\n    colorBuffer.setMask(material.colorWrite);\n    const stencilWrite = material.stencilWrite;\n    stencilBuffer.setTest(stencilWrite);\n    if (stencilWrite) {\n      stencilBuffer.setMask(material.stencilWriteMask);\n      stencilBuffer.setFunc(material.stencilFunc, material.stencilRef, material.stencilFuncMask);\n      stencilBuffer.setOp(material.stencilFail, material.stencilZFail, material.stencilZPass);\n    }\n    setPolygonOffset(material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits);\n    material.alphaToCoverage === true ? enable(gl.SAMPLE_ALPHA_TO_COVERAGE) : disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n  }\n  function setFlipSided(flipSided) {\n    if (currentFlipSided !== flipSided) {\n      if (flipSided) {\n        gl.frontFace(gl.CW);\n      } else {\n        gl.frontFace(gl.CCW);\n      }\n      currentFlipSided = flipSided;\n    }\n  }\n  function setCullFace(cullFace) {\n    if (cullFace !== CullFaceNone) {\n      enable(gl.CULL_FACE);\n      if (cullFace !== currentCullFace) {\n        if (cullFace === CullFaceBack) {\n          gl.cullFace(gl.BACK);\n        } else if (cullFace === CullFaceFront) {\n          gl.cullFace(gl.FRONT);\n        } else {\n          gl.cullFace(gl.FRONT_AND_BACK);\n        }\n      }\n    } else {\n      disable(gl.CULL_FACE);\n    }\n    currentCullFace = cullFace;\n  }\n  function setLineWidth(width) {\n    if (width !== currentLineWidth) {\n      if (lineWidthAvailable) gl.lineWidth(width);\n      currentLineWidth = width;\n    }\n  }\n  function setPolygonOffset(polygonOffset, factor, units) {\n    if (polygonOffset) {\n      enable(gl.POLYGON_OFFSET_FILL);\n      if (currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units) {\n        gl.polygonOffset(factor, units);\n        currentPolygonOffsetFactor = factor;\n        currentPolygonOffsetUnits = units;\n      }\n    } else {\n      disable(gl.POLYGON_OFFSET_FILL);\n    }\n  }\n  function setScissorTest(scissorTest) {\n    if (scissorTest) {\n      enable(gl.SCISSOR_TEST);\n    } else {\n      disable(gl.SCISSOR_TEST);\n    }\n  }\n  function activeTexture(webglSlot) {\n    if (webglSlot === void 0) webglSlot = gl.TEXTURE0 + maxTextures - 1;\n    if (currentTextureSlot !== webglSlot) {\n      gl.activeTexture(webglSlot);\n      currentTextureSlot = webglSlot;\n    }\n  }\n  function bindTexture(webglType, webglTexture, webglSlot) {\n    if (webglSlot === void 0) {\n      if (currentTextureSlot === null) {\n        webglSlot = gl.TEXTURE0 + maxTextures - 1;\n      } else {\n        webglSlot = currentTextureSlot;\n      }\n    }\n    let boundTexture = currentBoundTextures[webglSlot];\n    if (boundTexture === void 0) {\n      boundTexture = { type: void 0, texture: void 0 };\n      currentBoundTextures[webglSlot] = boundTexture;\n    }\n    if (boundTexture.type !== webglType || boundTexture.texture !== webglTexture) {\n      if (currentTextureSlot !== webglSlot) {\n        gl.activeTexture(webglSlot);\n        currentTextureSlot = webglSlot;\n      }\n      gl.bindTexture(webglType, webglTexture || emptyTextures[webglType]);\n      boundTexture.type = webglType;\n      boundTexture.texture = webglTexture;\n    }\n  }\n  function unbindTexture() {\n    const boundTexture = currentBoundTextures[currentTextureSlot];\n    if (boundTexture !== void 0 && boundTexture.type !== void 0) {\n      gl.bindTexture(boundTexture.type, null);\n      boundTexture.type = void 0;\n      boundTexture.texture = void 0;\n    }\n  }\n  function compressedTexImage2D() {\n    try {\n      gl.compressedTexImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function compressedTexImage3D() {\n    try {\n      gl.compressedTexImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texSubImage2D() {\n    try {\n      gl.texSubImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texSubImage3D() {\n    try {\n      gl.texSubImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function compressedTexSubImage2D() {\n    try {\n      gl.compressedTexSubImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function compressedTexSubImage3D() {\n    try {\n      gl.compressedTexSubImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texStorage2D() {\n    try {\n      gl.texStorage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texStorage3D() {\n    try {\n      gl.texStorage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texImage2D() {\n    try {\n      gl.texImage2D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function texImage3D() {\n    try {\n      gl.texImage3D.apply(gl, arguments);\n    } catch (error2) {\n      console.error(\"THREE.WebGLState:\", error2);\n    }\n  }\n  function scissor(scissor2) {\n    if (currentScissor.equals(scissor2) === false) {\n      gl.scissor(scissor2.x, scissor2.y, scissor2.z, scissor2.w);\n      currentScissor.copy(scissor2);\n    }\n  }\n  function viewport(viewport2) {\n    if (currentViewport.equals(viewport2) === false) {\n      gl.viewport(viewport2.x, viewport2.y, viewport2.z, viewport2.w);\n      currentViewport.copy(viewport2);\n    }\n  }\n  function updateUBOMapping(uniformsGroup, program) {\n    let mapping = uboProgramMap.get(program);\n    if (mapping === void 0) {\n      mapping = /* @__PURE__ */ new WeakMap();\n      uboProgramMap.set(program, mapping);\n    }\n    let blockIndex = mapping.get(uniformsGroup);\n    if (blockIndex === void 0) {\n      blockIndex = gl.getUniformBlockIndex(program, uniformsGroup.name);\n      mapping.set(uniformsGroup, blockIndex);\n    }\n  }\n  function uniformBlockBinding(uniformsGroup, program) {\n    const mapping = uboProgramMap.get(program);\n    const blockIndex = mapping.get(uniformsGroup);\n    if (uboBindings.get(program) !== blockIndex) {\n      gl.uniformBlockBinding(program, blockIndex, uniformsGroup.__bindingPointIndex);\n      uboBindings.set(program, blockIndex);\n    }\n  }\n  function reset() {\n    gl.disable(gl.BLEND);\n    gl.disable(gl.CULL_FACE);\n    gl.disable(gl.DEPTH_TEST);\n    gl.disable(gl.POLYGON_OFFSET_FILL);\n    gl.disable(gl.SCISSOR_TEST);\n    gl.disable(gl.STENCIL_TEST);\n    gl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n    gl.blendEquation(gl.FUNC_ADD);\n    gl.blendFunc(gl.ONE, gl.ZERO);\n    gl.blendFuncSeparate(gl.ONE, gl.ZERO, gl.ONE, gl.ZERO);\n    gl.blendColor(0, 0, 0, 0);\n    gl.colorMask(true, true, true, true);\n    gl.clearColor(0, 0, 0, 0);\n    gl.depthMask(true);\n    gl.depthFunc(gl.LESS);\n    gl.clearDepth(1);\n    gl.stencilMask(4294967295);\n    gl.stencilFunc(gl.ALWAYS, 0, 4294967295);\n    gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n    gl.clearStencil(0);\n    gl.cullFace(gl.BACK);\n    gl.frontFace(gl.CCW);\n    gl.polygonOffset(0, 0);\n    gl.activeTexture(gl.TEXTURE0);\n    gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n    if (isWebGL2 === true) {\n      gl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, null);\n      gl.bindFramebuffer(gl.READ_FRAMEBUFFER, null);\n    }\n    gl.useProgram(null);\n    gl.lineWidth(1);\n    gl.scissor(0, 0, gl.canvas.width, gl.canvas.height);\n    gl.viewport(0, 0, gl.canvas.width, gl.canvas.height);\n    enabledCapabilities = {};\n    currentTextureSlot = null;\n    currentBoundTextures = {};\n    currentBoundFramebuffers = {};\n    currentDrawbuffers = /* @__PURE__ */ new WeakMap();\n    defaultDrawbuffers = [];\n    currentProgram = null;\n    currentBlendingEnabled = false;\n    currentBlending = null;\n    currentBlendEquation = null;\n    currentBlendSrc = null;\n    currentBlendDst = null;\n    currentBlendEquationAlpha = null;\n    currentBlendSrcAlpha = null;\n    currentBlendDstAlpha = null;\n    currentBlendColor = new Color(0, 0, 0);\n    currentBlendAlpha = 0;\n    currentPremultipledAlpha = false;\n    currentFlipSided = null;\n    currentCullFace = null;\n    currentLineWidth = null;\n    currentPolygonOffsetFactor = null;\n    currentPolygonOffsetUnits = null;\n    currentScissor.set(0, 0, gl.canvas.width, gl.canvas.height);\n    currentViewport.set(0, 0, gl.canvas.width, gl.canvas.height);\n    colorBuffer.reset();\n    depthBuffer.reset();\n    stencilBuffer.reset();\n  }\n  return {\n    buffers: {\n      color: colorBuffer,\n      depth: depthBuffer,\n      stencil: stencilBuffer\n    },\n    enable,\n    disable,\n    bindFramebuffer,\n    drawBuffers,\n    useProgram,\n    setBlending,\n    setMaterial,\n    setFlipSided,\n    setCullFace,\n    setLineWidth,\n    setPolygonOffset,\n    setScissorTest,\n    activeTexture,\n    bindTexture,\n    unbindTexture,\n    compressedTexImage2D,\n    compressedTexImage3D,\n    texImage2D,\n    texImage3D,\n    updateUBOMapping,\n    uniformBlockBinding,\n    texStorage2D,\n    texStorage3D,\n    texSubImage2D,\n    texSubImage3D,\n    compressedTexSubImage2D,\n    compressedTexSubImage3D,\n    scissor,\n    viewport,\n    reset\n  };\n}\nfunction WebGLTextures(_gl, extensions2, state, properties, capabilities, utils, info) {\n  const isWebGL2 = capabilities.isWebGL2;\n  const multisampledRTTExt = extensions2.has(\"WEBGL_multisampled_render_to_texture\") ? extensions2.get(\"WEBGL_multisampled_render_to_texture\") : null;\n  const supportsInvalidateFramebuffer = typeof navigator === \"undefined\" ? false : /OculusBrowser/g.test(navigator.userAgent);\n  const _videoTextures = /* @__PURE__ */ new WeakMap();\n  let _canvas2;\n  const _sources = /* @__PURE__ */ new WeakMap();\n  let useOffscreenCanvas = false;\n  try {\n    useOffscreenCanvas = typeof OffscreenCanvas !== \"undefined\" && new OffscreenCanvas(1, 1).getContext(\"2d\") !== null;\n  } catch (err) {\n  }\n  function createCanvas(width, height) {\n    return useOffscreenCanvas ? (\n      // eslint-disable-next-line compat/compat\n      new OffscreenCanvas(width, height)\n    ) : createElementNS(\"canvas\");\n  }\n  function resizeImage(image, needsPowerOfTwo, needsNewCanvas, maxSize) {\n    let scale = 1;\n    if (image.width > maxSize || image.height > maxSize) {\n      scale = maxSize / Math.max(image.width, image.height);\n    }\n    if (scale < 1 || needsPowerOfTwo === true) {\n      if (typeof HTMLImageElement !== \"undefined\" && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== \"undefined\" && image instanceof HTMLCanvasElement || typeof ImageBitmap !== \"undefined\" && image instanceof ImageBitmap) {\n        const floor = needsPowerOfTwo ? floorPowerOfTwo : Math.floor;\n        const width = floor(scale * image.width);\n        const height = floor(scale * image.height);\n        if (_canvas2 === void 0) _canvas2 = createCanvas(width, height);\n        const canvas = needsNewCanvas ? createCanvas(width, height) : _canvas2;\n        canvas.width = width;\n        canvas.height = height;\n        const context2 = canvas.getContext(\"2d\");\n        context2.drawImage(image, 0, 0, width, height);\n        console.warn(\"THREE.WebGLRenderer: Texture has been resized from (\" + image.width + \"x\" + image.height + \") to (\" + width + \"x\" + height + \").\");\n        return canvas;\n      } else {\n        if (\"data\" in image) {\n          console.warn(\"THREE.WebGLRenderer: Image in DataTexture is too big (\" + image.width + \"x\" + image.height + \").\");\n        }\n        return image;\n      }\n    }\n    return image;\n  }\n  function isPowerOfTwo$1(image) {\n    return isPowerOfTwo(image.width) && isPowerOfTwo(image.height);\n  }\n  function textureNeedsPowerOfTwo(texture) {\n    if (isWebGL2) return false;\n    return texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping || texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n  }\n  function textureNeedsGenerateMipmaps(texture, supportsMips) {\n    return texture.generateMipmaps && supportsMips && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\n  }\n  function generateMipmap(target) {\n    _gl.generateMipmap(target);\n  }\n  function getInternalFormat(internalFormatName, glFormat, glType, colorSpace, forceLinearTransfer = false) {\n    if (isWebGL2 === false) return glFormat;\n    if (internalFormatName !== null) {\n      if (_gl[internalFormatName] !== void 0) return _gl[internalFormatName];\n      console.warn(\"THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '\" + internalFormatName + \"'\");\n    }\n    let internalFormat = glFormat;\n    if (glFormat === _gl.RED) {\n      if (glType === _gl.FLOAT) internalFormat = _gl.R32F;\n      if (glType === _gl.HALF_FLOAT) internalFormat = _gl.R16F;\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8;\n    }\n    if (glFormat === _gl.RED_INTEGER) {\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.R8UI;\n      if (glType === _gl.UNSIGNED_SHORT) internalFormat = _gl.R16UI;\n      if (glType === _gl.UNSIGNED_INT) internalFormat = _gl.R32UI;\n      if (glType === _gl.BYTE) internalFormat = _gl.R8I;\n      if (glType === _gl.SHORT) internalFormat = _gl.R16I;\n      if (glType === _gl.INT) internalFormat = _gl.R32I;\n    }\n    if (glFormat === _gl.RG) {\n      if (glType === _gl.FLOAT) internalFormat = _gl.RG32F;\n      if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RG16F;\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = _gl.RG8;\n    }\n    if (glFormat === _gl.RGBA) {\n      const transfer = forceLinearTransfer ? LinearTransfer : ColorManagement.getTransfer(colorSpace);\n      if (glType === _gl.FLOAT) internalFormat = _gl.RGBA32F;\n      if (glType === _gl.HALF_FLOAT) internalFormat = _gl.RGBA16F;\n      if (glType === _gl.UNSIGNED_BYTE) internalFormat = transfer === SRGBTransfer ? _gl.SRGB8_ALPHA8 : _gl.RGBA8;\n      if (glType === _gl.UNSIGNED_SHORT_4_4_4_4) internalFormat = _gl.RGBA4;\n      if (glType === _gl.UNSIGNED_SHORT_5_5_5_1) internalFormat = _gl.RGB5_A1;\n    }\n    if (internalFormat === _gl.R16F || internalFormat === _gl.R32F || internalFormat === _gl.RG16F || internalFormat === _gl.RG32F || internalFormat === _gl.RGBA16F || internalFormat === _gl.RGBA32F) {\n      extensions2.get(\"EXT_color_buffer_float\");\n    }\n    return internalFormat;\n  }\n  function getMipLevels(texture, image, supportsMips) {\n    if (textureNeedsGenerateMipmaps(texture, supportsMips) === true || texture.isFramebufferTexture && texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n      return Math.log2(Math.max(image.width, image.height)) + 1;\n    } else if (texture.mipmaps !== void 0 && texture.mipmaps.length > 0) {\n      return texture.mipmaps.length;\n    } else if (texture.isCompressedTexture && Array.isArray(texture.image)) {\n      return image.mipmaps.length;\n    } else {\n      return 1;\n    }\n  }\n  function filterFallback(f2) {\n    if (f2 === NearestFilter || f2 === NearestMipmapNearestFilter || f2 === NearestMipmapLinearFilter) {\n      return _gl.NEAREST;\n    }\n    return _gl.LINEAR;\n  }\n  function onTextureDispose(event) {\n    const texture = event.target;\n    texture.removeEventListener(\"dispose\", onTextureDispose);\n    deallocateTexture(texture);\n    if (texture.isVideoTexture) {\n      _videoTextures.delete(texture);\n    }\n  }\n  function onRenderTargetDispose(event) {\n    const renderTarget = event.target;\n    renderTarget.removeEventListener(\"dispose\", onRenderTargetDispose);\n    deallocateRenderTarget(renderTarget);\n  }\n  function deallocateTexture(texture) {\n    const textureProperties = properties.get(texture);\n    if (textureProperties.__webglInit === void 0) return;\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    if (webglTextures) {\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      webglTexture.usedTimes--;\n      if (webglTexture.usedTimes === 0) {\n        deleteTexture(texture);\n      }\n      if (Object.keys(webglTextures).length === 0) {\n        _sources.delete(source);\n      }\n    }\n    properties.remove(texture);\n  }\n  function deleteTexture(texture) {\n    const textureProperties = properties.get(texture);\n    _gl.deleteTexture(textureProperties.__webglTexture);\n    const source = texture.source;\n    const webglTextures = _sources.get(source);\n    delete webglTextures[textureProperties.__cacheKey];\n    info.memory.textures--;\n  }\n  function deallocateRenderTarget(renderTarget) {\n    const texture = renderTarget.texture;\n    const renderTargetProperties = properties.get(renderTarget);\n    const textureProperties = properties.get(texture);\n    if (textureProperties.__webglTexture !== void 0) {\n      _gl.deleteTexture(textureProperties.__webglTexture);\n      info.memory.textures--;\n    }\n    if (renderTarget.depthTexture) {\n      renderTarget.depthTexture.dispose();\n    }\n    if (renderTarget.isWebGLCubeRenderTarget) {\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (Array.isArray(renderTargetProperties.__webglFramebuffer[i2])) {\n          for (let level = 0; level < renderTargetProperties.__webglFramebuffer[i2].length; level++) _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i2][level]);\n        } else {\n          _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[i2]);\n        }\n        if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer[i2]);\n      }\n    } else {\n      if (Array.isArray(renderTargetProperties.__webglFramebuffer)) {\n        for (let level = 0; level < renderTargetProperties.__webglFramebuffer.length; level++) _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer[level]);\n      } else {\n        _gl.deleteFramebuffer(renderTargetProperties.__webglFramebuffer);\n      }\n      if (renderTargetProperties.__webglDepthbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthbuffer);\n      if (renderTargetProperties.__webglMultisampledFramebuffer) _gl.deleteFramebuffer(renderTargetProperties.__webglMultisampledFramebuffer);\n      if (renderTargetProperties.__webglColorRenderbuffer) {\n        for (let i2 = 0; i2 < renderTargetProperties.__webglColorRenderbuffer.length; i2++) {\n          if (renderTargetProperties.__webglColorRenderbuffer[i2]) _gl.deleteRenderbuffer(renderTargetProperties.__webglColorRenderbuffer[i2]);\n        }\n      }\n      if (renderTargetProperties.__webglDepthRenderbuffer) _gl.deleteRenderbuffer(renderTargetProperties.__webglDepthRenderbuffer);\n    }\n    if (renderTarget.isWebGLMultipleRenderTargets) {\n      for (let i2 = 0, il = texture.length; i2 < il; i2++) {\n        const attachmentProperties = properties.get(texture[i2]);\n        if (attachmentProperties.__webglTexture) {\n          _gl.deleteTexture(attachmentProperties.__webglTexture);\n          info.memory.textures--;\n        }\n        properties.remove(texture[i2]);\n      }\n    }\n    properties.remove(texture);\n    properties.remove(renderTarget);\n  }\n  let textureUnits = 0;\n  function resetTextureUnits() {\n    textureUnits = 0;\n  }\n  function allocateTextureUnit() {\n    const textureUnit = textureUnits;\n    if (textureUnit >= capabilities.maxTextures) {\n      console.warn(\"THREE.WebGLTextures: Trying to use \" + textureUnit + \" texture units while this GPU supports only \" + capabilities.maxTextures);\n    }\n    textureUnits += 1;\n    return textureUnit;\n  }\n  function getTextureCacheKey(texture) {\n    const array = [];\n    array.push(texture.wrapS);\n    array.push(texture.wrapT);\n    array.push(texture.wrapR || 0);\n    array.push(texture.magFilter);\n    array.push(texture.minFilter);\n    array.push(texture.anisotropy);\n    array.push(texture.internalFormat);\n    array.push(texture.format);\n    array.push(texture.type);\n    array.push(texture.generateMipmaps);\n    array.push(texture.premultiplyAlpha);\n    array.push(texture.flipY);\n    array.push(texture.unpackAlignment);\n    array.push(texture.colorSpace);\n    return array.join();\n  }\n  function setTexture2D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.isVideoTexture) updateVideoTexture(texture);\n    if (texture.isRenderTargetTexture === false && texture.version > 0 && textureProperties.__version !== texture.version) {\n      const image = texture.image;\n      if (image === null) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but no image data found.\");\n      } else if (image.complete === false) {\n        console.warn(\"THREE.WebGLRenderer: Texture marked for update but image is incomplete\");\n      } else {\n        uploadTexture(textureProperties, texture, slot);\n        return;\n      }\n    }\n    state.bindTexture(_gl.TEXTURE_2D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  function setTexture2DArray(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(_gl.TEXTURE_2D_ARRAY, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  function setTexture3D(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(_gl.TEXTURE_3D, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  function setTextureCube(texture, slot) {\n    const textureProperties = properties.get(texture);\n    if (texture.version > 0 && textureProperties.__version !== texture.version) {\n      uploadCubeTexture(textureProperties, texture, slot);\n      return;\n    }\n    state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n  }\n  const wrappingToGL = {\n    [RepeatWrapping]: _gl.REPEAT,\n    [ClampToEdgeWrapping]: _gl.CLAMP_TO_EDGE,\n    [MirroredRepeatWrapping]: _gl.MIRRORED_REPEAT\n  };\n  const filterToGL = {\n    [NearestFilter]: _gl.NEAREST,\n    [NearestMipmapNearestFilter]: _gl.NEAREST_MIPMAP_NEAREST,\n    [NearestMipmapLinearFilter]: _gl.NEAREST_MIPMAP_LINEAR,\n    [LinearFilter]: _gl.LINEAR,\n    [LinearMipmapNearestFilter]: _gl.LINEAR_MIPMAP_NEAREST,\n    [LinearMipmapLinearFilter]: _gl.LINEAR_MIPMAP_LINEAR\n  };\n  const compareToGL = {\n    [NeverCompare]: _gl.NEVER,\n    [AlwaysCompare]: _gl.ALWAYS,\n    [LessCompare]: _gl.LESS,\n    [LessEqualCompare]: _gl.LEQUAL,\n    [EqualCompare]: _gl.EQUAL,\n    [GreaterEqualCompare]: _gl.GEQUAL,\n    [GreaterCompare]: _gl.GREATER,\n    [NotEqualCompare]: _gl.NOTEQUAL\n  };\n  function setTextureParameters(textureType, texture, supportsMips) {\n    if (texture.type === FloatType && extensions2.has(\"OES_texture_float_linear\") === false && (texture.magFilter === LinearFilter || texture.magFilter === LinearMipmapNearestFilter || texture.magFilter === NearestMipmapLinearFilter || texture.magFilter === LinearMipmapLinearFilter || texture.minFilter === LinearFilter || texture.minFilter === LinearMipmapNearestFilter || texture.minFilter === NearestMipmapLinearFilter || texture.minFilter === LinearMipmapLinearFilter)) {\n      console.warn(\"THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device.\");\n    }\n    if (supportsMips) {\n      _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, wrappingToGL[texture.wrapS]);\n      _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, wrappingToGL[texture.wrapT]);\n      if (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) {\n        _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, wrappingToGL[texture.wrapR]);\n      }\n      _gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterToGL[texture.magFilter]);\n      _gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterToGL[texture.minFilter]);\n    } else {\n      _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_S, _gl.CLAMP_TO_EDGE);\n      _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_T, _gl.CLAMP_TO_EDGE);\n      if (textureType === _gl.TEXTURE_3D || textureType === _gl.TEXTURE_2D_ARRAY) {\n        _gl.texParameteri(textureType, _gl.TEXTURE_WRAP_R, _gl.CLAMP_TO_EDGE);\n      }\n      if (texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping) {\n        console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.\");\n      }\n      _gl.texParameteri(textureType, _gl.TEXTURE_MAG_FILTER, filterFallback(texture.magFilter));\n      _gl.texParameteri(textureType, _gl.TEXTURE_MIN_FILTER, filterFallback(texture.minFilter));\n      if (texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter) {\n        console.warn(\"THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.\");\n      }\n    }\n    if (texture.compareFunction) {\n      _gl.texParameteri(textureType, _gl.TEXTURE_COMPARE_MODE, _gl.COMPARE_REF_TO_TEXTURE);\n      _gl.texParameteri(textureType, _gl.TEXTURE_COMPARE_FUNC, compareToGL[texture.compareFunction]);\n    }\n    if (extensions2.has(\"EXT_texture_filter_anisotropic\") === true) {\n      const extension = extensions2.get(\"EXT_texture_filter_anisotropic\");\n      if (texture.magFilter === NearestFilter) return;\n      if (texture.minFilter !== NearestMipmapLinearFilter && texture.minFilter !== LinearMipmapLinearFilter) return;\n      if (texture.type === FloatType && extensions2.has(\"OES_texture_float_linear\") === false) return;\n      if (isWebGL2 === false && (texture.type === HalfFloatType && extensions2.has(\"OES_texture_half_float_linear\") === false)) return;\n      if (texture.anisotropy > 1 || properties.get(texture).__currentAnisotropy) {\n        _gl.texParameterf(textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min(texture.anisotropy, capabilities.getMaxAnisotropy()));\n        properties.get(texture).__currentAnisotropy = texture.anisotropy;\n      }\n    }\n  }\n  function initTexture(textureProperties, texture) {\n    let forceUpload = false;\n    if (textureProperties.__webglInit === void 0) {\n      textureProperties.__webglInit = true;\n      texture.addEventListener(\"dispose\", onTextureDispose);\n    }\n    const source = texture.source;\n    let webglTextures = _sources.get(source);\n    if (webglTextures === void 0) {\n      webglTextures = {};\n      _sources.set(source, webglTextures);\n    }\n    const textureCacheKey = getTextureCacheKey(texture);\n    if (textureCacheKey !== textureProperties.__cacheKey) {\n      if (webglTextures[textureCacheKey] === void 0) {\n        webglTextures[textureCacheKey] = {\n          texture: _gl.createTexture(),\n          usedTimes: 0\n        };\n        info.memory.textures++;\n        forceUpload = true;\n      }\n      webglTextures[textureCacheKey].usedTimes++;\n      const webglTexture = webglTextures[textureProperties.__cacheKey];\n      if (webglTexture !== void 0) {\n        webglTextures[textureProperties.__cacheKey].usedTimes--;\n        if (webglTexture.usedTimes === 0) {\n          deleteTexture(texture);\n        }\n      }\n      textureProperties.__cacheKey = textureCacheKey;\n      textureProperties.__webglTexture = webglTextures[textureCacheKey].texture;\n    }\n    return forceUpload;\n  }\n  function uploadTexture(textureProperties, texture, slot) {\n    let textureType = _gl.TEXTURE_2D;\n    if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) textureType = _gl.TEXTURE_2D_ARRAY;\n    if (texture.isData3DTexture) textureType = _gl.TEXTURE_3D;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.bindTexture(textureType, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n    const sourceProperties = properties.get(source);\n    if (source.version !== sourceProperties.__version || forceUpload === true) {\n      state.activeTexture(_gl.TEXTURE0 + slot);\n      const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace);\n      const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries(texture.colorSpace);\n      const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n      _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n      _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n      _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n      _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion);\n      const needsPowerOfTwo = textureNeedsPowerOfTwo(texture) && isPowerOfTwo$1(texture.image) === false;\n      let image = resizeImage(texture.image, needsPowerOfTwo, false, capabilities.maxTextureSize);\n      image = verifyColorSpace(texture, image);\n      const supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format, texture.colorSpace);\n      let glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace, texture.isVideoTexture);\n      setTextureParameters(textureType, texture, supportsMips);\n      let mipmap;\n      const mipmaps = texture.mipmaps;\n      const useTexStorage = isWebGL2 && texture.isVideoTexture !== true && glInternalFormat !== RGB_ETC1_Format;\n      const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true;\n      const dataReady = source.dataReady;\n      const levels = getMipLevels(texture, image, supportsMips);\n      if (texture.isDepthTexture) {\n        glInternalFormat = _gl.DEPTH_COMPONENT;\n        if (isWebGL2) {\n          if (texture.type === FloatType) {\n            glInternalFormat = _gl.DEPTH_COMPONENT32F;\n          } else if (texture.type === UnsignedIntType) {\n            glInternalFormat = _gl.DEPTH_COMPONENT24;\n          } else if (texture.type === UnsignedInt248Type) {\n            glInternalFormat = _gl.DEPTH24_STENCIL8;\n          } else {\n            glInternalFormat = _gl.DEPTH_COMPONENT16;\n          }\n        } else {\n          if (texture.type === FloatType) {\n            console.error(\"WebGLRenderer: Floating point depth texture requires WebGL2.\");\n          }\n        }\n        if (texture.format === DepthFormat && glInternalFormat === _gl.DEPTH_COMPONENT) {\n          if (texture.type !== UnsignedShortType && texture.type !== UnsignedIntType) {\n            console.warn(\"THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.\");\n            texture.type = UnsignedIntType;\n            glType = utils.convert(texture.type);\n          }\n        }\n        if (texture.format === DepthStencilFormat && glInternalFormat === _gl.DEPTH_COMPONENT) {\n          glInternalFormat = _gl.DEPTH_STENCIL;\n          if (texture.type !== UnsignedInt248Type) {\n            console.warn(\"THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.\");\n            texture.type = UnsignedInt248Type;\n            glType = utils.convert(texture.type);\n          }\n        }\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(_gl.TEXTURE_2D, 1, glInternalFormat, image.width, image.height);\n          } else {\n            state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null);\n          }\n        }\n      } else if (texture.isDataTexture) {\n        if (mipmaps.length > 0 && supportsMips) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height);\n            }\n            if (dataReady) {\n              state.texSubImage2D(_gl.TEXTURE_2D, 0, 0, 0, image.width, image.height, glFormat, glType, image.data);\n            }\n          } else {\n            state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data);\n          }\n        }\n      } else if (texture.isCompressedTexture) {\n        if (texture.isCompressedArrayTexture) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage3D(_gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height, image.depth);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    state.compressedTexSubImage3D(_gl.TEXTURE_2D_ARRAY, i2, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, mipmap.data, 0, 0);\n                  }\n                } else {\n                  state.compressedTexImage3D(_gl.TEXTURE_2D_ARRAY, i2, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, mipmap.data, 0, 0);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n              }\n            } else {\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage3D(_gl.TEXTURE_2D_ARRAY, i2, 0, 0, 0, mipmap.width, mipmap.height, image.depth, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage3D(_gl.TEXTURE_2D_ARRAY, i2, glInternalFormat, mipmap.width, mipmap.height, image.depth, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        } else {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    state.compressedTexSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                  }\n                } else {\n                  state.compressedTexImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()\");\n              }\n            } else {\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        }\n      } else if (texture.isDataArrayTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(_gl.TEXTURE_2D_ARRAY, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          if (dataReady) {\n            state.texSubImage3D(_gl.TEXTURE_2D_ARRAY, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n          }\n        } else {\n          state.texImage3D(_gl.TEXTURE_2D_ARRAY, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isData3DTexture) {\n        if (useTexStorage) {\n          if (allocateMemory) {\n            state.texStorage3D(_gl.TEXTURE_3D, levels, glInternalFormat, image.width, image.height, image.depth);\n          }\n          if (dataReady) {\n            state.texSubImage3D(_gl.TEXTURE_3D, 0, 0, 0, 0, image.width, image.height, image.depth, glFormat, glType, image.data);\n          }\n        } else {\n          state.texImage3D(_gl.TEXTURE_3D, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data);\n        }\n      } else if (texture.isFramebufferTexture) {\n        if (allocateMemory) {\n          if (useTexStorage) {\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height);\n          } else {\n            let width = image.width, height = image.height;\n            for (let i2 = 0; i2 < levels; i2++) {\n              state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, width, height, 0, glFormat, glType, null);\n              width >>= 1;\n              height >>= 1;\n            }\n          }\n        }\n      } else {\n        if (mipmaps.length > 0 && supportsMips) {\n          if (useTexStorage && allocateMemory) {\n            state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, mipmaps[0].width, mipmaps[0].height);\n          }\n          for (let i2 = 0, il = mipmaps.length; i2 < il; i2++) {\n            mipmap = mipmaps[i2];\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_2D, i2, 0, 0, glFormat, glType, mipmap);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_2D, i2, glInternalFormat, glFormat, glType, mipmap);\n            }\n          }\n          texture.generateMipmaps = false;\n        } else {\n          if (useTexStorage) {\n            if (allocateMemory) {\n              state.texStorage2D(_gl.TEXTURE_2D, levels, glInternalFormat, image.width, image.height);\n            }\n            if (dataReady) {\n              state.texSubImage2D(_gl.TEXTURE_2D, 0, 0, 0, glFormat, glType, image);\n            }\n          } else {\n            state.texImage2D(_gl.TEXTURE_2D, 0, glInternalFormat, glFormat, glType, image);\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(textureType);\n      }\n      sourceProperties.__version = source.version;\n      if (texture.onUpdate) texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function uploadCubeTexture(textureProperties, texture, slot) {\n    if (texture.image.length !== 6) return;\n    const forceUpload = initTexture(textureProperties, texture);\n    const source = texture.source;\n    state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture, _gl.TEXTURE0 + slot);\n    const sourceProperties = properties.get(source);\n    if (source.version !== sourceProperties.__version || forceUpload === true) {\n      state.activeTexture(_gl.TEXTURE0 + slot);\n      const workingPrimaries = ColorManagement.getPrimaries(ColorManagement.workingColorSpace);\n      const texturePrimaries = texture.colorSpace === NoColorSpace ? null : ColorManagement.getPrimaries(texture.colorSpace);\n      const unpackConversion = texture.colorSpace === NoColorSpace || workingPrimaries === texturePrimaries ? _gl.NONE : _gl.BROWSER_DEFAULT_WEBGL;\n      _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\n      _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\n      _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\n      _gl.pixelStorei(_gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, unpackConversion);\n      const isCompressed = texture.isCompressedTexture || texture.image[0].isCompressedTexture;\n      const isDataTexture = texture.image[0] && texture.image[0].isDataTexture;\n      const cubeImage = [];\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (!isCompressed && !isDataTexture) {\n          cubeImage[i2] = resizeImage(texture.image[i2], false, true, capabilities.maxCubemapSize);\n        } else {\n          cubeImage[i2] = isDataTexture ? texture.image[i2].image : texture.image[i2];\n        }\n        cubeImage[i2] = verifyColorSpace(texture, cubeImage[i2]);\n      }\n      const image = cubeImage[0], supportsMips = isPowerOfTwo$1(image) || isWebGL2, glFormat = utils.convert(texture.format, texture.colorSpace), glType = utils.convert(texture.type), glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace);\n      const useTexStorage = isWebGL2 && texture.isVideoTexture !== true;\n      const allocateMemory = sourceProperties.__version === void 0 || forceUpload === true;\n      const dataReady = source.dataReady;\n      let levels = getMipLevels(texture, image, supportsMips);\n      setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture, supportsMips);\n      let mipmaps;\n      if (isCompressed) {\n        if (useTexStorage && allocateMemory) {\n          state.texStorage2D(_gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, image.width, image.height);\n        }\n        for (let i2 = 0; i2 < 6; i2++) {\n          mipmaps = cubeImage[i2].mipmaps;\n          for (let j2 = 0; j2 < mipmaps.length; j2++) {\n            const mipmap = mipmaps[j2];\n            if (texture.format !== RGBAFormat) {\n              if (glFormat !== null) {\n                if (useTexStorage) {\n                  if (dataReady) {\n                    state.compressedTexSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, 0, 0, mipmap.width, mipmap.height, glFormat, mipmap.data);\n                  }\n                } else {\n                  state.compressedTexImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data);\n                }\n              } else {\n                console.warn(\"THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()\");\n              }\n            } else {\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, 0, 0, mipmap.width, mipmap.height, glFormat, glType, mipmap.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data);\n              }\n            }\n          }\n        }\n      } else {\n        mipmaps = texture.mipmaps;\n        if (useTexStorage && allocateMemory) {\n          if (mipmaps.length > 0) levels++;\n          state.texStorage2D(_gl.TEXTURE_CUBE_MAP, levels, glInternalFormat, cubeImage[0].width, cubeImage[0].height);\n        }\n        for (let i2 = 0; i2 < 6; i2++) {\n          if (isDataTexture) {\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, 0, 0, cubeImage[i2].width, cubeImage[i2].height, glFormat, glType, cubeImage[i2].data);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, glInternalFormat, cubeImage[i2].width, cubeImage[i2].height, 0, glFormat, glType, cubeImage[i2].data);\n            }\n            for (let j2 = 0; j2 < mipmaps.length; j2++) {\n              const mipmap = mipmaps[j2];\n              const mipmapImage = mipmap.image[i2].image;\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, 0, 0, mipmapImage.width, mipmapImage.height, glFormat, glType, mipmapImage.data);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data);\n              }\n            }\n          } else {\n            if (useTexStorage) {\n              if (dataReady) {\n                state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, 0, 0, glFormat, glType, cubeImage[i2]);\n              }\n            } else {\n              state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0, glInternalFormat, glFormat, glType, cubeImage[i2]);\n            }\n            for (let j2 = 0; j2 < mipmaps.length; j2++) {\n              const mipmap = mipmaps[j2];\n              if (useTexStorage) {\n                if (dataReady) {\n                  state.texSubImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, 0, 0, glFormat, glType, mipmap.image[i2]);\n                }\n              } else {\n                state.texImage2D(_gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, j2 + 1, glInternalFormat, glFormat, glType, mipmap.image[i2]);\n              }\n            }\n          }\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(_gl.TEXTURE_CUBE_MAP);\n      }\n      sourceProperties.__version = source.version;\n      if (texture.onUpdate) texture.onUpdate(texture);\n    }\n    textureProperties.__version = texture.version;\n  }\n  function setupFrameBufferTexture(framebuffer, renderTarget, texture, attachment, textureTarget, level) {\n    const glFormat = utils.convert(texture.format, texture.colorSpace);\n    const glType = utils.convert(texture.type);\n    const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace);\n    const renderTargetProperties = properties.get(renderTarget);\n    if (!renderTargetProperties.__hasExternalTextures) {\n      const width = Math.max(1, renderTarget.width >> level);\n      const height = Math.max(1, renderTarget.height >> level);\n      if (textureTarget === _gl.TEXTURE_3D || textureTarget === _gl.TEXTURE_2D_ARRAY) {\n        state.texImage3D(textureTarget, level, glInternalFormat, width, height, renderTarget.depth, 0, glFormat, glType, null);\n      } else {\n        state.texImage2D(textureTarget, level, glInternalFormat, width, height, 0, glFormat, glType, null);\n      }\n    }\n    state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n    if (useMultisampledRTT(renderTarget)) {\n      multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, 0, getRenderTargetSamples(renderTarget));\n    } else if (textureTarget === _gl.TEXTURE_2D || textureTarget >= _gl.TEXTURE_CUBE_MAP_POSITIVE_X && textureTarget <= _gl.TEXTURE_CUBE_MAP_NEGATIVE_Z) {\n      _gl.framebufferTexture2D(_gl.FRAMEBUFFER, attachment, textureTarget, properties.get(texture).__webglTexture, level);\n    }\n    state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n  }\n  function setupRenderBufferStorage(renderbuffer, renderTarget, isMultisample) {\n    _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderbuffer);\n    if (renderTarget.depthBuffer && !renderTarget.stencilBuffer) {\n      let glInternalFormat = isWebGL2 === true ? _gl.DEPTH_COMPONENT24 : _gl.DEPTH_COMPONENT16;\n      if (isMultisample || useMultisampledRTT(renderTarget)) {\n        const depthTexture = renderTarget.depthTexture;\n        if (depthTexture && depthTexture.isDepthTexture) {\n          if (depthTexture.type === FloatType) {\n            glInternalFormat = _gl.DEPTH_COMPONENT32F;\n          } else if (depthTexture.type === UnsignedIntType) {\n            glInternalFormat = _gl.DEPTH_COMPONENT24;\n          }\n        }\n        const samples = getRenderTargetSamples(renderTarget);\n        if (useMultisampledRTT(renderTarget)) {\n          multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else {\n          _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        }\n      } else {\n        _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height);\n      }\n      _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer);\n    } else if (renderTarget.depthBuffer && renderTarget.stencilBuffer) {\n      const samples = getRenderTargetSamples(renderTarget);\n      if (isMultisample && useMultisampledRTT(renderTarget) === false) {\n        _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height);\n      } else if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, _gl.DEPTH24_STENCIL8, renderTarget.width, renderTarget.height);\n      } else {\n        _gl.renderbufferStorage(_gl.RENDERBUFFER, _gl.DEPTH_STENCIL, renderTarget.width, renderTarget.height);\n      }\n      _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.RENDERBUFFER, renderbuffer);\n    } else {\n      const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n      for (let i2 = 0; i2 < textures.length; i2++) {\n        const texture = textures[i2];\n        const glFormat = utils.convert(texture.format, texture.colorSpace);\n        const glType = utils.convert(texture.type);\n        const glInternalFormat = getInternalFormat(texture.internalFormat, glFormat, glType, texture.colorSpace);\n        const samples = getRenderTargetSamples(renderTarget);\n        if (isMultisample && useMultisampledRTT(renderTarget) === false) {\n          _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else if (useMultisampledRTT(renderTarget)) {\n          multisampledRTTExt.renderbufferStorageMultisampleEXT(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n        } else {\n          _gl.renderbufferStorage(_gl.RENDERBUFFER, glInternalFormat, renderTarget.width, renderTarget.height);\n        }\n      }\n    }\n    _gl.bindRenderbuffer(_gl.RENDERBUFFER, null);\n  }\n  function setupDepthTexture(framebuffer, renderTarget) {\n    const isCube = renderTarget && renderTarget.isWebGLCubeRenderTarget;\n    if (isCube) throw new Error(\"Depth Texture with cube render targets is not supported\");\n    state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n    if (!(renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture)) {\n      throw new Error(\"renderTarget.depthTexture must be an instance of THREE.DepthTexture\");\n    }\n    if (!properties.get(renderTarget.depthTexture).__webglTexture || renderTarget.depthTexture.image.width !== renderTarget.width || renderTarget.depthTexture.image.height !== renderTarget.height) {\n      renderTarget.depthTexture.image.width = renderTarget.width;\n      renderTarget.depthTexture.image.height = renderTarget.height;\n      renderTarget.depthTexture.needsUpdate = true;\n    }\n    setTexture2D(renderTarget.depthTexture, 0);\n    const webglDepthTexture = properties.get(renderTarget.depthTexture).__webglTexture;\n    const samples = getRenderTargetSamples(renderTarget);\n    if (renderTarget.depthTexture.format === DepthFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0);\n      }\n    } else if (renderTarget.depthTexture.format === DepthStencilFormat) {\n      if (useMultisampledRTT(renderTarget)) {\n        multisampledRTTExt.framebufferTexture2DMultisampleEXT(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0, samples);\n      } else {\n        _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.DEPTH_STENCIL_ATTACHMENT, _gl.TEXTURE_2D, webglDepthTexture, 0);\n      }\n    } else {\n      throw new Error(\"Unknown depthTexture format\");\n    }\n  }\n  function setupDepthRenderbuffer(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    if (renderTarget.depthTexture && !renderTargetProperties.__autoAllocateDepthBuffer) {\n      if (isCube) throw new Error(\"target.depthTexture not supported in Cube render targets\");\n      setupDepthTexture(renderTargetProperties.__webglFramebuffer, renderTarget);\n    } else {\n      if (isCube) {\n        renderTargetProperties.__webglDepthbuffer = [];\n        for (let i2 = 0; i2 < 6; i2++) {\n          state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer[i2]);\n          renderTargetProperties.__webglDepthbuffer[i2] = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer[i2], renderTarget, false);\n        }\n      } else {\n        state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n        renderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\n        setupRenderBufferStorage(renderTargetProperties.__webglDepthbuffer, renderTarget, false);\n      }\n    }\n    state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n  }\n  function rebindTextures(renderTarget, colorTexture, depthTexture) {\n    const renderTargetProperties = properties.get(renderTarget);\n    if (colorTexture !== void 0) {\n      setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, renderTarget.texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, 0);\n    }\n    if (depthTexture !== void 0) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function setupRenderTarget(renderTarget) {\n    const texture = renderTarget.texture;\n    const renderTargetProperties = properties.get(renderTarget);\n    const textureProperties = properties.get(texture);\n    renderTarget.addEventListener(\"dispose\", onRenderTargetDispose);\n    if (renderTarget.isWebGLMultipleRenderTargets !== true) {\n      if (textureProperties.__webglTexture === void 0) {\n        textureProperties.__webglTexture = _gl.createTexture();\n      }\n      textureProperties.__version = texture.version;\n      info.memory.textures++;\n    }\n    const isCube = renderTarget.isWebGLCubeRenderTarget === true;\n    const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n    const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n    if (isCube) {\n      renderTargetProperties.__webglFramebuffer = [];\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0) {\n          renderTargetProperties.__webglFramebuffer[i2] = [];\n          for (let level = 0; level < texture.mipmaps.length; level++) {\n            renderTargetProperties.__webglFramebuffer[i2][level] = _gl.createFramebuffer();\n          }\n        } else {\n          renderTargetProperties.__webglFramebuffer[i2] = _gl.createFramebuffer();\n        }\n      }\n    } else {\n      if (isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0) {\n        renderTargetProperties.__webglFramebuffer = [];\n        for (let level = 0; level < texture.mipmaps.length; level++) {\n          renderTargetProperties.__webglFramebuffer[level] = _gl.createFramebuffer();\n        }\n      } else {\n        renderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\n      }\n      if (isMultipleRenderTargets) {\n        if (capabilities.drawBuffers) {\n          const textures = renderTarget.texture;\n          for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n            const attachmentProperties = properties.get(textures[i2]);\n            if (attachmentProperties.__webglTexture === void 0) {\n              attachmentProperties.__webglTexture = _gl.createTexture();\n              info.memory.textures++;\n            }\n          }\n        } else {\n          console.warn(\"THREE.WebGLRenderer: WebGLMultipleRenderTargets can only be used with WebGL2 or WEBGL_draw_buffers extension.\");\n        }\n      }\n      if (isWebGL2 && renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) {\n        const textures = isMultipleRenderTargets ? texture : [texture];\n        renderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\n        renderTargetProperties.__webglColorRenderbuffer = [];\n        state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n        for (let i2 = 0; i2 < textures.length; i2++) {\n          const texture2 = textures[i2];\n          renderTargetProperties.__webglColorRenderbuffer[i2] = _gl.createRenderbuffer();\n          _gl.bindRenderbuffer(_gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n          const glFormat = utils.convert(texture2.format, texture2.colorSpace);\n          const glType = utils.convert(texture2.type);\n          const glInternalFormat = getInternalFormat(texture2.internalFormat, glFormat, glType, texture2.colorSpace, renderTarget.isXRRenderTarget === true);\n          const samples = getRenderTargetSamples(renderTarget);\n          _gl.renderbufferStorageMultisample(_gl.RENDERBUFFER, samples, glInternalFormat, renderTarget.width, renderTarget.height);\n          _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n        }\n        _gl.bindRenderbuffer(_gl.RENDERBUFFER, null);\n        if (renderTarget.depthBuffer) {\n          renderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\n          setupRenderBufferStorage(renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true);\n        }\n        state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n      }\n    }\n    if (isCube) {\n      state.bindTexture(_gl.TEXTURE_CUBE_MAP, textureProperties.__webglTexture);\n      setTextureParameters(_gl.TEXTURE_CUBE_MAP, texture, supportsMips);\n      for (let i2 = 0; i2 < 6; i2++) {\n        if (isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0) {\n          for (let level = 0; level < texture.mipmaps.length; level++) {\n            setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i2][level], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, level);\n          }\n        } else {\n          setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[i2], renderTarget, texture, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + i2, 0);\n        }\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(_gl.TEXTURE_CUBE_MAP);\n      }\n      state.unbindTexture();\n    } else if (isMultipleRenderTargets) {\n      const textures = renderTarget.texture;\n      for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n        const attachment = textures[i2];\n        const attachmentProperties = properties.get(attachment);\n        state.bindTexture(_gl.TEXTURE_2D, attachmentProperties.__webglTexture);\n        setTextureParameters(_gl.TEXTURE_2D, attachment, supportsMips);\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, attachment, _gl.COLOR_ATTACHMENT0 + i2, _gl.TEXTURE_2D, 0);\n        if (textureNeedsGenerateMipmaps(attachment, supportsMips)) {\n          generateMipmap(_gl.TEXTURE_2D);\n        }\n      }\n      state.unbindTexture();\n    } else {\n      let glTextureType = _gl.TEXTURE_2D;\n      if (renderTarget.isWebGL3DRenderTarget || renderTarget.isWebGLArrayRenderTarget) {\n        if (isWebGL2) {\n          glTextureType = renderTarget.isWebGL3DRenderTarget ? _gl.TEXTURE_3D : _gl.TEXTURE_2D_ARRAY;\n        } else {\n          console.error(\"THREE.WebGLTextures: THREE.Data3DTexture and THREE.DataArrayTexture only supported with WebGL2.\");\n        }\n      }\n      state.bindTexture(glTextureType, textureProperties.__webglTexture);\n      setTextureParameters(glTextureType, texture, supportsMips);\n      if (isWebGL2 && texture.mipmaps && texture.mipmaps.length > 0) {\n        for (let level = 0; level < texture.mipmaps.length; level++) {\n          setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer[level], renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, level);\n        }\n      } else {\n        setupFrameBufferTexture(renderTargetProperties.__webglFramebuffer, renderTarget, texture, _gl.COLOR_ATTACHMENT0, glTextureType, 0);\n      }\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        generateMipmap(glTextureType);\n      }\n      state.unbindTexture();\n    }\n    if (renderTarget.depthBuffer) {\n      setupDepthRenderbuffer(renderTarget);\n    }\n  }\n  function updateRenderTargetMipmap(renderTarget) {\n    const supportsMips = isPowerOfTwo$1(renderTarget) || isWebGL2;\n    const textures = renderTarget.isWebGLMultipleRenderTargets === true ? renderTarget.texture : [renderTarget.texture];\n    for (let i2 = 0, il = textures.length; i2 < il; i2++) {\n      const texture = textures[i2];\n      if (textureNeedsGenerateMipmaps(texture, supportsMips)) {\n        const target = renderTarget.isWebGLCubeRenderTarget ? _gl.TEXTURE_CUBE_MAP : _gl.TEXTURE_2D;\n        const webglTexture = properties.get(texture).__webglTexture;\n        state.bindTexture(target, webglTexture);\n        generateMipmap(target);\n        state.unbindTexture();\n      }\n    }\n  }\n  function updateMultisampleRenderTarget(renderTarget) {\n    if (isWebGL2 && renderTarget.samples > 0 && useMultisampledRTT(renderTarget) === false) {\n      const textures = renderTarget.isWebGLMultipleRenderTargets ? renderTarget.texture : [renderTarget.texture];\n      const width = renderTarget.width;\n      const height = renderTarget.height;\n      let mask = _gl.COLOR_BUFFER_BIT;\n      const invalidationArray = [];\n      const depthStyle = renderTarget.stencilBuffer ? _gl.DEPTH_STENCIL_ATTACHMENT : _gl.DEPTH_ATTACHMENT;\n      const renderTargetProperties = properties.get(renderTarget);\n      const isMultipleRenderTargets = renderTarget.isWebGLMultipleRenderTargets === true;\n      if (isMultipleRenderTargets) {\n        for (let i2 = 0; i2 < textures.length; i2++) {\n          state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n          _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.RENDERBUFFER, null);\n          state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n          _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.TEXTURE_2D, null, 0);\n        }\n      }\n      state.bindFramebuffer(_gl.READ_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n      state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n      for (let i2 = 0; i2 < textures.length; i2++) {\n        invalidationArray.push(_gl.COLOR_ATTACHMENT0 + i2);\n        if (renderTarget.depthBuffer) {\n          invalidationArray.push(depthStyle);\n        }\n        const ignoreDepthValues = renderTargetProperties.__ignoreDepthValues !== void 0 ? renderTargetProperties.__ignoreDepthValues : false;\n        if (ignoreDepthValues === false) {\n          if (renderTarget.depthBuffer) mask |= _gl.DEPTH_BUFFER_BIT;\n          if (renderTarget.stencilBuffer) mask |= _gl.STENCIL_BUFFER_BIT;\n        }\n        if (isMultipleRenderTargets) {\n          _gl.framebufferRenderbuffer(_gl.READ_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n        }\n        if (ignoreDepthValues === true) {\n          _gl.invalidateFramebuffer(_gl.READ_FRAMEBUFFER, [depthStyle]);\n          _gl.invalidateFramebuffer(_gl.DRAW_FRAMEBUFFER, [depthStyle]);\n        }\n        if (isMultipleRenderTargets) {\n          const webglTexture = properties.get(textures[i2]).__webglTexture;\n          _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_2D, webglTexture, 0);\n        }\n        _gl.blitFramebuffer(0, 0, width, height, 0, 0, width, height, mask, _gl.NEAREST);\n        if (supportsInvalidateFramebuffer) {\n          _gl.invalidateFramebuffer(_gl.READ_FRAMEBUFFER, invalidationArray);\n        }\n      }\n      state.bindFramebuffer(_gl.READ_FRAMEBUFFER, null);\n      state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, null);\n      if (isMultipleRenderTargets) {\n        for (let i2 = 0; i2 < textures.length; i2++) {\n          state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n          _gl.framebufferRenderbuffer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.RENDERBUFFER, renderTargetProperties.__webglColorRenderbuffer[i2]);\n          const webglTexture = properties.get(textures[i2]).__webglTexture;\n          state.bindFramebuffer(_gl.FRAMEBUFFER, renderTargetProperties.__webglFramebuffer);\n          _gl.framebufferTexture2D(_gl.DRAW_FRAMEBUFFER, _gl.COLOR_ATTACHMENT0 + i2, _gl.TEXTURE_2D, webglTexture, 0);\n        }\n      }\n      state.bindFramebuffer(_gl.DRAW_FRAMEBUFFER, renderTargetProperties.__webglMultisampledFramebuffer);\n    }\n  }\n  function getRenderTargetSamples(renderTarget) {\n    return Math.min(capabilities.maxSamples, renderTarget.samples);\n  }\n  function useMultisampledRTT(renderTarget) {\n    const renderTargetProperties = properties.get(renderTarget);\n    return isWebGL2 && renderTarget.samples > 0 && extensions2.has(\"WEBGL_multisampled_render_to_texture\") === true && renderTargetProperties.__useRenderToTexture !== false;\n  }\n  function updateVideoTexture(texture) {\n    const frame = info.render.frame;\n    if (_videoTextures.get(texture) !== frame) {\n      _videoTextures.set(texture, frame);\n      texture.update();\n    }\n  }\n  function verifyColorSpace(texture, image) {\n    const colorSpace = texture.colorSpace;\n    const format = texture.format;\n    const type = texture.type;\n    if (texture.isCompressedTexture === true || texture.isVideoTexture === true || texture.format === _SRGBAFormat) return image;\n    if (colorSpace !== LinearSRGBColorSpace$1 && colorSpace !== NoColorSpace) {\n      if (ColorManagement.getTransfer(colorSpace) === SRGBTransfer) {\n        if (isWebGL2 === false) {\n          if (extensions2.has(\"EXT_sRGB\") === true && format === RGBAFormat) {\n            texture.format = _SRGBAFormat;\n            texture.minFilter = LinearFilter;\n            texture.generateMipmaps = false;\n          } else {\n            image = ImageUtils.sRGBToLinear(image);\n          }\n        } else {\n          if (format !== RGBAFormat || type !== UnsignedByteType) {\n            console.warn(\"THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType.\");\n          }\n        }\n      } else {\n        console.error(\"THREE.WebGLTextures: Unsupported texture color space:\", colorSpace);\n      }\n    }\n    return image;\n  }\n  this.allocateTextureUnit = allocateTextureUnit;\n  this.resetTextureUnits = resetTextureUnits;\n  this.setTexture2D = setTexture2D;\n  this.setTexture2DArray = setTexture2DArray;\n  this.setTexture3D = setTexture3D;\n  this.setTextureCube = setTextureCube;\n  this.rebindTextures = rebindTextures;\n  this.setupRenderTarget = setupRenderTarget;\n  this.updateRenderTargetMipmap = updateRenderTargetMipmap;\n  this.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\n  this.setupDepthRenderbuffer = setupDepthRenderbuffer;\n  this.setupFrameBufferTexture = setupFrameBufferTexture;\n  this.useMultisampledRTT = useMultisampledRTT;\n}\nfunction WebGLUtils(gl, extensions2, capabilities) {\n  const isWebGL2 = capabilities.isWebGL2;\n  function convert(p2, colorSpace = NoColorSpace) {\n    let extension;\n    const transfer = ColorManagement.getTransfer(colorSpace);\n    if (p2 === UnsignedByteType) return gl.UNSIGNED_BYTE;\n    if (p2 === UnsignedShort4444Type) return gl.UNSIGNED_SHORT_4_4_4_4;\n    if (p2 === UnsignedShort5551Type) return gl.UNSIGNED_SHORT_5_5_5_1;\n    if (p2 === ByteType) return gl.BYTE;\n    if (p2 === ShortType) return gl.SHORT;\n    if (p2 === UnsignedShortType) return gl.UNSIGNED_SHORT;\n    if (p2 === IntType) return gl.INT;\n    if (p2 === UnsignedIntType) return gl.UNSIGNED_INT;\n    if (p2 === FloatType) return gl.FLOAT;\n    if (p2 === HalfFloatType) {\n      if (isWebGL2) return gl.HALF_FLOAT;\n      extension = extensions2.get(\"OES_texture_half_float\");\n      if (extension !== null) {\n        return extension.HALF_FLOAT_OES;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === AlphaFormat) return gl.ALPHA;\n    if (p2 === RGBAFormat) return gl.RGBA;\n    if (p2 === LuminanceFormat) return gl.LUMINANCE;\n    if (p2 === LuminanceAlphaFormat) return gl.LUMINANCE_ALPHA;\n    if (p2 === DepthFormat) return gl.DEPTH_COMPONENT;\n    if (p2 === DepthStencilFormat) return gl.DEPTH_STENCIL;\n    if (p2 === _SRGBAFormat) {\n      extension = extensions2.get(\"EXT_sRGB\");\n      if (extension !== null) {\n        return extension.SRGB_ALPHA_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RedFormat) return gl.RED;\n    if (p2 === RedIntegerFormat) return gl.RED_INTEGER;\n    if (p2 === RGFormat) return gl.RG;\n    if (p2 === RGIntegerFormat) return gl.RG_INTEGER;\n    if (p2 === RGBAIntegerFormat) return gl.RGBA_INTEGER;\n    if (p2 === RGB_S3TC_DXT1_Format || p2 === RGBA_S3TC_DXT1_Format || p2 === RGBA_S3TC_DXT3_Format || p2 === RGBA_S3TC_DXT5_Format) {\n      if (transfer === SRGBTransfer) {\n        extension = extensions2.get(\"WEBGL_compressed_texture_s3tc_srgb\");\n        if (extension !== null) {\n          if (p2 === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n          if (p2 === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      } else {\n        extension = extensions2.get(\"WEBGL_compressed_texture_s3tc\");\n        if (extension !== null) {\n          if (p2 === RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\n          if (p2 === RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n          if (p2 === RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n        } else {\n          return null;\n        }\n      }\n    }\n    if (p2 === RGB_PVRTC_4BPPV1_Format || p2 === RGB_PVRTC_2BPPV1_Format || p2 === RGBA_PVRTC_4BPPV1_Format || p2 === RGBA_PVRTC_2BPPV1_Format) {\n      extension = extensions2.get(\"WEBGL_compressed_texture_pvrtc\");\n      if (extension !== null) {\n        if (p2 === RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n        if (p2 === RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n        if (p2 === RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n        if (p2 === RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGB_ETC1_Format) {\n      extension = extensions2.get(\"WEBGL_compressed_texture_etc1\");\n      if (extension !== null) {\n        return extension.COMPRESSED_RGB_ETC1_WEBGL;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGB_ETC2_Format || p2 === RGBA_ETC2_EAC_Format) {\n      extension = extensions2.get(\"WEBGL_compressed_texture_etc\");\n      if (extension !== null) {\n        if (p2 === RGB_ETC2_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ETC2 : extension.COMPRESSED_RGB8_ETC2;\n        if (p2 === RGBA_ETC2_EAC_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC : extension.COMPRESSED_RGBA8_ETC2_EAC;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGBA_ASTC_4x4_Format || p2 === RGBA_ASTC_5x4_Format || p2 === RGBA_ASTC_5x5_Format || p2 === RGBA_ASTC_6x5_Format || p2 === RGBA_ASTC_6x6_Format || p2 === RGBA_ASTC_8x5_Format || p2 === RGBA_ASTC_8x6_Format || p2 === RGBA_ASTC_8x8_Format || p2 === RGBA_ASTC_10x5_Format || p2 === RGBA_ASTC_10x6_Format || p2 === RGBA_ASTC_10x8_Format || p2 === RGBA_ASTC_10x10_Format || p2 === RGBA_ASTC_12x10_Format || p2 === RGBA_ASTC_12x12_Format) {\n      extension = extensions2.get(\"WEBGL_compressed_texture_astc\");\n      if (extension !== null) {\n        if (p2 === RGBA_ASTC_4x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR : extension.COMPRESSED_RGBA_ASTC_4x4_KHR;\n        if (p2 === RGBA_ASTC_5x4_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR : extension.COMPRESSED_RGBA_ASTC_5x4_KHR;\n        if (p2 === RGBA_ASTC_5x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR : extension.COMPRESSED_RGBA_ASTC_5x5_KHR;\n        if (p2 === RGBA_ASTC_6x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR : extension.COMPRESSED_RGBA_ASTC_6x5_KHR;\n        if (p2 === RGBA_ASTC_6x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR : extension.COMPRESSED_RGBA_ASTC_6x6_KHR;\n        if (p2 === RGBA_ASTC_8x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR : extension.COMPRESSED_RGBA_ASTC_8x5_KHR;\n        if (p2 === RGBA_ASTC_8x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR : extension.COMPRESSED_RGBA_ASTC_8x6_KHR;\n        if (p2 === RGBA_ASTC_8x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR : extension.COMPRESSED_RGBA_ASTC_8x8_KHR;\n        if (p2 === RGBA_ASTC_10x5_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR : extension.COMPRESSED_RGBA_ASTC_10x5_KHR;\n        if (p2 === RGBA_ASTC_10x6_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR : extension.COMPRESSED_RGBA_ASTC_10x6_KHR;\n        if (p2 === RGBA_ASTC_10x8_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR : extension.COMPRESSED_RGBA_ASTC_10x8_KHR;\n        if (p2 === RGBA_ASTC_10x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR : extension.COMPRESSED_RGBA_ASTC_10x10_KHR;\n        if (p2 === RGBA_ASTC_12x10_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR : extension.COMPRESSED_RGBA_ASTC_12x10_KHR;\n        if (p2 === RGBA_ASTC_12x12_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR : extension.COMPRESSED_RGBA_ASTC_12x12_KHR;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RGBA_BPTC_Format || p2 === RGB_BPTC_SIGNED_Format || p2 === RGB_BPTC_UNSIGNED_Format) {\n      extension = extensions2.get(\"EXT_texture_compression_bptc\");\n      if (extension !== null) {\n        if (p2 === RGBA_BPTC_Format) return transfer === SRGBTransfer ? extension.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT : extension.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n        if (p2 === RGB_BPTC_SIGNED_Format) return extension.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n        if (p2 === RGB_BPTC_UNSIGNED_Format) return extension.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === RED_RGTC1_Format || p2 === SIGNED_RED_RGTC1_Format || p2 === RED_GREEN_RGTC2_Format || p2 === SIGNED_RED_GREEN_RGTC2_Format) {\n      extension = extensions2.get(\"EXT_texture_compression_rgtc\");\n      if (extension !== null) {\n        if (p2 === RGBA_BPTC_Format) return extension.COMPRESSED_RED_RGTC1_EXT;\n        if (p2 === SIGNED_RED_RGTC1_Format) return extension.COMPRESSED_SIGNED_RED_RGTC1_EXT;\n        if (p2 === RED_GREEN_RGTC2_Format) return extension.COMPRESSED_RED_GREEN_RGTC2_EXT;\n        if (p2 === SIGNED_RED_GREEN_RGTC2_Format) return extension.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT;\n      } else {\n        return null;\n      }\n    }\n    if (p2 === UnsignedInt248Type) {\n      if (isWebGL2) return gl.UNSIGNED_INT_24_8;\n      extension = extensions2.get(\"WEBGL_depth_texture\");\n      if (extension !== null) {\n        return extension.UNSIGNED_INT_24_8_WEBGL;\n      } else {\n        return null;\n      }\n    }\n    return gl[p2] !== void 0 ? gl[p2] : null;\n  }\n  return { convert };\n}\nclass ArrayCamera extends PerspectiveCamera {\n  constructor(array = []) {\n    super();\n    this.isArrayCamera = true;\n    this.cameras = array;\n  }\n}\nclass Group extends Object3D {\n  constructor() {\n    super();\n    this.isGroup = true;\n    this.type = \"Group\";\n  }\n}\nconst _moveEvent = { type: \"move\" };\nclass WebXRController {\n  constructor() {\n    this._targetRay = null;\n    this._grip = null;\n    this._hand = null;\n  }\n  getHandSpace() {\n    if (this._hand === null) {\n      this._hand = new Group();\n      this._hand.matrixAutoUpdate = false;\n      this._hand.visible = false;\n      this._hand.joints = {};\n      this._hand.inputState = { pinching: false };\n    }\n    return this._hand;\n  }\n  getTargetRaySpace() {\n    if (this._targetRay === null) {\n      this._targetRay = new Group();\n      this._targetRay.matrixAutoUpdate = false;\n      this._targetRay.visible = false;\n      this._targetRay.hasLinearVelocity = false;\n      this._targetRay.linearVelocity = new Vector3();\n      this._targetRay.hasAngularVelocity = false;\n      this._targetRay.angularVelocity = new Vector3();\n    }\n    return this._targetRay;\n  }\n  getGripSpace() {\n    if (this._grip === null) {\n      this._grip = new Group();\n      this._grip.matrixAutoUpdate = false;\n      this._grip.visible = false;\n      this._grip.hasLinearVelocity = false;\n      this._grip.linearVelocity = new Vector3();\n      this._grip.hasAngularVelocity = false;\n      this._grip.angularVelocity = new Vector3();\n    }\n    return this._grip;\n  }\n  dispatchEvent(event) {\n    if (this._targetRay !== null) {\n      this._targetRay.dispatchEvent(event);\n    }\n    if (this._grip !== null) {\n      this._grip.dispatchEvent(event);\n    }\n    if (this._hand !== null) {\n      this._hand.dispatchEvent(event);\n    }\n    return this;\n  }\n  connect(inputSource) {\n    if (inputSource && inputSource.hand) {\n      const hand = this._hand;\n      if (hand) {\n        for (const inputjoint of inputSource.hand.values()) {\n          this._getHandJoint(hand, inputjoint);\n        }\n      }\n    }\n    this.dispatchEvent({ type: \"connected\", data: inputSource });\n    return this;\n  }\n  disconnect(inputSource) {\n    this.dispatchEvent({ type: \"disconnected\", data: inputSource });\n    if (this._targetRay !== null) {\n      this._targetRay.visible = false;\n    }\n    if (this._grip !== null) {\n      this._grip.visible = false;\n    }\n    if (this._hand !== null) {\n      this._hand.visible = false;\n    }\n    return this;\n  }\n  update(inputSource, frame, referenceSpace) {\n    let inputPose = null;\n    let gripPose = null;\n    let handPose = null;\n    const targetRay = this._targetRay;\n    const grip = this._grip;\n    const hand = this._hand;\n    if (inputSource && frame.session.visibilityState !== \"visible-blurred\") {\n      if (hand && inputSource.hand) {\n        handPose = true;\n        for (const inputjoint of inputSource.hand.values()) {\n          const jointPose = frame.getJointPose(inputjoint, referenceSpace);\n          const joint = this._getHandJoint(hand, inputjoint);\n          if (jointPose !== null) {\n            joint.matrix.fromArray(jointPose.transform.matrix);\n            joint.matrix.decompose(joint.position, joint.rotation, joint.scale);\n            joint.matrixWorldNeedsUpdate = true;\n            joint.jointRadius = jointPose.radius;\n          }\n          joint.visible = jointPose !== null;\n        }\n        const indexTip = hand.joints[\"index-finger-tip\"];\n        const thumbTip = hand.joints[\"thumb-tip\"];\n        const distance = indexTip.position.distanceTo(thumbTip.position);\n        const distanceToPinch = 0.02;\n        const threshold = 5e-3;\n        if (hand.inputState.pinching && distance > distanceToPinch + threshold) {\n          hand.inputState.pinching = false;\n          this.dispatchEvent({\n            type: \"pinchend\",\n            handedness: inputSource.handedness,\n            target: this\n          });\n        } else if (!hand.inputState.pinching && distance <= distanceToPinch - threshold) {\n          hand.inputState.pinching = true;\n          this.dispatchEvent({\n            type: \"pinchstart\",\n            handedness: inputSource.handedness,\n            target: this\n          });\n        }\n      } else {\n        if (grip !== null && inputSource.gripSpace) {\n          gripPose = frame.getPose(inputSource.gripSpace, referenceSpace);\n          if (gripPose !== null) {\n            grip.matrix.fromArray(gripPose.transform.matrix);\n            grip.matrix.decompose(grip.position, grip.rotation, grip.scale);\n            grip.matrixWorldNeedsUpdate = true;\n            if (gripPose.linearVelocity) {\n              grip.hasLinearVelocity = true;\n              grip.linearVelocity.copy(gripPose.linearVelocity);\n            } else {\n              grip.hasLinearVelocity = false;\n            }\n            if (gripPose.angularVelocity) {\n              grip.hasAngularVelocity = true;\n              grip.angularVelocity.copy(gripPose.angularVelocity);\n            } else {\n              grip.hasAngularVelocity = false;\n            }\n          }\n        }\n      }\n      if (targetRay !== null) {\n        inputPose = frame.getPose(inputSource.targetRaySpace, referenceSpace);\n        if (inputPose === null && gripPose !== null) {\n          inputPose = gripPose;\n        }\n        if (inputPose !== null) {\n          targetRay.matrix.fromArray(inputPose.transform.matrix);\n          targetRay.matrix.decompose(targetRay.position, targetRay.rotation, targetRay.scale);\n          targetRay.matrixWorldNeedsUpdate = true;\n          if (inputPose.linearVelocity) {\n            targetRay.hasLinearVelocity = true;\n            targetRay.linearVelocity.copy(inputPose.linearVelocity);\n          } else {\n            targetRay.hasLinearVelocity = false;\n          }\n          if (inputPose.angularVelocity) {\n            targetRay.hasAngularVelocity = true;\n            targetRay.angularVelocity.copy(inputPose.angularVelocity);\n          } else {\n            targetRay.hasAngularVelocity = false;\n          }\n          this.dispatchEvent(_moveEvent);\n        }\n      }\n    }\n    if (targetRay !== null) {\n      targetRay.visible = inputPose !== null;\n    }\n    if (grip !== null) {\n      grip.visible = gripPose !== null;\n    }\n    if (hand !== null) {\n      hand.visible = handPose !== null;\n    }\n    return this;\n  }\n  // private method\n  _getHandJoint(hand, inputjoint) {\n    if (hand.joints[inputjoint.jointName] === void 0) {\n      const joint = new Group();\n      joint.matrixAutoUpdate = false;\n      joint.visible = false;\n      hand.joints[inputjoint.jointName] = joint;\n      hand.add(joint);\n    }\n    return hand.joints[inputjoint.jointName];\n  }\n}\nconst _occlusion_vertex = `\nvoid main() {\n\n\tgl_Position = vec4( position, 1.0 );\n\n}`;\nconst _occlusion_fragment = `\nuniform sampler2DArray depthColor;\nuniform float depthWidth;\nuniform float depthHeight;\n\nvoid main() {\n\n\tvec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );\n\n\tif ( coord.x >= 1.0 ) {\n\n\t\tgl_FragDepthEXT = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;\n\n\t} else {\n\n\t\tgl_FragDepthEXT = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;\n\n\t}\n\n}`;\nclass WebXRDepthSensing {\n  constructor() {\n    this.texture = null;\n    this.mesh = null;\n    this.depthNear = 0;\n    this.depthFar = 0;\n  }\n  init(renderer, depthData, renderState) {\n    if (this.texture === null) {\n      const texture = new Texture();\n      const texProps = renderer.properties.get(texture);\n      texProps.__webglTexture = depthData.texture;\n      if (depthData.depthNear != renderState.depthNear || depthData.depthFar != renderState.depthFar) {\n        this.depthNear = depthData.depthNear;\n        this.depthFar = depthData.depthFar;\n      }\n      this.texture = texture;\n    }\n  }\n  render(renderer, cameraXR) {\n    if (this.texture !== null) {\n      if (this.mesh === null) {\n        const viewport = cameraXR.cameras[0].viewport;\n        const material = new ShaderMaterial({\n          extensions: { fragDepth: true },\n          vertexShader: _occlusion_vertex,\n          fragmentShader: _occlusion_fragment,\n          uniforms: {\n            depthColor: { value: this.texture },\n            depthWidth: { value: viewport.z },\n            depthHeight: { value: viewport.w }\n          }\n        });\n        this.mesh = new Mesh(new PlaneGeometry(20, 20), material);\n      }\n      renderer.render(this.mesh, cameraXR);\n    }\n  }\n  reset() {\n    this.texture = null;\n    this.mesh = null;\n  }\n}\nclass WebXRManager extends EventDispatcher {\n  constructor(renderer, gl) {\n    super();\n    const scope = this;\n    let session = null;\n    let framebufferScaleFactor = 1;\n    let referenceSpace = null;\n    let referenceSpaceType = \"local-floor\";\n    let foveation = 1;\n    let customReferenceSpace = null;\n    let pose = null;\n    let glBinding = null;\n    let glProjLayer = null;\n    let glBaseLayer = null;\n    let xrFrame = null;\n    const depthSensing = new WebXRDepthSensing();\n    const attributes = gl.getContextAttributes();\n    let initialRenderTarget = null;\n    let newRenderTarget = null;\n    const controllers = [];\n    const controllerInputSources = [];\n    const currentSize = new Vector2();\n    let currentPixelRatio = null;\n    const cameraL = new PerspectiveCamera();\n    cameraL.layers.enable(1);\n    cameraL.viewport = new Vector4();\n    const cameraR = new PerspectiveCamera();\n    cameraR.layers.enable(2);\n    cameraR.viewport = new Vector4();\n    const cameras = [cameraL, cameraR];\n    const cameraXR = new ArrayCamera();\n    cameraXR.layers.enable(1);\n    cameraXR.layers.enable(2);\n    let _currentDepthNear = null;\n    let _currentDepthFar = null;\n    this.cameraAutoUpdate = true;\n    this.enabled = false;\n    this.isPresenting = false;\n    this.getController = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getTargetRaySpace();\n    };\n    this.getControllerGrip = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getGripSpace();\n    };\n    this.getHand = function(index) {\n      let controller = controllers[index];\n      if (controller === void 0) {\n        controller = new WebXRController();\n        controllers[index] = controller;\n      }\n      return controller.getHandSpace();\n    };\n    function onSessionEvent(event) {\n      const controllerIndex = controllerInputSources.indexOf(event.inputSource);\n      if (controllerIndex === -1) {\n        return;\n      }\n      const controller = controllers[controllerIndex];\n      if (controller !== void 0) {\n        controller.update(event.inputSource, event.frame, customReferenceSpace || referenceSpace);\n        controller.dispatchEvent({ type: event.type, data: event.inputSource });\n      }\n    }\n    function onSessionEnd() {\n      session.removeEventListener(\"select\", onSessionEvent);\n      session.removeEventListener(\"selectstart\", onSessionEvent);\n      session.removeEventListener(\"selectend\", onSessionEvent);\n      session.removeEventListener(\"squeeze\", onSessionEvent);\n      session.removeEventListener(\"squeezestart\", onSessionEvent);\n      session.removeEventListener(\"squeezeend\", onSessionEvent);\n      session.removeEventListener(\"end\", onSessionEnd);\n      session.removeEventListener(\"inputsourceschange\", onInputSourcesChange);\n      for (let i2 = 0; i2 < controllers.length; i2++) {\n        const inputSource = controllerInputSources[i2];\n        if (inputSource === null) continue;\n        controllerInputSources[i2] = null;\n        controllers[i2].disconnect(inputSource);\n      }\n      _currentDepthNear = null;\n      _currentDepthFar = null;\n      depthSensing.reset();\n      renderer.setRenderTarget(initialRenderTarget);\n      glBaseLayer = null;\n      glProjLayer = null;\n      glBinding = null;\n      session = null;\n      newRenderTarget = null;\n      animation.stop();\n      scope.isPresenting = false;\n      renderer.setPixelRatio(currentPixelRatio);\n      renderer.setSize(currentSize.width, currentSize.height, false);\n      scope.dispatchEvent({ type: \"sessionend\" });\n    }\n    this.setFramebufferScaleFactor = function(value) {\n      framebufferScaleFactor = value;\n      if (scope.isPresenting === true) {\n        console.warn(\"THREE.WebXRManager: Cannot change framebuffer scale while presenting.\");\n      }\n    };\n    this.setReferenceSpaceType = function(value) {\n      referenceSpaceType = value;\n      if (scope.isPresenting === true) {\n        console.warn(\"THREE.WebXRManager: Cannot change reference space type while presenting.\");\n      }\n    };\n    this.getReferenceSpace = function() {\n      return customReferenceSpace || referenceSpace;\n    };\n    this.setReferenceSpace = function(space) {\n      customReferenceSpace = space;\n    };\n    this.getBaseLayer = function() {\n      return glProjLayer !== null ? glProjLayer : glBaseLayer;\n    };\n    this.getBinding = function() {\n      return glBinding;\n    };\n    this.getFrame = function() {\n      return xrFrame;\n    };\n    this.getSession = function() {\n      return session;\n    };\n    this.setSession = async function(value) {\n      session = value;\n      if (session !== null) {\n        initialRenderTarget = renderer.getRenderTarget();\n        session.addEventListener(\"select\", onSessionEvent);\n        session.addEventListener(\"selectstart\", onSessionEvent);\n        session.addEventListener(\"selectend\", onSessionEvent);\n        session.addEventListener(\"squeeze\", onSessionEvent);\n        session.addEventListener(\"squeezestart\", onSessionEvent);\n        session.addEventListener(\"squeezeend\", onSessionEvent);\n        session.addEventListener(\"end\", onSessionEnd);\n        session.addEventListener(\"inputsourceschange\", onInputSourcesChange);\n        if (attributes.xrCompatible !== true) {\n          await gl.makeXRCompatible();\n        }\n        currentPixelRatio = renderer.getPixelRatio();\n        renderer.getSize(currentSize);\n        if (session.renderState.layers === void 0 || renderer.capabilities.isWebGL2 === false) {\n          const layerInit = {\n            antialias: session.renderState.layers === void 0 ? attributes.antialias : true,\n            alpha: true,\n            depth: attributes.depth,\n            stencil: attributes.stencil,\n            framebufferScaleFactor\n          };\n          glBaseLayer = new XRWebGLLayer(session, gl, layerInit);\n          session.updateRenderState({ baseLayer: glBaseLayer });\n          renderer.setPixelRatio(1);\n          renderer.setSize(glBaseLayer.framebufferWidth, glBaseLayer.framebufferHeight, false);\n          newRenderTarget = new WebGLRenderTarget(\n            glBaseLayer.framebufferWidth,\n            glBaseLayer.framebufferHeight,\n            {\n              format: RGBAFormat,\n              type: UnsignedByteType,\n              colorSpace: renderer.outputColorSpace,\n              stencilBuffer: attributes.stencil\n            }\n          );\n        } else {\n          let depthFormat = null;\n          let depthType = null;\n          let glDepthFormat = null;\n          if (attributes.depth) {\n            glDepthFormat = attributes.stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT24;\n            depthFormat = attributes.stencil ? DepthStencilFormat : DepthFormat;\n            depthType = attributes.stencil ? UnsignedInt248Type : UnsignedIntType;\n          }\n          const projectionlayerInit = {\n            colorFormat: gl.RGBA8,\n            depthFormat: glDepthFormat,\n            scaleFactor: framebufferScaleFactor\n          };\n          glBinding = new XRWebGLBinding(session, gl);\n          glProjLayer = glBinding.createProjectionLayer(projectionlayerInit);\n          session.updateRenderState({ layers: [glProjLayer] });\n          renderer.setPixelRatio(1);\n          renderer.setSize(glProjLayer.textureWidth, glProjLayer.textureHeight, false);\n          newRenderTarget = new WebGLRenderTarget(\n            glProjLayer.textureWidth,\n            glProjLayer.textureHeight,\n            {\n              format: RGBAFormat,\n              type: UnsignedByteType,\n              depthTexture: new DepthTexture(glProjLayer.textureWidth, glProjLayer.textureHeight, depthType, void 0, void 0, void 0, void 0, void 0, void 0, depthFormat),\n              stencilBuffer: attributes.stencil,\n              colorSpace: renderer.outputColorSpace,\n              samples: attributes.antialias ? 4 : 0\n            }\n          );\n          const renderTargetProperties = renderer.properties.get(newRenderTarget);\n          renderTargetProperties.__ignoreDepthValues = glProjLayer.ignoreDepthValues;\n        }\n        newRenderTarget.isXRRenderTarget = true;\n        this.setFoveation(foveation);\n        customReferenceSpace = null;\n        referenceSpace = await session.requestReferenceSpace(referenceSpaceType);\n        animation.setContext(session);\n        animation.start();\n        scope.isPresenting = true;\n        scope.dispatchEvent({ type: \"sessionstart\" });\n      }\n    };\n    this.getEnvironmentBlendMode = function() {\n      if (session !== null) {\n        return session.environmentBlendMode;\n      }\n    };\n    function onInputSourcesChange(event) {\n      for (let i2 = 0; i2 < event.removed.length; i2++) {\n        const inputSource = event.removed[i2];\n        const index = controllerInputSources.indexOf(inputSource);\n        if (index >= 0) {\n          controllerInputSources[index] = null;\n          controllers[index].disconnect(inputSource);\n        }\n      }\n      for (let i2 = 0; i2 < event.added.length; i2++) {\n        const inputSource = event.added[i2];\n        let controllerIndex = controllerInputSources.indexOf(inputSource);\n        if (controllerIndex === -1) {\n          for (let i3 = 0; i3 < controllers.length; i3++) {\n            if (i3 >= controllerInputSources.length) {\n              controllerInputSources.push(inputSource);\n              controllerIndex = i3;\n              break;\n            } else if (controllerInputSources[i3] === null) {\n              controllerInputSources[i3] = inputSource;\n              controllerIndex = i3;\n              break;\n            }\n          }\n          if (controllerIndex === -1) break;\n        }\n        const controller = controllers[controllerIndex];\n        if (controller) {\n          controller.connect(inputSource);\n        }\n      }\n    }\n    const cameraLPos = new Vector3();\n    const cameraRPos = new Vector3();\n    function setProjectionFromUnion(camera, cameraL2, cameraR2) {\n      cameraLPos.setFromMatrixPosition(cameraL2.matrixWorld);\n      cameraRPos.setFromMatrixPosition(cameraR2.matrixWorld);\n      const ipd = cameraLPos.distanceTo(cameraRPos);\n      const projL = cameraL2.projectionMatrix.elements;\n      const projR = cameraR2.projectionMatrix.elements;\n      const near = projL[14] / (projL[10] - 1);\n      const far = projL[14] / (projL[10] + 1);\n      const topFov = (projL[9] + 1) / projL[5];\n      const bottomFov = (projL[9] - 1) / projL[5];\n      const leftFov = (projL[8] - 1) / projL[0];\n      const rightFov = (projR[8] + 1) / projR[0];\n      const left = near * leftFov;\n      const right = near * rightFov;\n      const zOffset = ipd / (-leftFov + rightFov);\n      const xOffset = zOffset * -leftFov;\n      cameraL2.matrixWorld.decompose(camera.position, camera.quaternion, camera.scale);\n      camera.translateX(xOffset);\n      camera.translateZ(zOffset);\n      camera.matrixWorld.compose(camera.position, camera.quaternion, camera.scale);\n      camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n      const near2 = near + zOffset;\n      const far2 = far + zOffset;\n      const left2 = left - xOffset;\n      const right2 = right + (ipd - xOffset);\n      const top2 = topFov * far / far2 * near2;\n      const bottom2 = bottomFov * far / far2 * near2;\n      camera.projectionMatrix.makePerspective(left2, right2, top2, bottom2, near2, far2);\n      camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n    }\n    function updateCamera2(camera, parent) {\n      if (parent === null) {\n        camera.matrixWorld.copy(camera.matrix);\n      } else {\n        camera.matrixWorld.multiplyMatrices(parent.matrixWorld, camera.matrix);\n      }\n      camera.matrixWorldInverse.copy(camera.matrixWorld).invert();\n    }\n    this.updateCamera = function(camera) {\n      if (session === null) return;\n      if (depthSensing.texture !== null) {\n        camera.near = depthSensing.depthNear;\n        camera.far = depthSensing.depthFar;\n      }\n      cameraXR.near = cameraR.near = cameraL.near = camera.near;\n      cameraXR.far = cameraR.far = cameraL.far = camera.far;\n      if (_currentDepthNear !== cameraXR.near || _currentDepthFar !== cameraXR.far) {\n        session.updateRenderState({\n          depthNear: cameraXR.near,\n          depthFar: cameraXR.far\n        });\n        _currentDepthNear = cameraXR.near;\n        _currentDepthFar = cameraXR.far;\n        cameraL.near = _currentDepthNear;\n        cameraL.far = _currentDepthFar;\n        cameraR.near = _currentDepthNear;\n        cameraR.far = _currentDepthFar;\n        cameraL.updateProjectionMatrix();\n        cameraR.updateProjectionMatrix();\n        camera.updateProjectionMatrix();\n      }\n      const parent = camera.parent;\n      const cameras2 = cameraXR.cameras;\n      updateCamera2(cameraXR, parent);\n      for (let i2 = 0; i2 < cameras2.length; i2++) {\n        updateCamera2(cameras2[i2], parent);\n      }\n      if (cameras2.length === 2) {\n        setProjectionFromUnion(cameraXR, cameraL, cameraR);\n      } else {\n        cameraXR.projectionMatrix.copy(cameraL.projectionMatrix);\n      }\n      updateUserCamera(camera, cameraXR, parent);\n    };\n    function updateUserCamera(camera, cameraXR2, parent) {\n      if (parent === null) {\n        camera.matrix.copy(cameraXR2.matrixWorld);\n      } else {\n        camera.matrix.copy(parent.matrixWorld);\n        camera.matrix.invert();\n        camera.matrix.multiply(cameraXR2.matrixWorld);\n      }\n      camera.matrix.decompose(camera.position, camera.quaternion, camera.scale);\n      camera.updateMatrixWorld(true);\n      camera.projectionMatrix.copy(cameraXR2.projectionMatrix);\n      camera.projectionMatrixInverse.copy(cameraXR2.projectionMatrixInverse);\n      if (camera.isPerspectiveCamera) {\n        camera.fov = RAD2DEG * 2 * Math.atan(1 / camera.projectionMatrix.elements[5]);\n        camera.zoom = 1;\n      }\n    }\n    this.getCamera = function() {\n      return cameraXR;\n    };\n    this.getFoveation = function() {\n      if (glProjLayer === null && glBaseLayer === null) {\n        return void 0;\n      }\n      return foveation;\n    };\n    this.setFoveation = function(value) {\n      foveation = value;\n      if (glProjLayer !== null) {\n        glProjLayer.fixedFoveation = value;\n      }\n      if (glBaseLayer !== null && glBaseLayer.fixedFoveation !== void 0) {\n        glBaseLayer.fixedFoveation = value;\n      }\n    };\n    this.hasDepthSensing = function() {\n      return depthSensing.texture !== null;\n    };\n    let onAnimationFrameCallback = null;\n    function onAnimationFrame(time, frame) {\n      pose = frame.getViewerPose(customReferenceSpace || referenceSpace);\n      xrFrame = frame;\n      if (pose !== null) {\n        const views = pose.views;\n        if (glBaseLayer !== null) {\n          renderer.setRenderTargetFramebuffer(newRenderTarget, glBaseLayer.framebuffer);\n          renderer.setRenderTarget(newRenderTarget);\n        }\n        let cameraXRNeedsUpdate = false;\n        if (views.length !== cameraXR.cameras.length) {\n          cameraXR.cameras.length = 0;\n          cameraXRNeedsUpdate = true;\n        }\n        for (let i2 = 0; i2 < views.length; i2++) {\n          const view = views[i2];\n          let viewport = null;\n          if (glBaseLayer !== null) {\n            viewport = glBaseLayer.getViewport(view);\n          } else {\n            const glSubImage = glBinding.getViewSubImage(glProjLayer, view);\n            viewport = glSubImage.viewport;\n            if (i2 === 0) {\n              renderer.setRenderTargetTextures(\n                newRenderTarget,\n                glSubImage.colorTexture,\n                glProjLayer.ignoreDepthValues ? void 0 : glSubImage.depthStencilTexture\n              );\n              renderer.setRenderTarget(newRenderTarget);\n            }\n          }\n          let camera = cameras[i2];\n          if (camera === void 0) {\n            camera = new PerspectiveCamera();\n            camera.layers.enable(i2);\n            camera.viewport = new Vector4();\n            cameras[i2] = camera;\n          }\n          camera.matrix.fromArray(view.transform.matrix);\n          camera.matrix.decompose(camera.position, camera.quaternion, camera.scale);\n          camera.projectionMatrix.fromArray(view.projectionMatrix);\n          camera.projectionMatrixInverse.copy(camera.projectionMatrix).invert();\n          camera.viewport.set(viewport.x, viewport.y, viewport.width, viewport.height);\n          if (i2 === 0) {\n            cameraXR.matrix.copy(camera.matrix);\n            cameraXR.matrix.decompose(cameraXR.position, cameraXR.quaternion, cameraXR.scale);\n          }\n          if (cameraXRNeedsUpdate === true) {\n            cameraXR.cameras.push(camera);\n          }\n        }\n        const enabledFeatures = session.enabledFeatures;\n        if (enabledFeatures && enabledFeatures.includes(\"depth-sensing\")) {\n          const depthData = glBinding.getDepthInformation(views[0]);\n          if (depthData && depthData.isValid && depthData.texture) {\n            depthSensing.init(renderer, depthData, session.renderState);\n          }\n        }\n      }\n      for (let i2 = 0; i2 < controllers.length; i2++) {\n        const inputSource = controllerInputSources[i2];\n        const controller = controllers[i2];\n        if (inputSource !== null && controller !== void 0) {\n          controller.update(inputSource, frame, customReferenceSpace || referenceSpace);\n        }\n      }\n      depthSensing.render(renderer, cameraXR);\n      if (onAnimationFrameCallback) onAnimationFrameCallback(time, frame);\n      if (frame.detectedPlanes) {\n        scope.dispatchEvent({ type: \"planesdetected\", data: frame });\n      }\n      xrFrame = null;\n    }\n    const animation = new WebGLAnimation();\n    animation.setAnimationLoop(onAnimationFrame);\n    this.setAnimationLoop = function(callback) {\n      onAnimationFrameCallback = callback;\n    };\n    this.dispose = function() {\n    };\n  }\n}\nfunction WebGLMaterials(renderer, properties) {\n  function refreshTransformUniform(map, uniform) {\n    if (map.matrixAutoUpdate === true) {\n      map.updateMatrix();\n    }\n    uniform.value.copy(map.matrix);\n  }\n  function refreshFogUniforms(uniforms, fog) {\n    fog.color.getRGB(uniforms.fogColor.value, getUnlitUniformColorSpace(renderer));\n    if (fog.isFog) {\n      uniforms.fogNear.value = fog.near;\n      uniforms.fogFar.value = fog.far;\n    } else if (fog.isFogExp2) {\n      uniforms.fogDensity.value = fog.density;\n    }\n  }\n  function refreshMaterialUniforms(uniforms, material, pixelRatio, height, transmissionRenderTarget) {\n    if (material.isMeshBasicMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshLambertMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshToonMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsToon(uniforms, material);\n    } else if (material.isMeshPhongMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsPhong(uniforms, material);\n    } else if (material.isMeshStandardMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsStandard(uniforms, material);\n      if (material.isMeshPhysicalMaterial) {\n        refreshUniformsPhysical(uniforms, material, transmissionRenderTarget);\n      }\n    } else if (material.isMeshMatcapMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsMatcap(uniforms, material);\n    } else if (material.isMeshDepthMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isMeshDistanceMaterial) {\n      refreshUniformsCommon(uniforms, material);\n      refreshUniformsDistance(uniforms, material);\n    } else if (material.isMeshNormalMaterial) {\n      refreshUniformsCommon(uniforms, material);\n    } else if (material.isLineBasicMaterial) {\n      refreshUniformsLine(uniforms, material);\n      if (material.isLineDashedMaterial) {\n        refreshUniformsDash(uniforms, material);\n      }\n    } else if (material.isPointsMaterial) {\n      refreshUniformsPoints(uniforms, material, pixelRatio, height);\n    } else if (material.isSpriteMaterial) {\n      refreshUniformsSprites(uniforms, material);\n    } else if (material.isShadowMaterial) {\n      uniforms.color.value.copy(material.color);\n      uniforms.opacity.value = material.opacity;\n    } else if (material.isShaderMaterial) {\n      material.uniformsNeedUpdate = false;\n    }\n  }\n  function refreshUniformsCommon(uniforms, material) {\n    uniforms.opacity.value = material.opacity;\n    if (material.color) {\n      uniforms.diffuse.value.copy(material.color);\n    }\n    if (material.emissive) {\n      uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);\n    }\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.mapTransform);\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n      refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform);\n    }\n    if (material.bumpMap) {\n      uniforms.bumpMap.value = material.bumpMap;\n      refreshTransformUniform(material.bumpMap, uniforms.bumpMapTransform);\n      uniforms.bumpScale.value = material.bumpScale;\n      if (material.side === BackSide) {\n        uniforms.bumpScale.value *= -1;\n      }\n    }\n    if (material.normalMap) {\n      uniforms.normalMap.value = material.normalMap;\n      refreshTransformUniform(material.normalMap, uniforms.normalMapTransform);\n      uniforms.normalScale.value.copy(material.normalScale);\n      if (material.side === BackSide) {\n        uniforms.normalScale.value.negate();\n      }\n    }\n    if (material.displacementMap) {\n      uniforms.displacementMap.value = material.displacementMap;\n      refreshTransformUniform(material.displacementMap, uniforms.displacementMapTransform);\n      uniforms.displacementScale.value = material.displacementScale;\n      uniforms.displacementBias.value = material.displacementBias;\n    }\n    if (material.emissiveMap) {\n      uniforms.emissiveMap.value = material.emissiveMap;\n      refreshTransformUniform(material.emissiveMap, uniforms.emissiveMapTransform);\n    }\n    if (material.specularMap) {\n      uniforms.specularMap.value = material.specularMap;\n      refreshTransformUniform(material.specularMap, uniforms.specularMapTransform);\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n    const envMap = properties.get(material).envMap;\n    if (envMap) {\n      uniforms.envMap.value = envMap;\n      uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n      uniforms.reflectivity.value = material.reflectivity;\n      uniforms.ior.value = material.ior;\n      uniforms.refractionRatio.value = material.refractionRatio;\n    }\n    if (material.lightMap) {\n      uniforms.lightMap.value = material.lightMap;\n      const scaleFactor = renderer._useLegacyLights === true ? Math.PI : 1;\n      uniforms.lightMapIntensity.value = material.lightMapIntensity * scaleFactor;\n      refreshTransformUniform(material.lightMap, uniforms.lightMapTransform);\n    }\n    if (material.aoMap) {\n      uniforms.aoMap.value = material.aoMap;\n      uniforms.aoMapIntensity.value = material.aoMapIntensity;\n      refreshTransformUniform(material.aoMap, uniforms.aoMapTransform);\n    }\n  }\n  function refreshUniformsLine(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.mapTransform);\n    }\n  }\n  function refreshUniformsDash(uniforms, material) {\n    uniforms.dashSize.value = material.dashSize;\n    uniforms.totalSize.value = material.dashSize + material.gapSize;\n    uniforms.scale.value = material.scale;\n  }\n  function refreshUniformsPoints(uniforms, material, pixelRatio, height) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.size.value = material.size * pixelRatio;\n    uniforms.scale.value = height * 0.5;\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.uvTransform);\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n      refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform);\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n  }\n  function refreshUniformsSprites(uniforms, material) {\n    uniforms.diffuse.value.copy(material.color);\n    uniforms.opacity.value = material.opacity;\n    uniforms.rotation.value = material.rotation;\n    if (material.map) {\n      uniforms.map.value = material.map;\n      refreshTransformUniform(material.map, uniforms.mapTransform);\n    }\n    if (material.alphaMap) {\n      uniforms.alphaMap.value = material.alphaMap;\n      refreshTransformUniform(material.alphaMap, uniforms.alphaMapTransform);\n    }\n    if (material.alphaTest > 0) {\n      uniforms.alphaTest.value = material.alphaTest;\n    }\n  }\n  function refreshUniformsPhong(uniforms, material) {\n    uniforms.specular.value.copy(material.specular);\n    uniforms.shininess.value = Math.max(material.shininess, 1e-4);\n  }\n  function refreshUniformsToon(uniforms, material) {\n    if (material.gradientMap) {\n      uniforms.gradientMap.value = material.gradientMap;\n    }\n  }\n  function refreshUniformsStandard(uniforms, material) {\n    uniforms.metalness.value = material.metalness;\n    if (material.metalnessMap) {\n      uniforms.metalnessMap.value = material.metalnessMap;\n      refreshTransformUniform(material.metalnessMap, uniforms.metalnessMapTransform);\n    }\n    uniforms.roughness.value = material.roughness;\n    if (material.roughnessMap) {\n      uniforms.roughnessMap.value = material.roughnessMap;\n      refreshTransformUniform(material.roughnessMap, uniforms.roughnessMapTransform);\n    }\n    const envMap = properties.get(material).envMap;\n    if (envMap) {\n      uniforms.envMapIntensity.value = material.envMapIntensity;\n    }\n  }\n  function refreshUniformsPhysical(uniforms, material, transmissionRenderTarget) {\n    uniforms.ior.value = material.ior;\n    if (material.sheen > 0) {\n      uniforms.sheenColor.value.copy(material.sheenColor).multiplyScalar(material.sheen);\n      uniforms.sheenRoughness.value = material.sheenRoughness;\n      if (material.sheenColorMap) {\n        uniforms.sheenColorMap.value = material.sheenColorMap;\n        refreshTransformUniform(material.sheenColorMap, uniforms.sheenColorMapTransform);\n      }\n      if (material.sheenRoughnessMap) {\n        uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;\n        refreshTransformUniform(material.sheenRoughnessMap, uniforms.sheenRoughnessMapTransform);\n      }\n    }\n    if (material.clearcoat > 0) {\n      uniforms.clearcoat.value = material.clearcoat;\n      uniforms.clearcoatRoughness.value = material.clearcoatRoughness;\n      if (material.clearcoatMap) {\n        uniforms.clearcoatMap.value = material.clearcoatMap;\n        refreshTransformUniform(material.clearcoatMap, uniforms.clearcoatMapTransform);\n      }\n      if (material.clearcoatRoughnessMap) {\n        uniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\n        refreshTransformUniform(material.clearcoatRoughnessMap, uniforms.clearcoatRoughnessMapTransform);\n      }\n      if (material.clearcoatNormalMap) {\n        uniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\n        refreshTransformUniform(material.clearcoatNormalMap, uniforms.clearcoatNormalMapTransform);\n        uniforms.clearcoatNormalScale.value.copy(material.clearcoatNormalScale);\n        if (material.side === BackSide) {\n          uniforms.clearcoatNormalScale.value.negate();\n        }\n      }\n    }\n    if (material.iridescence > 0) {\n      uniforms.iridescence.value = material.iridescence;\n      uniforms.iridescenceIOR.value = material.iridescenceIOR;\n      uniforms.iridescenceThicknessMinimum.value = material.iridescenceThicknessRange[0];\n      uniforms.iridescenceThicknessMaximum.value = material.iridescenceThicknessRange[1];\n      if (material.iridescenceMap) {\n        uniforms.iridescenceMap.value = material.iridescenceMap;\n        refreshTransformUniform(material.iridescenceMap, uniforms.iridescenceMapTransform);\n      }\n      if (material.iridescenceThicknessMap) {\n        uniforms.iridescenceThicknessMap.value = material.iridescenceThicknessMap;\n        refreshTransformUniform(material.iridescenceThicknessMap, uniforms.iridescenceThicknessMapTransform);\n      }\n    }\n    if (material.transmission > 0) {\n      uniforms.transmission.value = material.transmission;\n      uniforms.transmissionSamplerMap.value = transmissionRenderTarget.texture;\n      uniforms.transmissionSamplerSize.value.set(transmissionRenderTarget.width, transmissionRenderTarget.height);\n      if (material.transmissionMap) {\n        uniforms.transmissionMap.value = material.transmissionMap;\n        refreshTransformUniform(material.transmissionMap, uniforms.transmissionMapTransform);\n      }\n      uniforms.thickness.value = material.thickness;\n      if (material.thicknessMap) {\n        uniforms.thicknessMap.value = material.thicknessMap;\n        refreshTransformUniform(material.thicknessMap, uniforms.thicknessMapTransform);\n      }\n      uniforms.attenuationDistance.value = material.attenuationDistance;\n      uniforms.attenuationColor.value.copy(material.attenuationColor);\n    }\n    if (material.anisotropy > 0) {\n      uniforms.anisotropyVector.value.set(material.anisotropy * Math.cos(material.anisotropyRotation), material.anisotropy * Math.sin(material.anisotropyRotation));\n      if (material.anisotropyMap) {\n        uniforms.anisotropyMap.value = material.anisotropyMap;\n        refreshTransformUniform(material.anisotropyMap, uniforms.anisotropyMapTransform);\n      }\n    }\n    uniforms.specularIntensity.value = material.specularIntensity;\n    uniforms.specularColor.value.copy(material.specularColor);\n    if (material.specularColorMap) {\n      uniforms.specularColorMap.value = material.specularColorMap;\n      refreshTransformUniform(material.specularColorMap, uniforms.specularColorMapTransform);\n    }\n    if (material.specularIntensityMap) {\n      uniforms.specularIntensityMap.value = material.specularIntensityMap;\n      refreshTransformUniform(material.specularIntensityMap, uniforms.specularIntensityMapTransform);\n    }\n  }\n  function refreshUniformsMatcap(uniforms, material) {\n    if (material.matcap) {\n      uniforms.matcap.value = material.matcap;\n    }\n  }\n  function refreshUniformsDistance(uniforms, material) {\n    const light = properties.get(material).light;\n    uniforms.referencePosition.value.setFromMatrixPosition(light.matrixWorld);\n    uniforms.nearDistance.value = light.shadow.camera.near;\n    uniforms.farDistance.value = light.shadow.camera.far;\n  }\n  return {\n    refreshFogUniforms,\n    refreshMaterialUniforms\n  };\n}\nfunction WebGLUniformsGroups(gl, info, capabilities, state) {\n  let buffers = {};\n  let updateList = {};\n  let allocatedBindingPoints = [];\n  const maxBindingPoints = capabilities.isWebGL2 ? gl.getParameter(gl.MAX_UNIFORM_BUFFER_BINDINGS) : 0;\n  function bind(uniformsGroup, program) {\n    const webglProgram = program.program;\n    state.uniformBlockBinding(uniformsGroup, webglProgram);\n  }\n  function update(uniformsGroup, program) {\n    let buffer = buffers[uniformsGroup.id];\n    if (buffer === void 0) {\n      prepareUniformsGroup(uniformsGroup);\n      buffer = createBuffer(uniformsGroup);\n      buffers[uniformsGroup.id] = buffer;\n      uniformsGroup.addEventListener(\"dispose\", onUniformsGroupsDispose);\n    }\n    const webglProgram = program.program;\n    state.updateUBOMapping(uniformsGroup, webglProgram);\n    const frame = info.render.frame;\n    if (updateList[uniformsGroup.id] !== frame) {\n      updateBufferData(uniformsGroup);\n      updateList[uniformsGroup.id] = frame;\n    }\n  }\n  function createBuffer(uniformsGroup) {\n    const bindingPointIndex = allocateBindingPointIndex();\n    uniformsGroup.__bindingPointIndex = bindingPointIndex;\n    const buffer = gl.createBuffer();\n    const size = uniformsGroup.__size;\n    const usage = uniformsGroup.usage;\n    gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);\n    gl.bufferData(gl.UNIFORM_BUFFER, size, usage);\n    gl.bindBuffer(gl.UNIFORM_BUFFER, null);\n    gl.bindBufferBase(gl.UNIFORM_BUFFER, bindingPointIndex, buffer);\n    return buffer;\n  }\n  function allocateBindingPointIndex() {\n    for (let i2 = 0; i2 < maxBindingPoints; i2++) {\n      if (allocatedBindingPoints.indexOf(i2) === -1) {\n        allocatedBindingPoints.push(i2);\n        return i2;\n      }\n    }\n    console.error(\"THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached.\");\n    return 0;\n  }\n  function updateBufferData(uniformsGroup) {\n    const buffer = buffers[uniformsGroup.id];\n    const uniforms = uniformsGroup.uniforms;\n    const cache = uniformsGroup.__cache;\n    gl.bindBuffer(gl.UNIFORM_BUFFER, buffer);\n    for (let i2 = 0, il = uniforms.length; i2 < il; i2++) {\n      const uniformArray = Array.isArray(uniforms[i2]) ? uniforms[i2] : [uniforms[i2]];\n      for (let j2 = 0, jl = uniformArray.length; j2 < jl; j2++) {\n        const uniform = uniformArray[j2];\n        if (hasUniformChanged(uniform, i2, j2, cache) === true) {\n          const offset = uniform.__offset;\n          const values = Array.isArray(uniform.value) ? uniform.value : [uniform.value];\n          let arrayOffset = 0;\n          for (let k2 = 0; k2 < values.length; k2++) {\n            const value = values[k2];\n            const info2 = getUniformSize(value);\n            if (typeof value === \"number\" || typeof value === \"boolean\") {\n              uniform.__data[0] = value;\n              gl.bufferSubData(gl.UNIFORM_BUFFER, offset + arrayOffset, uniform.__data);\n            } else if (value.isMatrix3) {\n              uniform.__data[0] = value.elements[0];\n              uniform.__data[1] = value.elements[1];\n              uniform.__data[2] = value.elements[2];\n              uniform.__data[3] = 0;\n              uniform.__data[4] = value.elements[3];\n              uniform.__data[5] = value.elements[4];\n              uniform.__data[6] = value.elements[5];\n              uniform.__data[7] = 0;\n              uniform.__data[8] = value.elements[6];\n              uniform.__data[9] = value.elements[7];\n              uniform.__data[10] = value.elements[8];\n              uniform.__data[11] = 0;\n            } else {\n              value.toArray(uniform.__data, arrayOffset);\n              arrayOffset += info2.storage / Float32Array.BYTES_PER_ELEMENT;\n            }\n          }\n          gl.bufferSubData(gl.UNIFORM_BUFFER, offset, uniform.__data);\n        }\n      }\n    }\n    gl.bindBuffer(gl.UNIFORM_BUFFER, null);\n  }\n  function hasUniformChanged(uniform, index, indexArray, cache) {\n    const value = uniform.value;\n    const indexString = index + \"_\" + indexArray;\n    if (cache[indexString] === void 0) {\n      if (typeof value === \"number\" || typeof value === \"boolean\") {\n        cache[indexString] = value;\n      } else {\n        cache[indexString] = value.clone();\n      }\n      return true;\n    } else {\n      const cachedObject = cache[indexString];\n      if (typeof value === \"number\" || typeof value === \"boolean\") {\n        if (cachedObject !== value) {\n          cache[indexString] = value;\n          return true;\n        }\n      } else {\n        if (cachedObject.equals(value) === false) {\n          cachedObject.copy(value);\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n  function prepareUniformsGroup(uniformsGroup) {\n    const uniforms = uniformsGroup.uniforms;\n    let offset = 0;\n    const chunkSize = 16;\n    for (let i2 = 0, l2 = uniforms.length; i2 < l2; i2++) {\n      const uniformArray = Array.isArray(uniforms[i2]) ? uniforms[i2] : [uniforms[i2]];\n      for (let j2 = 0, jl = uniformArray.length; j2 < jl; j2++) {\n        const uniform = uniformArray[j2];\n        const values = Array.isArray(uniform.value) ? uniform.value : [uniform.value];\n        for (let k2 = 0, kl = values.length; k2 < kl; k2++) {\n          const value = values[k2];\n          const info2 = getUniformSize(value);\n          const chunkOffsetUniform = offset % chunkSize;\n          if (chunkOffsetUniform !== 0 && chunkSize - chunkOffsetUniform < info2.boundary) {\n            offset += chunkSize - chunkOffsetUniform;\n          }\n          uniform.__data = new Float32Array(info2.storage / Float32Array.BYTES_PER_ELEMENT);\n          uniform.__offset = offset;\n          offset += info2.storage;\n        }\n      }\n    }\n    const chunkOffset = offset % chunkSize;\n    if (chunkOffset > 0) offset += chunkSize - chunkOffset;\n    uniformsGroup.__size = offset;\n    uniformsGroup.__cache = {};\n    return this;\n  }\n  function getUniformSize(value) {\n    const info2 = {\n      boundary: 0,\n      // bytes\n      storage: 0\n      // bytes\n    };\n    if (typeof value === \"number\" || typeof value === \"boolean\") {\n      info2.boundary = 4;\n      info2.storage = 4;\n    } else if (value.isVector2) {\n      info2.boundary = 8;\n      info2.storage = 8;\n    } else if (value.isVector3 || value.isColor) {\n      info2.boundary = 16;\n      info2.storage = 12;\n    } else if (value.isVector4) {\n      info2.boundary = 16;\n      info2.storage = 16;\n    } else if (value.isMatrix3) {\n      info2.boundary = 48;\n      info2.storage = 48;\n    } else if (value.isMatrix4) {\n      info2.boundary = 64;\n      info2.storage = 64;\n    } else if (value.isTexture) {\n      console.warn(\"THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group.\");\n    } else {\n      console.warn(\"THREE.WebGLRenderer: Unsupported uniform value type.\", value);\n    }\n    return info2;\n  }\n  function onUniformsGroupsDispose(event) {\n    const uniformsGroup = event.target;\n    uniformsGroup.removeEventListener(\"dispose\", onUniformsGroupsDispose);\n    const index = allocatedBindingPoints.indexOf(uniformsGroup.__bindingPointIndex);\n    allocatedBindingPoints.splice(index, 1);\n    gl.deleteBuffer(buffers[uniformsGroup.id]);\n    delete buffers[uniformsGroup.id];\n    delete updateList[uniformsGroup.id];\n  }\n  function dispose2() {\n    for (const id in buffers) {\n      gl.deleteBuffer(buffers[id]);\n    }\n    allocatedBindingPoints = [];\n    buffers = {};\n    updateList = {};\n  }\n  return {\n    bind,\n    update,\n    dispose: dispose2\n  };\n}\nclass WebGLRenderer {\n  constructor(parameters = {}) {\n    const {\n      canvas = createCanvasElement(),\n      context: context2 = null,\n      depth = true,\n      stencil = true,\n      alpha = false,\n      antialias = false,\n      premultipliedAlpha = true,\n      preserveDrawingBuffer = false,\n      powerPreference = \"default\",\n      failIfMajorPerformanceCaveat = false\n    } = parameters;\n    this.isWebGLRenderer = true;\n    let _alpha;\n    if (context2 !== null) {\n      _alpha = context2.getContextAttributes().alpha;\n    } else {\n      _alpha = alpha;\n    }\n    const uintClearColor = new Uint32Array(4);\n    const intClearColor = new Int32Array(4);\n    let currentRenderList = null;\n    let currentRenderState = null;\n    const renderListStack = [];\n    const renderStateStack = [];\n    this.domElement = canvas;\n    this.debug = {\n      /**\n       * Enables error checking and reporting when shader programs are being compiled\n       * @type {boolean}\n       */\n      checkShaderErrors: true,\n      /**\n       * Callback for custom error reporting.\n       * @type {?Function}\n       */\n      onShaderError: null\n    };\n    this.autoClear = true;\n    this.autoClearColor = true;\n    this.autoClearDepth = true;\n    this.autoClearStencil = true;\n    this.sortObjects = true;\n    this.clippingPlanes = [];\n    this.localClippingEnabled = false;\n    this._outputColorSpace = SRGBColorSpace$1;\n    this._useLegacyLights = false;\n    this.toneMapping = NoToneMapping;\n    this.toneMappingExposure = 1;\n    const _this = this;\n    let _isContextLost = false;\n    let _currentActiveCubeFace = 0;\n    let _currentActiveMipmapLevel = 0;\n    let _currentRenderTarget = null;\n    let _currentMaterialId = -1;\n    let _currentCamera = null;\n    const _currentViewport = new Vector4();\n    const _currentScissor = new Vector4();\n    let _currentScissorTest = null;\n    const _currentClearColor = new Color(0);\n    let _currentClearAlpha = 0;\n    let _width = canvas.width;\n    let _height = canvas.height;\n    let _pixelRatio = 1;\n    let _opaqueSort = null;\n    let _transparentSort = null;\n    const _viewport = new Vector4(0, 0, _width, _height);\n    const _scissor = new Vector4(0, 0, _width, _height);\n    let _scissorTest = false;\n    const _frustum2 = new Frustum();\n    let _clippingEnabled = false;\n    let _localClippingEnabled = false;\n    let _transmissionRenderTarget = null;\n    const _projScreenMatrix2 = new Matrix4();\n    const _vector22 = new Vector2();\n    const _vector32 = new Vector3();\n    const _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\n    function getTargetPixelRatio() {\n      return _currentRenderTarget === null ? _pixelRatio : 1;\n    }\n    let _gl = context2;\n    function getContext(contextNames, contextAttributes) {\n      for (let i2 = 0; i2 < contextNames.length; i2++) {\n        const contextName = contextNames[i2];\n        const context3 = canvas.getContext(contextName, contextAttributes);\n        if (context3 !== null) return context3;\n      }\n      return null;\n    }\n    try {\n      const contextAttributes = {\n        alpha: true,\n        depth,\n        stencil,\n        antialias,\n        premultipliedAlpha,\n        preserveDrawingBuffer,\n        powerPreference,\n        failIfMajorPerformanceCaveat\n      };\n      if (\"setAttribute\" in canvas) canvas.setAttribute(\"data-engine\", `three.js r${REVISION}`);\n      canvas.addEventListener(\"webglcontextlost\", onContextLost, false);\n      canvas.addEventListener(\"webglcontextrestored\", onContextRestore, false);\n      canvas.addEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n      if (_gl === null) {\n        const contextNames = [\"webgl2\", \"webgl\", \"experimental-webgl\"];\n        if (_this.isWebGL1Renderer === true) {\n          contextNames.shift();\n        }\n        _gl = getContext(contextNames, contextAttributes);\n        if (_gl === null) {\n          if (getContext(contextNames)) {\n            throw new Error(\"Error creating WebGL context with your selected attributes.\");\n          } else {\n            throw new Error(\"Error creating WebGL context.\");\n          }\n        }\n      }\n      if (typeof WebGLRenderingContext !== \"undefined\" && _gl instanceof WebGLRenderingContext) {\n        console.warn(\"THREE.WebGLRenderer: WebGL 1 support was deprecated in r153 and will be removed in r163.\");\n      }\n      if (_gl.getShaderPrecisionFormat === void 0) {\n        _gl.getShaderPrecisionFormat = function() {\n          return { \"rangeMin\": 1, \"rangeMax\": 1, \"precision\": 1 };\n        };\n      }\n    } catch (error2) {\n      console.error(\"THREE.WebGLRenderer: \" + error2.message);\n      throw error2;\n    }\n    let extensions2, capabilities, state, info;\n    let properties, textures, cubemaps, cubeuvmaps, attributes, geometries, objects;\n    let programCache, materials, renderLists, renderStates, clipping, shadowMap;\n    let background, morphtargets, bufferRenderer, indexedBufferRenderer;\n    let utils, bindingStates, uniformsGroups;\n    function initGLContext() {\n      extensions2 = new WebGLExtensions(_gl);\n      capabilities = new WebGLCapabilities(_gl, extensions2, parameters);\n      extensions2.init(capabilities);\n      utils = new WebGLUtils(_gl, extensions2, capabilities);\n      state = new WebGLState(_gl, extensions2, capabilities);\n      info = new WebGLInfo(_gl);\n      properties = new WebGLProperties();\n      textures = new WebGLTextures(_gl, extensions2, state, properties, capabilities, utils, info);\n      cubemaps = new WebGLCubeMaps(_this);\n      cubeuvmaps = new WebGLCubeUVMaps(_this);\n      attributes = new WebGLAttributes(_gl, capabilities);\n      bindingStates = new WebGLBindingStates(_gl, extensions2, attributes, capabilities);\n      geometries = new WebGLGeometries(_gl, attributes, info, bindingStates);\n      objects = new WebGLObjects(_gl, geometries, attributes, info);\n      morphtargets = new WebGLMorphtargets(_gl, capabilities, textures);\n      clipping = new WebGLClipping(properties);\n      programCache = new WebGLPrograms(_this, cubemaps, cubeuvmaps, extensions2, capabilities, bindingStates, clipping);\n      materials = new WebGLMaterials(_this, properties);\n      renderLists = new WebGLRenderLists();\n      renderStates = new WebGLRenderStates(extensions2, capabilities);\n      background = new WebGLBackground(_this, cubemaps, cubeuvmaps, state, objects, _alpha, premultipliedAlpha);\n      shadowMap = new WebGLShadowMap(_this, objects, capabilities);\n      uniformsGroups = new WebGLUniformsGroups(_gl, info, capabilities, state);\n      bufferRenderer = new WebGLBufferRenderer(_gl, extensions2, info, capabilities);\n      indexedBufferRenderer = new WebGLIndexedBufferRenderer(_gl, extensions2, info, capabilities);\n      info.programs = programCache.programs;\n      _this.capabilities = capabilities;\n      _this.extensions = extensions2;\n      _this.properties = properties;\n      _this.renderLists = renderLists;\n      _this.shadowMap = shadowMap;\n      _this.state = state;\n      _this.info = info;\n    }\n    initGLContext();\n    const xr = new WebXRManager(_this, _gl);\n    this.xr = xr;\n    this.getContext = function() {\n      return _gl;\n    };\n    this.getContextAttributes = function() {\n      return _gl.getContextAttributes();\n    };\n    this.forceContextLoss = function() {\n      const extension = extensions2.get(\"WEBGL_lose_context\");\n      if (extension) extension.loseContext();\n    };\n    this.forceContextRestore = function() {\n      const extension = extensions2.get(\"WEBGL_lose_context\");\n      if (extension) extension.restoreContext();\n    };\n    this.getPixelRatio = function() {\n      return _pixelRatio;\n    };\n    this.setPixelRatio = function(value) {\n      if (value === void 0) return;\n      _pixelRatio = value;\n      this.setSize(_width, _height, false);\n    };\n    this.getSize = function(target) {\n      return target.set(_width, _height);\n    };\n    this.setSize = function(width, height, updateStyle = true) {\n      if (xr.isPresenting) {\n        console.warn(\"THREE.WebGLRenderer: Can't change size while VR device is presenting.\");\n        return;\n      }\n      _width = width;\n      _height = height;\n      canvas.width = Math.floor(width * _pixelRatio);\n      canvas.height = Math.floor(height * _pixelRatio);\n      if (updateStyle === true) {\n        canvas.style.width = width + \"px\";\n        canvas.style.height = height + \"px\";\n      }\n      this.setViewport(0, 0, width, height);\n    };\n    this.getDrawingBufferSize = function(target) {\n      return target.set(_width * _pixelRatio, _height * _pixelRatio).floor();\n    };\n    this.setDrawingBufferSize = function(width, height, pixelRatio) {\n      _width = width;\n      _height = height;\n      _pixelRatio = pixelRatio;\n      canvas.width = Math.floor(width * pixelRatio);\n      canvas.height = Math.floor(height * pixelRatio);\n      this.setViewport(0, 0, width, height);\n    };\n    this.getCurrentViewport = function(target) {\n      return target.copy(_currentViewport);\n    };\n    this.getViewport = function(target) {\n      return target.copy(_viewport);\n    };\n    this.setViewport = function(x2, y2, width, height) {\n      if (x2.isVector4) {\n        _viewport.set(x2.x, x2.y, x2.z, x2.w);\n      } else {\n        _viewport.set(x2, y2, width, height);\n      }\n      state.viewport(_currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor());\n    };\n    this.getScissor = function(target) {\n      return target.copy(_scissor);\n    };\n    this.setScissor = function(x2, y2, width, height) {\n      if (x2.isVector4) {\n        _scissor.set(x2.x, x2.y, x2.z, x2.w);\n      } else {\n        _scissor.set(x2, y2, width, height);\n      }\n      state.scissor(_currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor());\n    };\n    this.getScissorTest = function() {\n      return _scissorTest;\n    };\n    this.setScissorTest = function(boolean) {\n      state.setScissorTest(_scissorTest = boolean);\n    };\n    this.setOpaqueSort = function(method) {\n      _opaqueSort = method;\n    };\n    this.setTransparentSort = function(method) {\n      _transparentSort = method;\n    };\n    this.getClearColor = function(target) {\n      return target.copy(background.getClearColor());\n    };\n    this.setClearColor = function() {\n      background.setClearColor.apply(background, arguments);\n    };\n    this.getClearAlpha = function() {\n      return background.getClearAlpha();\n    };\n    this.setClearAlpha = function() {\n      background.setClearAlpha.apply(background, arguments);\n    };\n    this.clear = function(color = true, depth2 = true, stencil2 = true) {\n      let bits2 = 0;\n      if (color) {\n        let isIntegerFormat = false;\n        if (_currentRenderTarget !== null) {\n          const targetFormat = _currentRenderTarget.texture.format;\n          isIntegerFormat = targetFormat === RGBAIntegerFormat || targetFormat === RGIntegerFormat || targetFormat === RedIntegerFormat;\n        }\n        if (isIntegerFormat) {\n          const targetType = _currentRenderTarget.texture.type;\n          const isUnsignedType = targetType === UnsignedByteType || targetType === UnsignedIntType || targetType === UnsignedShortType || targetType === UnsignedInt248Type || targetType === UnsignedShort4444Type || targetType === UnsignedShort5551Type;\n          const clearColor = background.getClearColor();\n          const a2 = background.getClearAlpha();\n          const r2 = clearColor.r;\n          const g2 = clearColor.g;\n          const b2 = clearColor.b;\n          if (isUnsignedType) {\n            uintClearColor[0] = r2;\n            uintClearColor[1] = g2;\n            uintClearColor[2] = b2;\n            uintClearColor[3] = a2;\n            _gl.clearBufferuiv(_gl.COLOR, 0, uintClearColor);\n          } else {\n            intClearColor[0] = r2;\n            intClearColor[1] = g2;\n            intClearColor[2] = b2;\n            intClearColor[3] = a2;\n            _gl.clearBufferiv(_gl.COLOR, 0, intClearColor);\n          }\n        } else {\n          bits2 |= _gl.COLOR_BUFFER_BIT;\n        }\n      }\n      if (depth2) bits2 |= _gl.DEPTH_BUFFER_BIT;\n      if (stencil2) {\n        bits2 |= _gl.STENCIL_BUFFER_BIT;\n        this.state.buffers.stencil.setMask(4294967295);\n      }\n      _gl.clear(bits2);\n    };\n    this.clearColor = function() {\n      this.clear(true, false, false);\n    };\n    this.clearDepth = function() {\n      this.clear(false, true, false);\n    };\n    this.clearStencil = function() {\n      this.clear(false, false, true);\n    };\n    this.dispose = function() {\n      canvas.removeEventListener(\"webglcontextlost\", onContextLost, false);\n      canvas.removeEventListener(\"webglcontextrestored\", onContextRestore, false);\n      canvas.removeEventListener(\"webglcontextcreationerror\", onContextCreationError, false);\n      renderLists.dispose();\n      renderStates.dispose();\n      properties.dispose();\n      cubemaps.dispose();\n      cubeuvmaps.dispose();\n      objects.dispose();\n      bindingStates.dispose();\n      uniformsGroups.dispose();\n      programCache.dispose();\n      xr.dispose();\n      xr.removeEventListener(\"sessionstart\", onXRSessionStart);\n      xr.removeEventListener(\"sessionend\", onXRSessionEnd);\n      if (_transmissionRenderTarget) {\n        _transmissionRenderTarget.dispose();\n        _transmissionRenderTarget = null;\n      }\n      animation.stop();\n    };\n    function onContextLost(event) {\n      event.preventDefault();\n      console.log(\"THREE.WebGLRenderer: Context Lost.\");\n      _isContextLost = true;\n    }\n    function onContextRestore() {\n      console.log(\"THREE.WebGLRenderer: Context Restored.\");\n      _isContextLost = false;\n      const infoAutoReset = info.autoReset;\n      const shadowMapEnabled = shadowMap.enabled;\n      const shadowMapAutoUpdate = shadowMap.autoUpdate;\n      const shadowMapNeedsUpdate = shadowMap.needsUpdate;\n      const shadowMapType = shadowMap.type;\n      initGLContext();\n      info.autoReset = infoAutoReset;\n      shadowMap.enabled = shadowMapEnabled;\n      shadowMap.autoUpdate = shadowMapAutoUpdate;\n      shadowMap.needsUpdate = shadowMapNeedsUpdate;\n      shadowMap.type = shadowMapType;\n    }\n    function onContextCreationError(event) {\n      console.error(\"THREE.WebGLRenderer: A WebGL context could not be created. Reason: \", event.statusMessage);\n    }\n    function onMaterialDispose(event) {\n      const material = event.target;\n      material.removeEventListener(\"dispose\", onMaterialDispose);\n      deallocateMaterial(material);\n    }\n    function deallocateMaterial(material) {\n      releaseMaterialProgramReferences(material);\n      properties.remove(material);\n    }\n    function releaseMaterialProgramReferences(material) {\n      const programs = properties.get(material).programs;\n      if (programs !== void 0) {\n        programs.forEach(function(program) {\n          programCache.releaseProgram(program);\n        });\n        if (material.isShaderMaterial) {\n          programCache.releaseShaderCache(material);\n        }\n      }\n    }\n    this.renderBufferDirect = function(camera, scene, geometry, material, object, group) {\n      if (scene === null) scene = _emptyScene;\n      const frontFaceCW = object.isMesh && object.matrixWorld.determinant() < 0;\n      const program = setProgram(camera, scene, geometry, material, object);\n      state.setMaterial(material, frontFaceCW);\n      let index = geometry.index;\n      let rangeFactor = 1;\n      if (material.wireframe === true) {\n        index = geometries.getWireframeAttribute(geometry);\n        if (index === void 0) return;\n        rangeFactor = 2;\n      }\n      const drawRange = geometry.drawRange;\n      const position = geometry.attributes.position;\n      let drawStart = drawRange.start * rangeFactor;\n      let drawEnd = (drawRange.start + drawRange.count) * rangeFactor;\n      if (group !== null) {\n        drawStart = Math.max(drawStart, group.start * rangeFactor);\n        drawEnd = Math.min(drawEnd, (group.start + group.count) * rangeFactor);\n      }\n      if (index !== null) {\n        drawStart = Math.max(drawStart, 0);\n        drawEnd = Math.min(drawEnd, index.count);\n      } else if (position !== void 0 && position !== null) {\n        drawStart = Math.max(drawStart, 0);\n        drawEnd = Math.min(drawEnd, position.count);\n      }\n      const drawCount = drawEnd - drawStart;\n      if (drawCount < 0 || drawCount === Infinity) return;\n      bindingStates.setup(object, material, program, geometry, index);\n      let attribute;\n      let renderer = bufferRenderer;\n      if (index !== null) {\n        attribute = attributes.get(index);\n        renderer = indexedBufferRenderer;\n        renderer.setIndex(attribute);\n      }\n      if (object.isMesh) {\n        if (material.wireframe === true) {\n          state.setLineWidth(material.wireframeLinewidth * getTargetPixelRatio());\n          renderer.setMode(_gl.LINES);\n        } else {\n          renderer.setMode(_gl.TRIANGLES);\n        }\n      } else if (object.isLine) {\n        let lineWidth = material.linewidth;\n        if (lineWidth === void 0) lineWidth = 1;\n        state.setLineWidth(lineWidth * getTargetPixelRatio());\n        if (object.isLineSegments) {\n          renderer.setMode(_gl.LINES);\n        } else if (object.isLineLoop) {\n          renderer.setMode(_gl.LINE_LOOP);\n        } else {\n          renderer.setMode(_gl.LINE_STRIP);\n        }\n      } else if (object.isPoints) {\n        renderer.setMode(_gl.POINTS);\n      } else if (object.isSprite) {\n        renderer.setMode(_gl.TRIANGLES);\n      }\n      if (object.isBatchedMesh) {\n        renderer.renderMultiDraw(object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount);\n      } else if (object.isInstancedMesh) {\n        renderer.renderInstances(drawStart, drawCount, object.count);\n      } else if (geometry.isInstancedBufferGeometry) {\n        const maxInstanceCount = geometry._maxInstanceCount !== void 0 ? geometry._maxInstanceCount : Infinity;\n        const instanceCount = Math.min(geometry.instanceCount, maxInstanceCount);\n        renderer.renderInstances(drawStart, drawCount, instanceCount);\n      } else {\n        renderer.render(drawStart, drawCount);\n      }\n    };\n    function prepareMaterial(material, scene, object) {\n      if (material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false) {\n        material.side = BackSide;\n        material.needsUpdate = true;\n        getProgram(material, scene, object);\n        material.side = FrontSide;\n        material.needsUpdate = true;\n        getProgram(material, scene, object);\n        material.side = DoubleSide;\n      } else {\n        getProgram(material, scene, object);\n      }\n    }\n    this.compile = function(scene, camera, targetScene = null) {\n      if (targetScene === null) targetScene = scene;\n      currentRenderState = renderStates.get(targetScene);\n      currentRenderState.init();\n      renderStateStack.push(currentRenderState);\n      targetScene.traverseVisible(function(object) {\n        if (object.isLight && object.layers.test(camera.layers)) {\n          currentRenderState.pushLight(object);\n          if (object.castShadow) {\n            currentRenderState.pushShadow(object);\n          }\n        }\n      });\n      if (scene !== targetScene) {\n        scene.traverseVisible(function(object) {\n          if (object.isLight && object.layers.test(camera.layers)) {\n            currentRenderState.pushLight(object);\n            if (object.castShadow) {\n              currentRenderState.pushShadow(object);\n            }\n          }\n        });\n      }\n      currentRenderState.setupLights(_this._useLegacyLights);\n      const materials2 = /* @__PURE__ */ new Set();\n      scene.traverse(function(object) {\n        const material = object.material;\n        if (material) {\n          if (Array.isArray(material)) {\n            for (let i2 = 0; i2 < material.length; i2++) {\n              const material2 = material[i2];\n              prepareMaterial(material2, targetScene, object);\n              materials2.add(material2);\n            }\n          } else {\n            prepareMaterial(material, targetScene, object);\n            materials2.add(material);\n          }\n        }\n      });\n      renderStateStack.pop();\n      currentRenderState = null;\n      return materials2;\n    };\n    this.compileAsync = function(scene, camera, targetScene = null) {\n      const materials2 = this.compile(scene, camera, targetScene);\n      return new Promise((resolve2) => {\n        function checkMaterialsReady() {\n          materials2.forEach(function(material) {\n            const materialProperties = properties.get(material);\n            const program = materialProperties.currentProgram;\n            if (program.isReady()) {\n              materials2.delete(material);\n            }\n          });\n          if (materials2.size === 0) {\n            resolve2(scene);\n            return;\n          }\n          setTimeout(checkMaterialsReady, 10);\n        }\n        if (extensions2.get(\"KHR_parallel_shader_compile\") !== null) {\n          checkMaterialsReady();\n        } else {\n          setTimeout(checkMaterialsReady, 10);\n        }\n      });\n    };\n    let onAnimationFrameCallback = null;\n    function onAnimationFrame(time) {\n      if (onAnimationFrameCallback) onAnimationFrameCallback(time);\n    }\n    function onXRSessionStart() {\n      animation.stop();\n    }\n    function onXRSessionEnd() {\n      animation.start();\n    }\n    const animation = new WebGLAnimation();\n    animation.setAnimationLoop(onAnimationFrame);\n    if (typeof self !== \"undefined\") animation.setContext(self);\n    this.setAnimationLoop = function(callback) {\n      onAnimationFrameCallback = callback;\n      xr.setAnimationLoop(callback);\n      callback === null ? animation.stop() : animation.start();\n    };\n    xr.addEventListener(\"sessionstart\", onXRSessionStart);\n    xr.addEventListener(\"sessionend\", onXRSessionEnd);\n    this.render = function(scene, camera) {\n      if (camera !== void 0 && camera.isCamera !== true) {\n        console.error(\"THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.\");\n        return;\n      }\n      if (_isContextLost === true) return;\n      if (scene.matrixWorldAutoUpdate === true) scene.updateMatrixWorld();\n      if (camera.parent === null && camera.matrixWorldAutoUpdate === true) camera.updateMatrixWorld();\n      if (xr.enabled === true && xr.isPresenting === true) {\n        if (xr.cameraAutoUpdate === true) xr.updateCamera(camera);\n        camera = xr.getCamera();\n      }\n      if (scene.isScene === true) scene.onBeforeRender(_this, scene, camera, _currentRenderTarget);\n      currentRenderState = renderStates.get(scene, renderStateStack.length);\n      currentRenderState.init();\n      renderStateStack.push(currentRenderState);\n      _projScreenMatrix2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n      _frustum2.setFromProjectionMatrix(_projScreenMatrix2);\n      _localClippingEnabled = this.localClippingEnabled;\n      _clippingEnabled = clipping.init(this.clippingPlanes, _localClippingEnabled);\n      currentRenderList = renderLists.get(scene, renderListStack.length);\n      currentRenderList.init();\n      renderListStack.push(currentRenderList);\n      projectObject(scene, camera, 0, _this.sortObjects);\n      currentRenderList.finish();\n      if (_this.sortObjects === true) {\n        currentRenderList.sort(_opaqueSort, _transparentSort);\n      }\n      this.info.render.frame++;\n      if (_clippingEnabled === true) clipping.beginShadows();\n      const shadowsArray = currentRenderState.state.shadowsArray;\n      shadowMap.render(shadowsArray, scene, camera);\n      if (_clippingEnabled === true) clipping.endShadows();\n      if (this.info.autoReset === true) this.info.reset();\n      if (xr.enabled === false || xr.isPresenting === false || xr.hasDepthSensing() === false) {\n        background.render(currentRenderList, scene);\n      }\n      currentRenderState.setupLights(_this._useLegacyLights);\n      if (camera.isArrayCamera) {\n        const cameras = camera.cameras;\n        for (let i2 = 0, l2 = cameras.length; i2 < l2; i2++) {\n          const camera2 = cameras[i2];\n          renderScene(currentRenderList, scene, camera2, camera2.viewport);\n        }\n      } else {\n        renderScene(currentRenderList, scene, camera);\n      }\n      if (_currentRenderTarget !== null) {\n        textures.updateMultisampleRenderTarget(_currentRenderTarget);\n        textures.updateRenderTargetMipmap(_currentRenderTarget);\n      }\n      if (scene.isScene === true) scene.onAfterRender(_this, scene, camera);\n      bindingStates.resetDefaultState();\n      _currentMaterialId = -1;\n      _currentCamera = null;\n      renderStateStack.pop();\n      if (renderStateStack.length > 0) {\n        currentRenderState = renderStateStack[renderStateStack.length - 1];\n      } else {\n        currentRenderState = null;\n      }\n      renderListStack.pop();\n      if (renderListStack.length > 0) {\n        currentRenderList = renderListStack[renderListStack.length - 1];\n      } else {\n        currentRenderList = null;\n      }\n    };\n    function projectObject(object, camera, groupOrder, sortObjects) {\n      if (object.visible === false) return;\n      const visible = object.layers.test(camera.layers);\n      if (visible) {\n        if (object.isGroup) {\n          groupOrder = object.renderOrder;\n        } else if (object.isLOD) {\n          if (object.autoUpdate === true) object.update(camera);\n        } else if (object.isLight) {\n          currentRenderState.pushLight(object);\n          if (object.castShadow) {\n            currentRenderState.pushShadow(object);\n          }\n        } else if (object.isSprite) {\n          if (!object.frustumCulled || _frustum2.intersectsSprite(object)) {\n            if (sortObjects) {\n              _vector32.setFromMatrixPosition(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n            }\n            const geometry = objects.update(object);\n            const material = object.material;\n            if (material.visible) {\n              currentRenderList.push(object, geometry, material, groupOrder, _vector32.z, null);\n            }\n          }\n        } else if (object.isMesh || object.isLine || object.isPoints) {\n          if (!object.frustumCulled || _frustum2.intersectsObject(object)) {\n            const geometry = objects.update(object);\n            const material = object.material;\n            if (sortObjects) {\n              if (object.boundingSphere !== void 0) {\n                if (object.boundingSphere === null) object.computeBoundingSphere();\n                _vector32.copy(object.boundingSphere.center);\n              } else {\n                if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n                _vector32.copy(geometry.boundingSphere.center);\n              }\n              _vector32.applyMatrix4(object.matrixWorld).applyMatrix4(_projScreenMatrix2);\n            }\n            if (Array.isArray(material)) {\n              const groups = geometry.groups;\n              for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n                const group = groups[i2];\n                const groupMaterial = material[group.materialIndex];\n                if (groupMaterial && groupMaterial.visible) {\n                  currentRenderList.push(object, geometry, groupMaterial, groupOrder, _vector32.z, group);\n                }\n              }\n            } else if (material.visible) {\n              currentRenderList.push(object, geometry, material, groupOrder, _vector32.z, null);\n            }\n          }\n        }\n      }\n      const children = object.children;\n      for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n        projectObject(children[i2], camera, groupOrder, sortObjects);\n      }\n    }\n    function renderScene(currentRenderList2, scene, camera, viewport) {\n      const opaqueObjects = currentRenderList2.opaque;\n      const transmissiveObjects = currentRenderList2.transmissive;\n      const transparentObjects = currentRenderList2.transparent;\n      currentRenderState.setupLightsView(camera);\n      if (_clippingEnabled === true) clipping.setGlobalState(_this.clippingPlanes, camera);\n      if (transmissiveObjects.length > 0) renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera);\n      if (viewport) state.viewport(_currentViewport.copy(viewport));\n      if (opaqueObjects.length > 0) renderObjects(opaqueObjects, scene, camera);\n      if (transmissiveObjects.length > 0) renderObjects(transmissiveObjects, scene, camera);\n      if (transparentObjects.length > 0) renderObjects(transparentObjects, scene, camera);\n      state.buffers.depth.setTest(true);\n      state.buffers.depth.setMask(true);\n      state.buffers.color.setMask(true);\n      state.setPolygonOffset(false);\n    }\n    function renderTransmissionPass(opaqueObjects, transmissiveObjects, scene, camera) {\n      const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n      if (overrideMaterial !== null) {\n        return;\n      }\n      const isWebGL2 = capabilities.isWebGL2;\n      if (_transmissionRenderTarget === null) {\n        _transmissionRenderTarget = new WebGLRenderTarget(1, 1, {\n          generateMipmaps: true,\n          type: extensions2.has(\"EXT_color_buffer_half_float\") ? HalfFloatType : UnsignedByteType,\n          minFilter: LinearMipmapLinearFilter,\n          samples: isWebGL2 ? 4 : 0\n        });\n      }\n      _this.getDrawingBufferSize(_vector22);\n      if (isWebGL2) {\n        _transmissionRenderTarget.setSize(_vector22.x, _vector22.y);\n      } else {\n        _transmissionRenderTarget.setSize(floorPowerOfTwo(_vector22.x), floorPowerOfTwo(_vector22.y));\n      }\n      const currentRenderTarget = _this.getRenderTarget();\n      _this.setRenderTarget(_transmissionRenderTarget);\n      _this.getClearColor(_currentClearColor);\n      _currentClearAlpha = _this.getClearAlpha();\n      if (_currentClearAlpha < 1) _this.setClearColor(16777215, 0.5);\n      _this.clear();\n      const currentToneMapping = _this.toneMapping;\n      _this.toneMapping = NoToneMapping;\n      renderObjects(opaqueObjects, scene, camera);\n      textures.updateMultisampleRenderTarget(_transmissionRenderTarget);\n      textures.updateRenderTargetMipmap(_transmissionRenderTarget);\n      let renderTargetNeedsUpdate = false;\n      for (let i2 = 0, l2 = transmissiveObjects.length; i2 < l2; i2++) {\n        const renderItem = transmissiveObjects[i2];\n        const object = renderItem.object;\n        const geometry = renderItem.geometry;\n        const material = renderItem.material;\n        const group = renderItem.group;\n        if (material.side === DoubleSide && object.layers.test(camera.layers)) {\n          const currentSide = material.side;\n          material.side = BackSide;\n          material.needsUpdate = true;\n          renderObject(object, scene, camera, geometry, material, group);\n          material.side = currentSide;\n          material.needsUpdate = true;\n          renderTargetNeedsUpdate = true;\n        }\n      }\n      if (renderTargetNeedsUpdate === true) {\n        textures.updateMultisampleRenderTarget(_transmissionRenderTarget);\n        textures.updateRenderTargetMipmap(_transmissionRenderTarget);\n      }\n      _this.setRenderTarget(currentRenderTarget);\n      _this.setClearColor(_currentClearColor, _currentClearAlpha);\n      _this.toneMapping = currentToneMapping;\n    }\n    function renderObjects(renderList, scene, camera) {\n      const overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\n      for (let i2 = 0, l2 = renderList.length; i2 < l2; i2++) {\n        const renderItem = renderList[i2];\n        const object = renderItem.object;\n        const geometry = renderItem.geometry;\n        const material = overrideMaterial === null ? renderItem.material : overrideMaterial;\n        const group = renderItem.group;\n        if (object.layers.test(camera.layers)) {\n          renderObject(object, scene, camera, geometry, material, group);\n        }\n      }\n    }\n    function renderObject(object, scene, camera, geometry, material, group) {\n      object.onBeforeRender(_this, scene, camera, geometry, material, group);\n      object.modelViewMatrix.multiplyMatrices(camera.matrixWorldInverse, object.matrixWorld);\n      object.normalMatrix.getNormalMatrix(object.modelViewMatrix);\n      material.onBeforeRender(_this, scene, camera, geometry, object, group);\n      if (material.transparent === true && material.side === DoubleSide && material.forceSinglePass === false) {\n        material.side = BackSide;\n        material.needsUpdate = true;\n        _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n        material.side = FrontSide;\n        material.needsUpdate = true;\n        _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n        material.side = DoubleSide;\n      } else {\n        _this.renderBufferDirect(camera, scene, geometry, material, object, group);\n      }\n      object.onAfterRender(_this, scene, camera, geometry, material, group);\n    }\n    function getProgram(material, scene, object) {\n      if (scene.isScene !== true) scene = _emptyScene;\n      const materialProperties = properties.get(material);\n      const lights = currentRenderState.state.lights;\n      const shadowsArray = currentRenderState.state.shadowsArray;\n      const lightsStateVersion = lights.state.version;\n      const parameters2 = programCache.getParameters(material, lights.state, shadowsArray, scene, object);\n      const programCacheKey = programCache.getProgramCacheKey(parameters2);\n      let programs = materialProperties.programs;\n      materialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\n      materialProperties.fog = scene.fog;\n      materialProperties.envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || materialProperties.environment);\n      if (programs === void 0) {\n        material.addEventListener(\"dispose\", onMaterialDispose);\n        programs = /* @__PURE__ */ new Map();\n        materialProperties.programs = programs;\n      }\n      let program = programs.get(programCacheKey);\n      if (program !== void 0) {\n        if (materialProperties.currentProgram === program && materialProperties.lightsStateVersion === lightsStateVersion) {\n          updateCommonMaterialProperties(material, parameters2);\n          return program;\n        }\n      } else {\n        parameters2.uniforms = programCache.getUniforms(material);\n        material.onBuild(object, parameters2, _this);\n        material.onBeforeCompile(parameters2, _this);\n        program = programCache.acquireProgram(parameters2, programCacheKey);\n        programs.set(programCacheKey, program);\n        materialProperties.uniforms = parameters2.uniforms;\n      }\n      const uniforms = materialProperties.uniforms;\n      if (!material.isShaderMaterial && !material.isRawShaderMaterial || material.clipping === true) {\n        uniforms.clippingPlanes = clipping.uniform;\n      }\n      updateCommonMaterialProperties(material, parameters2);\n      materialProperties.needsLights = materialNeedsLights(material);\n      materialProperties.lightsStateVersion = lightsStateVersion;\n      if (materialProperties.needsLights) {\n        uniforms.ambientLightColor.value = lights.state.ambient;\n        uniforms.lightProbe.value = lights.state.probe;\n        uniforms.directionalLights.value = lights.state.directional;\n        uniforms.directionalLightShadows.value = lights.state.directionalShadow;\n        uniforms.spotLights.value = lights.state.spot;\n        uniforms.spotLightShadows.value = lights.state.spotShadow;\n        uniforms.rectAreaLights.value = lights.state.rectArea;\n        uniforms.ltc_1.value = lights.state.rectAreaLTC1;\n        uniforms.ltc_2.value = lights.state.rectAreaLTC2;\n        uniforms.pointLights.value = lights.state.point;\n        uniforms.pointLightShadows.value = lights.state.pointShadow;\n        uniforms.hemisphereLights.value = lights.state.hemi;\n        uniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\n        uniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\n        uniforms.spotShadowMap.value = lights.state.spotShadowMap;\n        uniforms.spotLightMatrix.value = lights.state.spotLightMatrix;\n        uniforms.spotLightMap.value = lights.state.spotLightMap;\n        uniforms.pointShadowMap.value = lights.state.pointShadowMap;\n        uniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\n      }\n      materialProperties.currentProgram = program;\n      materialProperties.uniformsList = null;\n      return program;\n    }\n    function getUniformList(materialProperties) {\n      if (materialProperties.uniformsList === null) {\n        const progUniforms = materialProperties.currentProgram.getUniforms();\n        materialProperties.uniformsList = WebGLUniforms.seqWithValue(progUniforms.seq, materialProperties.uniforms);\n      }\n      return materialProperties.uniformsList;\n    }\n    function updateCommonMaterialProperties(material, parameters2) {\n      const materialProperties = properties.get(material);\n      materialProperties.outputColorSpace = parameters2.outputColorSpace;\n      materialProperties.batching = parameters2.batching;\n      materialProperties.instancing = parameters2.instancing;\n      materialProperties.instancingColor = parameters2.instancingColor;\n      materialProperties.skinning = parameters2.skinning;\n      materialProperties.morphTargets = parameters2.morphTargets;\n      materialProperties.morphNormals = parameters2.morphNormals;\n      materialProperties.morphColors = parameters2.morphColors;\n      materialProperties.morphTargetsCount = parameters2.morphTargetsCount;\n      materialProperties.numClippingPlanes = parameters2.numClippingPlanes;\n      materialProperties.numIntersection = parameters2.numClipIntersection;\n      materialProperties.vertexAlphas = parameters2.vertexAlphas;\n      materialProperties.vertexTangents = parameters2.vertexTangents;\n      materialProperties.toneMapping = parameters2.toneMapping;\n    }\n    function setProgram(camera, scene, geometry, material, object) {\n      if (scene.isScene !== true) scene = _emptyScene;\n      textures.resetTextureUnits();\n      const fog = scene.fog;\n      const environment = material.isMeshStandardMaterial ? scene.environment : null;\n      const colorSpace = _currentRenderTarget === null ? _this.outputColorSpace : _currentRenderTarget.isXRRenderTarget === true ? _currentRenderTarget.texture.colorSpace : LinearSRGBColorSpace$1;\n      const envMap = (material.isMeshStandardMaterial ? cubeuvmaps : cubemaps).get(material.envMap || environment);\n      const vertexAlphas = material.vertexColors === true && !!geometry.attributes.color && geometry.attributes.color.itemSize === 4;\n      const vertexTangents = !!geometry.attributes.tangent && (!!material.normalMap || material.anisotropy > 0);\n      const morphTargets = !!geometry.morphAttributes.position;\n      const morphNormals = !!geometry.morphAttributes.normal;\n      const morphColors = !!geometry.morphAttributes.color;\n      let toneMapping = NoToneMapping;\n      if (material.toneMapped) {\n        if (_currentRenderTarget === null || _currentRenderTarget.isXRRenderTarget === true) {\n          toneMapping = _this.toneMapping;\n        }\n      }\n      const morphAttribute = geometry.morphAttributes.position || geometry.morphAttributes.normal || geometry.morphAttributes.color;\n      const morphTargetsCount = morphAttribute !== void 0 ? morphAttribute.length : 0;\n      const materialProperties = properties.get(material);\n      const lights = currentRenderState.state.lights;\n      if (_clippingEnabled === true) {\n        if (_localClippingEnabled === true || camera !== _currentCamera) {\n          const useCache = camera === _currentCamera && material.id === _currentMaterialId;\n          clipping.setState(material, camera, useCache);\n        }\n      }\n      let needsProgramChange = false;\n      if (material.version === materialProperties.__version) {\n        if (materialProperties.needsLights && materialProperties.lightsStateVersion !== lights.state.version) {\n          needsProgramChange = true;\n        } else if (materialProperties.outputColorSpace !== colorSpace) {\n          needsProgramChange = true;\n        } else if (object.isBatchedMesh && materialProperties.batching === false) {\n          needsProgramChange = true;\n        } else if (!object.isBatchedMesh && materialProperties.batching === true) {\n          needsProgramChange = true;\n        } else if (object.isInstancedMesh && materialProperties.instancing === false) {\n          needsProgramChange = true;\n        } else if (!object.isInstancedMesh && materialProperties.instancing === true) {\n          needsProgramChange = true;\n        } else if (object.isSkinnedMesh && materialProperties.skinning === false) {\n          needsProgramChange = true;\n        } else if (!object.isSkinnedMesh && materialProperties.skinning === true) {\n          needsProgramChange = true;\n        } else if (object.isInstancedMesh && materialProperties.instancingColor === true && object.instanceColor === null) {\n          needsProgramChange = true;\n        } else if (object.isInstancedMesh && materialProperties.instancingColor === false && object.instanceColor !== null) {\n          needsProgramChange = true;\n        } else if (materialProperties.envMap !== envMap) {\n          needsProgramChange = true;\n        } else if (material.fog === true && materialProperties.fog !== fog) {\n          needsProgramChange = true;\n        } else if (materialProperties.numClippingPlanes !== void 0 && (materialProperties.numClippingPlanes !== clipping.numPlanes || materialProperties.numIntersection !== clipping.numIntersection)) {\n          needsProgramChange = true;\n        } else if (materialProperties.vertexAlphas !== vertexAlphas) {\n          needsProgramChange = true;\n        } else if (materialProperties.vertexTangents !== vertexTangents) {\n          needsProgramChange = true;\n        } else if (materialProperties.morphTargets !== morphTargets) {\n          needsProgramChange = true;\n        } else if (materialProperties.morphNormals !== morphNormals) {\n          needsProgramChange = true;\n        } else if (materialProperties.morphColors !== morphColors) {\n          needsProgramChange = true;\n        } else if (materialProperties.toneMapping !== toneMapping) {\n          needsProgramChange = true;\n        } else if (capabilities.isWebGL2 === true && materialProperties.morphTargetsCount !== morphTargetsCount) {\n          needsProgramChange = true;\n        }\n      } else {\n        needsProgramChange = true;\n        materialProperties.__version = material.version;\n      }\n      let program = materialProperties.currentProgram;\n      if (needsProgramChange === true) {\n        program = getProgram(material, scene, object);\n      }\n      let refreshProgram = false;\n      let refreshMaterial = false;\n      let refreshLights = false;\n      const p_uniforms = program.getUniforms(), m_uniforms = materialProperties.uniforms;\n      if (state.useProgram(program.program)) {\n        refreshProgram = true;\n        refreshMaterial = true;\n        refreshLights = true;\n      }\n      if (material.id !== _currentMaterialId) {\n        _currentMaterialId = material.id;\n        refreshMaterial = true;\n      }\n      if (refreshProgram || _currentCamera !== camera) {\n        p_uniforms.setValue(_gl, \"projectionMatrix\", camera.projectionMatrix);\n        p_uniforms.setValue(_gl, \"viewMatrix\", camera.matrixWorldInverse);\n        const uCamPos = p_uniforms.map.cameraPosition;\n        if (uCamPos !== void 0) {\n          uCamPos.setValue(_gl, _vector32.setFromMatrixPosition(camera.matrixWorld));\n        }\n        if (capabilities.logarithmicDepthBuffer) {\n          p_uniforms.setValue(\n            _gl,\n            \"logDepthBufFC\",\n            2 / (Math.log(camera.far + 1) / Math.LN2)\n          );\n        }\n        if (material.isMeshPhongMaterial || material.isMeshToonMaterial || material.isMeshLambertMaterial || material.isMeshBasicMaterial || material.isMeshStandardMaterial || material.isShaderMaterial) {\n          p_uniforms.setValue(_gl, \"isOrthographic\", camera.isOrthographicCamera === true);\n        }\n        if (_currentCamera !== camera) {\n          _currentCamera = camera;\n          refreshMaterial = true;\n          refreshLights = true;\n        }\n      }\n      if (object.isSkinnedMesh) {\n        p_uniforms.setOptional(_gl, object, \"bindMatrix\");\n        p_uniforms.setOptional(_gl, object, \"bindMatrixInverse\");\n        const skeleton = object.skeleton;\n        if (skeleton) {\n          if (capabilities.floatVertexTextures) {\n            if (skeleton.boneTexture === null) skeleton.computeBoneTexture();\n            p_uniforms.setValue(_gl, \"boneTexture\", skeleton.boneTexture, textures);\n          } else {\n            console.warn(\"THREE.WebGLRenderer: SkinnedMesh can only be used with WebGL 2. With WebGL 1 OES_texture_float and vertex textures support is required.\");\n          }\n        }\n      }\n      if (object.isBatchedMesh) {\n        p_uniforms.setOptional(_gl, object, \"batchingTexture\");\n        p_uniforms.setValue(_gl, \"batchingTexture\", object._matricesTexture, textures);\n      }\n      const morphAttributes = geometry.morphAttributes;\n      if (morphAttributes.position !== void 0 || morphAttributes.normal !== void 0 || morphAttributes.color !== void 0 && capabilities.isWebGL2 === true) {\n        morphtargets.update(object, geometry, program);\n      }\n      if (refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow) {\n        materialProperties.receiveShadow = object.receiveShadow;\n        p_uniforms.setValue(_gl, \"receiveShadow\", object.receiveShadow);\n      }\n      if (material.isMeshGouraudMaterial && material.envMap !== null) {\n        m_uniforms.envMap.value = envMap;\n        m_uniforms.flipEnvMap.value = envMap.isCubeTexture && envMap.isRenderTargetTexture === false ? -1 : 1;\n      }\n      if (refreshMaterial) {\n        p_uniforms.setValue(_gl, \"toneMappingExposure\", _this.toneMappingExposure);\n        if (materialProperties.needsLights) {\n          markUniformsLightsNeedsUpdate(m_uniforms, refreshLights);\n        }\n        if (fog && material.fog === true) {\n          materials.refreshFogUniforms(m_uniforms, fog);\n        }\n        materials.refreshMaterialUniforms(m_uniforms, material, _pixelRatio, _height, _transmissionRenderTarget);\n        WebGLUniforms.upload(_gl, getUniformList(materialProperties), m_uniforms, textures);\n      }\n      if (material.isShaderMaterial && material.uniformsNeedUpdate === true) {\n        WebGLUniforms.upload(_gl, getUniformList(materialProperties), m_uniforms, textures);\n        material.uniformsNeedUpdate = false;\n      }\n      if (material.isSpriteMaterial) {\n        p_uniforms.setValue(_gl, \"center\", object.center);\n      }\n      p_uniforms.setValue(_gl, \"modelViewMatrix\", object.modelViewMatrix);\n      p_uniforms.setValue(_gl, \"normalMatrix\", object.normalMatrix);\n      p_uniforms.setValue(_gl, \"modelMatrix\", object.matrixWorld);\n      if (material.isShaderMaterial || material.isRawShaderMaterial) {\n        const groups = material.uniformsGroups;\n        for (let i2 = 0, l2 = groups.length; i2 < l2; i2++) {\n          if (capabilities.isWebGL2) {\n            const group = groups[i2];\n            uniformsGroups.update(group, program);\n            uniformsGroups.bind(group, program);\n          } else {\n            console.warn(\"THREE.WebGLRenderer: Uniform Buffer Objects can only be used with WebGL 2.\");\n          }\n        }\n      }\n      return program;\n    }\n    function markUniformsLightsNeedsUpdate(uniforms, value) {\n      uniforms.ambientLightColor.needsUpdate = value;\n      uniforms.lightProbe.needsUpdate = value;\n      uniforms.directionalLights.needsUpdate = value;\n      uniforms.directionalLightShadows.needsUpdate = value;\n      uniforms.pointLights.needsUpdate = value;\n      uniforms.pointLightShadows.needsUpdate = value;\n      uniforms.spotLights.needsUpdate = value;\n      uniforms.spotLightShadows.needsUpdate = value;\n      uniforms.rectAreaLights.needsUpdate = value;\n      uniforms.hemisphereLights.needsUpdate = value;\n    }\n    function materialNeedsLights(material) {\n      return material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial || material.isMeshStandardMaterial || material.isShadowMaterial || material.isShaderMaterial && material.lights === true;\n    }\n    this.getActiveCubeFace = function() {\n      return _currentActiveCubeFace;\n    };\n    this.getActiveMipmapLevel = function() {\n      return _currentActiveMipmapLevel;\n    };\n    this.getRenderTarget = function() {\n      return _currentRenderTarget;\n    };\n    this.setRenderTargetTextures = function(renderTarget, colorTexture, depthTexture) {\n      properties.get(renderTarget.texture).__webglTexture = colorTexture;\n      properties.get(renderTarget.depthTexture).__webglTexture = depthTexture;\n      const renderTargetProperties = properties.get(renderTarget);\n      renderTargetProperties.__hasExternalTextures = true;\n      if (renderTargetProperties.__hasExternalTextures) {\n        renderTargetProperties.__autoAllocateDepthBuffer = depthTexture === void 0;\n        if (!renderTargetProperties.__autoAllocateDepthBuffer) {\n          if (extensions2.has(\"WEBGL_multisampled_render_to_texture\") === true) {\n            console.warn(\"THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided\");\n            renderTargetProperties.__useRenderToTexture = false;\n          }\n        }\n      }\n    };\n    this.setRenderTargetFramebuffer = function(renderTarget, defaultFramebuffer) {\n      const renderTargetProperties = properties.get(renderTarget);\n      renderTargetProperties.__webglFramebuffer = defaultFramebuffer;\n      renderTargetProperties.__useDefaultFramebuffer = defaultFramebuffer === void 0;\n    };\n    this.setRenderTarget = function(renderTarget, activeCubeFace = 0, activeMipmapLevel = 0) {\n      _currentRenderTarget = renderTarget;\n      _currentActiveCubeFace = activeCubeFace;\n      _currentActiveMipmapLevel = activeMipmapLevel;\n      let useDefaultFramebuffer = true;\n      let framebuffer = null;\n      let isCube = false;\n      let isRenderTarget3D = false;\n      if (renderTarget) {\n        const renderTargetProperties = properties.get(renderTarget);\n        if (renderTargetProperties.__useDefaultFramebuffer !== void 0) {\n          state.bindFramebuffer(_gl.FRAMEBUFFER, null);\n          useDefaultFramebuffer = false;\n        } else if (renderTargetProperties.__webglFramebuffer === void 0) {\n          textures.setupRenderTarget(renderTarget);\n        } else if (renderTargetProperties.__hasExternalTextures) {\n          textures.rebindTextures(renderTarget, properties.get(renderTarget.texture).__webglTexture, properties.get(renderTarget.depthTexture).__webglTexture);\n        }\n        const texture = renderTarget.texture;\n        if (texture.isData3DTexture || texture.isDataArrayTexture || texture.isCompressedArrayTexture) {\n          isRenderTarget3D = true;\n        }\n        const __webglFramebuffer = properties.get(renderTarget).__webglFramebuffer;\n        if (renderTarget.isWebGLCubeRenderTarget) {\n          if (Array.isArray(__webglFramebuffer[activeCubeFace])) {\n            framebuffer = __webglFramebuffer[activeCubeFace][activeMipmapLevel];\n          } else {\n            framebuffer = __webglFramebuffer[activeCubeFace];\n          }\n          isCube = true;\n        } else if (capabilities.isWebGL2 && renderTarget.samples > 0 && textures.useMultisampledRTT(renderTarget) === false) {\n          framebuffer = properties.get(renderTarget).__webglMultisampledFramebuffer;\n        } else {\n          if (Array.isArray(__webglFramebuffer)) {\n            framebuffer = __webglFramebuffer[activeMipmapLevel];\n          } else {\n            framebuffer = __webglFramebuffer;\n          }\n        }\n        _currentViewport.copy(renderTarget.viewport);\n        _currentScissor.copy(renderTarget.scissor);\n        _currentScissorTest = renderTarget.scissorTest;\n      } else {\n        _currentViewport.copy(_viewport).multiplyScalar(_pixelRatio).floor();\n        _currentScissor.copy(_scissor).multiplyScalar(_pixelRatio).floor();\n        _currentScissorTest = _scissorTest;\n      }\n      const framebufferBound = state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n      if (framebufferBound && capabilities.drawBuffers && useDefaultFramebuffer) {\n        state.drawBuffers(renderTarget, framebuffer);\n      }\n      state.viewport(_currentViewport);\n      state.scissor(_currentScissor);\n      state.setScissorTest(_currentScissorTest);\n      if (isCube) {\n        const textureProperties = properties.get(renderTarget.texture);\n        _gl.framebufferTexture2D(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, _gl.TEXTURE_CUBE_MAP_POSITIVE_X + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel);\n      } else if (isRenderTarget3D) {\n        const textureProperties = properties.get(renderTarget.texture);\n        const layer = activeCubeFace || 0;\n        _gl.framebufferTextureLayer(_gl.FRAMEBUFFER, _gl.COLOR_ATTACHMENT0, textureProperties.__webglTexture, activeMipmapLevel || 0, layer);\n      }\n      _currentMaterialId = -1;\n    };\n    this.readRenderTargetPixels = function(renderTarget, x2, y2, width, height, buffer, activeCubeFaceIndex) {\n      if (!(renderTarget && renderTarget.isWebGLRenderTarget)) {\n        console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.\");\n        return;\n      }\n      let framebuffer = properties.get(renderTarget).__webglFramebuffer;\n      if (renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== void 0) {\n        framebuffer = framebuffer[activeCubeFaceIndex];\n      }\n      if (framebuffer) {\n        state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer);\n        try {\n          const texture = renderTarget.texture;\n          const textureFormat = texture.format;\n          const textureType = texture.type;\n          if (textureFormat !== RGBAFormat && utils.convert(textureFormat) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)) {\n            console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.\");\n            return;\n          }\n          const halfFloatSupportedByExt = textureType === HalfFloatType && (extensions2.has(\"EXT_color_buffer_half_float\") || capabilities.isWebGL2 && extensions2.has(\"EXT_color_buffer_float\"));\n          if (textureType !== UnsignedByteType && utils.convert(textureType) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE) && // Edge and Chrome Mac < 52 (#9513)\n          !(textureType === FloatType && (capabilities.isWebGL2 || extensions2.has(\"OES_texture_float\") || extensions2.has(\"WEBGL_color_buffer_float\"))) && // Chrome Mac >= 52 and Firefox\n          !halfFloatSupportedByExt) {\n            console.error(\"THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.\");\n            return;\n          }\n          if (x2 >= 0 && x2 <= renderTarget.width - width && (y2 >= 0 && y2 <= renderTarget.height - height)) {\n            _gl.readPixels(x2, y2, width, height, utils.convert(textureFormat), utils.convert(textureType), buffer);\n          }\n        } finally {\n          const framebuffer2 = _currentRenderTarget !== null ? properties.get(_currentRenderTarget).__webglFramebuffer : null;\n          state.bindFramebuffer(_gl.FRAMEBUFFER, framebuffer2);\n        }\n      }\n    };\n    this.copyFramebufferToTexture = function(position, texture, level = 0) {\n      const levelScale = Math.pow(2, -level);\n      const width = Math.floor(texture.image.width * levelScale);\n      const height = Math.floor(texture.image.height * levelScale);\n      textures.setTexture2D(texture, 0);\n      _gl.copyTexSubImage2D(_gl.TEXTURE_2D, level, 0, 0, position.x, position.y, width, height);\n      state.unbindTexture();\n    };\n    this.copyTextureToTexture = function(position, srcTexture, dstTexture, level = 0) {\n      const width = srcTexture.image.width;\n      const height = srcTexture.image.height;\n      const glFormat = utils.convert(dstTexture.format);\n      const glType = utils.convert(dstTexture.type);\n      textures.setTexture2D(dstTexture, 0);\n      _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY);\n      _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha);\n      _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment);\n      if (srcTexture.isDataTexture) {\n        _gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data);\n      } else {\n        if (srcTexture.isCompressedTexture) {\n          _gl.compressedTexSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, srcTexture.mipmaps[0].width, srcTexture.mipmaps[0].height, glFormat, srcTexture.mipmaps[0].data);\n        } else {\n          _gl.texSubImage2D(_gl.TEXTURE_2D, level, position.x, position.y, glFormat, glType, srcTexture.image);\n        }\n      }\n      if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(_gl.TEXTURE_2D);\n      state.unbindTexture();\n    };\n    this.copyTextureToTexture3D = function(sourceBox, position, srcTexture, dstTexture, level = 0) {\n      if (_this.isWebGL1Renderer) {\n        console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.\");\n        return;\n      }\n      const width = sourceBox.max.x - sourceBox.min.x + 1;\n      const height = sourceBox.max.y - sourceBox.min.y + 1;\n      const depth2 = sourceBox.max.z - sourceBox.min.z + 1;\n      const glFormat = utils.convert(dstTexture.format);\n      const glType = utils.convert(dstTexture.type);\n      let glTarget;\n      if (dstTexture.isData3DTexture) {\n        textures.setTexture3D(dstTexture, 0);\n        glTarget = _gl.TEXTURE_3D;\n      } else if (dstTexture.isDataArrayTexture || dstTexture.isCompressedArrayTexture) {\n        textures.setTexture2DArray(dstTexture, 0);\n        glTarget = _gl.TEXTURE_2D_ARRAY;\n      } else {\n        console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.\");\n        return;\n      }\n      _gl.pixelStorei(_gl.UNPACK_FLIP_Y_WEBGL, dstTexture.flipY);\n      _gl.pixelStorei(_gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, dstTexture.premultiplyAlpha);\n      _gl.pixelStorei(_gl.UNPACK_ALIGNMENT, dstTexture.unpackAlignment);\n      const unpackRowLen = _gl.getParameter(_gl.UNPACK_ROW_LENGTH);\n      const unpackImageHeight = _gl.getParameter(_gl.UNPACK_IMAGE_HEIGHT);\n      const unpackSkipPixels = _gl.getParameter(_gl.UNPACK_SKIP_PIXELS);\n      const unpackSkipRows = _gl.getParameter(_gl.UNPACK_SKIP_ROWS);\n      const unpackSkipImages = _gl.getParameter(_gl.UNPACK_SKIP_IMAGES);\n      const image = srcTexture.isCompressedTexture ? srcTexture.mipmaps[level] : srcTexture.image;\n      _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, image.width);\n      _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, image.height);\n      _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, sourceBox.min.x);\n      _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, sourceBox.min.y);\n      _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, sourceBox.min.z);\n      if (srcTexture.isDataTexture || srcTexture.isData3DTexture) {\n        _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth2, glFormat, glType, image.data);\n      } else {\n        if (srcTexture.isCompressedArrayTexture) {\n          console.warn(\"THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture.\");\n          _gl.compressedTexSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth2, glFormat, image.data);\n        } else {\n          _gl.texSubImage3D(glTarget, level, position.x, position.y, position.z, width, height, depth2, glFormat, glType, image);\n        }\n      }\n      _gl.pixelStorei(_gl.UNPACK_ROW_LENGTH, unpackRowLen);\n      _gl.pixelStorei(_gl.UNPACK_IMAGE_HEIGHT, unpackImageHeight);\n      _gl.pixelStorei(_gl.UNPACK_SKIP_PIXELS, unpackSkipPixels);\n      _gl.pixelStorei(_gl.UNPACK_SKIP_ROWS, unpackSkipRows);\n      _gl.pixelStorei(_gl.UNPACK_SKIP_IMAGES, unpackSkipImages);\n      if (level === 0 && dstTexture.generateMipmaps) _gl.generateMipmap(glTarget);\n      state.unbindTexture();\n    };\n    this.initTexture = function(texture) {\n      if (texture.isCubeTexture) {\n        textures.setTextureCube(texture, 0);\n      } else if (texture.isData3DTexture) {\n        textures.setTexture3D(texture, 0);\n      } else if (texture.isDataArrayTexture || texture.isCompressedArrayTexture) {\n        textures.setTexture2DArray(texture, 0);\n      } else {\n        textures.setTexture2D(texture, 0);\n      }\n      state.unbindTexture();\n    };\n    this.resetState = function() {\n      _currentActiveCubeFace = 0;\n      _currentActiveMipmapLevel = 0;\n      _currentRenderTarget = null;\n      state.reset();\n      bindingStates.reset();\n    };\n    if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n      __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n    }\n  }\n  get coordinateSystem() {\n    return WebGLCoordinateSystem;\n  }\n  get outputColorSpace() {\n    return this._outputColorSpace;\n  }\n  set outputColorSpace(colorSpace) {\n    this._outputColorSpace = colorSpace;\n    const gl = this.getContext();\n    gl.drawingBufferColorSpace = colorSpace === DisplayP3ColorSpace ? \"display-p3\" : \"srgb\";\n    gl.unpackColorSpace = ColorManagement.workingColorSpace === LinearDisplayP3ColorSpace ? \"display-p3\" : \"srgb\";\n  }\n  get outputEncoding() {\n    console.warn(\"THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.\");\n    return this.outputColorSpace === SRGBColorSpace$1 ? sRGBEncoding$2 : LinearEncoding$2;\n  }\n  set outputEncoding(encoding) {\n    console.warn(\"THREE.WebGLRenderer: Property .outputEncoding has been removed. Use .outputColorSpace instead.\");\n    this.outputColorSpace = encoding === sRGBEncoding$2 ? SRGBColorSpace$1 : LinearSRGBColorSpace$1;\n  }\n  get useLegacyLights() {\n    console.warn(\"THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.\");\n    return this._useLegacyLights;\n  }\n  set useLegacyLights(value) {\n    console.warn(\"THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733.\");\n    this._useLegacyLights = value;\n  }\n}\nclass WebGL1Renderer extends WebGLRenderer {\n}\nWebGL1Renderer.prototype.isWebGL1Renderer = true;\nclass FogExp2 {\n  constructor(color, density = 25e-5) {\n    this.isFogExp2 = true;\n    this.name = \"\";\n    this.color = new Color(color);\n    this.density = density;\n  }\n  clone() {\n    return new FogExp2(this.color, this.density);\n  }\n  toJSON() {\n    return {\n      type: \"FogExp2\",\n      name: this.name,\n      color: this.color.getHex(),\n      density: this.density\n    };\n  }\n}\nclass Fog {\n  constructor(color, near = 1, far = 1e3) {\n    this.isFog = true;\n    this.name = \"\";\n    this.color = new Color(color);\n    this.near = near;\n    this.far = far;\n  }\n  clone() {\n    return new Fog(this.color, this.near, this.far);\n  }\n  toJSON() {\n    return {\n      type: \"Fog\",\n      name: this.name,\n      color: this.color.getHex(),\n      near: this.near,\n      far: this.far\n    };\n  }\n}\nclass Scene extends Object3D {\n  constructor() {\n    super();\n    this.isScene = true;\n    this.type = \"Scene\";\n    this.background = null;\n    this.environment = null;\n    this.fog = null;\n    this.backgroundBlurriness = 0;\n    this.backgroundIntensity = 1;\n    this.overrideMaterial = null;\n    if (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n      __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"observe\", { detail: this }));\n    }\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.background !== null) this.background = source.background.clone();\n    if (source.environment !== null) this.environment = source.environment.clone();\n    if (source.fog !== null) this.fog = source.fog.clone();\n    this.backgroundBlurriness = source.backgroundBlurriness;\n    this.backgroundIntensity = source.backgroundIntensity;\n    if (source.overrideMaterial !== null) this.overrideMaterial = source.overrideMaterial.clone();\n    this.matrixAutoUpdate = source.matrixAutoUpdate;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    if (this.fog !== null) data.object.fog = this.fog.toJSON();\n    if (this.backgroundBlurriness > 0) data.object.backgroundBlurriness = this.backgroundBlurriness;\n    if (this.backgroundIntensity !== 1) data.object.backgroundIntensity = this.backgroundIntensity;\n    return data;\n  }\n}\nclass InterleavedBuffer {\n  constructor(array, stride) {\n    this.isInterleavedBuffer = true;\n    this.array = array;\n    this.stride = stride;\n    this.count = array !== void 0 ? array.length / stride : 0;\n    this.usage = StaticDrawUsage;\n    this._updateRange = { offset: 0, count: -1 };\n    this.updateRanges = [];\n    this.version = 0;\n    this.uuid = generateUUID();\n  }\n  onUploadCallback() {\n  }\n  set needsUpdate(value) {\n    if (value === true) this.version++;\n  }\n  get updateRange() {\n    warnOnce(\"THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead.\");\n    return this._updateRange;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  addUpdateRange(start, count) {\n    this.updateRanges.push({ start, count });\n  }\n  clearUpdateRanges() {\n    this.updateRanges.length = 0;\n  }\n  copy(source) {\n    this.array = new source.array.constructor(source.array);\n    this.count = source.count;\n    this.stride = source.stride;\n    this.usage = source.usage;\n    return this;\n  }\n  copyAt(index1, attribute, index2) {\n    index1 *= this.stride;\n    index2 *= attribute.stride;\n    for (let i2 = 0, l2 = this.stride; i2 < l2; i2++) {\n      this.array[index1 + i2] = attribute.array[index2 + i2];\n    }\n    return this;\n  }\n  set(value, offset = 0) {\n    this.array.set(value, offset);\n    return this;\n  }\n  clone(data) {\n    if (data.arrayBuffers === void 0) {\n      data.arrayBuffers = {};\n    }\n    if (this.array.buffer._uuid === void 0) {\n      this.array.buffer._uuid = generateUUID();\n    }\n    if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n      data.arrayBuffers[this.array.buffer._uuid] = this.array.slice(0).buffer;\n    }\n    const array = new this.array.constructor(data.arrayBuffers[this.array.buffer._uuid]);\n    const ib = new this.constructor(array, this.stride);\n    ib.setUsage(this.usage);\n    return ib;\n  }\n  onUpload(callback) {\n    this.onUploadCallback = callback;\n    return this;\n  }\n  toJSON(data) {\n    if (data.arrayBuffers === void 0) {\n      data.arrayBuffers = {};\n    }\n    if (this.array.buffer._uuid === void 0) {\n      this.array.buffer._uuid = generateUUID();\n    }\n    if (data.arrayBuffers[this.array.buffer._uuid] === void 0) {\n      data.arrayBuffers[this.array.buffer._uuid] = Array.from(new Uint32Array(this.array.buffer));\n    }\n    return {\n      uuid: this.uuid,\n      buffer: this.array.buffer._uuid,\n      type: this.array.constructor.name,\n      stride: this.stride\n    };\n  }\n}\nconst _vector$6 = /* @__PURE__ */ new Vector3();\nclass InterleavedBufferAttribute {\n  constructor(interleavedBuffer, itemSize, offset, normalized = false) {\n    this.isInterleavedBufferAttribute = true;\n    this.name = \"\";\n    this.data = interleavedBuffer;\n    this.itemSize = itemSize;\n    this.offset = offset;\n    this.normalized = normalized;\n  }\n  get count() {\n    return this.data.count;\n  }\n  get array() {\n    return this.data.array;\n  }\n  set needsUpdate(value) {\n    this.data.needsUpdate = value;\n  }\n  applyMatrix4(m2) {\n    for (let i2 = 0, l2 = this.data.count; i2 < l2; i2++) {\n      _vector$6.fromBufferAttribute(this, i2);\n      _vector$6.applyMatrix4(m2);\n      this.setXYZ(i2, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  applyNormalMatrix(m2) {\n    for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n      _vector$6.fromBufferAttribute(this, i2);\n      _vector$6.applyNormalMatrix(m2);\n      this.setXYZ(i2, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  transformDirection(m2) {\n    for (let i2 = 0, l2 = this.count; i2 < l2; i2++) {\n      _vector$6.fromBufferAttribute(this, i2);\n      _vector$6.transformDirection(m2);\n      this.setXYZ(i2, _vector$6.x, _vector$6.y, _vector$6.z);\n    }\n    return this;\n  }\n  getComponent(index, component) {\n    let value = this.array[index * this.data.stride + this.offset + component];\n    if (this.normalized) value = denormalize(value, this.array);\n    return value;\n  }\n  setComponent(index, component, value) {\n    if (this.normalized) value = normalize(value, this.array);\n    this.data.array[index * this.data.stride + this.offset + component] = value;\n    return this;\n  }\n  setX(index, x2) {\n    if (this.normalized) x2 = normalize(x2, this.array);\n    this.data.array[index * this.data.stride + this.offset] = x2;\n    return this;\n  }\n  setY(index, y2) {\n    if (this.normalized) y2 = normalize(y2, this.array);\n    this.data.array[index * this.data.stride + this.offset + 1] = y2;\n    return this;\n  }\n  setZ(index, z2) {\n    if (this.normalized) z2 = normalize(z2, this.array);\n    this.data.array[index * this.data.stride + this.offset + 2] = z2;\n    return this;\n  }\n  setW(index, w2) {\n    if (this.normalized) w2 = normalize(w2, this.array);\n    this.data.array[index * this.data.stride + this.offset + 3] = w2;\n    return this;\n  }\n  getX(index) {\n    let x2 = this.data.array[index * this.data.stride + this.offset];\n    if (this.normalized) x2 = denormalize(x2, this.array);\n    return x2;\n  }\n  getY(index) {\n    let y2 = this.data.array[index * this.data.stride + this.offset + 1];\n    if (this.normalized) y2 = denormalize(y2, this.array);\n    return y2;\n  }\n  getZ(index) {\n    let z2 = this.data.array[index * this.data.stride + this.offset + 2];\n    if (this.normalized) z2 = denormalize(z2, this.array);\n    return z2;\n  }\n  getW(index) {\n    let w2 = this.data.array[index * this.data.stride + this.offset + 3];\n    if (this.normalized) w2 = denormalize(w2, this.array);\n    return w2;\n  }\n  setXY(index, x2, y2) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n    }\n    this.data.array[index + 0] = x2;\n    this.data.array[index + 1] = y2;\n    return this;\n  }\n  setXYZ(index, x2, y2, z2) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n      z2 = normalize(z2, this.array);\n    }\n    this.data.array[index + 0] = x2;\n    this.data.array[index + 1] = y2;\n    this.data.array[index + 2] = z2;\n    return this;\n  }\n  setXYZW(index, x2, y2, z2, w2) {\n    index = index * this.data.stride + this.offset;\n    if (this.normalized) {\n      x2 = normalize(x2, this.array);\n      y2 = normalize(y2, this.array);\n      z2 = normalize(z2, this.array);\n      w2 = normalize(w2, this.array);\n    }\n    this.data.array[index + 0] = x2;\n    this.data.array[index + 1] = y2;\n    this.data.array[index + 2] = z2;\n    this.data.array[index + 3] = w2;\n    return this;\n  }\n  clone(data) {\n    if (data === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.\");\n      const array = [];\n      for (let i2 = 0; i2 < this.count; i2++) {\n        const index = i2 * this.data.stride + this.offset;\n        for (let j2 = 0; j2 < this.itemSize; j2++) {\n          array.push(this.data.array[index + j2]);\n        }\n      }\n      return new BufferAttribute(new this.array.constructor(array), this.itemSize, this.normalized);\n    } else {\n      if (data.interleavedBuffers === void 0) {\n        data.interleavedBuffers = {};\n      }\n      if (data.interleavedBuffers[this.data.uuid] === void 0) {\n        data.interleavedBuffers[this.data.uuid] = this.data.clone(data);\n      }\n      return new InterleavedBufferAttribute(data.interleavedBuffers[this.data.uuid], this.itemSize, this.offset, this.normalized);\n    }\n  }\n  toJSON(data) {\n    if (data === void 0) {\n      console.log(\"THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.\");\n      const array = [];\n      for (let i2 = 0; i2 < this.count; i2++) {\n        const index = i2 * this.data.stride + this.offset;\n        for (let j2 = 0; j2 < this.itemSize; j2++) {\n          array.push(this.data.array[index + j2]);\n        }\n      }\n      return {\n        itemSize: this.itemSize,\n        type: this.array.constructor.name,\n        array,\n        normalized: this.normalized\n      };\n    } else {\n      if (data.interleavedBuffers === void 0) {\n        data.interleavedBuffers = {};\n      }\n      if (data.interleavedBuffers[this.data.uuid] === void 0) {\n        data.interleavedBuffers[this.data.uuid] = this.data.toJSON(data);\n      }\n      return {\n        isInterleavedBufferAttribute: true,\n        itemSize: this.itemSize,\n        data: this.data.uuid,\n        offset: this.offset,\n        normalized: this.normalized\n      };\n    }\n  }\n}\nclass SpriteMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isSpriteMaterial = true;\n    this.type = \"SpriteMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.alphaMap = null;\n    this.rotation = 0;\n    this.sizeAttenuation = true;\n    this.transparent = true;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.rotation = source.rotation;\n    this.sizeAttenuation = source.sizeAttenuation;\n    this.fog = source.fog;\n    return this;\n  }\n}\nlet _geometry;\nconst _intersectPoint = /* @__PURE__ */ new Vector3();\nconst _worldScale = /* @__PURE__ */ new Vector3();\nconst _mvPosition = /* @__PURE__ */ new Vector3();\nconst _alignedPosition = /* @__PURE__ */ new Vector2();\nconst _rotatedPosition = /* @__PURE__ */ new Vector2();\nconst _viewWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _vA = /* @__PURE__ */ new Vector3();\nconst _vB = /* @__PURE__ */ new Vector3();\nconst _vC = /* @__PURE__ */ new Vector3();\nconst _uvA = /* @__PURE__ */ new Vector2();\nconst _uvB = /* @__PURE__ */ new Vector2();\nconst _uvC = /* @__PURE__ */ new Vector2();\nclass Sprite extends Object3D {\n  constructor(material = new SpriteMaterial()) {\n    super();\n    this.isSprite = true;\n    this.type = \"Sprite\";\n    if (_geometry === void 0) {\n      _geometry = new BufferGeometry();\n      const float32Array = new Float32Array([\n        -0.5,\n        -0.5,\n        0,\n        0,\n        0,\n        0.5,\n        -0.5,\n        0,\n        1,\n        0,\n        0.5,\n        0.5,\n        0,\n        1,\n        1,\n        -0.5,\n        0.5,\n        0,\n        0,\n        1\n      ]);\n      const interleavedBuffer = new InterleavedBuffer(float32Array, 5);\n      _geometry.setIndex([0, 1, 2, 0, 2, 3]);\n      _geometry.setAttribute(\"position\", new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false));\n      _geometry.setAttribute(\"uv\", new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false));\n    }\n    this.geometry = _geometry;\n    this.material = material;\n    this.center = new Vector2(0.5, 0.5);\n  }\n  raycast(raycaster, intersects2) {\n    if (raycaster.camera === null) {\n      console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.');\n    }\n    _worldScale.setFromMatrixScale(this.matrixWorld);\n    _viewWorldMatrix.copy(raycaster.camera.matrixWorld);\n    this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld);\n    _mvPosition.setFromMatrixPosition(this.modelViewMatrix);\n    if (raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false) {\n      _worldScale.multiplyScalar(-_mvPosition.z);\n    }\n    const rotation = this.material.rotation;\n    let sin, cos;\n    if (rotation !== 0) {\n      cos = Math.cos(rotation);\n      sin = Math.sin(rotation);\n    }\n    const center = this.center;\n    transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n    transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n    transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n    _uvA.set(0, 0);\n    _uvB.set(1, 0);\n    _uvC.set(1, 1);\n    let intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint);\n    if (intersect === null) {\n      transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos);\n      _uvB.set(0, 1);\n      intersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint);\n      if (intersect === null) {\n        return;\n      }\n    }\n    const distance = raycaster.ray.origin.distanceTo(_intersectPoint);\n    if (distance < raycaster.near || distance > raycaster.far) return;\n    intersects2.push({\n      distance,\n      point: _intersectPoint.clone(),\n      uv: Triangle.getInterpolation(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n      face: null,\n      object: this\n    });\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    if (source.center !== void 0) this.center.copy(source.center);\n    this.material = source.material;\n    return this;\n  }\n}\nfunction transformVertex(vertexPosition, mvPosition, center, scale, sin, cos) {\n  _alignedPosition.subVectors(vertexPosition, center).addScalar(0.5).multiply(scale);\n  if (sin !== void 0) {\n    _rotatedPosition.x = cos * _alignedPosition.x - sin * _alignedPosition.y;\n    _rotatedPosition.y = sin * _alignedPosition.x + cos * _alignedPosition.y;\n  } else {\n    _rotatedPosition.copy(_alignedPosition);\n  }\n  vertexPosition.copy(mvPosition);\n  vertexPosition.x += _rotatedPosition.x;\n  vertexPosition.y += _rotatedPosition.y;\n  vertexPosition.applyMatrix4(_viewWorldMatrix);\n}\nconst _v1$2 = /* @__PURE__ */ new Vector3();\nconst _v2$1 = /* @__PURE__ */ new Vector3();\nclass LOD extends Object3D {\n  constructor() {\n    super();\n    this._currentLevel = 0;\n    this.type = \"LOD\";\n    Object.defineProperties(this, {\n      levels: {\n        enumerable: true,\n        value: []\n      },\n      isLOD: {\n        value: true\n      }\n    });\n    this.autoUpdate = true;\n  }\n  copy(source) {\n    super.copy(source, false);\n    const levels = source.levels;\n    for (let i2 = 0, l2 = levels.length; i2 < l2; i2++) {\n      const level = levels[i2];\n      this.addLevel(level.object.clone(), level.distance, level.hysteresis);\n    }\n    this.autoUpdate = source.autoUpdate;\n    return this;\n  }\n  addLevel(object, distance = 0, hysteresis = 0) {\n    distance = Math.abs(distance);\n    const levels = this.levels;\n    let l2;\n    for (l2 = 0; l2 < levels.length; l2++) {\n      if (distance < levels[l2].distance) {\n        break;\n      }\n    }\n    levels.splice(l2, 0, { distance, hysteresis, object });\n    this.add(object);\n    return this;\n  }\n  getCurrentLevel() {\n    return this._currentLevel;\n  }\n  getObjectForDistance(distance) {\n    const levels = this.levels;\n    if (levels.length > 0) {\n      let i2, l2;\n      for (i2 = 1, l2 = levels.length; i2 < l2; i2++) {\n        let levelDistance = levels[i2].distance;\n        if (levels[i2].object.visible) {\n          levelDistance -= levelDistance * levels[i2].hysteresis;\n        }\n        if (distance < levelDistance) {\n          break;\n        }\n      }\n      return levels[i2 - 1].object;\n    }\n    return null;\n  }\n  raycast(raycaster, intersects2) {\n    const levels = this.levels;\n    if (levels.length > 0) {\n      _v1$2.setFromMatrixPosition(this.matrixWorld);\n      const distance = raycaster.ray.origin.distanceTo(_v1$2);\n      this.getObjectForDistance(distance).raycast(raycaster, intersects2);\n    }\n  }\n  update(camera) {\n    const levels = this.levels;\n    if (levels.length > 1) {\n      _v1$2.setFromMatrixPosition(camera.matrixWorld);\n      _v2$1.setFromMatrixPosition(this.matrixWorld);\n      const distance = _v1$2.distanceTo(_v2$1) / camera.zoom;\n      levels[0].object.visible = true;\n      let i2, l2;\n      for (i2 = 1, l2 = levels.length; i2 < l2; i2++) {\n        let levelDistance = levels[i2].distance;\n        if (levels[i2].object.visible) {\n          levelDistance -= levelDistance * levels[i2].hysteresis;\n        }\n        if (distance >= levelDistance) {\n          levels[i2 - 1].object.visible = false;\n          levels[i2].object.visible = true;\n        } else {\n          break;\n        }\n      }\n      this._currentLevel = i2 - 1;\n      for (; i2 < l2; i2++) {\n        levels[i2].object.visible = false;\n      }\n    }\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    if (this.autoUpdate === false) data.object.autoUpdate = false;\n    data.object.levels = [];\n    const levels = this.levels;\n    for (let i2 = 0, l2 = levels.length; i2 < l2; i2++) {\n      const level = levels[i2];\n      data.object.levels.push({\n        object: level.object.uuid,\n        distance: level.distance,\n        hysteresis: level.hysteresis\n      });\n    }\n    return data;\n  }\n}\nconst _basePosition = /* @__PURE__ */ new Vector3();\nconst _skinIndex = /* @__PURE__ */ new Vector4();\nconst _skinWeight = /* @__PURE__ */ new Vector4();\nconst _vector3$1 = /* @__PURE__ */ new Vector3();\nconst _matrix4$1 = /* @__PURE__ */ new Matrix4();\nconst _vertex = /* @__PURE__ */ new Vector3();\nconst _sphere$4 = /* @__PURE__ */ new Sphere();\nconst _inverseMatrix$2 = /* @__PURE__ */ new Matrix4();\nconst _ray$2 = /* @__PURE__ */ new Ray();\nclass SkinnedMesh extends Mesh {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isSkinnedMesh = true;\n    this.type = \"SkinnedMesh\";\n    this.bindMode = AttachedBindMode;\n    this.bindMatrix = new Matrix4();\n    this.bindMatrixInverse = new Matrix4();\n    this.boundingBox = null;\n    this.boundingSphere = null;\n  }\n  computeBoundingBox() {\n    const geometry = this.geometry;\n    if (this.boundingBox === null) {\n      this.boundingBox = new Box3();\n    }\n    this.boundingBox.makeEmpty();\n    const positionAttribute = geometry.getAttribute(\"position\");\n    for (let i2 = 0; i2 < positionAttribute.count; i2++) {\n      this.getVertexPosition(i2, _vertex);\n      this.boundingBox.expandByPoint(_vertex);\n    }\n  }\n  computeBoundingSphere() {\n    const geometry = this.geometry;\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new Sphere();\n    }\n    this.boundingSphere.makeEmpty();\n    const positionAttribute = geometry.getAttribute(\"position\");\n    for (let i2 = 0; i2 < positionAttribute.count; i2++) {\n      this.getVertexPosition(i2, _vertex);\n      this.boundingSphere.expandByPoint(_vertex);\n    }\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.bindMode = source.bindMode;\n    this.bindMatrix.copy(source.bindMatrix);\n    this.bindMatrixInverse.copy(source.bindMatrixInverse);\n    this.skeleton = source.skeleton;\n    if (source.boundingBox !== null) this.boundingBox = source.boundingBox.clone();\n    if (source.boundingSphere !== null) this.boundingSphere = source.boundingSphere.clone();\n    return this;\n  }\n  raycast(raycaster, intersects2) {\n    const material = this.material;\n    const matrixWorld = this.matrixWorld;\n    if (material === void 0) return;\n    if (this.boundingSphere === null) this.computeBoundingSphere();\n    _sphere$4.copy(this.boundingSphere);\n    _sphere$4.applyMatrix4(matrixWorld);\n    if (raycaster.ray.intersectsSphere(_sphere$4) === false) return;\n    _inverseMatrix$2.copy(matrixWorld).invert();\n    _ray$2.copy(raycaster.ray).applyMatrix4(_inverseMatrix$2);\n    if (this.boundingBox !== null) {\n      if (_ray$2.intersectsBox(this.boundingBox) === false) return;\n    }\n    this._computeIntersections(raycaster, intersects2, _ray$2);\n  }\n  getVertexPosition(index, target) {\n    super.getVertexPosition(index, target);\n    this.applyBoneTransform(index, target);\n    return target;\n  }\n  bind(skeleton, bindMatrix) {\n    this.skeleton = skeleton;\n    if (bindMatrix === void 0) {\n      this.updateMatrixWorld(true);\n      this.skeleton.calculateInverses();\n      bindMatrix = this.matrixWorld;\n    }\n    this.bindMatrix.copy(bindMatrix);\n    this.bindMatrixInverse.copy(bindMatrix).invert();\n  }\n  pose() {\n    this.skeleton.pose();\n  }\n  normalizeSkinWeights() {\n    const vector = new Vector4();\n    const skinWeight = this.geometry.attributes.skinWeight;\n    for (let i2 = 0, l2 = skinWeight.count; i2 < l2; i2++) {\n      vector.fromBufferAttribute(skinWeight, i2);\n      const scale = 1 / vector.manhattanLength();\n      if (scale !== Infinity) {\n        vector.multiplyScalar(scale);\n      } else {\n        vector.set(1, 0, 0, 0);\n      }\n      skinWeight.setXYZW(i2, vector.x, vector.y, vector.z, vector.w);\n    }\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    if (this.bindMode === AttachedBindMode) {\n      this.bindMatrixInverse.copy(this.matrixWorld).invert();\n    } else if (this.bindMode === DetachedBindMode) {\n      this.bindMatrixInverse.copy(this.bindMatrix).invert();\n    } else {\n      console.warn(\"THREE.SkinnedMesh: Unrecognized bindMode: \" + this.bindMode);\n    }\n  }\n  applyBoneTransform(index, vector) {\n    const skeleton = this.skeleton;\n    const geometry = this.geometry;\n    _skinIndex.fromBufferAttribute(geometry.attributes.skinIndex, index);\n    _skinWeight.fromBufferAttribute(geometry.attributes.skinWeight, index);\n    _basePosition.copy(vector).applyMatrix4(this.bindMatrix);\n    vector.set(0, 0, 0);\n    for (let i2 = 0; i2 < 4; i2++) {\n      const weight = _skinWeight.getComponent(i2);\n      if (weight !== 0) {\n        const boneIndex = _skinIndex.getComponent(i2);\n        _matrix4$1.multiplyMatrices(skeleton.bones[boneIndex].matrixWorld, skeleton.boneInverses[boneIndex]);\n        vector.addScaledVector(_vector3$1.copy(_basePosition).applyMatrix4(_matrix4$1), weight);\n      }\n    }\n    return vector.applyMatrix4(this.bindMatrixInverse);\n  }\n}\nclass Bone extends Object3D {\n  constructor() {\n    super();\n    this.isBone = true;\n    this.type = \"Bone\";\n  }\n}\nclass DataTexture extends Texture {\n  constructor(data = null, width = 1, height = 1, format, type, mapping, wrapS, wrapT, magFilter = NearestFilter, minFilter = NearestFilter, anisotropy, colorSpace) {\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace);\n    this.isDataTexture = true;\n    this.image = { data, width, height };\n    this.generateMipmaps = false;\n    this.flipY = false;\n    this.unpackAlignment = 1;\n  }\n}\nconst _offsetMatrix = /* @__PURE__ */ new Matrix4();\nconst _identityMatrix$1 = /* @__PURE__ */ new Matrix4();\nclass Skeleton {\n  constructor(bones = [], boneInverses = []) {\n    this.uuid = generateUUID();\n    this.bones = bones.slice(0);\n    this.boneInverses = boneInverses;\n    this.boneMatrices = null;\n    this.boneTexture = null;\n    this.init();\n  }\n  init() {\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    this.boneMatrices = new Float32Array(bones.length * 16);\n    if (boneInverses.length === 0) {\n      this.calculateInverses();\n    } else {\n      if (bones.length !== boneInverses.length) {\n        console.warn(\"THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.\");\n        this.boneInverses = [];\n        for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n          this.boneInverses.push(new Matrix4());\n        }\n      }\n    }\n  }\n  calculateInverses() {\n    this.boneInverses.length = 0;\n    for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n      const inverse = new Matrix4();\n      if (this.bones[i2]) {\n        inverse.copy(this.bones[i2].matrixWorld).invert();\n      }\n      this.boneInverses.push(inverse);\n    }\n  }\n  pose() {\n    for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n      const bone = this.bones[i2];\n      if (bone) {\n        bone.matrixWorld.copy(this.boneInverses[i2]).invert();\n      }\n    }\n    for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n      const bone = this.bones[i2];\n      if (bone) {\n        if (bone.parent && bone.parent.isBone) {\n          bone.matrix.copy(bone.parent.matrixWorld).invert();\n          bone.matrix.multiply(bone.matrixWorld);\n        } else {\n          bone.matrix.copy(bone.matrixWorld);\n        }\n        bone.matrix.decompose(bone.position, bone.quaternion, bone.scale);\n      }\n    }\n  }\n  update() {\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    const boneMatrices = this.boneMatrices;\n    const boneTexture = this.boneTexture;\n    for (let i2 = 0, il = bones.length; i2 < il; i2++) {\n      const matrix = bones[i2] ? bones[i2].matrixWorld : _identityMatrix$1;\n      _offsetMatrix.multiplyMatrices(matrix, boneInverses[i2]);\n      _offsetMatrix.toArray(boneMatrices, i2 * 16);\n    }\n    if (boneTexture !== null) {\n      boneTexture.needsUpdate = true;\n    }\n  }\n  clone() {\n    return new Skeleton(this.bones, this.boneInverses);\n  }\n  computeBoneTexture() {\n    let size = Math.sqrt(this.bones.length * 4);\n    size = Math.ceil(size / 4) * 4;\n    size = Math.max(size, 4);\n    const boneMatrices = new Float32Array(size * size * 4);\n    boneMatrices.set(this.boneMatrices);\n    const boneTexture = new DataTexture(boneMatrices, size, size, RGBAFormat, FloatType);\n    boneTexture.needsUpdate = true;\n    this.boneMatrices = boneMatrices;\n    this.boneTexture = boneTexture;\n    return this;\n  }\n  getBoneByName(name) {\n    for (let i2 = 0, il = this.bones.length; i2 < il; i2++) {\n      const bone = this.bones[i2];\n      if (bone.name === name) {\n        return bone;\n      }\n    }\n    return void 0;\n  }\n  dispose() {\n    if (this.boneTexture !== null) {\n      this.boneTexture.dispose();\n      this.boneTexture = null;\n    }\n  }\n  fromJSON(json, bones) {\n    this.uuid = json.uuid;\n    for (let i2 = 0, l2 = json.bones.length; i2 < l2; i2++) {\n      const uuid = json.bones[i2];\n      let bone = bones[uuid];\n      if (bone === void 0) {\n        console.warn(\"THREE.Skeleton: No bone found with UUID:\", uuid);\n        bone = new Bone();\n      }\n      this.bones.push(bone);\n      this.boneInverses.push(new Matrix4().fromArray(json.boneInverses[i2]));\n    }\n    this.init();\n    return this;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.6,\n        type: \"Skeleton\",\n        generator: \"Skeleton.toJSON\"\n      },\n      bones: [],\n      boneInverses: []\n    };\n    data.uuid = this.uuid;\n    const bones = this.bones;\n    const boneInverses = this.boneInverses;\n    for (let i2 = 0, l2 = bones.length; i2 < l2; i2++) {\n      const bone = bones[i2];\n      data.bones.push(bone.uuid);\n      const boneInverse = boneInverses[i2];\n      data.boneInverses.push(boneInverse.toArray());\n    }\n    return data;\n  }\n}\nclass InstancedBufferAttribute extends BufferAttribute {\n  constructor(array, itemSize, normalized, meshPerAttribute = 1) {\n    super(array, itemSize, normalized);\n    this.isInstancedBufferAttribute = true;\n    this.meshPerAttribute = meshPerAttribute;\n  }\n  copy(source) {\n    super.copy(source);\n    this.meshPerAttribute = source.meshPerAttribute;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.meshPerAttribute = this.meshPerAttribute;\n    data.isInstancedBufferAttribute = true;\n    return data;\n  }\n}\nconst _instanceLocalMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceWorldMatrix = /* @__PURE__ */ new Matrix4();\nconst _instanceIntersects = [];\nconst _box3 = /* @__PURE__ */ new Box3();\nconst _identity = /* @__PURE__ */ new Matrix4();\nconst _mesh$1 = /* @__PURE__ */ new Mesh();\nconst _sphere$3 = /* @__PURE__ */ new Sphere();\nclass InstancedMesh extends Mesh {\n  constructor(geometry, material, count) {\n    super(geometry, material);\n    this.isInstancedMesh = true;\n    this.instanceMatrix = new InstancedBufferAttribute(new Float32Array(count * 16), 16);\n    this.instanceColor = null;\n    this.count = count;\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    for (let i2 = 0; i2 < count; i2++) {\n      this.setMatrixAt(i2, _identity);\n    }\n  }\n  computeBoundingBox() {\n    const geometry = this.geometry;\n    const count = this.count;\n    if (this.boundingBox === null) {\n      this.boundingBox = new Box3();\n    }\n    if (geometry.boundingBox === null) {\n      geometry.computeBoundingBox();\n    }\n    this.boundingBox.makeEmpty();\n    for (let i2 = 0; i2 < count; i2++) {\n      this.getMatrixAt(i2, _instanceLocalMatrix);\n      _box3.copy(geometry.boundingBox).applyMatrix4(_instanceLocalMatrix);\n      this.boundingBox.union(_box3);\n    }\n  }\n  computeBoundingSphere() {\n    const geometry = this.geometry;\n    const count = this.count;\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new Sphere();\n    }\n    if (geometry.boundingSphere === null) {\n      geometry.computeBoundingSphere();\n    }\n    this.boundingSphere.makeEmpty();\n    for (let i2 = 0; i2 < count; i2++) {\n      this.getMatrixAt(i2, _instanceLocalMatrix);\n      _sphere$3.copy(geometry.boundingSphere).applyMatrix4(_instanceLocalMatrix);\n      this.boundingSphere.union(_sphere$3);\n    }\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.instanceMatrix.copy(source.instanceMatrix);\n    if (source.instanceColor !== null) this.instanceColor = source.instanceColor.clone();\n    this.count = source.count;\n    if (source.boundingBox !== null) this.boundingBox = source.boundingBox.clone();\n    if (source.boundingSphere !== null) this.boundingSphere = source.boundingSphere.clone();\n    return this;\n  }\n  getColorAt(index, color) {\n    color.fromArray(this.instanceColor.array, index * 3);\n  }\n  getMatrixAt(index, matrix) {\n    matrix.fromArray(this.instanceMatrix.array, index * 16);\n  }\n  raycast(raycaster, intersects2) {\n    const matrixWorld = this.matrixWorld;\n    const raycastTimes = this.count;\n    _mesh$1.geometry = this.geometry;\n    _mesh$1.material = this.material;\n    if (_mesh$1.material === void 0) return;\n    if (this.boundingSphere === null) this.computeBoundingSphere();\n    _sphere$3.copy(this.boundingSphere);\n    _sphere$3.applyMatrix4(matrixWorld);\n    if (raycaster.ray.intersectsSphere(_sphere$3) === false) return;\n    for (let instanceId = 0; instanceId < raycastTimes; instanceId++) {\n      this.getMatrixAt(instanceId, _instanceLocalMatrix);\n      _instanceWorldMatrix.multiplyMatrices(matrixWorld, _instanceLocalMatrix);\n      _mesh$1.matrixWorld = _instanceWorldMatrix;\n      _mesh$1.raycast(raycaster, _instanceIntersects);\n      for (let i2 = 0, l2 = _instanceIntersects.length; i2 < l2; i2++) {\n        const intersect = _instanceIntersects[i2];\n        intersect.instanceId = instanceId;\n        intersect.object = this;\n        intersects2.push(intersect);\n      }\n      _instanceIntersects.length = 0;\n    }\n  }\n  setColorAt(index, color) {\n    if (this.instanceColor === null) {\n      this.instanceColor = new InstancedBufferAttribute(new Float32Array(this.instanceMatrix.count * 3), 3);\n    }\n    color.toArray(this.instanceColor.array, index * 3);\n  }\n  setMatrixAt(index, matrix) {\n    matrix.toArray(this.instanceMatrix.array, index * 16);\n  }\n  updateMorphTargets() {\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n  }\n}\nfunction sortOpaque(a2, b2) {\n  return a2.z - b2.z;\n}\nfunction sortTransparent(a2, b2) {\n  return b2.z - a2.z;\n}\nclass MultiDrawRenderList {\n  constructor() {\n    this.index = 0;\n    this.pool = [];\n    this.list = [];\n  }\n  push(drawRange, z2) {\n    const pool = this.pool;\n    const list = this.list;\n    if (this.index >= pool.length) {\n      pool.push({\n        start: -1,\n        count: -1,\n        z: -1\n      });\n    }\n    const item = pool[this.index];\n    list.push(item);\n    this.index++;\n    item.start = drawRange.start;\n    item.count = drawRange.count;\n    item.z = z2;\n  }\n  reset() {\n    this.list.length = 0;\n    this.index = 0;\n  }\n}\nconst ID_ATTR_NAME = \"batchId\";\nconst _matrix = /* @__PURE__ */ new Matrix4();\nconst _invMatrixWorld = /* @__PURE__ */ new Matrix4();\nconst _identityMatrix$2 = /* @__PURE__ */ new Matrix4();\nconst _projScreenMatrix$2 = /* @__PURE__ */ new Matrix4();\nconst _frustum = /* @__PURE__ */ new Frustum();\nconst _box$1 = /* @__PURE__ */ new Box3();\nconst _sphere$2 = /* @__PURE__ */ new Sphere();\nconst _vector$5 = /* @__PURE__ */ new Vector3();\nconst _renderList = /* @__PURE__ */ new MultiDrawRenderList();\nconst _mesh = /* @__PURE__ */ new Mesh();\nconst _batchIntersects = [];\nfunction copyAttributeData(src, target, targetOffset = 0) {\n  const itemSize = target.itemSize;\n  if (src.isInterleavedBufferAttribute || src.array.constructor !== target.array.constructor) {\n    const vertexCount = src.count;\n    for (let i2 = 0; i2 < vertexCount; i2++) {\n      for (let c2 = 0; c2 < itemSize; c2++) {\n        target.setComponent(i2 + targetOffset, c2, src.getComponent(i2, c2));\n      }\n    }\n  } else {\n    target.array.set(src.array, targetOffset * itemSize);\n  }\n  target.needsUpdate = true;\n}\nclass BatchedMesh extends Mesh {\n  get maxGeometryCount() {\n    return this._maxGeometryCount;\n  }\n  constructor(maxGeometryCount, maxVertexCount, maxIndexCount = maxVertexCount * 2, material) {\n    super(new BufferGeometry(), material);\n    this.isBatchedMesh = true;\n    this.perObjectFrustumCulled = true;\n    this.sortObjects = true;\n    this.boundingBox = null;\n    this.boundingSphere = null;\n    this.customSort = null;\n    this._drawRanges = [];\n    this._reservedRanges = [];\n    this._visibility = [];\n    this._active = [];\n    this._bounds = [];\n    this._maxGeometryCount = maxGeometryCount;\n    this._maxVertexCount = maxVertexCount;\n    this._maxIndexCount = maxIndexCount;\n    this._geometryInitialized = false;\n    this._geometryCount = 0;\n    this._multiDrawCounts = new Int32Array(maxGeometryCount);\n    this._multiDrawStarts = new Int32Array(maxGeometryCount);\n    this._multiDrawCount = 0;\n    this._visibilityChanged = true;\n    this._matricesTexture = null;\n    this._initMatricesTexture();\n  }\n  _initMatricesTexture() {\n    let size = Math.sqrt(this._maxGeometryCount * 4);\n    size = Math.ceil(size / 4) * 4;\n    size = Math.max(size, 4);\n    const matricesArray = new Float32Array(size * size * 4);\n    const matricesTexture = new DataTexture(matricesArray, size, size, RGBAFormat, FloatType);\n    this._matricesTexture = matricesTexture;\n  }\n  _initializeGeometry(reference) {\n    const geometry = this.geometry;\n    const maxVertexCount = this._maxVertexCount;\n    const maxGeometryCount = this._maxGeometryCount;\n    const maxIndexCount = this._maxIndexCount;\n    if (this._geometryInitialized === false) {\n      for (const attributeName in reference.attributes) {\n        const srcAttribute = reference.getAttribute(attributeName);\n        const { array, itemSize, normalized } = srcAttribute;\n        const dstArray = new array.constructor(maxVertexCount * itemSize);\n        const dstAttribute = new srcAttribute.constructor(dstArray, itemSize, normalized);\n        dstAttribute.setUsage(srcAttribute.usage);\n        geometry.setAttribute(attributeName, dstAttribute);\n      }\n      if (reference.getIndex() !== null) {\n        const indexArray = maxVertexCount > 65536 ? new Uint32Array(maxIndexCount) : new Uint16Array(maxIndexCount);\n        geometry.setIndex(new BufferAttribute(indexArray, 1));\n      }\n      const idArray = maxGeometryCount > 65536 ? new Uint32Array(maxVertexCount) : new Uint16Array(maxVertexCount);\n      geometry.setAttribute(ID_ATTR_NAME, new BufferAttribute(idArray, 1));\n      this._geometryInitialized = true;\n    }\n  }\n  // Make sure the geometry is compatible with the existing combined geometry atributes\n  _validateGeometry(geometry) {\n    if (geometry.getAttribute(ID_ATTR_NAME)) {\n      throw new Error(`BatchedMesh: Geometry cannot use attribute \"${ID_ATTR_NAME}\"`);\n    }\n    const batchGeometry = this.geometry;\n    if (Boolean(geometry.getIndex()) !== Boolean(batchGeometry.getIndex())) {\n      throw new Error('BatchedMesh: All geometries must consistently have \"index\".');\n    }\n    for (const attributeName in batchGeometry.attributes) {\n      if (attributeName === ID_ATTR_NAME) {\n        continue;\n      }\n      if (!geometry.hasAttribute(attributeName)) {\n        throw new Error(`BatchedMesh: Added geometry missing \"${attributeName}\". All geometries must have consistent attributes.`);\n      }\n      const srcAttribute = geometry.getAttribute(attributeName);\n      const dstAttribute = batchGeometry.getAttribute(attributeName);\n      if (srcAttribute.itemSize !== dstAttribute.itemSize || srcAttribute.normalized !== dstAttribute.normalized) {\n        throw new Error(\"BatchedMesh: All attributes must have a consistent itemSize and normalized value.\");\n      }\n    }\n  }\n  setCustomSort(func) {\n    this.customSort = func;\n    return this;\n  }\n  computeBoundingBox() {\n    if (this.boundingBox === null) {\n      this.boundingBox = new Box3();\n    }\n    const geometryCount = this._geometryCount;\n    const boundingBox = this.boundingBox;\n    const active = this._active;\n    boundingBox.makeEmpty();\n    for (let i2 = 0; i2 < geometryCount; i2++) {\n      if (active[i2] === false) continue;\n      this.getMatrixAt(i2, _matrix);\n      this.getBoundingBoxAt(i2, _box$1).applyMatrix4(_matrix);\n      boundingBox.union(_box$1);\n    }\n  }\n  computeBoundingSphere() {\n    if (this.boundingSphere === null) {\n      this.boundingSphere = new Sphere();\n    }\n    const geometryCount = this._geometryCount;\n    const boundingSphere = this.boundingSphere;\n    const active = this._active;\n    boundingSphere.makeEmpty();\n    for (let i2 = 0; i2 < geometryCount; i2++) {\n      if (active[i2] === false) continue;\n      this.getMatrixAt(i2, _matrix);\n      this.getBoundingSphereAt(i2, _sphere$2).applyMatrix4(_matrix);\n      boundingSphere.union(_sphere$2);\n    }\n  }\n  addGeometry(geometry, vertexCount = -1, indexCount = -1) {\n    this._initializeGeometry(geometry);\n    this._validateGeometry(geometry);\n    if (this._geometryCount >= this._maxGeometryCount) {\n      throw new Error(\"BatchedMesh: Maximum geometry count reached.\");\n    }\n    const reservedRange = {\n      vertexStart: -1,\n      vertexCount: -1,\n      indexStart: -1,\n      indexCount: -1\n    };\n    let lastRange = null;\n    const reservedRanges = this._reservedRanges;\n    const drawRanges = this._drawRanges;\n    const bounds = this._bounds;\n    if (this._geometryCount !== 0) {\n      lastRange = reservedRanges[reservedRanges.length - 1];\n    }\n    if (vertexCount === -1) {\n      reservedRange.vertexCount = geometry.getAttribute(\"position\").count;\n    } else {\n      reservedRange.vertexCount = vertexCount;\n    }\n    if (lastRange === null) {\n      reservedRange.vertexStart = 0;\n    } else {\n      reservedRange.vertexStart = lastRange.vertexStart + lastRange.vertexCount;\n    }\n    const index = geometry.getIndex();\n    const hasIndex = index !== null;\n    if (hasIndex) {\n      if (indexCount === -1) {\n        reservedRange.indexCount = index.count;\n      } else {\n        reservedRange.indexCount = indexCount;\n      }\n      if (lastRange === null) {\n        reservedRange.indexStart = 0;\n      } else {\n        reservedRange.indexStart = lastRange.indexStart + lastRange.indexCount;\n      }\n    }\n    if (reservedRange.indexStart !== -1 && reservedRange.indexStart + reservedRange.indexCount > this._maxIndexCount || reservedRange.vertexStart + reservedRange.vertexCount > this._maxVertexCount) {\n      throw new Error(\"BatchedMesh: Reserved space request exceeds the maximum buffer size.\");\n    }\n    const visibility = this._visibility;\n    const active = this._active;\n    const matricesTexture = this._matricesTexture;\n    const matricesArray = this._matricesTexture.image.data;\n    visibility.push(true);\n    active.push(true);\n    const geometryId = this._geometryCount;\n    this._geometryCount++;\n    _identityMatrix$2.toArray(matricesArray, geometryId * 16);\n    matricesTexture.needsUpdate = true;\n    reservedRanges.push(reservedRange);\n    drawRanges.push({\n      start: hasIndex ? reservedRange.indexStart : reservedRange.vertexStart,\n      count: -1\n    });\n    bounds.push({\n      boxInitialized: false,\n      box: new Box3(),\n      sphereInitialized: false,\n      sphere: new Sphere()\n    });\n    const idAttribute = this.geometry.getAttribute(ID_ATTR_NAME);\n    for (let i2 = 0; i2 < reservedRange.vertexCount; i2++) {\n      idAttribute.setX(reservedRange.vertexStart + i2, geometryId);\n    }\n    idAttribute.needsUpdate = true;\n    this.setGeometryAt(geometryId, geometry);\n    return geometryId;\n  }\n  setGeometryAt(id, geometry) {\n    if (id >= this._geometryCount) {\n      throw new Error(\"BatchedMesh: Maximum geometry count reached.\");\n    }\n    this._validateGeometry(geometry);\n    const batchGeometry = this.geometry;\n    const hasIndex = batchGeometry.getIndex() !== null;\n    const dstIndex = batchGeometry.getIndex();\n    const srcIndex = geometry.getIndex();\n    const reservedRange = this._reservedRanges[id];\n    if (hasIndex && srcIndex.count > reservedRange.indexCount || geometry.attributes.position.count > reservedRange.vertexCount) {\n      throw new Error(\"BatchedMesh: Reserved space not large enough for provided geometry.\");\n    }\n    const vertexStart = reservedRange.vertexStart;\n    const vertexCount = reservedRange.vertexCount;\n    for (const attributeName in batchGeometry.attributes) {\n      if (attributeName === ID_ATTR_NAME) {\n        continue;\n      }\n      const srcAttribute = geometry.getAttribute(attributeName);\n      const dstAttribute = batchGeometry.getAttribute(attributeName);\n      copyAttributeData(srcAttribute, dstAttribute, vertexStart);\n      const itemSize = srcAttribute.itemSize;\n      for (let i2 = srcAttribute.count, l2 = vertexCount; i2 < l2; i2++) {\n        const index = vertexStart + i2;\n        for (let c2 = 0; c2 < itemSize; c2++) {\n          dstAttribute.setComponent(index, c2, 0);\n        }\n      }\n      dstAttribute.needsUpdate = true;\n    }\n    if (hasIndex) {\n      const indexStart = reservedRange.indexStart;\n      for (let i2 = 0; i2 < srcIndex.count; i2++) {\n        dstIndex.setX(indexStart + i2, vertexStart + srcIndex.getX(i2));\n      }\n      for (let i2 = srcIndex.count, l2 = reservedRange.indexCount; i2 < l2; i2++) {\n        dstIndex.setX(indexStart + i2, vertexStart);\n      }\n      dstIndex.needsUpdate = true;\n    }\n    const bound = this._bounds[id];\n    if (geometry.boundingBox !== null) {\n      bound.box.copy(geometry.boundingBox);\n      bound.boxInitialized = true;\n    } else {\n      bound.boxInitialized = false;\n    }\n    if (geometry.boundingSphere !== null) {\n      bound.sphere.copy(geometry.boundingSphere);\n      bound.sphereInitialized = true;\n    } else {\n      bound.sphereInitialized = false;\n    }\n    const drawRange = this._drawRanges[id];\n    const posAttr = geometry.getAttribute(\"position\");\n    drawRange.count = hasIndex ? srcIndex.count : posAttr.count;\n    this._visibilityChanged = true;\n    return id;\n  }\n  deleteGeometry(geometryId) {\n    const active = this._active;\n    if (geometryId >= active.length || active[geometryId] === false) {\n      return this;\n    }\n    active[geometryId] = false;\n    this._visibilityChanged = true;\n    return this;\n  }\n  // get bounding box and compute it if it doesn't exist\n  getBoundingBoxAt(id, target) {\n    const active = this._active;\n    if (active[id] === false) {\n      return null;\n    }\n    const bound = this._bounds[id];\n    const box = bound.box;\n    const geometry = this.geometry;\n    if (bound.boxInitialized === false) {\n      box.makeEmpty();\n      const index = geometry.index;\n      const position = geometry.attributes.position;\n      const drawRange = this._drawRanges[id];\n      for (let i2 = drawRange.start, l2 = drawRange.start + drawRange.count; i2 < l2; i2++) {\n        let iv = i2;\n        if (index) {\n          iv = index.getX(iv);\n        }\n        box.expandByPoint(_vector$5.fromBufferAttribute(position, iv));\n      }\n      bound.boxInitialized = true;\n    }\n    target.copy(box);\n    return target;\n  }\n  // get bounding sphere and compute it if it doesn't exist\n  getBoundingSphereAt(id, target) {\n    const active = this._active;\n    if (active[id] === false) {\n      return null;\n    }\n    const bound = this._bounds[id];\n    const sphere = bound.sphere;\n    const geometry = this.geometry;\n    if (bound.sphereInitialized === false) {\n      sphere.makeEmpty();\n      this.getBoundingBoxAt(id, _box$1);\n      _box$1.getCenter(sphere.center);\n      const index = geometry.index;\n      const position = geometry.attributes.position;\n      const drawRange = this._drawRanges[id];\n      let maxRadiusSq = 0;\n      for (let i2 = drawRange.start, l2 = drawRange.start + drawRange.count; i2 < l2; i2++) {\n        let iv = i2;\n        if (index) {\n          iv = index.getX(iv);\n        }\n        _vector$5.fromBufferAttribute(position, iv);\n        maxRadiusSq = Math.max(maxRadiusSq, sphere.center.distanceToSquared(_vector$5));\n      }\n      sphere.radius = Math.sqrt(maxRadiusSq);\n      bound.sphereInitialized = true;\n    }\n    target.copy(sphere);\n    return target;\n  }\n  setMatrixAt(geometryId, matrix) {\n    const active = this._active;\n    const matricesTexture = this._matricesTexture;\n    const matricesArray = this._matricesTexture.image.data;\n    const geometryCount = this._geometryCount;\n    if (geometryId >= geometryCount || active[geometryId] === false) {\n      return this;\n    }\n    matrix.toArray(matricesArray, geometryId * 16);\n    matricesTexture.needsUpdate = true;\n    return this;\n  }\n  getMatrixAt(geometryId, matrix) {\n    const active = this._active;\n    const matricesArray = this._matricesTexture.image.data;\n    const geometryCount = this._geometryCount;\n    if (geometryId >= geometryCount || active[geometryId] === false) {\n      return null;\n    }\n    return matrix.fromArray(matricesArray, geometryId * 16);\n  }\n  setVisibleAt(geometryId, value) {\n    const visibility = this._visibility;\n    const active = this._active;\n    const geometryCount = this._geometryCount;\n    if (geometryId >= geometryCount || active[geometryId] === false || visibility[geometryId] === value) {\n      return this;\n    }\n    visibility[geometryId] = value;\n    this._visibilityChanged = true;\n    return this;\n  }\n  getVisibleAt(geometryId) {\n    const visibility = this._visibility;\n    const active = this._active;\n    const geometryCount = this._geometryCount;\n    if (geometryId >= geometryCount || active[geometryId] === false) {\n      return false;\n    }\n    return visibility[geometryId];\n  }\n  raycast(raycaster, intersects2) {\n    const visibility = this._visibility;\n    const active = this._active;\n    const drawRanges = this._drawRanges;\n    const geometryCount = this._geometryCount;\n    const matrixWorld = this.matrixWorld;\n    const batchGeometry = this.geometry;\n    _mesh.material = this.material;\n    _mesh.geometry.index = batchGeometry.index;\n    _mesh.geometry.attributes = batchGeometry.attributes;\n    if (_mesh.geometry.boundingBox === null) {\n      _mesh.geometry.boundingBox = new Box3();\n    }\n    if (_mesh.geometry.boundingSphere === null) {\n      _mesh.geometry.boundingSphere = new Sphere();\n    }\n    for (let i2 = 0; i2 < geometryCount; i2++) {\n      if (!visibility[i2] || !active[i2]) {\n        continue;\n      }\n      const drawRange = drawRanges[i2];\n      _mesh.geometry.setDrawRange(drawRange.start, drawRange.count);\n      this.getMatrixAt(i2, _mesh.matrixWorld).premultiply(matrixWorld);\n      this.getBoundingBoxAt(i2, _mesh.geometry.boundingBox);\n      this.getBoundingSphereAt(i2, _mesh.geometry.boundingSphere);\n      _mesh.raycast(raycaster, _batchIntersects);\n      for (let j2 = 0, l2 = _batchIntersects.length; j2 < l2; j2++) {\n        const intersect = _batchIntersects[j2];\n        intersect.object = this;\n        intersect.batchId = i2;\n        intersects2.push(intersect);\n      }\n      _batchIntersects.length = 0;\n    }\n    _mesh.material = null;\n    _mesh.geometry.index = null;\n    _mesh.geometry.attributes = {};\n    _mesh.geometry.setDrawRange(0, Infinity);\n  }\n  copy(source) {\n    super.copy(source);\n    this.geometry = source.geometry.clone();\n    this.perObjectFrustumCulled = source.perObjectFrustumCulled;\n    this.sortObjects = source.sortObjects;\n    this.boundingBox = source.boundingBox !== null ? source.boundingBox.clone() : null;\n    this.boundingSphere = source.boundingSphere !== null ? source.boundingSphere.clone() : null;\n    this._drawRanges = source._drawRanges.map((range) => ({ ...range }));\n    this._reservedRanges = source._reservedRanges.map((range) => ({ ...range }));\n    this._visibility = source._visibility.slice();\n    this._active = source._active.slice();\n    this._bounds = source._bounds.map((bound) => ({\n      boxInitialized: bound.boxInitialized,\n      box: bound.box.clone(),\n      sphereInitialized: bound.sphereInitialized,\n      sphere: bound.sphere.clone()\n    }));\n    this._maxGeometryCount = source._maxGeometryCount;\n    this._maxVertexCount = source._maxVertexCount;\n    this._maxIndexCount = source._maxIndexCount;\n    this._geometryInitialized = source._geometryInitialized;\n    this._geometryCount = source._geometryCount;\n    this._multiDrawCounts = source._multiDrawCounts.slice();\n    this._multiDrawStarts = source._multiDrawStarts.slice();\n    this._matricesTexture = source._matricesTexture.clone();\n    this._matricesTexture.image.data = this._matricesTexture.image.slice();\n    return this;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this._matricesTexture.dispose();\n    this._matricesTexture = null;\n    return this;\n  }\n  onBeforeRender(renderer, scene, camera, geometry, material) {\n    if (!this._visibilityChanged && !this.perObjectFrustumCulled && !this.sortObjects) {\n      return;\n    }\n    const index = geometry.getIndex();\n    const bytesPerElement = index === null ? 1 : index.array.BYTES_PER_ELEMENT;\n    const active = this._active;\n    const visibility = this._visibility;\n    const multiDrawStarts = this._multiDrawStarts;\n    const multiDrawCounts = this._multiDrawCounts;\n    const drawRanges = this._drawRanges;\n    const perObjectFrustumCulled = this.perObjectFrustumCulled;\n    if (perObjectFrustumCulled) {\n      _projScreenMatrix$2.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse).multiply(this.matrixWorld);\n      _frustum.setFromProjectionMatrix(\n        _projScreenMatrix$2,\n        renderer.coordinateSystem\n      );\n    }\n    let count = 0;\n    if (this.sortObjects) {\n      _invMatrixWorld.copy(this.matrixWorld).invert();\n      _vector$5.setFromMatrixPosition(camera.matrixWorld).applyMatrix4(_invMatrixWorld);\n      for (let i2 = 0, l2 = visibility.length; i2 < l2; i2++) {\n        if (visibility[i2] && active[i2]) {\n          this.getMatrixAt(i2, _matrix);\n          this.getBoundingSphereAt(i2, _sphere$2).applyMatrix4(_matrix);\n          let culled = false;\n          if (perObjectFrustumCulled) {\n            culled = !_frustum.intersectsSphere(_sphere$2);\n          }\n          if (!culled) {\n            const z2 = _vector$5.distanceTo(_sphere$2.center);\n            _renderList.push(drawRanges[i2], z2);\n          }\n        }\n      }\n      const list = _renderList.list;\n      const customSort = this.customSort;\n      if (customSort === null) {\n        list.sort(material.transparent ? sortTransparent : sortOpaque);\n      } else {\n        customSort.call(this, list, camera);\n      }\n      for (let i2 = 0, l2 = list.length; i2 < l2; i2++) {\n        const item = list[i2];\n        multiDrawStarts[count] = item.start * bytesPerElement;\n        multiDrawCounts[count] = item.count;\n        count++;\n      }\n      _renderList.reset();\n    } else {\n      for (let i2 = 0, l2 = visibility.length; i2 < l2; i2++) {\n        if (visibility[i2] && active[i2]) {\n          let culled = false;\n          if (perObjectFrustumCulled) {\n            this.getMatrixAt(i2, _matrix);\n            this.getBoundingSphereAt(i2, _sphere$2).applyMatrix4(_matrix);\n            culled = !_frustum.intersectsSphere(_sphere$2);\n          }\n          if (!culled) {\n            const range = drawRanges[i2];\n            multiDrawStarts[count] = range.start * bytesPerElement;\n            multiDrawCounts[count] = range.count;\n            count++;\n          }\n        }\n      }\n    }\n    this._multiDrawCount = count;\n    this._visibilityChanged = false;\n  }\n  onBeforeShadow(renderer, object, camera, shadowCamera, geometry, depthMaterial) {\n    this.onBeforeRender(renderer, null, shadowCamera, geometry, depthMaterial);\n  }\n}\nclass LineBasicMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isLineBasicMaterial = true;\n    this.type = \"LineBasicMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.linewidth = 1;\n    this.linecap = \"round\";\n    this.linejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.linewidth = source.linewidth;\n    this.linecap = source.linecap;\n    this.linejoin = source.linejoin;\n    this.fog = source.fog;\n    return this;\n  }\n}\nconst _start$1 = /* @__PURE__ */ new Vector3();\nconst _end$1 = /* @__PURE__ */ new Vector3();\nconst _inverseMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _ray$1 = /* @__PURE__ */ new Ray();\nconst _sphere$1 = /* @__PURE__ */ new Sphere();\nclass Line extends Object3D {\n  constructor(geometry = new BufferGeometry(), material = new LineBasicMaterial()) {\n    super();\n    this.isLine = true;\n    this.type = \"Line\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.material = Array.isArray(source.material) ? source.material.slice() : source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  computeLineDistances() {\n    const geometry = this.geometry;\n    if (geometry.index === null) {\n      const positionAttribute = geometry.attributes.position;\n      const lineDistances = [0];\n      for (let i2 = 1, l2 = positionAttribute.count; i2 < l2; i2++) {\n        _start$1.fromBufferAttribute(positionAttribute, i2 - 1);\n        _end$1.fromBufferAttribute(positionAttribute, i2);\n        lineDistances[i2] = lineDistances[i2 - 1];\n        lineDistances[i2] += _start$1.distanceTo(_end$1);\n      }\n      geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n    } else {\n      console.warn(\"THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n    }\n    return this;\n  }\n  raycast(raycaster, intersects2) {\n    const geometry = this.geometry;\n    const matrixWorld = this.matrixWorld;\n    const threshold = raycaster.params.Line.threshold;\n    const drawRange = geometry.drawRange;\n    if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n    _sphere$1.copy(geometry.boundingSphere);\n    _sphere$1.applyMatrix4(matrixWorld);\n    _sphere$1.radius += threshold;\n    if (raycaster.ray.intersectsSphere(_sphere$1) === false) return;\n    _inverseMatrix$1.copy(matrixWorld).invert();\n    _ray$1.copy(raycaster.ray).applyMatrix4(_inverseMatrix$1);\n    const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n    const localThresholdSq = localThreshold * localThreshold;\n    const vStart = new Vector3();\n    const vEnd = new Vector3();\n    const interSegment = new Vector3();\n    const interRay = new Vector3();\n    const step = this.isLineSegments ? 2 : 1;\n    const index = geometry.index;\n    const attributes = geometry.attributes;\n    const positionAttribute = attributes.position;\n    if (index !== null) {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(index.count, drawRange.start + drawRange.count);\n      for (let i2 = start, l2 = end - 1; i2 < l2; i2 += step) {\n        const a2 = index.getX(i2);\n        const b2 = index.getX(i2 + 1);\n        vStart.fromBufferAttribute(positionAttribute, a2);\n        vEnd.fromBufferAttribute(positionAttribute, b2);\n        const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n        if (distSq > localThresholdSq) continue;\n        interRay.applyMatrix4(this.matrixWorld);\n        const distance = raycaster.ray.origin.distanceTo(interRay);\n        if (distance < raycaster.near || distance > raycaster.far) continue;\n        intersects2.push({\n          distance,\n          // What do we want? intersection point on the ray or on the segment??\n          // point: raycaster.ray.at( distance ),\n          point: interSegment.clone().applyMatrix4(this.matrixWorld),\n          index: i2,\n          face: null,\n          faceIndex: null,\n          object: this\n        });\n      }\n    } else {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n      for (let i2 = start, l2 = end - 1; i2 < l2; i2 += step) {\n        vStart.fromBufferAttribute(positionAttribute, i2);\n        vEnd.fromBufferAttribute(positionAttribute, i2 + 1);\n        const distSq = _ray$1.distanceSqToSegment(vStart, vEnd, interRay, interSegment);\n        if (distSq > localThresholdSq) continue;\n        interRay.applyMatrix4(this.matrixWorld);\n        const distance = raycaster.ray.origin.distanceTo(interRay);\n        if (distance < raycaster.near || distance > raycaster.far) continue;\n        intersects2.push({\n          distance,\n          // What do we want? intersection point on the ray or on the segment??\n          // point: raycaster.ray.at( distance ),\n          point: interSegment.clone().applyMatrix4(this.matrixWorld),\n          index: i2,\n          face: null,\n          faceIndex: null,\n          object: this\n        });\n      }\n    }\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m2 = 0, ml = morphAttribute.length; m2 < ml; m2++) {\n          const name = morphAttribute[m2].name || String(m2);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m2;\n        }\n      }\n    }\n  }\n}\nconst _start = /* @__PURE__ */ new Vector3();\nconst _end = /* @__PURE__ */ new Vector3();\nclass LineSegments extends Line {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isLineSegments = true;\n    this.type = \"LineSegments\";\n  }\n  computeLineDistances() {\n    const geometry = this.geometry;\n    if (geometry.index === null) {\n      const positionAttribute = geometry.attributes.position;\n      const lineDistances = [];\n      for (let i2 = 0, l2 = positionAttribute.count; i2 < l2; i2 += 2) {\n        _start.fromBufferAttribute(positionAttribute, i2);\n        _end.fromBufferAttribute(positionAttribute, i2 + 1);\n        lineDistances[i2] = i2 === 0 ? 0 : lineDistances[i2 - 1];\n        lineDistances[i2 + 1] = lineDistances[i2] + _start.distanceTo(_end);\n      }\n      geometry.setAttribute(\"lineDistance\", new Float32BufferAttribute(lineDistances, 1));\n    } else {\n      console.warn(\"THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.\");\n    }\n    return this;\n  }\n}\nclass LineLoop extends Line {\n  constructor(geometry, material) {\n    super(geometry, material);\n    this.isLineLoop = true;\n    this.type = \"LineLoop\";\n  }\n}\nclass PointsMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isPointsMaterial = true;\n    this.type = \"PointsMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.alphaMap = null;\n    this.size = 1;\n    this.sizeAttenuation = true;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.alphaMap = source.alphaMap;\n    this.size = source.size;\n    this.sizeAttenuation = source.sizeAttenuation;\n    this.fog = source.fog;\n    return this;\n  }\n}\nconst _inverseMatrix = /* @__PURE__ */ new Matrix4();\nconst _ray = /* @__PURE__ */ new Ray();\nconst _sphere = /* @__PURE__ */ new Sphere();\nconst _position$2 = /* @__PURE__ */ new Vector3();\nclass Points extends Object3D {\n  constructor(geometry = new BufferGeometry(), material = new PointsMaterial()) {\n    super();\n    this.isPoints = true;\n    this.type = \"Points\";\n    this.geometry = geometry;\n    this.material = material;\n    this.updateMorphTargets();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.material = Array.isArray(source.material) ? source.material.slice() : source.material;\n    this.geometry = source.geometry;\n    return this;\n  }\n  raycast(raycaster, intersects2) {\n    const geometry = this.geometry;\n    const matrixWorld = this.matrixWorld;\n    const threshold = raycaster.params.Points.threshold;\n    const drawRange = geometry.drawRange;\n    if (geometry.boundingSphere === null) geometry.computeBoundingSphere();\n    _sphere.copy(geometry.boundingSphere);\n    _sphere.applyMatrix4(matrixWorld);\n    _sphere.radius += threshold;\n    if (raycaster.ray.intersectsSphere(_sphere) === false) return;\n    _inverseMatrix.copy(matrixWorld).invert();\n    _ray.copy(raycaster.ray).applyMatrix4(_inverseMatrix);\n    const localThreshold = threshold / ((this.scale.x + this.scale.y + this.scale.z) / 3);\n    const localThresholdSq = localThreshold * localThreshold;\n    const index = geometry.index;\n    const attributes = geometry.attributes;\n    const positionAttribute = attributes.position;\n    if (index !== null) {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(index.count, drawRange.start + drawRange.count);\n      for (let i2 = start, il = end; i2 < il; i2++) {\n        const a2 = index.getX(i2);\n        _position$2.fromBufferAttribute(positionAttribute, a2);\n        testPoint(_position$2, a2, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n      }\n    } else {\n      const start = Math.max(0, drawRange.start);\n      const end = Math.min(positionAttribute.count, drawRange.start + drawRange.count);\n      for (let i2 = start, l2 = end; i2 < l2; i2++) {\n        _position$2.fromBufferAttribute(positionAttribute, i2);\n        testPoint(_position$2, i2, localThresholdSq, matrixWorld, raycaster, intersects2, this);\n      }\n    }\n  }\n  updateMorphTargets() {\n    const geometry = this.geometry;\n    const morphAttributes = geometry.morphAttributes;\n    const keys = Object.keys(morphAttributes);\n    if (keys.length > 0) {\n      const morphAttribute = morphAttributes[keys[0]];\n      if (morphAttribute !== void 0) {\n        this.morphTargetInfluences = [];\n        this.morphTargetDictionary = {};\n        for (let m2 = 0, ml = morphAttribute.length; m2 < ml; m2++) {\n          const name = morphAttribute[m2].name || String(m2);\n          this.morphTargetInfluences.push(0);\n          this.morphTargetDictionary[name] = m2;\n        }\n      }\n    }\n  }\n}\nfunction testPoint(point, index, localThresholdSq, matrixWorld, raycaster, intersects2, object) {\n  const rayPointDistanceSq = _ray.distanceSqToPoint(point);\n  if (rayPointDistanceSq < localThresholdSq) {\n    const intersectPoint = new Vector3();\n    _ray.closestPointToPoint(point, intersectPoint);\n    intersectPoint.applyMatrix4(matrixWorld);\n    const distance = raycaster.ray.origin.distanceTo(intersectPoint);\n    if (distance < raycaster.near || distance > raycaster.far) return;\n    intersects2.push({\n      distance,\n      distanceToRay: Math.sqrt(rayPointDistanceSq),\n      point: intersectPoint,\n      index,\n      face: null,\n      object\n    });\n  }\n}\nclass VideoTexture extends Texture {\n  constructor(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n    super(video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n    this.isVideoTexture = true;\n    this.minFilter = minFilter !== void 0 ? minFilter : LinearFilter;\n    this.magFilter = magFilter !== void 0 ? magFilter : LinearFilter;\n    this.generateMipmaps = false;\n    const scope = this;\n    function updateVideo() {\n      scope.needsUpdate = true;\n      video.requestVideoFrameCallback(updateVideo);\n    }\n    if (\"requestVideoFrameCallback\" in video) {\n      video.requestVideoFrameCallback(updateVideo);\n    }\n  }\n  clone() {\n    return new this.constructor(this.image).copy(this);\n  }\n  update() {\n    const video = this.image;\n    const hasVideoFrameCallback = \"requestVideoFrameCallback\" in video;\n    if (hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA) {\n      this.needsUpdate = true;\n    }\n  }\n}\nclass FramebufferTexture extends Texture {\n  constructor(width, height) {\n    super({ width, height });\n    this.isFramebufferTexture = true;\n    this.magFilter = NearestFilter;\n    this.minFilter = NearestFilter;\n    this.generateMipmaps = false;\n    this.needsUpdate = true;\n  }\n}\nclass CompressedTexture extends Texture {\n  constructor(mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, colorSpace) {\n    super(null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, colorSpace);\n    this.isCompressedTexture = true;\n    this.image = { width, height };\n    this.mipmaps = mipmaps;\n    this.flipY = false;\n    this.generateMipmaps = false;\n  }\n}\nclass CompressedArrayTexture extends CompressedTexture {\n  constructor(mipmaps, width, height, depth, format, type) {\n    super(mipmaps, width, height, format, type);\n    this.isCompressedArrayTexture = true;\n    this.image.depth = depth;\n    this.wrapR = ClampToEdgeWrapping;\n  }\n}\nclass CompressedCubeTexture extends CompressedTexture {\n  constructor(images, format, type) {\n    super(void 0, images[0].width, images[0].height, format, type, CubeReflectionMapping);\n    this.isCompressedCubeTexture = true;\n    this.isCubeTexture = true;\n    this.image = images;\n  }\n}\nclass CanvasTexture extends Texture {\n  constructor(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy) {\n    super(canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy);\n    this.isCanvasTexture = true;\n    this.needsUpdate = true;\n  }\n}\nclass Curve {\n  constructor() {\n    this.type = \"Curve\";\n    this.arcLengthDivisions = 200;\n  }\n  // Virtual base class method to overwrite and implement in subclasses\n  //\t- t [0 .. 1]\n  getPoint() {\n    console.warn(\"THREE.Curve: .getPoint() not implemented.\");\n    return null;\n  }\n  // Get point at relative position in curve according to arc length\n  // - u [0 .. 1]\n  getPointAt(u2, optionalTarget) {\n    const t2 = this.getUtoTmapping(u2);\n    return this.getPoint(t2, optionalTarget);\n  }\n  // Get sequence of points using getPoint( t )\n  getPoints(divisions = 5) {\n    const points = [];\n    for (let d2 = 0; d2 <= divisions; d2++) {\n      points.push(this.getPoint(d2 / divisions));\n    }\n    return points;\n  }\n  // Get sequence of points using getPointAt( u )\n  getSpacedPoints(divisions = 5) {\n    const points = [];\n    for (let d2 = 0; d2 <= divisions; d2++) {\n      points.push(this.getPointAt(d2 / divisions));\n    }\n    return points;\n  }\n  // Get total curve arc length\n  getLength() {\n    const lengths = this.getLengths();\n    return lengths[lengths.length - 1];\n  }\n  // Get list of cumulative segment lengths\n  getLengths(divisions = this.arcLengthDivisions) {\n    if (this.cacheArcLengths && this.cacheArcLengths.length === divisions + 1 && !this.needsUpdate) {\n      return this.cacheArcLengths;\n    }\n    this.needsUpdate = false;\n    const cache = [];\n    let current, last = this.getPoint(0);\n    let sum = 0;\n    cache.push(0);\n    for (let p2 = 1; p2 <= divisions; p2++) {\n      current = this.getPoint(p2 / divisions);\n      sum += current.distanceTo(last);\n      cache.push(sum);\n      last = current;\n    }\n    this.cacheArcLengths = cache;\n    return cache;\n  }\n  updateArcLengths() {\n    this.needsUpdate = true;\n    this.getLengths();\n  }\n  // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\n  getUtoTmapping(u2, distance) {\n    const arcLengths = this.getLengths();\n    let i2 = 0;\n    const il = arcLengths.length;\n    let targetArcLength;\n    if (distance) {\n      targetArcLength = distance;\n    } else {\n      targetArcLength = u2 * arcLengths[il - 1];\n    }\n    let low = 0, high = il - 1, comparison;\n    while (low <= high) {\n      i2 = Math.floor(low + (high - low) / 2);\n      comparison = arcLengths[i2] - targetArcLength;\n      if (comparison < 0) {\n        low = i2 + 1;\n      } else if (comparison > 0) {\n        high = i2 - 1;\n      } else {\n        high = i2;\n        break;\n      }\n    }\n    i2 = high;\n    if (arcLengths[i2] === targetArcLength) {\n      return i2 / (il - 1);\n    }\n    const lengthBefore = arcLengths[i2];\n    const lengthAfter = arcLengths[i2 + 1];\n    const segmentLength = lengthAfter - lengthBefore;\n    const segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n    const t2 = (i2 + segmentFraction) / (il - 1);\n    return t2;\n  }\n  // Returns a unit vector tangent at t\n  // In case any sub curve does not implement its tangent derivation,\n  // 2 points a small delta apart will be used to find its gradient\n  // which seems to give a reasonable approximation\n  getTangent(t2, optionalTarget) {\n    const delta = 1e-4;\n    let t1 = t2 - delta;\n    let t22 = t2 + delta;\n    if (t1 < 0) t1 = 0;\n    if (t22 > 1) t22 = 1;\n    const pt1 = this.getPoint(t1);\n    const pt2 = this.getPoint(t22);\n    const tangent = optionalTarget || (pt1.isVector2 ? new Vector2() : new Vector3());\n    tangent.copy(pt2).sub(pt1).normalize();\n    return tangent;\n  }\n  getTangentAt(u2, optionalTarget) {\n    const t2 = this.getUtoTmapping(u2);\n    return this.getTangent(t2, optionalTarget);\n  }\n  computeFrenetFrames(segments, closed) {\n    const normal = new Vector3();\n    const tangents = [];\n    const normals = [];\n    const binormals = [];\n    const vec = new Vector3();\n    const mat = new Matrix4();\n    for (let i2 = 0; i2 <= segments; i2++) {\n      const u2 = i2 / segments;\n      tangents[i2] = this.getTangentAt(u2, new Vector3());\n    }\n    normals[0] = new Vector3();\n    binormals[0] = new Vector3();\n    let min = Number.MAX_VALUE;\n    const tx = Math.abs(tangents[0].x);\n    const ty = Math.abs(tangents[0].y);\n    const tz = Math.abs(tangents[0].z);\n    if (tx <= min) {\n      min = tx;\n      normal.set(1, 0, 0);\n    }\n    if (ty <= min) {\n      min = ty;\n      normal.set(0, 1, 0);\n    }\n    if (tz <= min) {\n      normal.set(0, 0, 1);\n    }\n    vec.crossVectors(tangents[0], normal).normalize();\n    normals[0].crossVectors(tangents[0], vec);\n    binormals[0].crossVectors(tangents[0], normals[0]);\n    for (let i2 = 1; i2 <= segments; i2++) {\n      normals[i2] = normals[i2 - 1].clone();\n      binormals[i2] = binormals[i2 - 1].clone();\n      vec.crossVectors(tangents[i2 - 1], tangents[i2]);\n      if (vec.length() > Number.EPSILON) {\n        vec.normalize();\n        const theta = Math.acos(clamp(tangents[i2 - 1].dot(tangents[i2]), -1, 1));\n        normals[i2].applyMatrix4(mat.makeRotationAxis(vec, theta));\n      }\n      binormals[i2].crossVectors(tangents[i2], normals[i2]);\n    }\n    if (closed === true) {\n      let theta = Math.acos(clamp(normals[0].dot(normals[segments]), -1, 1));\n      theta /= segments;\n      if (tangents[0].dot(vec.crossVectors(normals[0], normals[segments])) > 0) {\n        theta = -theta;\n      }\n      for (let i2 = 1; i2 <= segments; i2++) {\n        normals[i2].applyMatrix4(mat.makeRotationAxis(tangents[i2], theta * i2));\n        binormals[i2].crossVectors(tangents[i2], normals[i2]);\n      }\n    }\n    return {\n      tangents,\n      normals,\n      binormals\n    };\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(source) {\n    this.arcLengthDivisions = source.arcLengthDivisions;\n    return this;\n  }\n  toJSON() {\n    const data = {\n      metadata: {\n        version: 4.6,\n        type: \"Curve\",\n        generator: \"Curve.toJSON\"\n      }\n    };\n    data.arcLengthDivisions = this.arcLengthDivisions;\n    data.type = this.type;\n    return data;\n  }\n  fromJSON(json) {\n    this.arcLengthDivisions = json.arcLengthDivisions;\n    return this;\n  }\n}\nclass EllipseCurve extends Curve {\n  constructor(aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0, aEndAngle = Math.PI * 2, aClockwise = false, aRotation = 0) {\n    super();\n    this.isEllipseCurve = true;\n    this.type = \"EllipseCurve\";\n    this.aX = aX;\n    this.aY = aY;\n    this.xRadius = xRadius;\n    this.yRadius = yRadius;\n    this.aStartAngle = aStartAngle;\n    this.aEndAngle = aEndAngle;\n    this.aClockwise = aClockwise;\n    this.aRotation = aRotation;\n  }\n  getPoint(t2, optionalTarget) {\n    const point = optionalTarget || new Vector2();\n    const twoPi = Math.PI * 2;\n    let deltaAngle = this.aEndAngle - this.aStartAngle;\n    const samePoints = Math.abs(deltaAngle) < Number.EPSILON;\n    while (deltaAngle < 0) deltaAngle += twoPi;\n    while (deltaAngle > twoPi) deltaAngle -= twoPi;\n    if (deltaAngle < Number.EPSILON) {\n      if (samePoints) {\n        deltaAngle = 0;\n      } else {\n        deltaAngle = twoPi;\n      }\n    }\n    if (this.aClockwise === true && !samePoints) {\n      if (deltaAngle === twoPi) {\n        deltaAngle = -twoPi;\n      } else {\n        deltaAngle = deltaAngle - twoPi;\n      }\n    }\n    const angle = this.aStartAngle + t2 * deltaAngle;\n    let x2 = this.aX + this.xRadius * Math.cos(angle);\n    let y2 = this.aY + this.yRadius * Math.sin(angle);\n    if (this.aRotation !== 0) {\n      const cos = Math.cos(this.aRotation);\n      const sin = Math.sin(this.aRotation);\n      const tx = x2 - this.aX;\n      const ty = y2 - this.aY;\n      x2 = tx * cos - ty * sin + this.aX;\n      y2 = tx * sin + ty * cos + this.aY;\n    }\n    return point.set(x2, y2);\n  }\n  copy(source) {\n    super.copy(source);\n    this.aX = source.aX;\n    this.aY = source.aY;\n    this.xRadius = source.xRadius;\n    this.yRadius = source.yRadius;\n    this.aStartAngle = source.aStartAngle;\n    this.aEndAngle = source.aEndAngle;\n    this.aClockwise = source.aClockwise;\n    this.aRotation = source.aRotation;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.aX = this.aX;\n    data.aY = this.aY;\n    data.xRadius = this.xRadius;\n    data.yRadius = this.yRadius;\n    data.aStartAngle = this.aStartAngle;\n    data.aEndAngle = this.aEndAngle;\n    data.aClockwise = this.aClockwise;\n    data.aRotation = this.aRotation;\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.aX = json.aX;\n    this.aY = json.aY;\n    this.xRadius = json.xRadius;\n    this.yRadius = json.yRadius;\n    this.aStartAngle = json.aStartAngle;\n    this.aEndAngle = json.aEndAngle;\n    this.aClockwise = json.aClockwise;\n    this.aRotation = json.aRotation;\n    return this;\n  }\n}\nclass ArcCurve extends EllipseCurve {\n  constructor(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    super(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n    this.isArcCurve = true;\n    this.type = \"ArcCurve\";\n  }\n}\nfunction CubicPoly() {\n  let c0 = 0, c1 = 0, c2 = 0, c3 = 0;\n  function init(x0, x1, t0, t1) {\n    c0 = x0;\n    c1 = t0;\n    c2 = -3 * x0 + 3 * x1 - 2 * t0 - t1;\n    c3 = 2 * x0 - 2 * x1 + t0 + t1;\n  }\n  return {\n    initCatmullRom: function(x0, x1, x2, x3, tension) {\n      init(x1, x2, tension * (x2 - x0), tension * (x3 - x1));\n    },\n    initNonuniformCatmullRom: function(x0, x1, x2, x3, dt0, dt1, dt2) {\n      let t1 = (x1 - x0) / dt0 - (x2 - x0) / (dt0 + dt1) + (x2 - x1) / dt1;\n      let t2 = (x2 - x1) / dt1 - (x3 - x1) / (dt1 + dt2) + (x3 - x2) / dt2;\n      t1 *= dt1;\n      t2 *= dt1;\n      init(x1, x2, t1, t2);\n    },\n    calc: function(t2) {\n      const t22 = t2 * t2;\n      const t3 = t22 * t2;\n      return c0 + c1 * t2 + c2 * t22 + c3 * t3;\n    }\n  };\n}\nconst tmp = /* @__PURE__ */ new Vector3();\nconst px = /* @__PURE__ */ new CubicPoly();\nconst py = /* @__PURE__ */ new CubicPoly();\nconst pz = /* @__PURE__ */ new CubicPoly();\nclass CatmullRomCurve3 extends Curve {\n  constructor(points = [], closed = false, curveType = \"centripetal\", tension = 0.5) {\n    super();\n    this.isCatmullRomCurve3 = true;\n    this.type = \"CatmullRomCurve3\";\n    this.points = points;\n    this.closed = closed;\n    this.curveType = curveType;\n    this.tension = tension;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const l2 = points.length;\n    const p2 = (l2 - (this.closed ? 0 : 1)) * t2;\n    let intPoint = Math.floor(p2);\n    let weight = p2 - intPoint;\n    if (this.closed) {\n      intPoint += intPoint > 0 ? 0 : (Math.floor(Math.abs(intPoint) / l2) + 1) * l2;\n    } else if (weight === 0 && intPoint === l2 - 1) {\n      intPoint = l2 - 2;\n      weight = 1;\n    }\n    let p0, p3;\n    if (this.closed || intPoint > 0) {\n      p0 = points[(intPoint - 1) % l2];\n    } else {\n      tmp.subVectors(points[0], points[1]).add(points[0]);\n      p0 = tmp;\n    }\n    const p1 = points[intPoint % l2];\n    const p22 = points[(intPoint + 1) % l2];\n    if (this.closed || intPoint + 2 < l2) {\n      p3 = points[(intPoint + 2) % l2];\n    } else {\n      tmp.subVectors(points[l2 - 1], points[l2 - 2]).add(points[l2 - 1]);\n      p3 = tmp;\n    }\n    if (this.curveType === \"centripetal\" || this.curveType === \"chordal\") {\n      const pow = this.curveType === \"chordal\" ? 0.5 : 0.25;\n      let dt0 = Math.pow(p0.distanceToSquared(p1), pow);\n      let dt1 = Math.pow(p1.distanceToSquared(p22), pow);\n      let dt2 = Math.pow(p22.distanceToSquared(p3), pow);\n      if (dt1 < 1e-4) dt1 = 1;\n      if (dt0 < 1e-4) dt0 = dt1;\n      if (dt2 < 1e-4) dt2 = dt1;\n      px.initNonuniformCatmullRom(p0.x, p1.x, p22.x, p3.x, dt0, dt1, dt2);\n      py.initNonuniformCatmullRom(p0.y, p1.y, p22.y, p3.y, dt0, dt1, dt2);\n      pz.initNonuniformCatmullRom(p0.z, p1.z, p22.z, p3.z, dt0, dt1, dt2);\n    } else if (this.curveType === \"catmullrom\") {\n      px.initCatmullRom(p0.x, p1.x, p22.x, p3.x, this.tension);\n      py.initCatmullRom(p0.y, p1.y, p22.y, p3.y, this.tension);\n      pz.initCatmullRom(p0.z, p1.z, p22.z, p3.z, this.tension);\n    }\n    point.set(\n      px.calc(weight),\n      py.calc(weight),\n      pz.calc(weight)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.points = [];\n    for (let i2 = 0, l2 = source.points.length; i2 < l2; i2++) {\n      const point = source.points[i2];\n      this.points.push(point.clone());\n    }\n    this.closed = source.closed;\n    this.curveType = source.curveType;\n    this.tension = source.tension;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.points = [];\n    for (let i2 = 0, l2 = this.points.length; i2 < l2; i2++) {\n      const point = this.points[i2];\n      data.points.push(point.toArray());\n    }\n    data.closed = this.closed;\n    data.curveType = this.curveType;\n    data.tension = this.tension;\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.points = [];\n    for (let i2 = 0, l2 = json.points.length; i2 < l2; i2++) {\n      const point = json.points[i2];\n      this.points.push(new Vector3().fromArray(point));\n    }\n    this.closed = json.closed;\n    this.curveType = json.curveType;\n    this.tension = json.tension;\n    return this;\n  }\n}\nfunction CatmullRom(t2, p0, p1, p2, p3) {\n  const v0 = (p2 - p0) * 0.5;\n  const v1 = (p3 - p1) * 0.5;\n  const t22 = t2 * t2;\n  const t3 = t2 * t22;\n  return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t22 + v0 * t2 + p1;\n}\nfunction QuadraticBezierP0(t2, p2) {\n  const k2 = 1 - t2;\n  return k2 * k2 * p2;\n}\nfunction QuadraticBezierP1(t2, p2) {\n  return 2 * (1 - t2) * t2 * p2;\n}\nfunction QuadraticBezierP2(t2, p2) {\n  return t2 * t2 * p2;\n}\nfunction QuadraticBezier(t2, p0, p1, p2) {\n  return QuadraticBezierP0(t2, p0) + QuadraticBezierP1(t2, p1) + QuadraticBezierP2(t2, p2);\n}\nfunction CubicBezierP0(t2, p2) {\n  const k2 = 1 - t2;\n  return k2 * k2 * k2 * p2;\n}\nfunction CubicBezierP1(t2, p2) {\n  const k2 = 1 - t2;\n  return 3 * k2 * k2 * t2 * p2;\n}\nfunction CubicBezierP2(t2, p2) {\n  return 3 * (1 - t2) * t2 * t2 * p2;\n}\nfunction CubicBezierP3(t2, p2) {\n  return t2 * t2 * t2 * p2;\n}\nfunction CubicBezier(t2, p0, p1, p2, p3) {\n  return CubicBezierP0(t2, p0) + CubicBezierP1(t2, p1) + CubicBezierP2(t2, p2) + CubicBezierP3(t2, p3);\n}\nclass CubicBezierCurve extends Curve {\n  constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2()) {\n    super();\n    this.isCubicBezierCurve = true;\n    this.type = \"CubicBezierCurve\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n    this.v3 = v3;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n    point.set(\n      CubicBezier(t2, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t2, v0.y, v1.y, v2.y, v3.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    this.v3.copy(source.v3);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    data.v3 = this.v3.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    this.v3.fromArray(json.v3);\n    return this;\n  }\n}\nclass CubicBezierCurve3 extends Curve {\n  constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3()) {\n    super();\n    this.isCubicBezierCurve3 = true;\n    this.type = \"CubicBezierCurve3\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n    this.v3 = v3;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\n    point.set(\n      CubicBezier(t2, v0.x, v1.x, v2.x, v3.x),\n      CubicBezier(t2, v0.y, v1.y, v2.y, v3.y),\n      CubicBezier(t2, v0.z, v1.z, v2.z, v3.z)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    this.v3.copy(source.v3);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    data.v3 = this.v3.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    this.v3.fromArray(json.v3);\n    return this;\n  }\n}\nclass LineCurve extends Curve {\n  constructor(v1 = new Vector2(), v2 = new Vector2()) {\n    super();\n    this.isLineCurve = true;\n    this.type = \"LineCurve\";\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    if (t2 === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t2).add(this.v1);\n    }\n    return point;\n  }\n  // Line curve is linear, so we can overwrite default getPointAt\n  getPointAt(u2, optionalTarget) {\n    return this.getPoint(u2, optionalTarget);\n  }\n  getTangent(t2, optionalTarget = new Vector2()) {\n    return optionalTarget.subVectors(this.v2, this.v1).normalize();\n  }\n  getTangentAt(u2, optionalTarget) {\n    return this.getTangent(u2, optionalTarget);\n  }\n  copy(source) {\n    super.copy(source);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass LineCurve3 extends Curve {\n  constructor(v1 = new Vector3(), v2 = new Vector3()) {\n    super();\n    this.isLineCurve3 = true;\n    this.type = \"LineCurve3\";\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    if (t2 === 1) {\n      point.copy(this.v2);\n    } else {\n      point.copy(this.v2).sub(this.v1);\n      point.multiplyScalar(t2).add(this.v1);\n    }\n    return point;\n  }\n  // Line curve is linear, so we can overwrite default getPointAt\n  getPointAt(u2, optionalTarget) {\n    return this.getPoint(u2, optionalTarget);\n  }\n  getTangent(t2, optionalTarget = new Vector3()) {\n    return optionalTarget.subVectors(this.v2, this.v1).normalize();\n  }\n  getTangentAt(u2, optionalTarget) {\n    return this.getTangent(u2, optionalTarget);\n  }\n  copy(source) {\n    super.copy(source);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass QuadraticBezierCurve extends Curve {\n  constructor(v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2()) {\n    super();\n    this.isQuadraticBezierCurve = true;\n    this.type = \"QuadraticBezierCurve\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t2, v0.x, v1.x, v2.x),\n      QuadraticBezier(t2, v0.y, v1.y, v2.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass QuadraticBezierCurve3 extends Curve {\n  constructor(v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3()) {\n    super();\n    this.isQuadraticBezierCurve3 = true;\n    this.type = \"QuadraticBezierCurve3\";\n    this.v0 = v0;\n    this.v1 = v1;\n    this.v2 = v2;\n  }\n  getPoint(t2, optionalTarget = new Vector3()) {\n    const point = optionalTarget;\n    const v0 = this.v0, v1 = this.v1, v2 = this.v2;\n    point.set(\n      QuadraticBezier(t2, v0.x, v1.x, v2.x),\n      QuadraticBezier(t2, v0.y, v1.y, v2.y),\n      QuadraticBezier(t2, v0.z, v1.z, v2.z)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.v0.copy(source.v0);\n    this.v1.copy(source.v1);\n    this.v2.copy(source.v2);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.v0 = this.v0.toArray();\n    data.v1 = this.v1.toArray();\n    data.v2 = this.v2.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.v0.fromArray(json.v0);\n    this.v1.fromArray(json.v1);\n    this.v2.fromArray(json.v2);\n    return this;\n  }\n}\nclass SplineCurve extends Curve {\n  constructor(points = []) {\n    super();\n    this.isSplineCurve = true;\n    this.type = \"SplineCurve\";\n    this.points = points;\n  }\n  getPoint(t2, optionalTarget = new Vector2()) {\n    const point = optionalTarget;\n    const points = this.points;\n    const p2 = (points.length - 1) * t2;\n    const intPoint = Math.floor(p2);\n    const weight = p2 - intPoint;\n    const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n    const p1 = points[intPoint];\n    const p22 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n    const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n    point.set(\n      CatmullRom(weight, p0.x, p1.x, p22.x, p3.x),\n      CatmullRom(weight, p0.y, p1.y, p22.y, p3.y)\n    );\n    return point;\n  }\n  copy(source) {\n    super.copy(source);\n    this.points = [];\n    for (let i2 = 0, l2 = source.points.length; i2 < l2; i2++) {\n      const point = source.points[i2];\n      this.points.push(point.clone());\n    }\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.points = [];\n    for (let i2 = 0, l2 = this.points.length; i2 < l2; i2++) {\n      const point = this.points[i2];\n      data.points.push(point.toArray());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.points = [];\n    for (let i2 = 0, l2 = json.points.length; i2 < l2; i2++) {\n      const point = json.points[i2];\n      this.points.push(new Vector2().fromArray(point));\n    }\n    return this;\n  }\n}\nvar Curves = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  ArcCurve,\n  CatmullRomCurve3,\n  CubicBezierCurve,\n  CubicBezierCurve3,\n  EllipseCurve,\n  LineCurve,\n  LineCurve3,\n  QuadraticBezierCurve,\n  QuadraticBezierCurve3,\n  SplineCurve\n});\nclass CurvePath extends Curve {\n  constructor() {\n    super();\n    this.type = \"CurvePath\";\n    this.curves = [];\n    this.autoClose = false;\n  }\n  add(curve) {\n    this.curves.push(curve);\n  }\n  closePath() {\n    const startPoint = this.curves[0].getPoint(0);\n    const endPoint = this.curves[this.curves.length - 1].getPoint(1);\n    if (!startPoint.equals(endPoint)) {\n      const lineType = startPoint.isVector2 === true ? \"LineCurve\" : \"LineCurve3\";\n      this.curves.push(new Curves[lineType](endPoint, startPoint));\n    }\n    return this;\n  }\n  // To get accurate point with reference to\n  // entire path distance at time t,\n  // following has to be done:\n  // 1. Length of each sub path have to be known\n  // 2. Locate and identify type of curve\n  // 3. Get t for the curve\n  // 4. Return curve.getPointAt(t')\n  getPoint(t2, optionalTarget) {\n    const d2 = t2 * this.getLength();\n    const curveLengths = this.getCurveLengths();\n    let i2 = 0;\n    while (i2 < curveLengths.length) {\n      if (curveLengths[i2] >= d2) {\n        const diff = curveLengths[i2] - d2;\n        const curve = this.curves[i2];\n        const segmentLength = curve.getLength();\n        const u2 = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\n        return curve.getPointAt(u2, optionalTarget);\n      }\n      i2++;\n    }\n    return null;\n  }\n  // We cannot use the default THREE.Curve getPoint() with getLength() because in\n  // THREE.Curve, getLength() depends on getPoint() but in THREE.CurvePath\n  // getPoint() depends on getLength\n  getLength() {\n    const lens = this.getCurveLengths();\n    return lens[lens.length - 1];\n  }\n  // cacheLengths must be recalculated.\n  updateArcLengths() {\n    this.needsUpdate = true;\n    this.cacheLengths = null;\n    this.getCurveLengths();\n  }\n  // Compute lengths and cache them\n  // We cannot overwrite getLengths() because UtoT mapping uses it.\n  getCurveLengths() {\n    if (this.cacheLengths && this.cacheLengths.length === this.curves.length) {\n      return this.cacheLengths;\n    }\n    const lengths = [];\n    let sums = 0;\n    for (let i2 = 0, l2 = this.curves.length; i2 < l2; i2++) {\n      sums += this.curves[i2].getLength();\n      lengths.push(sums);\n    }\n    this.cacheLengths = lengths;\n    return lengths;\n  }\n  getSpacedPoints(divisions = 40) {\n    const points = [];\n    for (let i2 = 0; i2 <= divisions; i2++) {\n      points.push(this.getPoint(i2 / divisions));\n    }\n    if (this.autoClose) {\n      points.push(points[0]);\n    }\n    return points;\n  }\n  getPoints(divisions = 12) {\n    const points = [];\n    let last;\n    for (let i2 = 0, curves = this.curves; i2 < curves.length; i2++) {\n      const curve = curves[i2];\n      const resolution = curve.isEllipseCurve ? divisions * 2 : curve.isLineCurve || curve.isLineCurve3 ? 1 : curve.isSplineCurve ? divisions * curve.points.length : divisions;\n      const pts = curve.getPoints(resolution);\n      for (let j2 = 0; j2 < pts.length; j2++) {\n        const point = pts[j2];\n        if (last && last.equals(point)) continue;\n        points.push(point);\n        last = point;\n      }\n    }\n    if (this.autoClose && points.length > 1 && !points[points.length - 1].equals(points[0])) {\n      points.push(points[0]);\n    }\n    return points;\n  }\n  copy(source) {\n    super.copy(source);\n    this.curves = [];\n    for (let i2 = 0, l2 = source.curves.length; i2 < l2; i2++) {\n      const curve = source.curves[i2];\n      this.curves.push(curve.clone());\n    }\n    this.autoClose = source.autoClose;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.autoClose = this.autoClose;\n    data.curves = [];\n    for (let i2 = 0, l2 = this.curves.length; i2 < l2; i2++) {\n      const curve = this.curves[i2];\n      data.curves.push(curve.toJSON());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.autoClose = json.autoClose;\n    this.curves = [];\n    for (let i2 = 0, l2 = json.curves.length; i2 < l2; i2++) {\n      const curve = json.curves[i2];\n      this.curves.push(new Curves[curve.type]().fromJSON(curve));\n    }\n    return this;\n  }\n}\nclass Path extends CurvePath {\n  constructor(points) {\n    super();\n    this.type = \"Path\";\n    this.currentPoint = new Vector2();\n    if (points) {\n      this.setFromPoints(points);\n    }\n  }\n  setFromPoints(points) {\n    this.moveTo(points[0].x, points[0].y);\n    for (let i2 = 1, l2 = points.length; i2 < l2; i2++) {\n      this.lineTo(points[i2].x, points[i2].y);\n    }\n    return this;\n  }\n  moveTo(x2, y2) {\n    this.currentPoint.set(x2, y2);\n    return this;\n  }\n  lineTo(x2, y2) {\n    const curve = new LineCurve(this.currentPoint.clone(), new Vector2(x2, y2));\n    this.curves.push(curve);\n    this.currentPoint.set(x2, y2);\n    return this;\n  }\n  quadraticCurveTo(aCPx, aCPy, aX, aY) {\n    const curve = new QuadraticBezierCurve(\n      this.currentPoint.clone(),\n      new Vector2(aCPx, aCPy),\n      new Vector2(aX, aY)\n    );\n    this.curves.push(curve);\n    this.currentPoint.set(aX, aY);\n    return this;\n  }\n  bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n    const curve = new CubicBezierCurve(\n      this.currentPoint.clone(),\n      new Vector2(aCP1x, aCP1y),\n      new Vector2(aCP2x, aCP2y),\n      new Vector2(aX, aY)\n    );\n    this.curves.push(curve);\n    this.currentPoint.set(aX, aY);\n    return this;\n  }\n  splineThru(pts) {\n    const npts = [this.currentPoint.clone()].concat(pts);\n    const curve = new SplineCurve(npts);\n    this.curves.push(curve);\n    this.currentPoint.copy(pts[pts.length - 1]);\n    return this;\n  }\n  arc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    const x0 = this.currentPoint.x;\n    const y0 = this.currentPoint.y;\n    this.absarc(\n      aX + x0,\n      aY + y0,\n      aRadius,\n      aStartAngle,\n      aEndAngle,\n      aClockwise\n    );\n    return this;\n  }\n  absarc(aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise) {\n    this.absellipse(aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise);\n    return this;\n  }\n  ellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n    const x0 = this.currentPoint.x;\n    const y0 = this.currentPoint.y;\n    this.absellipse(aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n    return this;\n  }\n  absellipse(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation) {\n    const curve = new EllipseCurve(aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation);\n    if (this.curves.length > 0) {\n      const firstPoint = curve.getPoint(0);\n      if (!firstPoint.equals(this.currentPoint)) {\n        this.lineTo(firstPoint.x, firstPoint.y);\n      }\n    }\n    this.curves.push(curve);\n    const lastPoint = curve.getPoint(1);\n    this.currentPoint.copy(lastPoint);\n    return this;\n  }\n  copy(source) {\n    super.copy(source);\n    this.currentPoint.copy(source.currentPoint);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.currentPoint = this.currentPoint.toArray();\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.currentPoint.fromArray(json.currentPoint);\n    return this;\n  }\n}\nclass LatheGeometry extends BufferGeometry {\n  constructor(points = [new Vector2(0, -0.5), new Vector2(0.5, 0), new Vector2(0, 0.5)], segments = 12, phiStart = 0, phiLength = Math.PI * 2) {\n    super();\n    this.type = \"LatheGeometry\";\n    this.parameters = {\n      points,\n      segments,\n      phiStart,\n      phiLength\n    };\n    segments = Math.floor(segments);\n    phiLength = clamp(phiLength, 0, Math.PI * 2);\n    const indices = [];\n    const vertices = [];\n    const uvs = [];\n    const initNormals = [];\n    const normals = [];\n    const inverseSegments = 1 / segments;\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    const normal = new Vector3();\n    const curNormal = new Vector3();\n    const prevNormal = new Vector3();\n    let dx = 0;\n    let dy = 0;\n    for (let j2 = 0; j2 <= points.length - 1; j2++) {\n      switch (j2) {\n        case 0:\n          dx = points[j2 + 1].x - points[j2].x;\n          dy = points[j2 + 1].y - points[j2].y;\n          normal.x = dy * 1;\n          normal.y = -dx;\n          normal.z = dy * 0;\n          prevNormal.copy(normal);\n          normal.normalize();\n          initNormals.push(normal.x, normal.y, normal.z);\n          break;\n        case points.length - 1:\n          initNormals.push(prevNormal.x, prevNormal.y, prevNormal.z);\n          break;\n        default:\n          dx = points[j2 + 1].x - points[j2].x;\n          dy = points[j2 + 1].y - points[j2].y;\n          normal.x = dy * 1;\n          normal.y = -dx;\n          normal.z = dy * 0;\n          curNormal.copy(normal);\n          normal.x += prevNormal.x;\n          normal.y += prevNormal.y;\n          normal.z += prevNormal.z;\n          normal.normalize();\n          initNormals.push(normal.x, normal.y, normal.z);\n          prevNormal.copy(curNormal);\n      }\n    }\n    for (let i2 = 0; i2 <= segments; i2++) {\n      const phi = phiStart + i2 * inverseSegments * phiLength;\n      const sin = Math.sin(phi);\n      const cos = Math.cos(phi);\n      for (let j2 = 0; j2 <= points.length - 1; j2++) {\n        vertex2.x = points[j2].x * sin;\n        vertex2.y = points[j2].y;\n        vertex2.z = points[j2].x * cos;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        uv.x = i2 / segments;\n        uv.y = j2 / (points.length - 1);\n        uvs.push(uv.x, uv.y);\n        const x2 = initNormals[3 * j2 + 0] * sin;\n        const y2 = initNormals[3 * j2 + 1];\n        const z2 = initNormals[3 * j2 + 0] * cos;\n        normals.push(x2, y2, z2);\n      }\n    }\n    for (let i2 = 0; i2 < segments; i2++) {\n      for (let j2 = 0; j2 < points.length - 1; j2++) {\n        const base = j2 + i2 * points.length;\n        const a2 = base;\n        const b2 = base + points.length;\n        const c2 = base + points.length + 1;\n        const d2 = base + 1;\n        indices.push(a2, b2, d2);\n        indices.push(c2, d2, b2);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new LatheGeometry(data.points, data.segments, data.phiStart, data.phiLength);\n  }\n}\nclass CapsuleGeometry extends LatheGeometry {\n  constructor(radius = 1, length = 1, capSegments = 4, radialSegments = 8) {\n    const path = new Path();\n    path.absarc(0, -length / 2, radius, Math.PI * 1.5, 0);\n    path.absarc(0, length / 2, radius, 0, Math.PI * 0.5);\n    super(path.getPoints(capSegments), radialSegments);\n    this.type = \"CapsuleGeometry\";\n    this.parameters = {\n      radius,\n      length,\n      capSegments,\n      radialSegments\n    };\n  }\n  static fromJSON(data) {\n    return new CapsuleGeometry(data.radius, data.length, data.capSegments, data.radialSegments);\n  }\n}\nclass CircleGeometry extends BufferGeometry {\n  constructor(radius = 1, segments = 32, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"CircleGeometry\";\n    this.parameters = {\n      radius,\n      segments,\n      thetaStart,\n      thetaLength\n    };\n    segments = Math.max(3, segments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    vertices.push(0, 0, 0);\n    normals.push(0, 0, 1);\n    uvs.push(0.5, 0.5);\n    for (let s2 = 0, i2 = 3; s2 <= segments; s2++, i2 += 3) {\n      const segment = thetaStart + s2 / segments * thetaLength;\n      vertex2.x = radius * Math.cos(segment);\n      vertex2.y = radius * Math.sin(segment);\n      vertices.push(vertex2.x, vertex2.y, vertex2.z);\n      normals.push(0, 0, 1);\n      uv.x = (vertices[i2] / radius + 1) / 2;\n      uv.y = (vertices[i2 + 1] / radius + 1) / 2;\n      uvs.push(uv.x, uv.y);\n    }\n    for (let i2 = 1; i2 <= segments; i2++) {\n      indices.push(i2, i2 + 1, 0);\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new CircleGeometry(data.radius, data.segments, data.thetaStart, data.thetaLength);\n  }\n}\nclass CylinderGeometry extends BufferGeometry {\n  constructor(radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"CylinderGeometry\";\n    this.parameters = {\n      radiusTop,\n      radiusBottom,\n      height,\n      radialSegments,\n      heightSegments,\n      openEnded,\n      thetaStart,\n      thetaLength\n    };\n    const scope = this;\n    radialSegments = Math.floor(radialSegments);\n    heightSegments = Math.floor(heightSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let index = 0;\n    const indexArray = [];\n    const halfHeight = height / 2;\n    let groupStart = 0;\n    generateTorso();\n    if (openEnded === false) {\n      if (radiusTop > 0) generateCap(true);\n      if (radiusBottom > 0) generateCap(false);\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function generateTorso() {\n      const normal = new Vector3();\n      const vertex2 = new Vector3();\n      let groupCount = 0;\n      const slope = (radiusBottom - radiusTop) / height;\n      for (let y2 = 0; y2 <= heightSegments; y2++) {\n        const indexRow = [];\n        const v2 = y2 / heightSegments;\n        const radius = v2 * (radiusBottom - radiusTop) + radiusTop;\n        for (let x2 = 0; x2 <= radialSegments; x2++) {\n          const u2 = x2 / radialSegments;\n          const theta = u2 * thetaLength + thetaStart;\n          const sinTheta = Math.sin(theta);\n          const cosTheta = Math.cos(theta);\n          vertex2.x = radius * sinTheta;\n          vertex2.y = -v2 * height + halfHeight;\n          vertex2.z = radius * cosTheta;\n          vertices.push(vertex2.x, vertex2.y, vertex2.z);\n          normal.set(sinTheta, slope, cosTheta).normalize();\n          normals.push(normal.x, normal.y, normal.z);\n          uvs.push(u2, 1 - v2);\n          indexRow.push(index++);\n        }\n        indexArray.push(indexRow);\n      }\n      for (let x2 = 0; x2 < radialSegments; x2++) {\n        for (let y2 = 0; y2 < heightSegments; y2++) {\n          const a2 = indexArray[y2][x2];\n          const b2 = indexArray[y2 + 1][x2];\n          const c2 = indexArray[y2 + 1][x2 + 1];\n          const d2 = indexArray[y2][x2 + 1];\n          indices.push(a2, b2, d2);\n          indices.push(b2, c2, d2);\n          groupCount += 6;\n        }\n      }\n      scope.addGroup(groupStart, groupCount, 0);\n      groupStart += groupCount;\n    }\n    function generateCap(top) {\n      const centerIndexStart = index;\n      const uv = new Vector2();\n      const vertex2 = new Vector3();\n      let groupCount = 0;\n      const radius = top === true ? radiusTop : radiusBottom;\n      const sign2 = top === true ? 1 : -1;\n      for (let x2 = 1; x2 <= radialSegments; x2++) {\n        vertices.push(0, halfHeight * sign2, 0);\n        normals.push(0, sign2, 0);\n        uvs.push(0.5, 0.5);\n        index++;\n      }\n      const centerIndexEnd = index;\n      for (let x2 = 0; x2 <= radialSegments; x2++) {\n        const u2 = x2 / radialSegments;\n        const theta = u2 * thetaLength + thetaStart;\n        const cosTheta = Math.cos(theta);\n        const sinTheta = Math.sin(theta);\n        vertex2.x = radius * sinTheta;\n        vertex2.y = halfHeight * sign2;\n        vertex2.z = radius * cosTheta;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normals.push(0, sign2, 0);\n        uv.x = cosTheta * 0.5 + 0.5;\n        uv.y = sinTheta * 0.5 * sign2 + 0.5;\n        uvs.push(uv.x, uv.y);\n        index++;\n      }\n      for (let x2 = 0; x2 < radialSegments; x2++) {\n        const c2 = centerIndexStart + x2;\n        const i2 = centerIndexEnd + x2;\n        if (top === true) {\n          indices.push(i2, i2 + 1, c2);\n        } else {\n          indices.push(i2 + 1, i2, c2);\n        }\n        groupCount += 3;\n      }\n      scope.addGroup(groupStart, groupCount, top === true ? 1 : 2);\n      groupStart += groupCount;\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new CylinderGeometry(data.radiusTop, data.radiusBottom, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n  }\n}\nclass ConeGeometry extends CylinderGeometry {\n  constructor(radius = 1, height = 1, radialSegments = 32, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super(0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength);\n    this.type = \"ConeGeometry\";\n    this.parameters = {\n      radius,\n      height,\n      radialSegments,\n      heightSegments,\n      openEnded,\n      thetaStart,\n      thetaLength\n    };\n  }\n  static fromJSON(data) {\n    return new ConeGeometry(data.radius, data.height, data.radialSegments, data.heightSegments, data.openEnded, data.thetaStart, data.thetaLength);\n  }\n}\nclass PolyhedronGeometry extends BufferGeometry {\n  constructor(vertices = [], indices = [], radius = 1, detail = 0) {\n    super();\n    this.type = \"PolyhedronGeometry\";\n    this.parameters = {\n      vertices,\n      indices,\n      radius,\n      detail\n    };\n    const vertexBuffer = [];\n    const uvBuffer = [];\n    subdivide(detail);\n    applyRadius(radius);\n    generateUVs();\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertexBuffer, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(vertexBuffer.slice(), 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvBuffer, 2));\n    if (detail === 0) {\n      this.computeVertexNormals();\n    } else {\n      this.normalizeNormals();\n    }\n    function subdivide(detail2) {\n      const a2 = new Vector3();\n      const b2 = new Vector3();\n      const c2 = new Vector3();\n      for (let i2 = 0; i2 < indices.length; i2 += 3) {\n        getVertexByIndex(indices[i2 + 0], a2);\n        getVertexByIndex(indices[i2 + 1], b2);\n        getVertexByIndex(indices[i2 + 2], c2);\n        subdivideFace(a2, b2, c2, detail2);\n      }\n    }\n    function subdivideFace(a2, b2, c2, detail2) {\n      const cols = detail2 + 1;\n      const v2 = [];\n      for (let i2 = 0; i2 <= cols; i2++) {\n        v2[i2] = [];\n        const aj = a2.clone().lerp(c2, i2 / cols);\n        const bj = b2.clone().lerp(c2, i2 / cols);\n        const rows = cols - i2;\n        for (let j2 = 0; j2 <= rows; j2++) {\n          if (j2 === 0 && i2 === cols) {\n            v2[i2][j2] = aj;\n          } else {\n            v2[i2][j2] = aj.clone().lerp(bj, j2 / rows);\n          }\n        }\n      }\n      for (let i2 = 0; i2 < cols; i2++) {\n        for (let j2 = 0; j2 < 2 * (cols - i2) - 1; j2++) {\n          const k2 = Math.floor(j2 / 2);\n          if (j2 % 2 === 0) {\n            pushVertex(v2[i2][k2 + 1]);\n            pushVertex(v2[i2 + 1][k2]);\n            pushVertex(v2[i2][k2]);\n          } else {\n            pushVertex(v2[i2][k2 + 1]);\n            pushVertex(v2[i2 + 1][k2 + 1]);\n            pushVertex(v2[i2 + 1][k2]);\n          }\n        }\n      }\n    }\n    function applyRadius(radius2) {\n      const vertex2 = new Vector3();\n      for (let i2 = 0; i2 < vertexBuffer.length; i2 += 3) {\n        vertex2.x = vertexBuffer[i2 + 0];\n        vertex2.y = vertexBuffer[i2 + 1];\n        vertex2.z = vertexBuffer[i2 + 2];\n        vertex2.normalize().multiplyScalar(radius2);\n        vertexBuffer[i2 + 0] = vertex2.x;\n        vertexBuffer[i2 + 1] = vertex2.y;\n        vertexBuffer[i2 + 2] = vertex2.z;\n      }\n    }\n    function generateUVs() {\n      const vertex2 = new Vector3();\n      for (let i2 = 0; i2 < vertexBuffer.length; i2 += 3) {\n        vertex2.x = vertexBuffer[i2 + 0];\n        vertex2.y = vertexBuffer[i2 + 1];\n        vertex2.z = vertexBuffer[i2 + 2];\n        const u2 = azimuth(vertex2) / 2 / Math.PI + 0.5;\n        const v2 = inclination(vertex2) / Math.PI + 0.5;\n        uvBuffer.push(u2, 1 - v2);\n      }\n      correctUVs();\n      correctSeam();\n    }\n    function correctSeam() {\n      for (let i2 = 0; i2 < uvBuffer.length; i2 += 6) {\n        const x0 = uvBuffer[i2 + 0];\n        const x1 = uvBuffer[i2 + 2];\n        const x2 = uvBuffer[i2 + 4];\n        const max2 = Math.max(x0, x1, x2);\n        const min = Math.min(x0, x1, x2);\n        if (max2 > 0.9 && min < 0.1) {\n          if (x0 < 0.2) uvBuffer[i2 + 0] += 1;\n          if (x1 < 0.2) uvBuffer[i2 + 2] += 1;\n          if (x2 < 0.2) uvBuffer[i2 + 4] += 1;\n        }\n      }\n    }\n    function pushVertex(vertex2) {\n      vertexBuffer.push(vertex2.x, vertex2.y, vertex2.z);\n    }\n    function getVertexByIndex(index, vertex2) {\n      const stride = index * 3;\n      vertex2.x = vertices[stride + 0];\n      vertex2.y = vertices[stride + 1];\n      vertex2.z = vertices[stride + 2];\n    }\n    function correctUVs() {\n      const a2 = new Vector3();\n      const b2 = new Vector3();\n      const c2 = new Vector3();\n      const centroid = new Vector3();\n      const uvA = new Vector2();\n      const uvB = new Vector2();\n      const uvC = new Vector2();\n      for (let i2 = 0, j2 = 0; i2 < vertexBuffer.length; i2 += 9, j2 += 6) {\n        a2.set(vertexBuffer[i2 + 0], vertexBuffer[i2 + 1], vertexBuffer[i2 + 2]);\n        b2.set(vertexBuffer[i2 + 3], vertexBuffer[i2 + 4], vertexBuffer[i2 + 5]);\n        c2.set(vertexBuffer[i2 + 6], vertexBuffer[i2 + 7], vertexBuffer[i2 + 8]);\n        uvA.set(uvBuffer[j2 + 0], uvBuffer[j2 + 1]);\n        uvB.set(uvBuffer[j2 + 2], uvBuffer[j2 + 3]);\n        uvC.set(uvBuffer[j2 + 4], uvBuffer[j2 + 5]);\n        centroid.copy(a2).add(b2).add(c2).divideScalar(3);\n        const azi = azimuth(centroid);\n        correctUV(uvA, j2 + 0, a2, azi);\n        correctUV(uvB, j2 + 2, b2, azi);\n        correctUV(uvC, j2 + 4, c2, azi);\n      }\n    }\n    function correctUV(uv, stride, vector, azimuth2) {\n      if (azimuth2 < 0 && uv.x === 1) {\n        uvBuffer[stride] = uv.x - 1;\n      }\n      if (vector.x === 0 && vector.z === 0) {\n        uvBuffer[stride] = azimuth2 / 2 / Math.PI + 0.5;\n      }\n    }\n    function azimuth(vector) {\n      return Math.atan2(vector.z, -vector.x);\n    }\n    function inclination(vector) {\n      return Math.atan2(-vector.y, Math.sqrt(vector.x * vector.x + vector.z * vector.z));\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new PolyhedronGeometry(data.vertices, data.indices, data.radius, data.details);\n  }\n}\nclass DodecahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t2 = (1 + Math.sqrt(5)) / 2;\n    const r2 = 1 / t2;\n    const vertices = [\n      // (±1, ±1, ±1)\n      -1,\n      -1,\n      -1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      -1,\n      1,\n      1,\n      1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      1,\n      1,\n      -1,\n      1,\n      1,\n      1,\n      // (0, ±1/φ, ±φ)\n      0,\n      -r2,\n      -t2,\n      0,\n      -r2,\n      t2,\n      0,\n      r2,\n      -t2,\n      0,\n      r2,\n      t2,\n      // (±1/φ, ±φ, 0)\n      -r2,\n      -t2,\n      0,\n      -r2,\n      t2,\n      0,\n      r2,\n      -t2,\n      0,\n      r2,\n      t2,\n      0,\n      // (±φ, 0, ±1/φ)\n      -t2,\n      0,\n      -r2,\n      t2,\n      0,\n      -r2,\n      -t2,\n      0,\n      r2,\n      t2,\n      0,\n      r2\n    ];\n    const indices = [\n      3,\n      11,\n      7,\n      3,\n      7,\n      15,\n      3,\n      15,\n      13,\n      7,\n      19,\n      17,\n      7,\n      17,\n      6,\n      7,\n      6,\n      15,\n      17,\n      4,\n      8,\n      17,\n      8,\n      10,\n      17,\n      10,\n      6,\n      8,\n      0,\n      16,\n      8,\n      16,\n      2,\n      8,\n      2,\n      10,\n      0,\n      12,\n      1,\n      0,\n      1,\n      18,\n      0,\n      18,\n      16,\n      6,\n      10,\n      2,\n      6,\n      2,\n      13,\n      6,\n      13,\n      15,\n      2,\n      16,\n      18,\n      2,\n      18,\n      3,\n      2,\n      3,\n      13,\n      18,\n      1,\n      9,\n      18,\n      9,\n      11,\n      18,\n      11,\n      3,\n      4,\n      14,\n      12,\n      4,\n      12,\n      0,\n      4,\n      0,\n      8,\n      11,\n      9,\n      5,\n      11,\n      5,\n      19,\n      11,\n      19,\n      7,\n      19,\n      5,\n      14,\n      19,\n      14,\n      4,\n      19,\n      4,\n      17,\n      1,\n      12,\n      14,\n      1,\n      14,\n      5,\n      1,\n      5,\n      9\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"DodecahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new DodecahedronGeometry(data.radius, data.detail);\n  }\n}\nconst _v0 = /* @__PURE__ */ new Vector3();\nconst _v1$1 = /* @__PURE__ */ new Vector3();\nconst _normal = /* @__PURE__ */ new Vector3();\nconst _triangle = /* @__PURE__ */ new Triangle();\nclass EdgesGeometry extends BufferGeometry {\n  constructor(geometry = null, thresholdAngle = 1) {\n    super();\n    this.type = \"EdgesGeometry\";\n    this.parameters = {\n      geometry,\n      thresholdAngle\n    };\n    if (geometry !== null) {\n      const precisionPoints = 4;\n      const precision = Math.pow(10, precisionPoints);\n      const thresholdDot = Math.cos(DEG2RAD * thresholdAngle);\n      const indexAttr = geometry.getIndex();\n      const positionAttr = geometry.getAttribute(\"position\");\n      const indexCount = indexAttr ? indexAttr.count : positionAttr.count;\n      const indexArr = [0, 0, 0];\n      const vertKeys = [\"a\", \"b\", \"c\"];\n      const hashes = new Array(3);\n      const edgeData = {};\n      const vertices = [];\n      for (let i2 = 0; i2 < indexCount; i2 += 3) {\n        if (indexAttr) {\n          indexArr[0] = indexAttr.getX(i2);\n          indexArr[1] = indexAttr.getX(i2 + 1);\n          indexArr[2] = indexAttr.getX(i2 + 2);\n        } else {\n          indexArr[0] = i2;\n          indexArr[1] = i2 + 1;\n          indexArr[2] = i2 + 2;\n        }\n        const { a: a2, b: b2, c: c2 } = _triangle;\n        a2.fromBufferAttribute(positionAttr, indexArr[0]);\n        b2.fromBufferAttribute(positionAttr, indexArr[1]);\n        c2.fromBufferAttribute(positionAttr, indexArr[2]);\n        _triangle.getNormal(_normal);\n        hashes[0] = `${Math.round(a2.x * precision)},${Math.round(a2.y * precision)},${Math.round(a2.z * precision)}`;\n        hashes[1] = `${Math.round(b2.x * precision)},${Math.round(b2.y * precision)},${Math.round(b2.z * precision)}`;\n        hashes[2] = `${Math.round(c2.x * precision)},${Math.round(c2.y * precision)},${Math.round(c2.z * precision)}`;\n        if (hashes[0] === hashes[1] || hashes[1] === hashes[2] || hashes[2] === hashes[0]) {\n          continue;\n        }\n        for (let j2 = 0; j2 < 3; j2++) {\n          const jNext = (j2 + 1) % 3;\n          const vecHash0 = hashes[j2];\n          const vecHash1 = hashes[jNext];\n          const v0 = _triangle[vertKeys[j2]];\n          const v1 = _triangle[vertKeys[jNext]];\n          const hash = `${vecHash0}_${vecHash1}`;\n          const reverseHash = `${vecHash1}_${vecHash0}`;\n          if (reverseHash in edgeData && edgeData[reverseHash]) {\n            if (_normal.dot(edgeData[reverseHash].normal) <= thresholdDot) {\n              vertices.push(v0.x, v0.y, v0.z);\n              vertices.push(v1.x, v1.y, v1.z);\n            }\n            edgeData[reverseHash] = null;\n          } else if (!(hash in edgeData)) {\n            edgeData[hash] = {\n              index0: indexArr[j2],\n              index1: indexArr[jNext],\n              normal: _normal.clone()\n            };\n          }\n        }\n      }\n      for (const key in edgeData) {\n        if (edgeData[key]) {\n          const { index0, index1 } = edgeData[key];\n          _v0.fromBufferAttribute(positionAttr, index0);\n          _v1$1.fromBufferAttribute(positionAttr, index1);\n          vertices.push(_v0.x, _v0.y, _v0.z);\n          vertices.push(_v1$1.x, _v1$1.y, _v1$1.z);\n        }\n      }\n      this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n}\nclass Shape extends Path {\n  constructor(points) {\n    super(points);\n    this.uuid = generateUUID();\n    this.type = \"Shape\";\n    this.holes = [];\n  }\n  getPointsHoles(divisions) {\n    const holesPts = [];\n    for (let i2 = 0, l2 = this.holes.length; i2 < l2; i2++) {\n      holesPts[i2] = this.holes[i2].getPoints(divisions);\n    }\n    return holesPts;\n  }\n  // get points of shape and holes (keypoints based on segments parameter)\n  extractPoints(divisions) {\n    return {\n      shape: this.getPoints(divisions),\n      holes: this.getPointsHoles(divisions)\n    };\n  }\n  copy(source) {\n    super.copy(source);\n    this.holes = [];\n    for (let i2 = 0, l2 = source.holes.length; i2 < l2; i2++) {\n      const hole = source.holes[i2];\n      this.holes.push(hole.clone());\n    }\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.uuid = this.uuid;\n    data.holes = [];\n    for (let i2 = 0, l2 = this.holes.length; i2 < l2; i2++) {\n      const hole = this.holes[i2];\n      data.holes.push(hole.toJSON());\n    }\n    return data;\n  }\n  fromJSON(json) {\n    super.fromJSON(json);\n    this.uuid = json.uuid;\n    this.holes = [];\n    for (let i2 = 0, l2 = json.holes.length; i2 < l2; i2++) {\n      const hole = json.holes[i2];\n      this.holes.push(new Path().fromJSON(hole));\n    }\n    return this;\n  }\n}\nconst Earcut = {\n  triangulate: function(data, holeIndices, dim = 2) {\n    const hasHoles = holeIndices && holeIndices.length;\n    const outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n    let outerNode = linkedList(data, 0, outerLen, dim, true);\n    const triangles = [];\n    if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n    let minX, minY, maxX, maxY, x2, y2, invSize;\n    if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n    if (data.length > 80 * dim) {\n      minX = maxX = data[0];\n      minY = maxY = data[1];\n      for (let i2 = dim; i2 < outerLen; i2 += dim) {\n        x2 = data[i2];\n        y2 = data[i2 + 1];\n        if (x2 < minX) minX = x2;\n        if (y2 < minY) minY = y2;\n        if (x2 > maxX) maxX = x2;\n        if (y2 > maxY) maxY = y2;\n      }\n      invSize = Math.max(maxX - minX, maxY - minY);\n      invSize = invSize !== 0 ? 32767 / invSize : 0;\n    }\n    earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n    return triangles;\n  }\n};\nfunction linkedList(data, start, end, dim, clockwise) {\n  let i2, last;\n  if (clockwise === signedArea(data, start, end, dim) > 0) {\n    for (i2 = start; i2 < end; i2 += dim) last = insertNode(i2, data[i2], data[i2 + 1], last);\n  } else {\n    for (i2 = end - dim; i2 >= start; i2 -= dim) last = insertNode(i2, data[i2], data[i2 + 1], last);\n  }\n  if (last && equals(last, last.next)) {\n    removeNode(last);\n    last = last.next;\n  }\n  return last;\n}\nfunction filterPoints(start, end) {\n  if (!start) return start;\n  if (!end) end = start;\n  let p2 = start, again;\n  do {\n    again = false;\n    if (!p2.steiner && (equals(p2, p2.next) || area(p2.prev, p2, p2.next) === 0)) {\n      removeNode(p2);\n      p2 = end = p2.prev;\n      if (p2 === p2.next) break;\n      again = true;\n    } else {\n      p2 = p2.next;\n    }\n  } while (again || p2 !== end);\n  return end;\n}\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n  if (!ear) return;\n  if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n  let stop = ear, prev, next;\n  while (ear.prev !== ear.next) {\n    prev = ear.prev;\n    next = ear.next;\n    if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n      triangles.push(prev.i / dim | 0);\n      triangles.push(ear.i / dim | 0);\n      triangles.push(next.i / dim | 0);\n      removeNode(ear);\n      ear = next.next;\n      stop = next.next;\n      continue;\n    }\n    ear = next;\n    if (ear === stop) {\n      if (!pass) {\n        earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n      } else if (pass === 1) {\n        ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n        earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n      } else if (pass === 2) {\n        splitEarcut(ear, triangles, dim, minX, minY, invSize);\n      }\n      break;\n    }\n  }\n}\nfunction isEar(ear) {\n  const a2 = ear.prev, b2 = ear, c2 = ear.next;\n  if (area(a2, b2, c2) >= 0) return false;\n  const ax = a2.x, bx = b2.x, cx = c2.x, ay = a2.y, by = b2.y, cy = c2.y;\n  const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n  let p2 = c2.next;\n  while (p2 !== a2) {\n    if (p2.x >= x0 && p2.x <= x1 && p2.y >= y0 && p2.y <= y1 && pointInTriangle(ax, ay, bx, by, cx, cy, p2.x, p2.y) && area(p2.prev, p2, p2.next) >= 0) return false;\n    p2 = p2.next;\n  }\n  return true;\n}\nfunction isEarHashed(ear, minX, minY, invSize) {\n  const a2 = ear.prev, b2 = ear, c2 = ear.next;\n  if (area(a2, b2, c2) >= 0) return false;\n  const ax = a2.x, bx = b2.x, cx = c2.x, ay = a2.y, by = b2.y, cy = c2.y;\n  const x0 = ax < bx ? ax < cx ? ax : cx : bx < cx ? bx : cx, y0 = ay < by ? ay < cy ? ay : cy : by < cy ? by : cy, x1 = ax > bx ? ax > cx ? ax : cx : bx > cx ? bx : cx, y1 = ay > by ? ay > cy ? ay : cy : by > cy ? by : cy;\n  const minZ = zOrder(x0, y0, minX, minY, invSize), maxZ = zOrder(x1, y1, minX, minY, invSize);\n  let p2 = ear.prevZ, n2 = ear.nextZ;\n  while (p2 && p2.z >= minZ && n2 && n2.z <= maxZ) {\n    if (p2.x >= x0 && p2.x <= x1 && p2.y >= y0 && p2.y <= y1 && p2 !== a2 && p2 !== c2 && pointInTriangle(ax, ay, bx, by, cx, cy, p2.x, p2.y) && area(p2.prev, p2, p2.next) >= 0) return false;\n    p2 = p2.prevZ;\n    if (n2.x >= x0 && n2.x <= x1 && n2.y >= y0 && n2.y <= y1 && n2 !== a2 && n2 !== c2 && pointInTriangle(ax, ay, bx, by, cx, cy, n2.x, n2.y) && area(n2.prev, n2, n2.next) >= 0) return false;\n    n2 = n2.nextZ;\n  }\n  while (p2 && p2.z >= minZ) {\n    if (p2.x >= x0 && p2.x <= x1 && p2.y >= y0 && p2.y <= y1 && p2 !== a2 && p2 !== c2 && pointInTriangle(ax, ay, bx, by, cx, cy, p2.x, p2.y) && area(p2.prev, p2, p2.next) >= 0) return false;\n    p2 = p2.prevZ;\n  }\n  while (n2 && n2.z <= maxZ) {\n    if (n2.x >= x0 && n2.x <= x1 && n2.y >= y0 && n2.y <= y1 && n2 !== a2 && n2 !== c2 && pointInTriangle(ax, ay, bx, by, cx, cy, n2.x, n2.y) && area(n2.prev, n2, n2.next) >= 0) return false;\n    n2 = n2.nextZ;\n  }\n  return true;\n}\nfunction cureLocalIntersections(start, triangles, dim) {\n  let p2 = start;\n  do {\n    const a2 = p2.prev, b2 = p2.next.next;\n    if (!equals(a2, b2) && intersects(a2, p2, p2.next, b2) && locallyInside(a2, b2) && locallyInside(b2, a2)) {\n      triangles.push(a2.i / dim | 0);\n      triangles.push(p2.i / dim | 0);\n      triangles.push(b2.i / dim | 0);\n      removeNode(p2);\n      removeNode(p2.next);\n      p2 = start = b2;\n    }\n    p2 = p2.next;\n  } while (p2 !== start);\n  return filterPoints(p2);\n}\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n  let a2 = start;\n  do {\n    let b2 = a2.next.next;\n    while (b2 !== a2.prev) {\n      if (a2.i !== b2.i && isValidDiagonal(a2, b2)) {\n        let c2 = splitPolygon(a2, b2);\n        a2 = filterPoints(a2, a2.next);\n        c2 = filterPoints(c2, c2.next);\n        earcutLinked(a2, triangles, dim, minX, minY, invSize, 0);\n        earcutLinked(c2, triangles, dim, minX, minY, invSize, 0);\n        return;\n      }\n      b2 = b2.next;\n    }\n    a2 = a2.next;\n  } while (a2 !== start);\n}\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n  const queue = [];\n  let i2, len, start, end, list;\n  for (i2 = 0, len = holeIndices.length; i2 < len; i2++) {\n    start = holeIndices[i2] * dim;\n    end = i2 < len - 1 ? holeIndices[i2 + 1] * dim : data.length;\n    list = linkedList(data, start, end, dim, false);\n    if (list === list.next) list.steiner = true;\n    queue.push(getLeftmost(list));\n  }\n  queue.sort(compareX);\n  for (i2 = 0; i2 < queue.length; i2++) {\n    outerNode = eliminateHole(queue[i2], outerNode);\n  }\n  return outerNode;\n}\nfunction compareX(a2, b2) {\n  return a2.x - b2.x;\n}\nfunction eliminateHole(hole, outerNode) {\n  const bridge = findHoleBridge(hole, outerNode);\n  if (!bridge) {\n    return outerNode;\n  }\n  const bridgeReverse = splitPolygon(bridge, hole);\n  filterPoints(bridgeReverse, bridgeReverse.next);\n  return filterPoints(bridge, bridge.next);\n}\nfunction findHoleBridge(hole, outerNode) {\n  let p2 = outerNode, qx = -Infinity, m2;\n  const hx = hole.x, hy = hole.y;\n  do {\n    if (hy <= p2.y && hy >= p2.next.y && p2.next.y !== p2.y) {\n      const x2 = p2.x + (hy - p2.y) * (p2.next.x - p2.x) / (p2.next.y - p2.y);\n      if (x2 <= hx && x2 > qx) {\n        qx = x2;\n        m2 = p2.x < p2.next.x ? p2 : p2.next;\n        if (x2 === hx) return m2;\n      }\n    }\n    p2 = p2.next;\n  } while (p2 !== outerNode);\n  if (!m2) return null;\n  const stop = m2, mx = m2.x, my = m2.y;\n  let tanMin = Infinity, tan;\n  p2 = m2;\n  do {\n    if (hx >= p2.x && p2.x >= mx && hx !== p2.x && pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p2.x, p2.y)) {\n      tan = Math.abs(hy - p2.y) / (hx - p2.x);\n      if (locallyInside(p2, hole) && (tan < tanMin || tan === tanMin && (p2.x > m2.x || p2.x === m2.x && sectorContainsSector(m2, p2)))) {\n        m2 = p2;\n        tanMin = tan;\n      }\n    }\n    p2 = p2.next;\n  } while (p2 !== stop);\n  return m2;\n}\nfunction sectorContainsSector(m2, p2) {\n  return area(m2.prev, m2, p2.prev) < 0 && area(p2.next, m2, m2.next) < 0;\n}\nfunction indexCurve(start, minX, minY, invSize) {\n  let p2 = start;\n  do {\n    if (p2.z === 0) p2.z = zOrder(p2.x, p2.y, minX, minY, invSize);\n    p2.prevZ = p2.prev;\n    p2.nextZ = p2.next;\n    p2 = p2.next;\n  } while (p2 !== start);\n  p2.prevZ.nextZ = null;\n  p2.prevZ = null;\n  sortLinked(p2);\n}\nfunction sortLinked(list) {\n  let i2, p2, q2, e2, tail, numMerges, pSize, qSize, inSize = 1;\n  do {\n    p2 = list;\n    list = null;\n    tail = null;\n    numMerges = 0;\n    while (p2) {\n      numMerges++;\n      q2 = p2;\n      pSize = 0;\n      for (i2 = 0; i2 < inSize; i2++) {\n        pSize++;\n        q2 = q2.nextZ;\n        if (!q2) break;\n      }\n      qSize = inSize;\n      while (pSize > 0 || qSize > 0 && q2) {\n        if (pSize !== 0 && (qSize === 0 || !q2 || p2.z <= q2.z)) {\n          e2 = p2;\n          p2 = p2.nextZ;\n          pSize--;\n        } else {\n          e2 = q2;\n          q2 = q2.nextZ;\n          qSize--;\n        }\n        if (tail) tail.nextZ = e2;\n        else list = e2;\n        e2.prevZ = tail;\n        tail = e2;\n      }\n      p2 = q2;\n    }\n    tail.nextZ = null;\n    inSize *= 2;\n  } while (numMerges > 1);\n  return list;\n}\nfunction zOrder(x2, y2, minX, minY, invSize) {\n  x2 = (x2 - minX) * invSize | 0;\n  y2 = (y2 - minY) * invSize | 0;\n  x2 = (x2 | x2 << 8) & 16711935;\n  x2 = (x2 | x2 << 4) & 252645135;\n  x2 = (x2 | x2 << 2) & 858993459;\n  x2 = (x2 | x2 << 1) & 1431655765;\n  y2 = (y2 | y2 << 8) & 16711935;\n  y2 = (y2 | y2 << 4) & 252645135;\n  y2 = (y2 | y2 << 2) & 858993459;\n  y2 = (y2 | y2 << 1) & 1431655765;\n  return x2 | y2 << 1;\n}\nfunction getLeftmost(start) {\n  let p2 = start, leftmost = start;\n  do {\n    if (p2.x < leftmost.x || p2.x === leftmost.x && p2.y < leftmost.y) leftmost = p2;\n    p2 = p2.next;\n  } while (p2 !== start);\n  return leftmost;\n}\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px2, py2) {\n  return (cx - px2) * (ay - py2) >= (ax - px2) * (cy - py2) && (ax - px2) * (by - py2) >= (bx - px2) * (ay - py2) && (bx - px2) * (cy - py2) >= (cx - px2) * (by - py2);\n}\nfunction isValidDiagonal(a2, b2) {\n  return a2.next.i !== b2.i && a2.prev.i !== b2.i && !intersectsPolygon(a2, b2) && // dones't intersect other edges\n  (locallyInside(a2, b2) && locallyInside(b2, a2) && middleInside(a2, b2) && // locally visible\n  (area(a2.prev, a2, b2.prev) || area(a2, b2.prev, b2)) || // does not create opposite-facing sectors\n  equals(a2, b2) && area(a2.prev, a2, a2.next) > 0 && area(b2.prev, b2, b2.next) > 0);\n}\nfunction area(p2, q2, r2) {\n  return (q2.y - p2.y) * (r2.x - q2.x) - (q2.x - p2.x) * (r2.y - q2.y);\n}\nfunction equals(p1, p2) {\n  return p1.x === p2.x && p1.y === p2.y;\n}\nfunction intersects(p1, q1, p2, q2) {\n  const o1 = sign(area(p1, q1, p2));\n  const o2 = sign(area(p1, q1, q2));\n  const o3 = sign(area(p2, q2, p1));\n  const o4 = sign(area(p2, q2, q1));\n  if (o1 !== o2 && o3 !== o4) return true;\n  if (o1 === 0 && onSegment(p1, p2, q1)) return true;\n  if (o2 === 0 && onSegment(p1, q2, q1)) return true;\n  if (o3 === 0 && onSegment(p2, p1, q2)) return true;\n  if (o4 === 0 && onSegment(p2, q1, q2)) return true;\n  return false;\n}\nfunction onSegment(p2, q2, r2) {\n  return q2.x <= Math.max(p2.x, r2.x) && q2.x >= Math.min(p2.x, r2.x) && q2.y <= Math.max(p2.y, r2.y) && q2.y >= Math.min(p2.y, r2.y);\n}\nfunction sign(num) {\n  return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\nfunction intersectsPolygon(a2, b2) {\n  let p2 = a2;\n  do {\n    if (p2.i !== a2.i && p2.next.i !== a2.i && p2.i !== b2.i && p2.next.i !== b2.i && intersects(p2, p2.next, a2, b2)) return true;\n    p2 = p2.next;\n  } while (p2 !== a2);\n  return false;\n}\nfunction locallyInside(a2, b2) {\n  return area(a2.prev, a2, a2.next) < 0 ? area(a2, b2, a2.next) >= 0 && area(a2, a2.prev, b2) >= 0 : area(a2, b2, a2.prev) < 0 || area(a2, a2.next, b2) < 0;\n}\nfunction middleInside(a2, b2) {\n  let p2 = a2, inside = false;\n  const px2 = (a2.x + b2.x) / 2, py2 = (a2.y + b2.y) / 2;\n  do {\n    if (p2.y > py2 !== p2.next.y > py2 && p2.next.y !== p2.y && px2 < (p2.next.x - p2.x) * (py2 - p2.y) / (p2.next.y - p2.y) + p2.x)\n      inside = !inside;\n    p2 = p2.next;\n  } while (p2 !== a2);\n  return inside;\n}\nfunction splitPolygon(a2, b2) {\n  const a22 = new Node(a2.i, a2.x, a2.y), b22 = new Node(b2.i, b2.x, b2.y), an = a2.next, bp = b2.prev;\n  a2.next = b2;\n  b2.prev = a2;\n  a22.next = an;\n  an.prev = a22;\n  b22.next = a22;\n  a22.prev = b22;\n  bp.next = b22;\n  b22.prev = bp;\n  return b22;\n}\nfunction insertNode(i2, x2, y2, last) {\n  const p2 = new Node(i2, x2, y2);\n  if (!last) {\n    p2.prev = p2;\n    p2.next = p2;\n  } else {\n    p2.next = last.next;\n    p2.prev = last;\n    last.next.prev = p2;\n    last.next = p2;\n  }\n  return p2;\n}\nfunction removeNode(p2) {\n  p2.next.prev = p2.prev;\n  p2.prev.next = p2.next;\n  if (p2.prevZ) p2.prevZ.nextZ = p2.nextZ;\n  if (p2.nextZ) p2.nextZ.prevZ = p2.prevZ;\n}\nfunction Node(i2, x2, y2) {\n  this.i = i2;\n  this.x = x2;\n  this.y = y2;\n  this.prev = null;\n  this.next = null;\n  this.z = 0;\n  this.prevZ = null;\n  this.nextZ = null;\n  this.steiner = false;\n}\nfunction signedArea(data, start, end, dim) {\n  let sum = 0;\n  for (let i2 = start, j2 = end - dim; i2 < end; i2 += dim) {\n    sum += (data[j2] - data[i2]) * (data[i2 + 1] + data[j2 + 1]);\n    j2 = i2;\n  }\n  return sum;\n}\nclass ShapeUtils {\n  // calculate area of the contour polygon\n  static area(contour) {\n    const n2 = contour.length;\n    let a2 = 0;\n    for (let p2 = n2 - 1, q2 = 0; q2 < n2; p2 = q2++) {\n      a2 += contour[p2].x * contour[q2].y - contour[q2].x * contour[p2].y;\n    }\n    return a2 * 0.5;\n  }\n  static isClockWise(pts) {\n    return ShapeUtils.area(pts) < 0;\n  }\n  static triangulateShape(contour, holes) {\n    const vertices = [];\n    const holeIndices = [];\n    const faces = [];\n    removeDupEndPts(contour);\n    addContour(vertices, contour);\n    let holeIndex = contour.length;\n    holes.forEach(removeDupEndPts);\n    for (let i2 = 0; i2 < holes.length; i2++) {\n      holeIndices.push(holeIndex);\n      holeIndex += holes[i2].length;\n      addContour(vertices, holes[i2]);\n    }\n    const triangles = Earcut.triangulate(vertices, holeIndices);\n    for (let i2 = 0; i2 < triangles.length; i2 += 3) {\n      faces.push(triangles.slice(i2, i2 + 3));\n    }\n    return faces;\n  }\n}\nfunction removeDupEndPts(points) {\n  const l2 = points.length;\n  if (l2 > 2 && points[l2 - 1].equals(points[0])) {\n    points.pop();\n  }\n}\nfunction addContour(vertices, contour) {\n  for (let i2 = 0; i2 < contour.length; i2++) {\n    vertices.push(contour[i2].x);\n    vertices.push(contour[i2].y);\n  }\n}\nclass ExtrudeGeometry extends BufferGeometry {\n  constructor(shapes = new Shape([new Vector2(0.5, 0.5), new Vector2(-0.5, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), options = {}) {\n    super();\n    this.type = \"ExtrudeGeometry\";\n    this.parameters = {\n      shapes,\n      options\n    };\n    shapes = Array.isArray(shapes) ? shapes : [shapes];\n    const scope = this;\n    const verticesArray = [];\n    const uvArray = [];\n    for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n      const shape = shapes[i2];\n      addShape(shape);\n    }\n    this.setAttribute(\"position\", new Float32BufferAttribute(verticesArray, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvArray, 2));\n    this.computeVertexNormals();\n    function addShape(shape) {\n      const placeholder = [];\n      const curveSegments = options.curveSegments !== void 0 ? options.curveSegments : 12;\n      const steps = options.steps !== void 0 ? options.steps : 1;\n      const depth = options.depth !== void 0 ? options.depth : 1;\n      let bevelEnabled = options.bevelEnabled !== void 0 ? options.bevelEnabled : true;\n      let bevelThickness = options.bevelThickness !== void 0 ? options.bevelThickness : 0.2;\n      let bevelSize = options.bevelSize !== void 0 ? options.bevelSize : bevelThickness - 0.1;\n      let bevelOffset = options.bevelOffset !== void 0 ? options.bevelOffset : 0;\n      let bevelSegments = options.bevelSegments !== void 0 ? options.bevelSegments : 3;\n      const extrudePath = options.extrudePath;\n      const uvgen = options.UVGenerator !== void 0 ? options.UVGenerator : WorldUVGenerator;\n      let extrudePts, extrudeByPath = false;\n      let splineTube, binormal, normal, position2;\n      if (extrudePath) {\n        extrudePts = extrudePath.getSpacedPoints(steps);\n        extrudeByPath = true;\n        bevelEnabled = false;\n        splineTube = extrudePath.computeFrenetFrames(steps, false);\n        binormal = new Vector3();\n        normal = new Vector3();\n        position2 = new Vector3();\n      }\n      if (!bevelEnabled) {\n        bevelSegments = 0;\n        bevelThickness = 0;\n        bevelSize = 0;\n        bevelOffset = 0;\n      }\n      const shapePoints = shape.extractPoints(curveSegments);\n      let vertices = shapePoints.shape;\n      const holes = shapePoints.holes;\n      const reverse = !ShapeUtils.isClockWise(vertices);\n      if (reverse) {\n        vertices = vertices.reverse();\n        for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n          const ahole = holes[h2];\n          if (ShapeUtils.isClockWise(ahole)) {\n            holes[h2] = ahole.reverse();\n          }\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(vertices, holes);\n      const contour = vertices;\n      for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n        const ahole = holes[h2];\n        vertices = vertices.concat(ahole);\n      }\n      function scalePt2(pt, vec, size) {\n        if (!vec) console.error(\"THREE.ExtrudeGeometry: vec does not exist\");\n        return pt.clone().addScaledVector(vec, size);\n      }\n      const vlen = vertices.length, flen = faces.length;\n      function getBevelVec(inPt, inPrev, inNext) {\n        let v_trans_x, v_trans_y, shrink_by;\n        const v_prev_x = inPt.x - inPrev.x, v_prev_y = inPt.y - inPrev.y;\n        const v_next_x = inNext.x - inPt.x, v_next_y = inNext.y - inPt.y;\n        const v_prev_lensq = v_prev_x * v_prev_x + v_prev_y * v_prev_y;\n        const collinear0 = v_prev_x * v_next_y - v_prev_y * v_next_x;\n        if (Math.abs(collinear0) > Number.EPSILON) {\n          const v_prev_len = Math.sqrt(v_prev_lensq);\n          const v_next_len = Math.sqrt(v_next_x * v_next_x + v_next_y * v_next_y);\n          const ptPrevShift_x = inPrev.x - v_prev_y / v_prev_len;\n          const ptPrevShift_y = inPrev.y + v_prev_x / v_prev_len;\n          const ptNextShift_x = inNext.x - v_next_y / v_next_len;\n          const ptNextShift_y = inNext.y + v_next_x / v_next_len;\n          const sf = ((ptNextShift_x - ptPrevShift_x) * v_next_y - (ptNextShift_y - ptPrevShift_y) * v_next_x) / (v_prev_x * v_next_y - v_prev_y * v_next_x);\n          v_trans_x = ptPrevShift_x + v_prev_x * sf - inPt.x;\n          v_trans_y = ptPrevShift_y + v_prev_y * sf - inPt.y;\n          const v_trans_lensq = v_trans_x * v_trans_x + v_trans_y * v_trans_y;\n          if (v_trans_lensq <= 2) {\n            return new Vector2(v_trans_x, v_trans_y);\n          } else {\n            shrink_by = Math.sqrt(v_trans_lensq / 2);\n          }\n        } else {\n          let direction_eq = false;\n          if (v_prev_x > Number.EPSILON) {\n            if (v_next_x > Number.EPSILON) {\n              direction_eq = true;\n            }\n          } else {\n            if (v_prev_x < -Number.EPSILON) {\n              if (v_next_x < -Number.EPSILON) {\n                direction_eq = true;\n              }\n            } else {\n              if (Math.sign(v_prev_y) === Math.sign(v_next_y)) {\n                direction_eq = true;\n              }\n            }\n          }\n          if (direction_eq) {\n            v_trans_x = -v_prev_y;\n            v_trans_y = v_prev_x;\n            shrink_by = Math.sqrt(v_prev_lensq);\n          } else {\n            v_trans_x = v_prev_x;\n            v_trans_y = v_prev_y;\n            shrink_by = Math.sqrt(v_prev_lensq / 2);\n          }\n        }\n        return new Vector2(v_trans_x / shrink_by, v_trans_y / shrink_by);\n      }\n      const contourMovements = [];\n      for (let i2 = 0, il = contour.length, j2 = il - 1, k2 = i2 + 1; i2 < il; i2++, j2++, k2++) {\n        if (j2 === il) j2 = 0;\n        if (k2 === il) k2 = 0;\n        contourMovements[i2] = getBevelVec(contour[i2], contour[j2], contour[k2]);\n      }\n      const holesMovements = [];\n      let oneHoleMovements, verticesMovements = contourMovements.concat();\n      for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n        const ahole = holes[h2];\n        oneHoleMovements = [];\n        for (let i2 = 0, il = ahole.length, j2 = il - 1, k2 = i2 + 1; i2 < il; i2++, j2++, k2++) {\n          if (j2 === il) j2 = 0;\n          if (k2 === il) k2 = 0;\n          oneHoleMovements[i2] = getBevelVec(ahole[i2], ahole[j2], ahole[k2]);\n        }\n        holesMovements.push(oneHoleMovements);\n        verticesMovements = verticesMovements.concat(oneHoleMovements);\n      }\n      for (let b2 = 0; b2 < bevelSegments; b2++) {\n        const t2 = b2 / bevelSegments;\n        const z2 = bevelThickness * Math.cos(t2 * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t2 * Math.PI / 2) + bevelOffset;\n        for (let i2 = 0, il = contour.length; i2 < il; i2++) {\n          const vert = scalePt2(contour[i2], contourMovements[i2], bs2);\n          v2(vert.x, vert.y, -z2);\n        }\n        for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n          const ahole = holes[h2];\n          oneHoleMovements = holesMovements[h2];\n          for (let i2 = 0, il = ahole.length; i2 < il; i2++) {\n            const vert = scalePt2(ahole[i2], oneHoleMovements[i2], bs2);\n            v2(vert.x, vert.y, -z2);\n          }\n        }\n      }\n      const bs = bevelSize + bevelOffset;\n      for (let i2 = 0; i2 < vlen; i2++) {\n        const vert = bevelEnabled ? scalePt2(vertices[i2], verticesMovements[i2], bs) : vertices[i2];\n        if (!extrudeByPath) {\n          v2(vert.x, vert.y, 0);\n        } else {\n          normal.copy(splineTube.normals[0]).multiplyScalar(vert.x);\n          binormal.copy(splineTube.binormals[0]).multiplyScalar(vert.y);\n          position2.copy(extrudePts[0]).add(normal).add(binormal);\n          v2(position2.x, position2.y, position2.z);\n        }\n      }\n      for (let s2 = 1; s2 <= steps; s2++) {\n        for (let i2 = 0; i2 < vlen; i2++) {\n          const vert = bevelEnabled ? scalePt2(vertices[i2], verticesMovements[i2], bs) : vertices[i2];\n          if (!extrudeByPath) {\n            v2(vert.x, vert.y, depth / steps * s2);\n          } else {\n            normal.copy(splineTube.normals[s2]).multiplyScalar(vert.x);\n            binormal.copy(splineTube.binormals[s2]).multiplyScalar(vert.y);\n            position2.copy(extrudePts[s2]).add(normal).add(binormal);\n            v2(position2.x, position2.y, position2.z);\n          }\n        }\n      }\n      for (let b2 = bevelSegments - 1; b2 >= 0; b2--) {\n        const t2 = b2 / bevelSegments;\n        const z2 = bevelThickness * Math.cos(t2 * Math.PI / 2);\n        const bs2 = bevelSize * Math.sin(t2 * Math.PI / 2) + bevelOffset;\n        for (let i2 = 0, il = contour.length; i2 < il; i2++) {\n          const vert = scalePt2(contour[i2], contourMovements[i2], bs2);\n          v2(vert.x, vert.y, depth + z2);\n        }\n        for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n          const ahole = holes[h2];\n          oneHoleMovements = holesMovements[h2];\n          for (let i2 = 0, il = ahole.length; i2 < il; i2++) {\n            const vert = scalePt2(ahole[i2], oneHoleMovements[i2], bs2);\n            if (!extrudeByPath) {\n              v2(vert.x, vert.y, depth + z2);\n            } else {\n              v2(vert.x, vert.y + extrudePts[steps - 1].y, extrudePts[steps - 1].x + z2);\n            }\n          }\n        }\n      }\n      buildLidFaces();\n      buildSideFaces();\n      function buildLidFaces() {\n        const start = verticesArray.length / 3;\n        if (bevelEnabled) {\n          let layer = 0;\n          let offset = vlen * layer;\n          for (let i2 = 0; i2 < flen; i2++) {\n            const face = faces[i2];\n            f3(face[2] + offset, face[1] + offset, face[0] + offset);\n          }\n          layer = steps + bevelSegments * 2;\n          offset = vlen * layer;\n          for (let i2 = 0; i2 < flen; i2++) {\n            const face = faces[i2];\n            f3(face[0] + offset, face[1] + offset, face[2] + offset);\n          }\n        } else {\n          for (let i2 = 0; i2 < flen; i2++) {\n            const face = faces[i2];\n            f3(face[2], face[1], face[0]);\n          }\n          for (let i2 = 0; i2 < flen; i2++) {\n            const face = faces[i2];\n            f3(face[0] + vlen * steps, face[1] + vlen * steps, face[2] + vlen * steps);\n          }\n        }\n        scope.addGroup(start, verticesArray.length / 3 - start, 0);\n      }\n      function buildSideFaces() {\n        const start = verticesArray.length / 3;\n        let layeroffset = 0;\n        sidewalls(contour, layeroffset);\n        layeroffset += contour.length;\n        for (let h2 = 0, hl = holes.length; h2 < hl; h2++) {\n          const ahole = holes[h2];\n          sidewalls(ahole, layeroffset);\n          layeroffset += ahole.length;\n        }\n        scope.addGroup(start, verticesArray.length / 3 - start, 1);\n      }\n      function sidewalls(contour2, layeroffset) {\n        let i2 = contour2.length;\n        while (--i2 >= 0) {\n          const j2 = i2;\n          let k2 = i2 - 1;\n          if (k2 < 0) k2 = contour2.length - 1;\n          for (let s2 = 0, sl = steps + bevelSegments * 2; s2 < sl; s2++) {\n            const slen1 = vlen * s2;\n            const slen2 = vlen * (s2 + 1);\n            const a2 = layeroffset + j2 + slen1, b2 = layeroffset + k2 + slen1, c2 = layeroffset + k2 + slen2, d2 = layeroffset + j2 + slen2;\n            f4(a2, b2, c2, d2);\n          }\n        }\n      }\n      function v2(x2, y2, z2) {\n        placeholder.push(x2);\n        placeholder.push(y2);\n        placeholder.push(z2);\n      }\n      function f3(a2, b2, c2) {\n        addVertex(a2);\n        addVertex(b2);\n        addVertex(c2);\n        const nextIndex = verticesArray.length / 3;\n        const uvs = uvgen.generateTopUV(scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n        addUV(uvs[0]);\n        addUV(uvs[1]);\n        addUV(uvs[2]);\n      }\n      function f4(a2, b2, c2, d2) {\n        addVertex(a2);\n        addVertex(b2);\n        addVertex(d2);\n        addVertex(b2);\n        addVertex(c2);\n        addVertex(d2);\n        const nextIndex = verticesArray.length / 3;\n        const uvs = uvgen.generateSideWallUV(scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1);\n        addUV(uvs[0]);\n        addUV(uvs[1]);\n        addUV(uvs[3]);\n        addUV(uvs[1]);\n        addUV(uvs[2]);\n        addUV(uvs[3]);\n      }\n      function addVertex(index) {\n        verticesArray.push(placeholder[index * 3 + 0]);\n        verticesArray.push(placeholder[index * 3 + 1]);\n        verticesArray.push(placeholder[index * 3 + 2]);\n      }\n      function addUV(vector2) {\n        uvArray.push(vector2.x);\n        uvArray.push(vector2.y);\n      }\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    const shapes = this.parameters.shapes;\n    const options = this.parameters.options;\n    return toJSON$1(shapes, options, data);\n  }\n  static fromJSON(data, shapes) {\n    const geometryShapes = [];\n    for (let j2 = 0, jl = data.shapes.length; j2 < jl; j2++) {\n      const shape = shapes[data.shapes[j2]];\n      geometryShapes.push(shape);\n    }\n    const extrudePath = data.options.extrudePath;\n    if (extrudePath !== void 0) {\n      data.options.extrudePath = new Curves[extrudePath.type]().fromJSON(extrudePath);\n    }\n    return new ExtrudeGeometry(geometryShapes, data.options);\n  }\n}\nconst WorldUVGenerator = {\n  generateTopUV: function(geometry, vertices, indexA, indexB, indexC) {\n    const a_x = vertices[indexA * 3];\n    const a_y = vertices[indexA * 3 + 1];\n    const b_x = vertices[indexB * 3];\n    const b_y = vertices[indexB * 3 + 1];\n    const c_x = vertices[indexC * 3];\n    const c_y = vertices[indexC * 3 + 1];\n    return [\n      new Vector2(a_x, a_y),\n      new Vector2(b_x, b_y),\n      new Vector2(c_x, c_y)\n    ];\n  },\n  generateSideWallUV: function(geometry, vertices, indexA, indexB, indexC, indexD) {\n    const a_x = vertices[indexA * 3];\n    const a_y = vertices[indexA * 3 + 1];\n    const a_z = vertices[indexA * 3 + 2];\n    const b_x = vertices[indexB * 3];\n    const b_y = vertices[indexB * 3 + 1];\n    const b_z = vertices[indexB * 3 + 2];\n    const c_x = vertices[indexC * 3];\n    const c_y = vertices[indexC * 3 + 1];\n    const c_z = vertices[indexC * 3 + 2];\n    const d_x = vertices[indexD * 3];\n    const d_y = vertices[indexD * 3 + 1];\n    const d_z = vertices[indexD * 3 + 2];\n    if (Math.abs(a_y - b_y) < Math.abs(a_x - b_x)) {\n      return [\n        new Vector2(a_x, 1 - a_z),\n        new Vector2(b_x, 1 - b_z),\n        new Vector2(c_x, 1 - c_z),\n        new Vector2(d_x, 1 - d_z)\n      ];\n    } else {\n      return [\n        new Vector2(a_y, 1 - a_z),\n        new Vector2(b_y, 1 - b_z),\n        new Vector2(c_y, 1 - c_z),\n        new Vector2(d_y, 1 - d_z)\n      ];\n    }\n  }\n};\nfunction toJSON$1(shapes, options, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n      const shape = shapes[i2];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  data.options = Object.assign({}, options);\n  if (options.extrudePath !== void 0) data.options.extrudePath = options.extrudePath.toJSON();\n  return data;\n}\nclass IcosahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const t2 = (1 + Math.sqrt(5)) / 2;\n    const vertices = [\n      -1,\n      t2,\n      0,\n      1,\n      t2,\n      0,\n      -1,\n      -t2,\n      0,\n      1,\n      -t2,\n      0,\n      0,\n      -1,\n      t2,\n      0,\n      1,\n      t2,\n      0,\n      -1,\n      -t2,\n      0,\n      1,\n      -t2,\n      t2,\n      0,\n      -1,\n      t2,\n      0,\n      1,\n      -t2,\n      0,\n      -1,\n      -t2,\n      0,\n      1\n    ];\n    const indices = [\n      0,\n      11,\n      5,\n      0,\n      5,\n      1,\n      0,\n      1,\n      7,\n      0,\n      7,\n      10,\n      0,\n      10,\n      11,\n      1,\n      5,\n      9,\n      5,\n      11,\n      4,\n      11,\n      10,\n      2,\n      10,\n      7,\n      6,\n      7,\n      1,\n      8,\n      3,\n      9,\n      4,\n      3,\n      4,\n      2,\n      3,\n      2,\n      6,\n      3,\n      6,\n      8,\n      3,\n      8,\n      9,\n      4,\n      9,\n      5,\n      2,\n      4,\n      11,\n      6,\n      2,\n      10,\n      8,\n      6,\n      7,\n      9,\n      8,\n      1\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"IcosahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new IcosahedronGeometry(data.radius, data.detail);\n  }\n}\nclass OctahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const vertices = [\n      1,\n      0,\n      0,\n      -1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      -1\n    ];\n    const indices = [\n      0,\n      2,\n      4,\n      0,\n      4,\n      3,\n      0,\n      3,\n      5,\n      0,\n      5,\n      2,\n      1,\n      2,\n      5,\n      1,\n      5,\n      3,\n      1,\n      3,\n      4,\n      1,\n      4,\n      2\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"OctahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new OctahedronGeometry(data.radius, data.detail);\n  }\n}\nclass RingGeometry extends BufferGeometry {\n  constructor(innerRadius = 0.5, outerRadius = 1, thetaSegments = 32, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2) {\n    super();\n    this.type = \"RingGeometry\";\n    this.parameters = {\n      innerRadius,\n      outerRadius,\n      thetaSegments,\n      phiSegments,\n      thetaStart,\n      thetaLength\n    };\n    thetaSegments = Math.max(3, thetaSegments);\n    phiSegments = Math.max(1, phiSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let radius = innerRadius;\n    const radiusStep = (outerRadius - innerRadius) / phiSegments;\n    const vertex2 = new Vector3();\n    const uv = new Vector2();\n    for (let j2 = 0; j2 <= phiSegments; j2++) {\n      for (let i2 = 0; i2 <= thetaSegments; i2++) {\n        const segment = thetaStart + i2 / thetaSegments * thetaLength;\n        vertex2.x = radius * Math.cos(segment);\n        vertex2.y = radius * Math.sin(segment);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normals.push(0, 0, 1);\n        uv.x = (vertex2.x / outerRadius + 1) / 2;\n        uv.y = (vertex2.y / outerRadius + 1) / 2;\n        uvs.push(uv.x, uv.y);\n      }\n      radius += radiusStep;\n    }\n    for (let j2 = 0; j2 < phiSegments; j2++) {\n      const thetaSegmentLevel = j2 * (thetaSegments + 1);\n      for (let i2 = 0; i2 < thetaSegments; i2++) {\n        const segment = i2 + thetaSegmentLevel;\n        const a2 = segment;\n        const b2 = segment + thetaSegments + 1;\n        const c2 = segment + thetaSegments + 2;\n        const d2 = segment + 1;\n        indices.push(a2, b2, d2);\n        indices.push(b2, c2, d2);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new RingGeometry(data.innerRadius, data.outerRadius, data.thetaSegments, data.phiSegments, data.thetaStart, data.thetaLength);\n  }\n}\nclass ShapeGeometry extends BufferGeometry {\n  constructor(shapes = new Shape([new Vector2(0, 0.5), new Vector2(-0.5, -0.5), new Vector2(0.5, -0.5)]), curveSegments = 12) {\n    super();\n    this.type = \"ShapeGeometry\";\n    this.parameters = {\n      shapes,\n      curveSegments\n    };\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    let groupStart = 0;\n    let groupCount = 0;\n    if (Array.isArray(shapes) === false) {\n      addShape(shapes);\n    } else {\n      for (let i2 = 0; i2 < shapes.length; i2++) {\n        addShape(shapes[i2]);\n        this.addGroup(groupStart, groupCount, i2);\n        groupStart += groupCount;\n        groupCount = 0;\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function addShape(shape) {\n      const indexOffset = vertices.length / 3;\n      const points = shape.extractPoints(curveSegments);\n      let shapeVertices = points.shape;\n      const shapeHoles = points.holes;\n      if (ShapeUtils.isClockWise(shapeVertices) === false) {\n        shapeVertices = shapeVertices.reverse();\n      }\n      for (let i2 = 0, l2 = shapeHoles.length; i2 < l2; i2++) {\n        const shapeHole = shapeHoles[i2];\n        if (ShapeUtils.isClockWise(shapeHole) === true) {\n          shapeHoles[i2] = shapeHole.reverse();\n        }\n      }\n      const faces = ShapeUtils.triangulateShape(shapeVertices, shapeHoles);\n      for (let i2 = 0, l2 = shapeHoles.length; i2 < l2; i2++) {\n        const shapeHole = shapeHoles[i2];\n        shapeVertices = shapeVertices.concat(shapeHole);\n      }\n      for (let i2 = 0, l2 = shapeVertices.length; i2 < l2; i2++) {\n        const vertex2 = shapeVertices[i2];\n        vertices.push(vertex2.x, vertex2.y, 0);\n        normals.push(0, 0, 1);\n        uvs.push(vertex2.x, vertex2.y);\n      }\n      for (let i2 = 0, l2 = faces.length; i2 < l2; i2++) {\n        const face = faces[i2];\n        const a2 = face[0] + indexOffset;\n        const b2 = face[1] + indexOffset;\n        const c2 = face[2] + indexOffset;\n        indices.push(a2, b2, c2);\n        groupCount += 3;\n      }\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    const shapes = this.parameters.shapes;\n    return toJSON(shapes, data);\n  }\n  static fromJSON(data, shapes) {\n    const geometryShapes = [];\n    for (let j2 = 0, jl = data.shapes.length; j2 < jl; j2++) {\n      const shape = shapes[data.shapes[j2]];\n      geometryShapes.push(shape);\n    }\n    return new ShapeGeometry(geometryShapes, data.curveSegments);\n  }\n}\nfunction toJSON(shapes, data) {\n  data.shapes = [];\n  if (Array.isArray(shapes)) {\n    for (let i2 = 0, l2 = shapes.length; i2 < l2; i2++) {\n      const shape = shapes[i2];\n      data.shapes.push(shape.uuid);\n    }\n  } else {\n    data.shapes.push(shapes.uuid);\n  }\n  return data;\n}\nclass SphereGeometry extends BufferGeometry {\n  constructor(radius = 1, widthSegments = 32, heightSegments = 16, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI) {\n    super();\n    this.type = \"SphereGeometry\";\n    this.parameters = {\n      radius,\n      widthSegments,\n      heightSegments,\n      phiStart,\n      phiLength,\n      thetaStart,\n      thetaLength\n    };\n    widthSegments = Math.max(3, Math.floor(widthSegments));\n    heightSegments = Math.max(2, Math.floor(heightSegments));\n    const thetaEnd = Math.min(thetaStart + thetaLength, Math.PI);\n    let index = 0;\n    const grid = [];\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    for (let iy = 0; iy <= heightSegments; iy++) {\n      const verticesRow = [];\n      const v2 = iy / heightSegments;\n      let uOffset = 0;\n      if (iy === 0 && thetaStart === 0) {\n        uOffset = 0.5 / widthSegments;\n      } else if (iy === heightSegments && thetaEnd === Math.PI) {\n        uOffset = -0.5 / widthSegments;\n      }\n      for (let ix = 0; ix <= widthSegments; ix++) {\n        const u2 = ix / widthSegments;\n        vertex2.x = -radius * Math.cos(phiStart + u2 * phiLength) * Math.sin(thetaStart + v2 * thetaLength);\n        vertex2.y = radius * Math.cos(thetaStart + v2 * thetaLength);\n        vertex2.z = radius * Math.sin(phiStart + u2 * phiLength) * Math.sin(thetaStart + v2 * thetaLength);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normal.copy(vertex2).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(u2 + uOffset, 1 - v2);\n        verticesRow.push(index++);\n      }\n      grid.push(verticesRow);\n    }\n    for (let iy = 0; iy < heightSegments; iy++) {\n      for (let ix = 0; ix < widthSegments; ix++) {\n        const a2 = grid[iy][ix + 1];\n        const b2 = grid[iy][ix];\n        const c2 = grid[iy + 1][ix];\n        const d2 = grid[iy + 1][ix + 1];\n        if (iy !== 0 || thetaStart > 0) indices.push(a2, b2, d2);\n        if (iy !== heightSegments - 1 || thetaEnd < Math.PI) indices.push(b2, c2, d2);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new SphereGeometry(data.radius, data.widthSegments, data.heightSegments, data.phiStart, data.phiLength, data.thetaStart, data.thetaLength);\n  }\n}\nclass TetrahedronGeometry extends PolyhedronGeometry {\n  constructor(radius = 1, detail = 0) {\n    const vertices = [\n      1,\n      1,\n      1,\n      -1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      1,\n      -1,\n      -1\n    ];\n    const indices = [\n      2,\n      1,\n      0,\n      0,\n      3,\n      2,\n      1,\n      3,\n      0,\n      2,\n      3,\n      1\n    ];\n    super(vertices, indices, radius, detail);\n    this.type = \"TetrahedronGeometry\";\n    this.parameters = {\n      radius,\n      detail\n    };\n  }\n  static fromJSON(data) {\n    return new TetrahedronGeometry(data.radius, data.detail);\n  }\n}\nclass TorusGeometry extends BufferGeometry {\n  constructor(radius = 1, tube = 0.4, radialSegments = 12, tubularSegments = 48, arc = Math.PI * 2) {\n    super();\n    this.type = \"TorusGeometry\";\n    this.parameters = {\n      radius,\n      tube,\n      radialSegments,\n      tubularSegments,\n      arc\n    };\n    radialSegments = Math.floor(radialSegments);\n    tubularSegments = Math.floor(tubularSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const center = new Vector3();\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    for (let j2 = 0; j2 <= radialSegments; j2++) {\n      for (let i2 = 0; i2 <= tubularSegments; i2++) {\n        const u2 = i2 / tubularSegments * arc;\n        const v2 = j2 / radialSegments * Math.PI * 2;\n        vertex2.x = (radius + tube * Math.cos(v2)) * Math.cos(u2);\n        vertex2.y = (radius + tube * Math.cos(v2)) * Math.sin(u2);\n        vertex2.z = tube * Math.sin(v2);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        center.x = radius * Math.cos(u2);\n        center.y = radius * Math.sin(u2);\n        normal.subVectors(vertex2, center).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(i2 / tubularSegments);\n        uvs.push(j2 / radialSegments);\n      }\n    }\n    for (let j2 = 1; j2 <= radialSegments; j2++) {\n      for (let i2 = 1; i2 <= tubularSegments; i2++) {\n        const a2 = (tubularSegments + 1) * j2 + i2 - 1;\n        const b2 = (tubularSegments + 1) * (j2 - 1) + i2 - 1;\n        const c2 = (tubularSegments + 1) * (j2 - 1) + i2;\n        const d2 = (tubularSegments + 1) * j2 + i2;\n        indices.push(a2, b2, d2);\n        indices.push(b2, c2, d2);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new TorusGeometry(data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc);\n  }\n}\nclass TorusKnotGeometry extends BufferGeometry {\n  constructor(radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p2 = 2, q2 = 3) {\n    super();\n    this.type = \"TorusKnotGeometry\";\n    this.parameters = {\n      radius,\n      tube,\n      tubularSegments,\n      radialSegments,\n      p: p2,\n      q: q2\n    };\n    tubularSegments = Math.floor(tubularSegments);\n    radialSegments = Math.floor(radialSegments);\n    const indices = [];\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const P1 = new Vector3();\n    const P2 = new Vector3();\n    const B2 = new Vector3();\n    const T2 = new Vector3();\n    const N2 = new Vector3();\n    for (let i2 = 0; i2 <= tubularSegments; ++i2) {\n      const u2 = i2 / tubularSegments * p2 * Math.PI * 2;\n      calculatePositionOnCurve(u2, p2, q2, radius, P1);\n      calculatePositionOnCurve(u2 + 0.01, p2, q2, radius, P2);\n      T2.subVectors(P2, P1);\n      N2.addVectors(P2, P1);\n      B2.crossVectors(T2, N2);\n      N2.crossVectors(B2, T2);\n      B2.normalize();\n      N2.normalize();\n      for (let j2 = 0; j2 <= radialSegments; ++j2) {\n        const v2 = j2 / radialSegments * Math.PI * 2;\n        const cx = -tube * Math.cos(v2);\n        const cy = tube * Math.sin(v2);\n        vertex2.x = P1.x + (cx * N2.x + cy * B2.x);\n        vertex2.y = P1.y + (cx * N2.y + cy * B2.y);\n        vertex2.z = P1.z + (cx * N2.z + cy * B2.z);\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n        normal.subVectors(vertex2, P1).normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        uvs.push(i2 / tubularSegments);\n        uvs.push(j2 / radialSegments);\n      }\n    }\n    for (let j2 = 1; j2 <= tubularSegments; j2++) {\n      for (let i2 = 1; i2 <= radialSegments; i2++) {\n        const a2 = (radialSegments + 1) * (j2 - 1) + (i2 - 1);\n        const b2 = (radialSegments + 1) * j2 + (i2 - 1);\n        const c2 = (radialSegments + 1) * j2 + i2;\n        const d2 = (radialSegments + 1) * (j2 - 1) + i2;\n        indices.push(a2, b2, d2);\n        indices.push(b2, c2, d2);\n      }\n    }\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function calculatePositionOnCurve(u2, p3, q3, radius2, position) {\n      const cu = Math.cos(u2);\n      const su = Math.sin(u2);\n      const quOverP = q3 / p3 * u2;\n      const cs = Math.cos(quOverP);\n      position.x = radius2 * (2 + cs) * 0.5 * cu;\n      position.y = radius2 * (2 + cs) * su * 0.5;\n      position.z = radius2 * Math.sin(quOverP) * 0.5;\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  static fromJSON(data) {\n    return new TorusKnotGeometry(data.radius, data.tube, data.tubularSegments, data.radialSegments, data.p, data.q);\n  }\n}\nclass TubeGeometry extends BufferGeometry {\n  constructor(path = new QuadraticBezierCurve3(new Vector3(-1, -1, 0), new Vector3(-1, 1, 0), new Vector3(1, 1, 0)), tubularSegments = 64, radius = 1, radialSegments = 8, closed = false) {\n    super();\n    this.type = \"TubeGeometry\";\n    this.parameters = {\n      path,\n      tubularSegments,\n      radius,\n      radialSegments,\n      closed\n    };\n    const frames = path.computeFrenetFrames(tubularSegments, closed);\n    this.tangents = frames.tangents;\n    this.normals = frames.normals;\n    this.binormals = frames.binormals;\n    const vertex2 = new Vector3();\n    const normal = new Vector3();\n    const uv = new Vector2();\n    let P2 = new Vector3();\n    const vertices = [];\n    const normals = [];\n    const uvs = [];\n    const indices = [];\n    generateBufferData();\n    this.setIndex(indices);\n    this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    this.setAttribute(\"normal\", new Float32BufferAttribute(normals, 3));\n    this.setAttribute(\"uv\", new Float32BufferAttribute(uvs, 2));\n    function generateBufferData() {\n      for (let i2 = 0; i2 < tubularSegments; i2++) {\n        generateSegment(i2);\n      }\n      generateSegment(closed === false ? tubularSegments : 0);\n      generateUVs();\n      generateIndices();\n    }\n    function generateSegment(i2) {\n      P2 = path.getPointAt(i2 / tubularSegments, P2);\n      const N2 = frames.normals[i2];\n      const B2 = frames.binormals[i2];\n      for (let j2 = 0; j2 <= radialSegments; j2++) {\n        const v2 = j2 / radialSegments * Math.PI * 2;\n        const sin = Math.sin(v2);\n        const cos = -Math.cos(v2);\n        normal.x = cos * N2.x + sin * B2.x;\n        normal.y = cos * N2.y + sin * B2.y;\n        normal.z = cos * N2.z + sin * B2.z;\n        normal.normalize();\n        normals.push(normal.x, normal.y, normal.z);\n        vertex2.x = P2.x + radius * normal.x;\n        vertex2.y = P2.y + radius * normal.y;\n        vertex2.z = P2.z + radius * normal.z;\n        vertices.push(vertex2.x, vertex2.y, vertex2.z);\n      }\n    }\n    function generateIndices() {\n      for (let j2 = 1; j2 <= tubularSegments; j2++) {\n        for (let i2 = 1; i2 <= radialSegments; i2++) {\n          const a2 = (radialSegments + 1) * (j2 - 1) + (i2 - 1);\n          const b2 = (radialSegments + 1) * j2 + (i2 - 1);\n          const c2 = (radialSegments + 1) * j2 + i2;\n          const d2 = (radialSegments + 1) * (j2 - 1) + i2;\n          indices.push(a2, b2, d2);\n          indices.push(b2, c2, d2);\n        }\n      }\n    }\n    function generateUVs() {\n      for (let i2 = 0; i2 <= tubularSegments; i2++) {\n        for (let j2 = 0; j2 <= radialSegments; j2++) {\n          uv.x = i2 / tubularSegments;\n          uv.y = j2 / radialSegments;\n          uvs.push(uv.x, uv.y);\n        }\n      }\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.path = this.parameters.path.toJSON();\n    return data;\n  }\n  static fromJSON(data) {\n    return new TubeGeometry(\n      new Curves[data.path.type]().fromJSON(data.path),\n      data.tubularSegments,\n      data.radius,\n      data.radialSegments,\n      data.closed\n    );\n  }\n}\nclass WireframeGeometry extends BufferGeometry {\n  constructor(geometry = null) {\n    super();\n    this.type = \"WireframeGeometry\";\n    this.parameters = {\n      geometry\n    };\n    if (geometry !== null) {\n      const vertices = [];\n      const edges = /* @__PURE__ */ new Set();\n      const start = new Vector3();\n      const end = new Vector3();\n      if (geometry.index !== null) {\n        const position = geometry.attributes.position;\n        const indices = geometry.index;\n        let groups = geometry.groups;\n        if (groups.length === 0) {\n          groups = [{ start: 0, count: indices.count, materialIndex: 0 }];\n        }\n        for (let o2 = 0, ol = groups.length; o2 < ol; ++o2) {\n          const group = groups[o2];\n          const groupStart = group.start;\n          const groupCount = group.count;\n          for (let i2 = groupStart, l2 = groupStart + groupCount; i2 < l2; i2 += 3) {\n            for (let j2 = 0; j2 < 3; j2++) {\n              const index1 = indices.getX(i2 + j2);\n              const index2 = indices.getX(i2 + (j2 + 1) % 3);\n              start.fromBufferAttribute(position, index1);\n              end.fromBufferAttribute(position, index2);\n              if (isUniqueEdge(start, end, edges) === true) {\n                vertices.push(start.x, start.y, start.z);\n                vertices.push(end.x, end.y, end.z);\n              }\n            }\n          }\n        }\n      } else {\n        const position = geometry.attributes.position;\n        for (let i2 = 0, l2 = position.count / 3; i2 < l2; i2++) {\n          for (let j2 = 0; j2 < 3; j2++) {\n            const index1 = 3 * i2 + j2;\n            const index2 = 3 * i2 + (j2 + 1) % 3;\n            start.fromBufferAttribute(position, index1);\n            end.fromBufferAttribute(position, index2);\n            if (isUniqueEdge(start, end, edges) === true) {\n              vertices.push(start.x, start.y, start.z);\n              vertices.push(end.x, end.y, end.z);\n            }\n          }\n        }\n      }\n      this.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    }\n  }\n  copy(source) {\n    super.copy(source);\n    this.parameters = Object.assign({}, source.parameters);\n    return this;\n  }\n}\nfunction isUniqueEdge(start, end, edges) {\n  const hash1 = `${start.x},${start.y},${start.z}-${end.x},${end.y},${end.z}`;\n  const hash2 = `${end.x},${end.y},${end.z}-${start.x},${start.y},${start.z}`;\n  if (edges.has(hash1) === true || edges.has(hash2) === true) {\n    return false;\n  } else {\n    edges.add(hash1);\n    edges.add(hash2);\n    return true;\n  }\n}\nvar Geometries = /* @__PURE__ */ Object.freeze({\n  __proto__: null,\n  BoxGeometry,\n  CapsuleGeometry,\n  CircleGeometry,\n  ConeGeometry,\n  CylinderGeometry,\n  DodecahedronGeometry,\n  EdgesGeometry,\n  ExtrudeGeometry,\n  IcosahedronGeometry,\n  LatheGeometry,\n  OctahedronGeometry,\n  PlaneGeometry,\n  PolyhedronGeometry,\n  RingGeometry,\n  ShapeGeometry,\n  SphereGeometry,\n  TetrahedronGeometry,\n  TorusGeometry,\n  TorusKnotGeometry,\n  TubeGeometry,\n  WireframeGeometry\n});\nclass ShadowMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isShadowMaterial = true;\n    this.type = \"ShadowMaterial\";\n    this.color = new Color(0);\n    this.transparent = true;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass RawShaderMaterial extends ShaderMaterial {\n  constructor(parameters) {\n    super(parameters);\n    this.isRawShaderMaterial = true;\n    this.type = \"RawShaderMaterial\";\n  }\n}\nclass MeshStandardMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshStandardMaterial = true;\n    this.defines = { \"STANDARD\": \"\" };\n    this.type = \"MeshStandardMaterial\";\n    this.color = new Color(16777215);\n    this.roughness = 1;\n    this.metalness = 0;\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.roughnessMap = null;\n    this.metalnessMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.envMapIntensity = 1;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = { \"STANDARD\": \"\" };\n    this.color.copy(source.color);\n    this.roughness = source.roughness;\n    this.metalness = source.metalness;\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.roughnessMap = source.roughnessMap;\n    this.metalnessMap = source.metalnessMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.envMapIntensity = source.envMapIntensity;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshPhysicalMaterial extends MeshStandardMaterial {\n  constructor(parameters) {\n    super();\n    this.isMeshPhysicalMaterial = true;\n    this.defines = {\n      \"STANDARD\": \"\",\n      \"PHYSICAL\": \"\"\n    };\n    this.type = \"MeshPhysicalMaterial\";\n    this.anisotropyRotation = 0;\n    this.anisotropyMap = null;\n    this.clearcoatMap = null;\n    this.clearcoatRoughness = 0;\n    this.clearcoatRoughnessMap = null;\n    this.clearcoatNormalScale = new Vector2(1, 1);\n    this.clearcoatNormalMap = null;\n    this.ior = 1.5;\n    Object.defineProperty(this, \"reflectivity\", {\n      get: function() {\n        return clamp(2.5 * (this.ior - 1) / (this.ior + 1), 0, 1);\n      },\n      set: function(reflectivity) {\n        this.ior = (1 + 0.4 * reflectivity) / (1 - 0.4 * reflectivity);\n      }\n    });\n    this.iridescenceMap = null;\n    this.iridescenceIOR = 1.3;\n    this.iridescenceThicknessRange = [100, 400];\n    this.iridescenceThicknessMap = null;\n    this.sheenColor = new Color(0);\n    this.sheenColorMap = null;\n    this.sheenRoughness = 1;\n    this.sheenRoughnessMap = null;\n    this.transmissionMap = null;\n    this.thickness = 0;\n    this.thicknessMap = null;\n    this.attenuationDistance = Infinity;\n    this.attenuationColor = new Color(1, 1, 1);\n    this.specularIntensity = 1;\n    this.specularIntensityMap = null;\n    this.specularColor = new Color(1, 1, 1);\n    this.specularColorMap = null;\n    this._anisotropy = 0;\n    this._clearcoat = 0;\n    this._iridescence = 0;\n    this._sheen = 0;\n    this._transmission = 0;\n    this.setValues(parameters);\n  }\n  get anisotropy() {\n    return this._anisotropy;\n  }\n  set anisotropy(value) {\n    if (this._anisotropy > 0 !== value > 0) {\n      this.version++;\n    }\n    this._anisotropy = value;\n  }\n  get clearcoat() {\n    return this._clearcoat;\n  }\n  set clearcoat(value) {\n    if (this._clearcoat > 0 !== value > 0) {\n      this.version++;\n    }\n    this._clearcoat = value;\n  }\n  get iridescence() {\n    return this._iridescence;\n  }\n  set iridescence(value) {\n    if (this._iridescence > 0 !== value > 0) {\n      this.version++;\n    }\n    this._iridescence = value;\n  }\n  get sheen() {\n    return this._sheen;\n  }\n  set sheen(value) {\n    if (this._sheen > 0 !== value > 0) {\n      this.version++;\n    }\n    this._sheen = value;\n  }\n  get transmission() {\n    return this._transmission;\n  }\n  set transmission(value) {\n    if (this._transmission > 0 !== value > 0) {\n      this.version++;\n    }\n    this._transmission = value;\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = {\n      \"STANDARD\": \"\",\n      \"PHYSICAL\": \"\"\n    };\n    this.anisotropy = source.anisotropy;\n    this.anisotropyRotation = source.anisotropyRotation;\n    this.anisotropyMap = source.anisotropyMap;\n    this.clearcoat = source.clearcoat;\n    this.clearcoatMap = source.clearcoatMap;\n    this.clearcoatRoughness = source.clearcoatRoughness;\n    this.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\n    this.clearcoatNormalMap = source.clearcoatNormalMap;\n    this.clearcoatNormalScale.copy(source.clearcoatNormalScale);\n    this.ior = source.ior;\n    this.iridescence = source.iridescence;\n    this.iridescenceMap = source.iridescenceMap;\n    this.iridescenceIOR = source.iridescenceIOR;\n    this.iridescenceThicknessRange = [...source.iridescenceThicknessRange];\n    this.iridescenceThicknessMap = source.iridescenceThicknessMap;\n    this.sheen = source.sheen;\n    this.sheenColor.copy(source.sheenColor);\n    this.sheenColorMap = source.sheenColorMap;\n    this.sheenRoughness = source.sheenRoughness;\n    this.sheenRoughnessMap = source.sheenRoughnessMap;\n    this.transmission = source.transmission;\n    this.transmissionMap = source.transmissionMap;\n    this.thickness = source.thickness;\n    this.thicknessMap = source.thicknessMap;\n    this.attenuationDistance = source.attenuationDistance;\n    this.attenuationColor.copy(source.attenuationColor);\n    this.specularIntensity = source.specularIntensity;\n    this.specularIntensityMap = source.specularIntensityMap;\n    this.specularColor.copy(source.specularColor);\n    this.specularColorMap = source.specularColorMap;\n    return this;\n  }\n}\nclass MeshPhongMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshPhongMaterial = true;\n    this.type = \"MeshPhongMaterial\";\n    this.color = new Color(16777215);\n    this.specular = new Color(1118481);\n    this.shininess = 30;\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.specularMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.combine = MultiplyOperation;\n    this.reflectivity = 1;\n    this.refractionRatio = 0.98;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.specular.copy(source.specular);\n    this.shininess = source.shininess;\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.specularMap = source.specularMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.combine = source.combine;\n    this.reflectivity = source.reflectivity;\n    this.refractionRatio = source.refractionRatio;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshToonMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshToonMaterial = true;\n    this.defines = { \"TOON\": \"\" };\n    this.type = \"MeshToonMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.gradientMap = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.alphaMap = null;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.gradientMap = source.gradientMap;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.alphaMap = source.alphaMap;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshNormalMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshNormalMaterial = true;\n    this.type = \"MeshNormalMaterial\";\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.flatShading = false;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.flatShading = source.flatShading;\n    return this;\n  }\n}\nclass MeshLambertMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshLambertMaterial = true;\n    this.type = \"MeshLambertMaterial\";\n    this.color = new Color(16777215);\n    this.map = null;\n    this.lightMap = null;\n    this.lightMapIntensity = 1;\n    this.aoMap = null;\n    this.aoMapIntensity = 1;\n    this.emissive = new Color(0);\n    this.emissiveIntensity = 1;\n    this.emissiveMap = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.specularMap = null;\n    this.alphaMap = null;\n    this.envMap = null;\n    this.combine = MultiplyOperation;\n    this.reflectivity = 1;\n    this.refractionRatio = 0.98;\n    this.wireframe = false;\n    this.wireframeLinewidth = 1;\n    this.wireframeLinecap = \"round\";\n    this.wireframeLinejoin = \"round\";\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.color.copy(source.color);\n    this.map = source.map;\n    this.lightMap = source.lightMap;\n    this.lightMapIntensity = source.lightMapIntensity;\n    this.aoMap = source.aoMap;\n    this.aoMapIntensity = source.aoMapIntensity;\n    this.emissive.copy(source.emissive);\n    this.emissiveMap = source.emissiveMap;\n    this.emissiveIntensity = source.emissiveIntensity;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.specularMap = source.specularMap;\n    this.alphaMap = source.alphaMap;\n    this.envMap = source.envMap;\n    this.combine = source.combine;\n    this.reflectivity = source.reflectivity;\n    this.refractionRatio = source.refractionRatio;\n    this.wireframe = source.wireframe;\n    this.wireframeLinewidth = source.wireframeLinewidth;\n    this.wireframeLinecap = source.wireframeLinecap;\n    this.wireframeLinejoin = source.wireframeLinejoin;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass MeshMatcapMaterial extends Material {\n  constructor(parameters) {\n    super();\n    this.isMeshMatcapMaterial = true;\n    this.defines = { \"MATCAP\": \"\" };\n    this.type = \"MeshMatcapMaterial\";\n    this.color = new Color(16777215);\n    this.matcap = null;\n    this.map = null;\n    this.bumpMap = null;\n    this.bumpScale = 1;\n    this.normalMap = null;\n    this.normalMapType = TangentSpaceNormalMap;\n    this.normalScale = new Vector2(1, 1);\n    this.displacementMap = null;\n    this.displacementScale = 1;\n    this.displacementBias = 0;\n    this.alphaMap = null;\n    this.flatShading = false;\n    this.fog = true;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.defines = { \"MATCAP\": \"\" };\n    this.color.copy(source.color);\n    this.matcap = source.matcap;\n    this.map = source.map;\n    this.bumpMap = source.bumpMap;\n    this.bumpScale = source.bumpScale;\n    this.normalMap = source.normalMap;\n    this.normalMapType = source.normalMapType;\n    this.normalScale.copy(source.normalScale);\n    this.displacementMap = source.displacementMap;\n    this.displacementScale = source.displacementScale;\n    this.displacementBias = source.displacementBias;\n    this.alphaMap = source.alphaMap;\n    this.flatShading = source.flatShading;\n    this.fog = source.fog;\n    return this;\n  }\n}\nclass LineDashedMaterial extends LineBasicMaterial {\n  constructor(parameters) {\n    super();\n    this.isLineDashedMaterial = true;\n    this.type = \"LineDashedMaterial\";\n    this.scale = 1;\n    this.dashSize = 3;\n    this.gapSize = 1;\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.scale = source.scale;\n    this.dashSize = source.dashSize;\n    this.gapSize = source.gapSize;\n    return this;\n  }\n}\nfunction convertArray(array, type, forceClone) {\n  if (!array || // let 'undefined' and 'null' pass\n  !forceClone && array.constructor === type) return array;\n  if (typeof type.BYTES_PER_ELEMENT === \"number\") {\n    return new type(array);\n  }\n  return Array.prototype.slice.call(array);\n}\nfunction isTypedArray(object) {\n  return ArrayBuffer.isView(object) && !(object instanceof DataView);\n}\nfunction getKeyframeOrder(times) {\n  function compareTime(i2, j2) {\n    return times[i2] - times[j2];\n  }\n  const n2 = times.length;\n  const result = new Array(n2);\n  for (let i2 = 0; i2 !== n2; ++i2) result[i2] = i2;\n  result.sort(compareTime);\n  return result;\n}\nfunction sortedArray(values, stride, order) {\n  const nValues = values.length;\n  const result = new values.constructor(nValues);\n  for (let i2 = 0, dstOffset = 0; dstOffset !== nValues; ++i2) {\n    const srcOffset = order[i2] * stride;\n    for (let j2 = 0; j2 !== stride; ++j2) {\n      result[dstOffset++] = values[srcOffset + j2];\n    }\n  }\n  return result;\n}\nfunction flattenJSON(jsonKeys, times, values, valuePropertyName) {\n  let i2 = 1, key = jsonKeys[0];\n  while (key !== void 0 && key[valuePropertyName] === void 0) {\n    key = jsonKeys[i2++];\n  }\n  if (key === void 0) return;\n  let value = key[valuePropertyName];\n  if (value === void 0) return;\n  if (Array.isArray(value)) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push.apply(values, value);\n      }\n      key = jsonKeys[i2++];\n    } while (key !== void 0);\n  } else if (value.toArray !== void 0) {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        value.toArray(values, values.length);\n      }\n      key = jsonKeys[i2++];\n    } while (key !== void 0);\n  } else {\n    do {\n      value = key[valuePropertyName];\n      if (value !== void 0) {\n        times.push(key.time);\n        values.push(value);\n      }\n      key = jsonKeys[i2++];\n    } while (key !== void 0);\n  }\n}\nfunction subclip(sourceClip, name, startFrame, endFrame, fps = 30) {\n  const clip = sourceClip.clone();\n  clip.name = name;\n  const tracks = [];\n  for (let i2 = 0; i2 < clip.tracks.length; ++i2) {\n    const track = clip.tracks[i2];\n    const valueSize = track.getValueSize();\n    const times = [];\n    const values = [];\n    for (let j2 = 0; j2 < track.times.length; ++j2) {\n      const frame = track.times[j2] * fps;\n      if (frame < startFrame || frame >= endFrame) continue;\n      times.push(track.times[j2]);\n      for (let k2 = 0; k2 < valueSize; ++k2) {\n        values.push(track.values[j2 * valueSize + k2]);\n      }\n    }\n    if (times.length === 0) continue;\n    track.times = convertArray(times, track.times.constructor);\n    track.values = convertArray(values, track.values.constructor);\n    tracks.push(track);\n  }\n  clip.tracks = tracks;\n  let minStartTime = Infinity;\n  for (let i2 = 0; i2 < clip.tracks.length; ++i2) {\n    if (minStartTime > clip.tracks[i2].times[0]) {\n      minStartTime = clip.tracks[i2].times[0];\n    }\n  }\n  for (let i2 = 0; i2 < clip.tracks.length; ++i2) {\n    clip.tracks[i2].shift(-1 * minStartTime);\n  }\n  clip.resetDuration();\n  return clip;\n}\nfunction makeClipAdditive(targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30) {\n  if (fps <= 0) fps = 30;\n  const numTracks = referenceClip.tracks.length;\n  const referenceTime = referenceFrame / fps;\n  for (let i2 = 0; i2 < numTracks; ++i2) {\n    const referenceTrack = referenceClip.tracks[i2];\n    const referenceTrackType = referenceTrack.ValueTypeName;\n    if (referenceTrackType === \"bool\" || referenceTrackType === \"string\") continue;\n    const targetTrack = targetClip.tracks.find(function(track) {\n      return track.name === referenceTrack.name && track.ValueTypeName === referenceTrackType;\n    });\n    if (targetTrack === void 0) continue;\n    let referenceOffset = 0;\n    const referenceValueSize = referenceTrack.getValueSize();\n    if (referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      referenceOffset = referenceValueSize / 3;\n    }\n    let targetOffset = 0;\n    const targetValueSize = targetTrack.getValueSize();\n    if (targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline) {\n      targetOffset = targetValueSize / 3;\n    }\n    const lastIndex = referenceTrack.times.length - 1;\n    let referenceValue;\n    if (referenceTime <= referenceTrack.times[0]) {\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      referenceValue = referenceTrack.values.slice(startIndex, endIndex);\n    } else if (referenceTime >= referenceTrack.times[lastIndex]) {\n      const startIndex = lastIndex * referenceValueSize + referenceOffset;\n      const endIndex = startIndex + referenceValueSize - referenceOffset;\n      referenceValue = referenceTrack.values.slice(startIndex, endIndex);\n    } else {\n      const interpolant = referenceTrack.createInterpolant();\n      const startIndex = referenceOffset;\n      const endIndex = referenceValueSize - referenceOffset;\n      interpolant.evaluate(referenceTime);\n      referenceValue = interpolant.resultBuffer.slice(startIndex, endIndex);\n    }\n    if (referenceTrackType === \"quaternion\") {\n      const referenceQuat = new Quaternion().fromArray(referenceValue).normalize().conjugate();\n      referenceQuat.toArray(referenceValue);\n    }\n    const numTimes = targetTrack.times.length;\n    for (let j2 = 0; j2 < numTimes; ++j2) {\n      const valueStart = j2 * targetValueSize + targetOffset;\n      if (referenceTrackType === \"quaternion\") {\n        Quaternion.multiplyQuaternionsFlat(\n          targetTrack.values,\n          valueStart,\n          referenceValue,\n          0,\n          targetTrack.values,\n          valueStart\n        );\n      } else {\n        const valueEnd = targetValueSize - targetOffset * 2;\n        for (let k2 = 0; k2 < valueEnd; ++k2) {\n          targetTrack.values[valueStart + k2] -= referenceValue[k2];\n        }\n      }\n    }\n  }\n  targetClip.blendMode = AdditiveAnimationBlendMode;\n  return targetClip;\n}\nconst AnimationUtils = {\n  convertArray,\n  isTypedArray,\n  getKeyframeOrder,\n  sortedArray,\n  flattenJSON,\n  subclip,\n  makeClipAdditive\n};\nclass Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    this.parameterPositions = parameterPositions;\n    this._cachedIndex = 0;\n    this.resultBuffer = resultBuffer !== void 0 ? resultBuffer : new sampleValues.constructor(sampleSize);\n    this.sampleValues = sampleValues;\n    this.valueSize = sampleSize;\n    this.settings = null;\n    this.DefaultSettings_ = {};\n  }\n  evaluate(t2) {\n    const pp = this.parameterPositions;\n    let i1 = this._cachedIndex, t1 = pp[i1], t0 = pp[i1 - 1];\n    validate_interval: {\n      seek: {\n        let right;\n        linear_scan: {\n          forward_scan: if (!(t2 < t1)) {\n            for (let giveUpAt = i1 + 2; ; ) {\n              if (t1 === void 0) {\n                if (t2 < t0) break forward_scan;\n                i1 = pp.length;\n                this._cachedIndex = i1;\n                return this.copySampleValue_(i1 - 1);\n              }\n              if (i1 === giveUpAt) break;\n              t0 = t1;\n              t1 = pp[++i1];\n              if (t2 < t1) {\n                break seek;\n              }\n            }\n            right = pp.length;\n            break linear_scan;\n          }\n          if (!(t2 >= t0)) {\n            const t1global = pp[1];\n            if (t2 < t1global) {\n              i1 = 2;\n              t0 = t1global;\n            }\n            for (let giveUpAt = i1 - 2; ; ) {\n              if (t0 === void 0) {\n                this._cachedIndex = 0;\n                return this.copySampleValue_(0);\n              }\n              if (i1 === giveUpAt) break;\n              t1 = t0;\n              t0 = pp[--i1 - 1];\n              if (t2 >= t0) {\n                break seek;\n              }\n            }\n            right = i1;\n            i1 = 0;\n            break linear_scan;\n          }\n          break validate_interval;\n        }\n        while (i1 < right) {\n          const mid = i1 + right >>> 1;\n          if (t2 < pp[mid]) {\n            right = mid;\n          } else {\n            i1 = mid + 1;\n          }\n        }\n        t1 = pp[i1];\n        t0 = pp[i1 - 1];\n        if (t0 === void 0) {\n          this._cachedIndex = 0;\n          return this.copySampleValue_(0);\n        }\n        if (t1 === void 0) {\n          i1 = pp.length;\n          this._cachedIndex = i1;\n          return this.copySampleValue_(i1 - 1);\n        }\n      }\n      this._cachedIndex = i1;\n      this.intervalChanged_(i1, t0, t1);\n    }\n    return this.interpolate_(i1, t0, t2, t1);\n  }\n  getSettings_() {\n    return this.settings || this.DefaultSettings_;\n  }\n  copySampleValue_(index) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset = index * stride;\n    for (let i2 = 0; i2 !== stride; ++i2) {\n      result[i2] = values[offset + i2];\n    }\n    return result;\n  }\n  // Template methods for derived classes:\n  interpolate_() {\n    throw new Error(\"call to abstract method\");\n  }\n  intervalChanged_() {\n  }\n}\nclass CubicInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n    this._weightPrev = -0;\n    this._offsetPrev = -0;\n    this._weightNext = -0;\n    this._offsetNext = -0;\n    this.DefaultSettings_ = {\n      endingStart: ZeroCurvatureEnding,\n      endingEnd: ZeroCurvatureEnding\n    };\n  }\n  intervalChanged_(i1, t0, t1) {\n    const pp = this.parameterPositions;\n    let iPrev = i1 - 2, iNext = i1 + 1, tPrev = pp[iPrev], tNext = pp[iNext];\n    if (tPrev === void 0) {\n      switch (this.getSettings_().endingStart) {\n        case ZeroSlopeEnding:\n          iPrev = i1;\n          tPrev = 2 * t0 - t1;\n          break;\n        case WrapAroundEnding:\n          iPrev = pp.length - 2;\n          tPrev = t0 + pp[iPrev] - pp[iPrev + 1];\n          break;\n        default:\n          iPrev = i1;\n          tPrev = t1;\n      }\n    }\n    if (tNext === void 0) {\n      switch (this.getSettings_().endingEnd) {\n        case ZeroSlopeEnding:\n          iNext = i1;\n          tNext = 2 * t1 - t0;\n          break;\n        case WrapAroundEnding:\n          iNext = 1;\n          tNext = t1 + pp[1] - pp[0];\n          break;\n        default:\n          iNext = i1 - 1;\n          tNext = t0;\n      }\n    }\n    const halfDt = (t1 - t0) * 0.5, stride = this.valueSize;\n    this._weightPrev = halfDt / (t0 - tPrev);\n    this._weightNext = halfDt / (tNext - t1);\n    this._offsetPrev = iPrev * stride;\n    this._offsetNext = iNext * stride;\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, o1 = i1 * stride, o0 = o1 - stride, oP = this._offsetPrev, oN = this._offsetNext, wP = this._weightPrev, wN = this._weightNext, p2 = (t2 - t0) / (t1 - t0), pp = p2 * p2, ppp = pp * p2;\n    const sP = -wP * ppp + 2 * wP * pp - wP * p2;\n    const s0 = (1 + wP) * ppp + (-1.5 - 2 * wP) * pp + (-0.5 + wP) * p2 + 1;\n    const s1 = (-1 - wN) * ppp + (1.5 + wN) * pp + 0.5 * p2;\n    const sN = wN * ppp - wN * pp;\n    for (let i2 = 0; i2 !== stride; ++i2) {\n      result[i2] = sP * values[oP + i2] + s0 * values[o0 + i2] + s1 * values[o1 + i2] + sN * values[oN + i2];\n    }\n    return result;\n  }\n}\nclass LinearInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, offset1 = i1 * stride, offset0 = offset1 - stride, weight1 = (t2 - t0) / (t1 - t0), weight0 = 1 - weight1;\n    for (let i2 = 0; i2 !== stride; ++i2) {\n      result[i2] = values[offset0 + i2] * weight0 + values[offset1 + i2] * weight1;\n    }\n    return result;\n  }\n}\nclass DiscreteInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1) {\n    return this.copySampleValue_(i1 - 1);\n  }\n}\nclass KeyframeTrack {\n  constructor(name, times, values, interpolation) {\n    if (name === void 0) throw new Error(\"THREE.KeyframeTrack: track name is undefined\");\n    if (times === void 0 || times.length === 0) throw new Error(\"THREE.KeyframeTrack: no keyframes in track named \" + name);\n    this.name = name;\n    this.times = convertArray(times, this.TimeBufferType);\n    this.values = convertArray(values, this.ValueBufferType);\n    this.setInterpolation(interpolation || this.DefaultInterpolation);\n  }\n  // Serialization (in static context, because of constructor invocation\n  // and automatic invocation of .toJSON):\n  static toJSON(track) {\n    const trackType = track.constructor;\n    let json;\n    if (trackType.toJSON !== this.toJSON) {\n      json = trackType.toJSON(track);\n    } else {\n      json = {\n        \"name\": track.name,\n        \"times\": convertArray(track.times, Array),\n        \"values\": convertArray(track.values, Array)\n      };\n      const interpolation = track.getInterpolation();\n      if (interpolation !== track.DefaultInterpolation) {\n        json.interpolation = interpolation;\n      }\n    }\n    json.type = track.ValueTypeName;\n    return json;\n  }\n  InterpolantFactoryMethodDiscrete(result) {\n    return new DiscreteInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  InterpolantFactoryMethodLinear(result) {\n    return new LinearInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  InterpolantFactoryMethodSmooth(result) {\n    return new CubicInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n  setInterpolation(interpolation) {\n    let factoryMethod;\n    switch (interpolation) {\n      case InterpolateDiscrete:\n        factoryMethod = this.InterpolantFactoryMethodDiscrete;\n        break;\n      case InterpolateLinear:\n        factoryMethod = this.InterpolantFactoryMethodLinear;\n        break;\n      case InterpolateSmooth:\n        factoryMethod = this.InterpolantFactoryMethodSmooth;\n        break;\n    }\n    if (factoryMethod === void 0) {\n      const message = \"unsupported interpolation for \" + this.ValueTypeName + \" keyframe track named \" + this.name;\n      if (this.createInterpolant === void 0) {\n        if (interpolation !== this.DefaultInterpolation) {\n          this.setInterpolation(this.DefaultInterpolation);\n        } else {\n          throw new Error(message);\n        }\n      }\n      console.warn(\"THREE.KeyframeTrack:\", message);\n      return this;\n    }\n    this.createInterpolant = factoryMethod;\n    return this;\n  }\n  getInterpolation() {\n    switch (this.createInterpolant) {\n      case this.InterpolantFactoryMethodDiscrete:\n        return InterpolateDiscrete;\n      case this.InterpolantFactoryMethodLinear:\n        return InterpolateLinear;\n      case this.InterpolantFactoryMethodSmooth:\n        return InterpolateSmooth;\n    }\n  }\n  getValueSize() {\n    return this.values.length / this.times.length;\n  }\n  // move all keyframes either forwards or backwards in time\n  shift(timeOffset) {\n    if (timeOffset !== 0) {\n      const times = this.times;\n      for (let i2 = 0, n2 = times.length; i2 !== n2; ++i2) {\n        times[i2] += timeOffset;\n      }\n    }\n    return this;\n  }\n  // scale all keyframe times by a factor (useful for frame <-> seconds conversions)\n  scale(timeScale) {\n    if (timeScale !== 1) {\n      const times = this.times;\n      for (let i2 = 0, n2 = times.length; i2 !== n2; ++i2) {\n        times[i2] *= timeScale;\n      }\n    }\n    return this;\n  }\n  // removes keyframes before and after animation without changing any values within the range [startTime, endTime].\n  // IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\n  trim(startTime, endTime) {\n    const times = this.times, nKeys = times.length;\n    let from = 0, to = nKeys - 1;\n    while (from !== nKeys && times[from] < startTime) {\n      ++from;\n    }\n    while (to !== -1 && times[to] > endTime) {\n      --to;\n    }\n    ++to;\n    if (from !== 0 || to !== nKeys) {\n      if (from >= to) {\n        to = Math.max(to, 1);\n        from = to - 1;\n      }\n      const stride = this.getValueSize();\n      this.times = times.slice(from, to);\n      this.values = this.values.slice(from * stride, to * stride);\n    }\n    return this;\n  }\n  // ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\n  validate() {\n    let valid = true;\n    const valueSize = this.getValueSize();\n    if (valueSize - Math.floor(valueSize) !== 0) {\n      console.error(\"THREE.KeyframeTrack: Invalid value size in track.\", this);\n      valid = false;\n    }\n    const times = this.times, values = this.values, nKeys = times.length;\n    if (nKeys === 0) {\n      console.error(\"THREE.KeyframeTrack: Track is empty.\", this);\n      valid = false;\n    }\n    let prevTime = null;\n    for (let i2 = 0; i2 !== nKeys; i2++) {\n      const currTime = times[i2];\n      if (typeof currTime === \"number\" && isNaN(currTime)) {\n        console.error(\"THREE.KeyframeTrack: Time is not a valid number.\", this, i2, currTime);\n        valid = false;\n        break;\n      }\n      if (prevTime !== null && prevTime > currTime) {\n        console.error(\"THREE.KeyframeTrack: Out of order keys.\", this, i2, currTime, prevTime);\n        valid = false;\n        break;\n      }\n      prevTime = currTime;\n    }\n    if (values !== void 0) {\n      if (isTypedArray(values)) {\n        for (let i2 = 0, n2 = values.length; i2 !== n2; ++i2) {\n          const value = values[i2];\n          if (isNaN(value)) {\n            console.error(\"THREE.KeyframeTrack: Value is not a valid number.\", this, i2, value);\n            valid = false;\n            break;\n          }\n        }\n      }\n    }\n    return valid;\n  }\n  // removes equivalent sequential keys as common in morph target sequences\n  // (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\n  optimize() {\n    const times = this.times.slice(), values = this.values.slice(), stride = this.getValueSize(), smoothInterpolation = this.getInterpolation() === InterpolateSmooth, lastIndex = times.length - 1;\n    let writeIndex = 1;\n    for (let i2 = 1; i2 < lastIndex; ++i2) {\n      let keep = false;\n      const time = times[i2];\n      const timeNext = times[i2 + 1];\n      if (time !== timeNext && (i2 !== 1 || time !== times[0])) {\n        if (!smoothInterpolation) {\n          const offset = i2 * stride, offsetP = offset - stride, offsetN = offset + stride;\n          for (let j2 = 0; j2 !== stride; ++j2) {\n            const value = values[offset + j2];\n            if (value !== values[offsetP + j2] || value !== values[offsetN + j2]) {\n              keep = true;\n              break;\n            }\n          }\n        } else {\n          keep = true;\n        }\n      }\n      if (keep) {\n        if (i2 !== writeIndex) {\n          times[writeIndex] = times[i2];\n          const readOffset = i2 * stride, writeOffset = writeIndex * stride;\n          for (let j2 = 0; j2 !== stride; ++j2) {\n            values[writeOffset + j2] = values[readOffset + j2];\n          }\n        }\n        ++writeIndex;\n      }\n    }\n    if (lastIndex > 0) {\n      times[writeIndex] = times[lastIndex];\n      for (let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j2 = 0; j2 !== stride; ++j2) {\n        values[writeOffset + j2] = values[readOffset + j2];\n      }\n      ++writeIndex;\n    }\n    if (writeIndex !== times.length) {\n      this.times = times.slice(0, writeIndex);\n      this.values = values.slice(0, writeIndex * stride);\n    } else {\n      this.times = times;\n      this.values = values;\n    }\n    return this;\n  }\n  clone() {\n    const times = this.times.slice();\n    const values = this.values.slice();\n    const TypedKeyframeTrack = this.constructor;\n    const track = new TypedKeyframeTrack(this.name, times, values);\n    track.createInterpolant = this.createInterpolant;\n    return track;\n  }\n}\nKeyframeTrack.prototype.TimeBufferType = Float32Array;\nKeyframeTrack.prototype.ValueBufferType = Float32Array;\nKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nclass BooleanKeyframeTrack extends KeyframeTrack {\n}\nBooleanKeyframeTrack.prototype.ValueTypeName = \"bool\";\nBooleanKeyframeTrack.prototype.ValueBufferType = Array;\nBooleanKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nBooleanKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass ColorKeyframeTrack extends KeyframeTrack {\n}\nColorKeyframeTrack.prototype.ValueTypeName = \"color\";\nclass NumberKeyframeTrack extends KeyframeTrack {\n}\nNumberKeyframeTrack.prototype.ValueTypeName = \"number\";\nclass QuaternionLinearInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer, values = this.sampleValues, stride = this.valueSize, alpha = (t2 - t0) / (t1 - t0);\n    let offset = i1 * stride;\n    for (let end = offset + stride; offset !== end; offset += 4) {\n      Quaternion.slerpFlat(result, 0, values, offset - stride, values, offset, alpha);\n    }\n    return result;\n  }\n}\nclass QuaternionKeyframeTrack extends KeyframeTrack {\n  InterpolantFactoryMethodLinear(result) {\n    return new QuaternionLinearInterpolant(this.times, this.values, this.getValueSize(), result);\n  }\n}\nQuaternionKeyframeTrack.prototype.ValueTypeName = \"quaternion\";\nQuaternionKeyframeTrack.prototype.DefaultInterpolation = InterpolateLinear;\nQuaternionKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass StringKeyframeTrack extends KeyframeTrack {\n}\nStringKeyframeTrack.prototype.ValueTypeName = \"string\";\nStringKeyframeTrack.prototype.ValueBufferType = Array;\nStringKeyframeTrack.prototype.DefaultInterpolation = InterpolateDiscrete;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodLinear = void 0;\nStringKeyframeTrack.prototype.InterpolantFactoryMethodSmooth = void 0;\nclass VectorKeyframeTrack extends KeyframeTrack {\n}\nVectorKeyframeTrack.prototype.ValueTypeName = \"vector\";\nclass AnimationClip {\n  constructor(name, duration = -1, tracks, blendMode = NormalAnimationBlendMode) {\n    this.name = name;\n    this.tracks = tracks;\n    this.duration = duration;\n    this.blendMode = blendMode;\n    this.uuid = generateUUID();\n    if (this.duration < 0) {\n      this.resetDuration();\n    }\n  }\n  static parse(json) {\n    const tracks = [], jsonTracks = json.tracks, frameTime = 1 / (json.fps || 1);\n    for (let i2 = 0, n2 = jsonTracks.length; i2 !== n2; ++i2) {\n      tracks.push(parseKeyframeTrack(jsonTracks[i2]).scale(frameTime));\n    }\n    const clip = new this(json.name, json.duration, tracks, json.blendMode);\n    clip.uuid = json.uuid;\n    return clip;\n  }\n  static toJSON(clip) {\n    const tracks = [], clipTracks = clip.tracks;\n    const json = {\n      \"name\": clip.name,\n      \"duration\": clip.duration,\n      \"tracks\": tracks,\n      \"uuid\": clip.uuid,\n      \"blendMode\": clip.blendMode\n    };\n    for (let i2 = 0, n2 = clipTracks.length; i2 !== n2; ++i2) {\n      tracks.push(KeyframeTrack.toJSON(clipTracks[i2]));\n    }\n    return json;\n  }\n  static CreateFromMorphTargetSequence(name, morphTargetSequence, fps, noLoop) {\n    const numMorphTargets = morphTargetSequence.length;\n    const tracks = [];\n    for (let i2 = 0; i2 < numMorphTargets; i2++) {\n      let times = [];\n      let values = [];\n      times.push(\n        (i2 + numMorphTargets - 1) % numMorphTargets,\n        i2,\n        (i2 + 1) % numMorphTargets\n      );\n      values.push(0, 1, 0);\n      const order = getKeyframeOrder(times);\n      times = sortedArray(times, 1, order);\n      values = sortedArray(values, 1, order);\n      if (!noLoop && times[0] === 0) {\n        times.push(numMorphTargets);\n        values.push(values[0]);\n      }\n      tracks.push(\n        new NumberKeyframeTrack(\n          \".morphTargetInfluences[\" + morphTargetSequence[i2].name + \"]\",\n          times,\n          values\n        ).scale(1 / fps)\n      );\n    }\n    return new this(name, -1, tracks);\n  }\n  static findByName(objectOrClipArray, name) {\n    let clipArray = objectOrClipArray;\n    if (!Array.isArray(objectOrClipArray)) {\n      const o2 = objectOrClipArray;\n      clipArray = o2.geometry && o2.geometry.animations || o2.animations;\n    }\n    for (let i2 = 0; i2 < clipArray.length; i2++) {\n      if (clipArray[i2].name === name) {\n        return clipArray[i2];\n      }\n    }\n    return null;\n  }\n  static CreateClipsFromMorphTargetSequences(morphTargets, fps, noLoop) {\n    const animationToMorphTargets = {};\n    const pattern = /^([\\w-]*?)([\\d]+)$/;\n    for (let i2 = 0, il = morphTargets.length; i2 < il; i2++) {\n      const morphTarget = morphTargets[i2];\n      const parts = morphTarget.name.match(pattern);\n      if (parts && parts.length > 1) {\n        const name = parts[1];\n        let animationMorphTargets = animationToMorphTargets[name];\n        if (!animationMorphTargets) {\n          animationToMorphTargets[name] = animationMorphTargets = [];\n        }\n        animationMorphTargets.push(morphTarget);\n      }\n    }\n    const clips = [];\n    for (const name in animationToMorphTargets) {\n      clips.push(this.CreateFromMorphTargetSequence(name, animationToMorphTargets[name], fps, noLoop));\n    }\n    return clips;\n  }\n  // parse the animation.hierarchy format\n  static parseAnimation(animation, bones) {\n    if (!animation) {\n      console.error(\"THREE.AnimationClip: No animation in JSONLoader data.\");\n      return null;\n    }\n    const addNonemptyTrack = function(trackType, trackName, animationKeys, propertyName, destTracks) {\n      if (animationKeys.length !== 0) {\n        const times = [];\n        const values = [];\n        flattenJSON(animationKeys, times, values, propertyName);\n        if (times.length !== 0) {\n          destTracks.push(new trackType(trackName, times, values));\n        }\n      }\n    };\n    const tracks = [];\n    const clipName = animation.name || \"default\";\n    const fps = animation.fps || 30;\n    const blendMode = animation.blendMode;\n    let duration = animation.length || -1;\n    const hierarchyTracks = animation.hierarchy || [];\n    for (let h2 = 0; h2 < hierarchyTracks.length; h2++) {\n      const animationKeys = hierarchyTracks[h2].keys;\n      if (!animationKeys || animationKeys.length === 0) continue;\n      if (animationKeys[0].morphTargets) {\n        const morphTargetNames = {};\n        let k2;\n        for (k2 = 0; k2 < animationKeys.length; k2++) {\n          if (animationKeys[k2].morphTargets) {\n            for (let m2 = 0; m2 < animationKeys[k2].morphTargets.length; m2++) {\n              morphTargetNames[animationKeys[k2].morphTargets[m2]] = -1;\n            }\n          }\n        }\n        for (const morphTargetName in morphTargetNames) {\n          const times = [];\n          const values = [];\n          for (let m2 = 0; m2 !== animationKeys[k2].morphTargets.length; ++m2) {\n            const animationKey = animationKeys[k2];\n            times.push(animationKey.time);\n            values.push(animationKey.morphTarget === morphTargetName ? 1 : 0);\n          }\n          tracks.push(new NumberKeyframeTrack(\".morphTargetInfluence[\" + morphTargetName + \"]\", times, values));\n        }\n        duration = morphTargetNames.length * fps;\n      } else {\n        const boneName = \".bones[\" + bones[h2].name + \"]\";\n        addNonemptyTrack(\n          VectorKeyframeTrack,\n          boneName + \".position\",\n          animationKeys,\n          \"pos\",\n          tracks\n        );\n        addNonemptyTrack(\n          QuaternionKeyframeTrack,\n          boneName + \".quaternion\",\n          animationKeys,\n          \"rot\",\n          tracks\n        );\n        addNonemptyTrack(\n          VectorKeyframeTrack,\n          boneName + \".scale\",\n          animationKeys,\n          \"scl\",\n          tracks\n        );\n      }\n    }\n    if (tracks.length === 0) {\n      return null;\n    }\n    const clip = new this(clipName, duration, tracks, blendMode);\n    return clip;\n  }\n  resetDuration() {\n    const tracks = this.tracks;\n    let duration = 0;\n    for (let i2 = 0, n2 = tracks.length; i2 !== n2; ++i2) {\n      const track = this.tracks[i2];\n      duration = Math.max(duration, track.times[track.times.length - 1]);\n    }\n    this.duration = duration;\n    return this;\n  }\n  trim() {\n    for (let i2 = 0; i2 < this.tracks.length; i2++) {\n      this.tracks[i2].trim(0, this.duration);\n    }\n    return this;\n  }\n  validate() {\n    let valid = true;\n    for (let i2 = 0; i2 < this.tracks.length; i2++) {\n      valid = valid && this.tracks[i2].validate();\n    }\n    return valid;\n  }\n  optimize() {\n    for (let i2 = 0; i2 < this.tracks.length; i2++) {\n      this.tracks[i2].optimize();\n    }\n    return this;\n  }\n  clone() {\n    const tracks = [];\n    for (let i2 = 0; i2 < this.tracks.length; i2++) {\n      tracks.push(this.tracks[i2].clone());\n    }\n    return new this.constructor(this.name, this.duration, tracks, this.blendMode);\n  }\n  toJSON() {\n    return this.constructor.toJSON(this);\n  }\n}\nfunction getTrackTypeForValueTypeName(typeName) {\n  switch (typeName.toLowerCase()) {\n    case \"scalar\":\n    case \"double\":\n    case \"float\":\n    case \"number\":\n    case \"integer\":\n      return NumberKeyframeTrack;\n    case \"vector\":\n    case \"vector2\":\n    case \"vector3\":\n    case \"vector4\":\n      return VectorKeyframeTrack;\n    case \"color\":\n      return ColorKeyframeTrack;\n    case \"quaternion\":\n      return QuaternionKeyframeTrack;\n    case \"bool\":\n    case \"boolean\":\n      return BooleanKeyframeTrack;\n    case \"string\":\n      return StringKeyframeTrack;\n  }\n  throw new Error(\"THREE.KeyframeTrack: Unsupported typeName: \" + typeName);\n}\nfunction parseKeyframeTrack(json) {\n  if (json.type === void 0) {\n    throw new Error(\"THREE.KeyframeTrack: track type undefined, can not parse\");\n  }\n  const trackType = getTrackTypeForValueTypeName(json.type);\n  if (json.times === void 0) {\n    const times = [], values = [];\n    flattenJSON(json.keys, times, values, \"value\");\n    json.times = times;\n    json.values = values;\n  }\n  if (trackType.parse !== void 0) {\n    return trackType.parse(json);\n  } else {\n    return new trackType(json.name, json.times, json.values, json.interpolation);\n  }\n}\nconst Cache = {\n  enabled: false,\n  files: {},\n  add: function(key, file) {\n    if (this.enabled === false) return;\n    this.files[key] = file;\n  },\n  get: function(key) {\n    if (this.enabled === false) return;\n    return this.files[key];\n  },\n  remove: function(key) {\n    delete this.files[key];\n  },\n  clear: function() {\n    this.files = {};\n  }\n};\nclass LoadingManager {\n  constructor(onLoad, onProgress, onError) {\n    const scope = this;\n    let isLoading = false;\n    let itemsLoaded = 0;\n    let itemsTotal = 0;\n    let urlModifier = void 0;\n    const handlers = [];\n    this.onStart = void 0;\n    this.onLoad = onLoad;\n    this.onProgress = onProgress;\n    this.onError = onError;\n    this.itemStart = function(url) {\n      itemsTotal++;\n      if (isLoading === false) {\n        if (scope.onStart !== void 0) {\n          scope.onStart(url, itemsLoaded, itemsTotal);\n        }\n      }\n      isLoading = true;\n    };\n    this.itemEnd = function(url) {\n      itemsLoaded++;\n      if (scope.onProgress !== void 0) {\n        scope.onProgress(url, itemsLoaded, itemsTotal);\n      }\n      if (itemsLoaded === itemsTotal) {\n        isLoading = false;\n        if (scope.onLoad !== void 0) {\n          scope.onLoad();\n        }\n      }\n    };\n    this.itemError = function(url) {\n      if (scope.onError !== void 0) {\n        scope.onError(url);\n      }\n    };\n    this.resolveURL = function(url) {\n      if (urlModifier) {\n        return urlModifier(url);\n      }\n      return url;\n    };\n    this.setURLModifier = function(transform) {\n      urlModifier = transform;\n      return this;\n    };\n    this.addHandler = function(regex, loader) {\n      handlers.push(regex, loader);\n      return this;\n    };\n    this.removeHandler = function(regex) {\n      const index = handlers.indexOf(regex);\n      if (index !== -1) {\n        handlers.splice(index, 2);\n      }\n      return this;\n    };\n    this.getHandler = function(file) {\n      for (let i2 = 0, l2 = handlers.length; i2 < l2; i2 += 2) {\n        const regex = handlers[i2];\n        const loader = handlers[i2 + 1];\n        if (regex.global) regex.lastIndex = 0;\n        if (regex.test(file)) {\n          return loader;\n        }\n      }\n      return null;\n    };\n  }\n}\nconst DefaultLoadingManager = /* @__PURE__ */ new LoadingManager();\nclass Loader {\n  constructor(manager) {\n    this.manager = manager !== void 0 ? manager : DefaultLoadingManager;\n    this.crossOrigin = \"anonymous\";\n    this.withCredentials = false;\n    this.path = \"\";\n    this.resourcePath = \"\";\n    this.requestHeader = {};\n  }\n  load() {\n  }\n  loadAsync(url, onProgress) {\n    const scope = this;\n    return new Promise(function(resolve2, reject) {\n      scope.load(url, resolve2, onProgress, reject);\n    });\n  }\n  parse() {\n  }\n  setCrossOrigin(crossOrigin) {\n    this.crossOrigin = crossOrigin;\n    return this;\n  }\n  setWithCredentials(value) {\n    this.withCredentials = value;\n    return this;\n  }\n  setPath(path) {\n    this.path = path;\n    return this;\n  }\n  setResourcePath(resourcePath) {\n    this.resourcePath = resourcePath;\n    return this;\n  }\n  setRequestHeader(requestHeader) {\n    this.requestHeader = requestHeader;\n    return this;\n  }\n}\nLoader.DEFAULT_MATERIAL_NAME = \"__DEFAULT\";\nconst loading = {};\nclass HttpError extends Error {\n  constructor(message, response) {\n    super(message);\n    this.response = response;\n  }\n}\nclass FileLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (url === void 0) url = \"\";\n    if (this.path !== void 0) url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      this.manager.itemStart(url);\n      setTimeout(() => {\n        if (onLoad) onLoad(cached);\n        this.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    if (loading[url] !== void 0) {\n      loading[url].push({\n        onLoad,\n        onProgress,\n        onError\n      });\n      return;\n    }\n    loading[url] = [];\n    loading[url].push({\n      onLoad,\n      onProgress,\n      onError\n    });\n    const req = new Request(url, {\n      headers: new Headers(this.requestHeader),\n      credentials: this.withCredentials ? \"include\" : \"same-origin\"\n      // An abort controller could be added within a future PR\n    });\n    const mimeType = this.mimeType;\n    const responseType = this.responseType;\n    fetch(req).then((response) => {\n      if (response.status === 200 || response.status === 0) {\n        if (response.status === 0) {\n          console.warn(\"THREE.FileLoader: HTTP Status 0 received.\");\n        }\n        if (typeof ReadableStream === \"undefined\" || response.body === void 0 || response.body.getReader === void 0) {\n          return response;\n        }\n        const callbacks = loading[url];\n        const reader = response.body.getReader();\n        const contentLength = response.headers.get(\"Content-Length\") || response.headers.get(\"X-File-Size\");\n        const total = contentLength ? parseInt(contentLength) : 0;\n        const lengthComputable = total !== 0;\n        let loaded = 0;\n        const stream = new ReadableStream({\n          start(controller) {\n            readData();\n            function readData() {\n              reader.read().then(({ done, value }) => {\n                if (done) {\n                  controller.close();\n                } else {\n                  loaded += value.byteLength;\n                  const event = new ProgressEvent(\"progress\", { lengthComputable, loaded, total });\n                  for (let i2 = 0, il = callbacks.length; i2 < il; i2++) {\n                    const callback = callbacks[i2];\n                    if (callback.onProgress) callback.onProgress(event);\n                  }\n                  controller.enqueue(value);\n                  readData();\n                }\n              });\n            }\n          }\n        });\n        return new Response(stream);\n      } else {\n        throw new HttpError(`fetch for \"${response.url}\" responded with ${response.status}: ${response.statusText}`, response);\n      }\n    }).then((response) => {\n      switch (responseType) {\n        case \"arraybuffer\":\n          return response.arrayBuffer();\n        case \"blob\":\n          return response.blob();\n        case \"document\":\n          return response.text().then((text) => {\n            const parser = new DOMParser();\n            return parser.parseFromString(text, mimeType);\n          });\n        case \"json\":\n          return response.json();\n        default:\n          if (mimeType === void 0) {\n            return response.text();\n          } else {\n            const re = /charset=\"?([^;\"\\s]*)\"?/i;\n            const exec = re.exec(mimeType);\n            const label = exec && exec[1] ? exec[1].toLowerCase() : void 0;\n            const decoder = new TextDecoder(label);\n            return response.arrayBuffer().then((ab) => decoder.decode(ab));\n          }\n      }\n    }).then((data) => {\n      Cache.add(url, data);\n      const callbacks = loading[url];\n      delete loading[url];\n      for (let i2 = 0, il = callbacks.length; i2 < il; i2++) {\n        const callback = callbacks[i2];\n        if (callback.onLoad) callback.onLoad(data);\n      }\n    }).catch((err) => {\n      const callbacks = loading[url];\n      if (callbacks === void 0) {\n        this.manager.itemError(url);\n        throw err;\n      }\n      delete loading[url];\n      for (let i2 = 0, il = callbacks.length; i2 < il; i2++) {\n        const callback = callbacks[i2];\n        if (callback.onError) callback.onError(err);\n      }\n      this.manager.itemError(url);\n    }).finally(() => {\n      this.manager.itemEnd(url);\n    });\n    this.manager.itemStart(url);\n  }\n  setResponseType(value) {\n    this.responseType = value;\n    return this;\n  }\n  setMimeType(value) {\n    this.mimeType = value;\n    return this;\n  }\n}\nclass AnimationLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, function(text) {\n      try {\n        onLoad(scope.parse(JSON.parse(text)));\n      } catch (e2) {\n        if (onError) {\n          onError(e2);\n        } else {\n          console.error(e2);\n        }\n        scope.manager.itemError(url);\n      }\n    }, onProgress, onError);\n  }\n  parse(json) {\n    const animations = [];\n    for (let i2 = 0; i2 < json.length; i2++) {\n      const clip = AnimationClip.parse(json[i2]);\n      animations.push(clip);\n    }\n    return animations;\n  }\n}\nclass CompressedTextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const images = [];\n    const texture = new CompressedTexture();\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(scope.withCredentials);\n    let loaded = 0;\n    function loadTexture(i2) {\n      loader.load(url[i2], function(buffer) {\n        const texDatas = scope.parse(buffer, true);\n        images[i2] = {\n          width: texDatas.width,\n          height: texDatas.height,\n          format: texDatas.format,\n          mipmaps: texDatas.mipmaps\n        };\n        loaded += 1;\n        if (loaded === 6) {\n          if (texDatas.mipmapCount === 1) texture.minFilter = LinearFilter;\n          texture.image = images;\n          texture.format = texDatas.format;\n          texture.needsUpdate = true;\n          if (onLoad) onLoad(texture);\n        }\n      }, onProgress, onError);\n    }\n    if (Array.isArray(url)) {\n      for (let i2 = 0, il = url.length; i2 < il; ++i2) {\n        loadTexture(i2);\n      }\n    } else {\n      loader.load(url, function(buffer) {\n        const texDatas = scope.parse(buffer, true);\n        if (texDatas.isCubemap) {\n          const faces = texDatas.mipmaps.length / texDatas.mipmapCount;\n          for (let f2 = 0; f2 < faces; f2++) {\n            images[f2] = { mipmaps: [] };\n            for (let i2 = 0; i2 < texDatas.mipmapCount; i2++) {\n              images[f2].mipmaps.push(texDatas.mipmaps[f2 * texDatas.mipmapCount + i2]);\n              images[f2].format = texDatas.format;\n              images[f2].width = texDatas.width;\n              images[f2].height = texDatas.height;\n            }\n          }\n          texture.image = images;\n        } else {\n          texture.image.width = texDatas.width;\n          texture.image.height = texDatas.height;\n          texture.mipmaps = texDatas.mipmaps;\n        }\n        if (texDatas.mipmapCount === 1) {\n          texture.minFilter = LinearFilter;\n        }\n        texture.format = texDatas.format;\n        texture.needsUpdate = true;\n        if (onLoad) onLoad(texture);\n      }, onProgress, onError);\n    }\n    return texture;\n  }\n}\nclass ImageLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (this.path !== void 0) url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const scope = this;\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      scope.manager.itemStart(url);\n      setTimeout(function() {\n        if (onLoad) onLoad(cached);\n        scope.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    const image = createElementNS(\"img\");\n    function onImageLoad() {\n      removeEventListeners();\n      Cache.add(url, this);\n      if (onLoad) onLoad(this);\n      scope.manager.itemEnd(url);\n    }\n    function onImageError(event) {\n      removeEventListeners();\n      if (onError) onError(event);\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    }\n    function removeEventListeners() {\n      image.removeEventListener(\"load\", onImageLoad, false);\n      image.removeEventListener(\"error\", onImageError, false);\n    }\n    image.addEventListener(\"load\", onImageLoad, false);\n    image.addEventListener(\"error\", onImageError, false);\n    if (url.slice(0, 5) !== \"data:\") {\n      if (this.crossOrigin !== void 0) image.crossOrigin = this.crossOrigin;\n    }\n    scope.manager.itemStart(url);\n    image.src = url;\n    return image;\n  }\n}\nclass CubeTextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(urls, onLoad, onProgress, onError) {\n    const texture = new CubeTexture();\n    texture.colorSpace = SRGBColorSpace$1;\n    const loader = new ImageLoader(this.manager);\n    loader.setCrossOrigin(this.crossOrigin);\n    loader.setPath(this.path);\n    let loaded = 0;\n    function loadTexture(i2) {\n      loader.load(urls[i2], function(image) {\n        texture.images[i2] = image;\n        loaded++;\n        if (loaded === 6) {\n          texture.needsUpdate = true;\n          if (onLoad) onLoad(texture);\n        }\n      }, void 0, onError);\n    }\n    for (let i2 = 0; i2 < urls.length; ++i2) {\n      loadTexture(i2);\n    }\n    return texture;\n  }\n}\nclass DataTextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const texture = new DataTexture();\n    const loader = new FileLoader(this.manager);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setPath(this.path);\n    loader.setWithCredentials(scope.withCredentials);\n    loader.load(url, function(buffer) {\n      let texData;\n      try {\n        texData = scope.parse(buffer);\n      } catch (error2) {\n        if (onError !== void 0) {\n          onError(error2);\n        } else {\n          console.error(error2);\n          return;\n        }\n      }\n      if (texData.image !== void 0) {\n        texture.image = texData.image;\n      } else if (texData.data !== void 0) {\n        texture.image.width = texData.width;\n        texture.image.height = texData.height;\n        texture.image.data = texData.data;\n      }\n      texture.wrapS = texData.wrapS !== void 0 ? texData.wrapS : ClampToEdgeWrapping;\n      texture.wrapT = texData.wrapT !== void 0 ? texData.wrapT : ClampToEdgeWrapping;\n      texture.magFilter = texData.magFilter !== void 0 ? texData.magFilter : LinearFilter;\n      texture.minFilter = texData.minFilter !== void 0 ? texData.minFilter : LinearFilter;\n      texture.anisotropy = texData.anisotropy !== void 0 ? texData.anisotropy : 1;\n      if (texData.colorSpace !== void 0) {\n        texture.colorSpace = texData.colorSpace;\n      } else if (texData.encoding !== void 0) {\n        texture.encoding = texData.encoding;\n      }\n      if (texData.flipY !== void 0) {\n        texture.flipY = texData.flipY;\n      }\n      if (texData.format !== void 0) {\n        texture.format = texData.format;\n      }\n      if (texData.type !== void 0) {\n        texture.type = texData.type;\n      }\n      if (texData.mipmaps !== void 0) {\n        texture.mipmaps = texData.mipmaps;\n        texture.minFilter = LinearMipmapLinearFilter;\n      }\n      if (texData.mipmapCount === 1) {\n        texture.minFilter = LinearFilter;\n      }\n      if (texData.generateMipmaps !== void 0) {\n        texture.generateMipmaps = texData.generateMipmaps;\n      }\n      texture.needsUpdate = true;\n      if (onLoad) onLoad(texture, texData);\n    }, onProgress, onError);\n    return texture;\n  }\n}\nclass TextureLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const texture = new Texture();\n    const loader = new ImageLoader(this.manager);\n    loader.setCrossOrigin(this.crossOrigin);\n    loader.setPath(this.path);\n    loader.load(url, function(image) {\n      texture.image = image;\n      texture.needsUpdate = true;\n      if (onLoad !== void 0) {\n        onLoad(texture);\n      }\n    }, onProgress, onError);\n    return texture;\n  }\n}\nclass Light extends Object3D {\n  constructor(color, intensity = 1) {\n    super();\n    this.isLight = true;\n    this.type = \"Light\";\n    this.color = new Color(color);\n    this.intensity = intensity;\n  }\n  dispose() {\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.color.copy(source.color);\n    this.intensity = source.intensity;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.color = this.color.getHex();\n    data.object.intensity = this.intensity;\n    if (this.groundColor !== void 0) data.object.groundColor = this.groundColor.getHex();\n    if (this.distance !== void 0) data.object.distance = this.distance;\n    if (this.angle !== void 0) data.object.angle = this.angle;\n    if (this.decay !== void 0) data.object.decay = this.decay;\n    if (this.penumbra !== void 0) data.object.penumbra = this.penumbra;\n    if (this.shadow !== void 0) data.object.shadow = this.shadow.toJSON();\n    return data;\n  }\n}\nclass HemisphereLight extends Light {\n  constructor(skyColor, groundColor, intensity) {\n    super(skyColor, intensity);\n    this.isHemisphereLight = true;\n    this.type = \"HemisphereLight\";\n    this.position.copy(Object3D.DEFAULT_UP);\n    this.updateMatrix();\n    this.groundColor = new Color(groundColor);\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.groundColor.copy(source.groundColor);\n    return this;\n  }\n}\nconst _projScreenMatrix$1 = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld$1 = /* @__PURE__ */ new Vector3();\nconst _lookTarget$1 = /* @__PURE__ */ new Vector3();\nclass LightShadow {\n  constructor(camera) {\n    this.camera = camera;\n    this.bias = 0;\n    this.normalBias = 0;\n    this.radius = 1;\n    this.blurSamples = 8;\n    this.mapSize = new Vector2(512, 512);\n    this.map = null;\n    this.mapPass = null;\n    this.matrix = new Matrix4();\n    this.autoUpdate = true;\n    this.needsUpdate = false;\n    this._frustum = new Frustum();\n    this._frameExtents = new Vector2(1, 1);\n    this._viewportCount = 1;\n    this._viewports = [\n      new Vector4(0, 0, 1, 1)\n    ];\n  }\n  getViewportCount() {\n    return this._viewportCount;\n  }\n  getFrustum() {\n    return this._frustum;\n  }\n  updateMatrices(light) {\n    const shadowCamera = this.camera;\n    const shadowMatrix = this.matrix;\n    _lightPositionWorld$1.setFromMatrixPosition(light.matrixWorld);\n    shadowCamera.position.copy(_lightPositionWorld$1);\n    _lookTarget$1.setFromMatrixPosition(light.target.matrixWorld);\n    shadowCamera.lookAt(_lookTarget$1);\n    shadowCamera.updateMatrixWorld();\n    _projScreenMatrix$1.multiplyMatrices(shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse);\n    this._frustum.setFromProjectionMatrix(_projScreenMatrix$1);\n    shadowMatrix.set(\n      0.5,\n      0,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0.5,\n      0,\n      0,\n      0.5,\n      0.5,\n      0,\n      0,\n      0,\n      1\n    );\n    shadowMatrix.multiply(_projScreenMatrix$1);\n  }\n  getViewport(viewportIndex) {\n    return this._viewports[viewportIndex];\n  }\n  getFrameExtents() {\n    return this._frameExtents;\n  }\n  dispose() {\n    if (this.map) {\n      this.map.dispose();\n    }\n    if (this.mapPass) {\n      this.mapPass.dispose();\n    }\n  }\n  copy(source) {\n    this.camera = source.camera.clone();\n    this.bias = source.bias;\n    this.radius = source.radius;\n    this.mapSize.copy(source.mapSize);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  toJSON() {\n    const object = {};\n    if (this.bias !== 0) object.bias = this.bias;\n    if (this.normalBias !== 0) object.normalBias = this.normalBias;\n    if (this.radius !== 1) object.radius = this.radius;\n    if (this.mapSize.x !== 512 || this.mapSize.y !== 512) object.mapSize = this.mapSize.toArray();\n    object.camera = this.camera.toJSON(false).object;\n    delete object.camera.matrix;\n    return object;\n  }\n}\nclass SpotLightShadow extends LightShadow {\n  constructor() {\n    super(new PerspectiveCamera(50, 1, 0.5, 500));\n    this.isSpotLightShadow = true;\n    this.focus = 1;\n  }\n  updateMatrices(light) {\n    const camera = this.camera;\n    const fov2 = RAD2DEG * 2 * light.angle * this.focus;\n    const aspect2 = this.mapSize.width / this.mapSize.height;\n    const far = light.distance || camera.far;\n    if (fov2 !== camera.fov || aspect2 !== camera.aspect || far !== camera.far) {\n      camera.fov = fov2;\n      camera.aspect = aspect2;\n      camera.far = far;\n      camera.updateProjectionMatrix();\n    }\n    super.updateMatrices(light);\n  }\n  copy(source) {\n    super.copy(source);\n    this.focus = source.focus;\n    return this;\n  }\n}\nclass SpotLight extends Light {\n  constructor(color, intensity, distance = 0, angle = Math.PI / 3, penumbra = 0, decay = 2) {\n    super(color, intensity);\n    this.isSpotLight = true;\n    this.type = \"SpotLight\";\n    this.position.copy(Object3D.DEFAULT_UP);\n    this.updateMatrix();\n    this.target = new Object3D();\n    this.distance = distance;\n    this.angle = angle;\n    this.penumbra = penumbra;\n    this.decay = decay;\n    this.map = null;\n    this.shadow = new SpotLightShadow();\n  }\n  get power() {\n    return this.intensity * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / Math.PI;\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.distance = source.distance;\n    this.angle = source.angle;\n    this.penumbra = source.penumbra;\n    this.decay = source.decay;\n    this.target = source.target.clone();\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n}\nconst _projScreenMatrix = /* @__PURE__ */ new Matrix4();\nconst _lightPositionWorld = /* @__PURE__ */ new Vector3();\nconst _lookTarget = /* @__PURE__ */ new Vector3();\nclass PointLightShadow extends LightShadow {\n  constructor() {\n    super(new PerspectiveCamera(90, 1, 0.5, 500));\n    this.isPointLightShadow = true;\n    this._frameExtents = new Vector2(4, 2);\n    this._viewportCount = 6;\n    this._viewports = [\n      // These viewports map a cube-map onto a 2D texture with the\n      // following orientation:\n      //\n      //  xzXZ\n      //   y Y\n      //\n      // X - Positive x direction\n      // x - Negative x direction\n      // Y - Positive y direction\n      // y - Negative y direction\n      // Z - Positive z direction\n      // z - Negative z direction\n      // positive X\n      new Vector4(2, 1, 1, 1),\n      // negative X\n      new Vector4(0, 1, 1, 1),\n      // positive Z\n      new Vector4(3, 1, 1, 1),\n      // negative Z\n      new Vector4(1, 1, 1, 1),\n      // positive Y\n      new Vector4(3, 0, 1, 1),\n      // negative Y\n      new Vector4(1, 0, 1, 1)\n    ];\n    this._cubeDirections = [\n      new Vector3(1, 0, 0),\n      new Vector3(-1, 0, 0),\n      new Vector3(0, 0, 1),\n      new Vector3(0, 0, -1),\n      new Vector3(0, 1, 0),\n      new Vector3(0, -1, 0)\n    ];\n    this._cubeUps = [\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 1, 0),\n      new Vector3(0, 0, 1),\n      new Vector3(0, 0, -1)\n    ];\n  }\n  updateMatrices(light, viewportIndex = 0) {\n    const camera = this.camera;\n    const shadowMatrix = this.matrix;\n    const far = light.distance || camera.far;\n    if (far !== camera.far) {\n      camera.far = far;\n      camera.updateProjectionMatrix();\n    }\n    _lightPositionWorld.setFromMatrixPosition(light.matrixWorld);\n    camera.position.copy(_lightPositionWorld);\n    _lookTarget.copy(camera.position);\n    _lookTarget.add(this._cubeDirections[viewportIndex]);\n    camera.up.copy(this._cubeUps[viewportIndex]);\n    camera.lookAt(_lookTarget);\n    camera.updateMatrixWorld();\n    shadowMatrix.makeTranslation(-_lightPositionWorld.x, -_lightPositionWorld.y, -_lightPositionWorld.z);\n    _projScreenMatrix.multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\n    this._frustum.setFromProjectionMatrix(_projScreenMatrix);\n  }\n}\nclass PointLight extends Light {\n  constructor(color, intensity, distance = 0, decay = 2) {\n    super(color, intensity);\n    this.isPointLight = true;\n    this.type = \"PointLight\";\n    this.distance = distance;\n    this.decay = decay;\n    this.shadow = new PointLightShadow();\n  }\n  get power() {\n    return this.intensity * 4 * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / (4 * Math.PI);\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.distance = source.distance;\n    this.decay = source.decay;\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n}\nclass DirectionalLightShadow extends LightShadow {\n  constructor() {\n    super(new OrthographicCamera(-5, 5, 5, -5, 0.5, 500));\n    this.isDirectionalLightShadow = true;\n  }\n}\nclass DirectionalLight extends Light {\n  constructor(color, intensity) {\n    super(color, intensity);\n    this.isDirectionalLight = true;\n    this.type = \"DirectionalLight\";\n    this.position.copy(Object3D.DEFAULT_UP);\n    this.updateMatrix();\n    this.target = new Object3D();\n    this.shadow = new DirectionalLightShadow();\n  }\n  dispose() {\n    this.shadow.dispose();\n  }\n  copy(source) {\n    super.copy(source);\n    this.target = source.target.clone();\n    this.shadow = source.shadow.clone();\n    return this;\n  }\n}\nclass AmbientLight extends Light {\n  constructor(color, intensity) {\n    super(color, intensity);\n    this.isAmbientLight = true;\n    this.type = \"AmbientLight\";\n  }\n}\nclass RectAreaLight extends Light {\n  constructor(color, intensity, width = 10, height = 10) {\n    super(color, intensity);\n    this.isRectAreaLight = true;\n    this.type = \"RectAreaLight\";\n    this.width = width;\n    this.height = height;\n  }\n  get power() {\n    return this.intensity * this.width * this.height * Math.PI;\n  }\n  set power(power) {\n    this.intensity = power / (this.width * this.height * Math.PI);\n  }\n  copy(source) {\n    super.copy(source);\n    this.width = source.width;\n    this.height = source.height;\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.width = this.width;\n    data.object.height = this.height;\n    return data;\n  }\n}\nclass SphericalHarmonics3 {\n  constructor() {\n    this.isSphericalHarmonics3 = true;\n    this.coefficients = [];\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.coefficients.push(new Vector3());\n    }\n  }\n  set(coefficients) {\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.coefficients[i2].copy(coefficients[i2]);\n    }\n    return this;\n  }\n  zero() {\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.coefficients[i2].set(0, 0, 0);\n    }\n    return this;\n  }\n  // get the radiance in the direction of the normal\n  // target is a Vector3\n  getAt(normal, target) {\n    const x2 = normal.x, y2 = normal.y, z2 = normal.z;\n    const coeff = this.coefficients;\n    target.copy(coeff[0]).multiplyScalar(0.282095);\n    target.addScaledVector(coeff[1], 0.488603 * y2);\n    target.addScaledVector(coeff[2], 0.488603 * z2);\n    target.addScaledVector(coeff[3], 0.488603 * x2);\n    target.addScaledVector(coeff[4], 1.092548 * (x2 * y2));\n    target.addScaledVector(coeff[5], 1.092548 * (y2 * z2));\n    target.addScaledVector(coeff[6], 0.315392 * (3 * z2 * z2 - 1));\n    target.addScaledVector(coeff[7], 1.092548 * (x2 * z2));\n    target.addScaledVector(coeff[8], 0.546274 * (x2 * x2 - y2 * y2));\n    return target;\n  }\n  // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\n  // target is a Vector3\n  // https://graphics.stanford.edu/papers/envmap/envmap.pdf\n  getIrradianceAt(normal, target) {\n    const x2 = normal.x, y2 = normal.y, z2 = normal.z;\n    const coeff = this.coefficients;\n    target.copy(coeff[0]).multiplyScalar(0.886227);\n    target.addScaledVector(coeff[1], 2 * 0.511664 * y2);\n    target.addScaledVector(coeff[2], 2 * 0.511664 * z2);\n    target.addScaledVector(coeff[3], 2 * 0.511664 * x2);\n    target.addScaledVector(coeff[4], 2 * 0.429043 * x2 * y2);\n    target.addScaledVector(coeff[5], 2 * 0.429043 * y2 * z2);\n    target.addScaledVector(coeff[6], 0.743125 * z2 * z2 - 0.247708);\n    target.addScaledVector(coeff[7], 2 * 0.429043 * x2 * z2);\n    target.addScaledVector(coeff[8], 0.429043 * (x2 * x2 - y2 * y2));\n    return target;\n  }\n  add(sh) {\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.coefficients[i2].add(sh.coefficients[i2]);\n    }\n    return this;\n  }\n  addScaledSH(sh, s2) {\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.coefficients[i2].addScaledVector(sh.coefficients[i2], s2);\n    }\n    return this;\n  }\n  scale(s2) {\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.coefficients[i2].multiplyScalar(s2);\n    }\n    return this;\n  }\n  lerp(sh, alpha) {\n    for (let i2 = 0; i2 < 9; i2++) {\n      this.coefficients[i2].lerp(sh.coefficients[i2], alpha);\n    }\n    return this;\n  }\n  equals(sh) {\n    for (let i2 = 0; i2 < 9; i2++) {\n      if (!this.coefficients[i2].equals(sh.coefficients[i2])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  copy(sh) {\n    return this.set(sh.coefficients);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  fromArray(array, offset = 0) {\n    const coefficients = this.coefficients;\n    for (let i2 = 0; i2 < 9; i2++) {\n      coefficients[i2].fromArray(array, offset + i2 * 3);\n    }\n    return this;\n  }\n  toArray(array = [], offset = 0) {\n    const coefficients = this.coefficients;\n    for (let i2 = 0; i2 < 9; i2++) {\n      coefficients[i2].toArray(array, offset + i2 * 3);\n    }\n    return array;\n  }\n  // evaluate the basis functions\n  // shBasis is an Array[ 9 ]\n  static getBasisAt(normal, shBasis) {\n    const x2 = normal.x, y2 = normal.y, z2 = normal.z;\n    shBasis[0] = 0.282095;\n    shBasis[1] = 0.488603 * y2;\n    shBasis[2] = 0.488603 * z2;\n    shBasis[3] = 0.488603 * x2;\n    shBasis[4] = 1.092548 * x2 * y2;\n    shBasis[5] = 1.092548 * y2 * z2;\n    shBasis[6] = 0.315392 * (3 * z2 * z2 - 1);\n    shBasis[7] = 1.092548 * x2 * z2;\n    shBasis[8] = 0.546274 * (x2 * x2 - y2 * y2);\n  }\n}\nclass LightProbe extends Light {\n  constructor(sh = new SphericalHarmonics3(), intensity = 1) {\n    super(void 0, intensity);\n    this.isLightProbe = true;\n    this.sh = sh;\n  }\n  copy(source) {\n    super.copy(source);\n    this.sh.copy(source.sh);\n    return this;\n  }\n  fromJSON(json) {\n    this.intensity = json.intensity;\n    this.sh.fromArray(json.sh);\n    return this;\n  }\n  toJSON(meta) {\n    const data = super.toJSON(meta);\n    data.object.sh = this.sh.toArray();\n    return data;\n  }\n}\nclass MaterialLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.textures = {};\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(scope.manager);\n    loader.setPath(scope.path);\n    loader.setRequestHeader(scope.requestHeader);\n    loader.setWithCredentials(scope.withCredentials);\n    loader.load(url, function(text) {\n      try {\n        onLoad(scope.parse(JSON.parse(text)));\n      } catch (e2) {\n        if (onError) {\n          onError(e2);\n        } else {\n          console.error(e2);\n        }\n        scope.manager.itemError(url);\n      }\n    }, onProgress, onError);\n  }\n  parse(json) {\n    const textures = this.textures;\n    function getTexture(name) {\n      if (textures[name] === void 0) {\n        console.warn(\"THREE.MaterialLoader: Undefined texture\", name);\n      }\n      return textures[name];\n    }\n    const material = MaterialLoader.createMaterialFromType(json.type);\n    if (json.uuid !== void 0) material.uuid = json.uuid;\n    if (json.name !== void 0) material.name = json.name;\n    if (json.color !== void 0 && material.color !== void 0) material.color.setHex(json.color);\n    if (json.roughness !== void 0) material.roughness = json.roughness;\n    if (json.metalness !== void 0) material.metalness = json.metalness;\n    if (json.sheen !== void 0) material.sheen = json.sheen;\n    if (json.sheenColor !== void 0) material.sheenColor = new Color().setHex(json.sheenColor);\n    if (json.sheenRoughness !== void 0) material.sheenRoughness = json.sheenRoughness;\n    if (json.emissive !== void 0 && material.emissive !== void 0) material.emissive.setHex(json.emissive);\n    if (json.specular !== void 0 && material.specular !== void 0) material.specular.setHex(json.specular);\n    if (json.specularIntensity !== void 0) material.specularIntensity = json.specularIntensity;\n    if (json.specularColor !== void 0 && material.specularColor !== void 0) material.specularColor.setHex(json.specularColor);\n    if (json.shininess !== void 0) material.shininess = json.shininess;\n    if (json.clearcoat !== void 0) material.clearcoat = json.clearcoat;\n    if (json.clearcoatRoughness !== void 0) material.clearcoatRoughness = json.clearcoatRoughness;\n    if (json.iridescence !== void 0) material.iridescence = json.iridescence;\n    if (json.iridescenceIOR !== void 0) material.iridescenceIOR = json.iridescenceIOR;\n    if (json.iridescenceThicknessRange !== void 0) material.iridescenceThicknessRange = json.iridescenceThicknessRange;\n    if (json.transmission !== void 0) material.transmission = json.transmission;\n    if (json.thickness !== void 0) material.thickness = json.thickness;\n    if (json.attenuationDistance !== void 0) material.attenuationDistance = json.attenuationDistance;\n    if (json.attenuationColor !== void 0 && material.attenuationColor !== void 0) material.attenuationColor.setHex(json.attenuationColor);\n    if (json.anisotropy !== void 0) material.anisotropy = json.anisotropy;\n    if (json.anisotropyRotation !== void 0) material.anisotropyRotation = json.anisotropyRotation;\n    if (json.fog !== void 0) material.fog = json.fog;\n    if (json.flatShading !== void 0) material.flatShading = json.flatShading;\n    if (json.blending !== void 0) material.blending = json.blending;\n    if (json.combine !== void 0) material.combine = json.combine;\n    if (json.side !== void 0) material.side = json.side;\n    if (json.shadowSide !== void 0) material.shadowSide = json.shadowSide;\n    if (json.opacity !== void 0) material.opacity = json.opacity;\n    if (json.transparent !== void 0) material.transparent = json.transparent;\n    if (json.alphaTest !== void 0) material.alphaTest = json.alphaTest;\n    if (json.alphaHash !== void 0) material.alphaHash = json.alphaHash;\n    if (json.depthFunc !== void 0) material.depthFunc = json.depthFunc;\n    if (json.depthTest !== void 0) material.depthTest = json.depthTest;\n    if (json.depthWrite !== void 0) material.depthWrite = json.depthWrite;\n    if (json.colorWrite !== void 0) material.colorWrite = json.colorWrite;\n    if (json.blendSrc !== void 0) material.blendSrc = json.blendSrc;\n    if (json.blendDst !== void 0) material.blendDst = json.blendDst;\n    if (json.blendEquation !== void 0) material.blendEquation = json.blendEquation;\n    if (json.blendSrcAlpha !== void 0) material.blendSrcAlpha = json.blendSrcAlpha;\n    if (json.blendDstAlpha !== void 0) material.blendDstAlpha = json.blendDstAlpha;\n    if (json.blendEquationAlpha !== void 0) material.blendEquationAlpha = json.blendEquationAlpha;\n    if (json.blendColor !== void 0 && material.blendColor !== void 0) material.blendColor.setHex(json.blendColor);\n    if (json.blendAlpha !== void 0) material.blendAlpha = json.blendAlpha;\n    if (json.stencilWriteMask !== void 0) material.stencilWriteMask = json.stencilWriteMask;\n    if (json.stencilFunc !== void 0) material.stencilFunc = json.stencilFunc;\n    if (json.stencilRef !== void 0) material.stencilRef = json.stencilRef;\n    if (json.stencilFuncMask !== void 0) material.stencilFuncMask = json.stencilFuncMask;\n    if (json.stencilFail !== void 0) material.stencilFail = json.stencilFail;\n    if (json.stencilZFail !== void 0) material.stencilZFail = json.stencilZFail;\n    if (json.stencilZPass !== void 0) material.stencilZPass = json.stencilZPass;\n    if (json.stencilWrite !== void 0) material.stencilWrite = json.stencilWrite;\n    if (json.wireframe !== void 0) material.wireframe = json.wireframe;\n    if (json.wireframeLinewidth !== void 0) material.wireframeLinewidth = json.wireframeLinewidth;\n    if (json.wireframeLinecap !== void 0) material.wireframeLinecap = json.wireframeLinecap;\n    if (json.wireframeLinejoin !== void 0) material.wireframeLinejoin = json.wireframeLinejoin;\n    if (json.rotation !== void 0) material.rotation = json.rotation;\n    if (json.linewidth !== void 0) material.linewidth = json.linewidth;\n    if (json.dashSize !== void 0) material.dashSize = json.dashSize;\n    if (json.gapSize !== void 0) material.gapSize = json.gapSize;\n    if (json.scale !== void 0) material.scale = json.scale;\n    if (json.polygonOffset !== void 0) material.polygonOffset = json.polygonOffset;\n    if (json.polygonOffsetFactor !== void 0) material.polygonOffsetFactor = json.polygonOffsetFactor;\n    if (json.polygonOffsetUnits !== void 0) material.polygonOffsetUnits = json.polygonOffsetUnits;\n    if (json.dithering !== void 0) material.dithering = json.dithering;\n    if (json.alphaToCoverage !== void 0) material.alphaToCoverage = json.alphaToCoverage;\n    if (json.premultipliedAlpha !== void 0) material.premultipliedAlpha = json.premultipliedAlpha;\n    if (json.forceSinglePass !== void 0) material.forceSinglePass = json.forceSinglePass;\n    if (json.visible !== void 0) material.visible = json.visible;\n    if (json.toneMapped !== void 0) material.toneMapped = json.toneMapped;\n    if (json.userData !== void 0) material.userData = json.userData;\n    if (json.vertexColors !== void 0) {\n      if (typeof json.vertexColors === \"number\") {\n        material.vertexColors = json.vertexColors > 0 ? true : false;\n      } else {\n        material.vertexColors = json.vertexColors;\n      }\n    }\n    if (json.uniforms !== void 0) {\n      for (const name in json.uniforms) {\n        const uniform = json.uniforms[name];\n        material.uniforms[name] = {};\n        switch (uniform.type) {\n          case \"t\":\n            material.uniforms[name].value = getTexture(uniform.value);\n            break;\n          case \"c\":\n            material.uniforms[name].value = new Color().setHex(uniform.value);\n            break;\n          case \"v2\":\n            material.uniforms[name].value = new Vector2().fromArray(uniform.value);\n            break;\n          case \"v3\":\n            material.uniforms[name].value = new Vector3().fromArray(uniform.value);\n            break;\n          case \"v4\":\n            material.uniforms[name].value = new Vector4().fromArray(uniform.value);\n            break;\n          case \"m3\":\n            material.uniforms[name].value = new Matrix3().fromArray(uniform.value);\n            break;\n          case \"m4\":\n            material.uniforms[name].value = new Matrix4().fromArray(uniform.value);\n            break;\n          default:\n            material.uniforms[name].value = uniform.value;\n        }\n      }\n    }\n    if (json.defines !== void 0) material.defines = json.defines;\n    if (json.vertexShader !== void 0) material.vertexShader = json.vertexShader;\n    if (json.fragmentShader !== void 0) material.fragmentShader = json.fragmentShader;\n    if (json.glslVersion !== void 0) material.glslVersion = json.glslVersion;\n    if (json.extensions !== void 0) {\n      for (const key in json.extensions) {\n        material.extensions[key] = json.extensions[key];\n      }\n    }\n    if (json.lights !== void 0) material.lights = json.lights;\n    if (json.clipping !== void 0) material.clipping = json.clipping;\n    if (json.size !== void 0) material.size = json.size;\n    if (json.sizeAttenuation !== void 0) material.sizeAttenuation = json.sizeAttenuation;\n    if (json.map !== void 0) material.map = getTexture(json.map);\n    if (json.matcap !== void 0) material.matcap = getTexture(json.matcap);\n    if (json.alphaMap !== void 0) material.alphaMap = getTexture(json.alphaMap);\n    if (json.bumpMap !== void 0) material.bumpMap = getTexture(json.bumpMap);\n    if (json.bumpScale !== void 0) material.bumpScale = json.bumpScale;\n    if (json.normalMap !== void 0) material.normalMap = getTexture(json.normalMap);\n    if (json.normalMapType !== void 0) material.normalMapType = json.normalMapType;\n    if (json.normalScale !== void 0) {\n      let normalScale = json.normalScale;\n      if (Array.isArray(normalScale) === false) {\n        normalScale = [normalScale, normalScale];\n      }\n      material.normalScale = new Vector2().fromArray(normalScale);\n    }\n    if (json.displacementMap !== void 0) material.displacementMap = getTexture(json.displacementMap);\n    if (json.displacementScale !== void 0) material.displacementScale = json.displacementScale;\n    if (json.displacementBias !== void 0) material.displacementBias = json.displacementBias;\n    if (json.roughnessMap !== void 0) material.roughnessMap = getTexture(json.roughnessMap);\n    if (json.metalnessMap !== void 0) material.metalnessMap = getTexture(json.metalnessMap);\n    if (json.emissiveMap !== void 0) material.emissiveMap = getTexture(json.emissiveMap);\n    if (json.emissiveIntensity !== void 0) material.emissiveIntensity = json.emissiveIntensity;\n    if (json.specularMap !== void 0) material.specularMap = getTexture(json.specularMap);\n    if (json.specularIntensityMap !== void 0) material.specularIntensityMap = getTexture(json.specularIntensityMap);\n    if (json.specularColorMap !== void 0) material.specularColorMap = getTexture(json.specularColorMap);\n    if (json.envMap !== void 0) material.envMap = getTexture(json.envMap);\n    if (json.envMapIntensity !== void 0) material.envMapIntensity = json.envMapIntensity;\n    if (json.reflectivity !== void 0) material.reflectivity = json.reflectivity;\n    if (json.refractionRatio !== void 0) material.refractionRatio = json.refractionRatio;\n    if (json.lightMap !== void 0) material.lightMap = getTexture(json.lightMap);\n    if (json.lightMapIntensity !== void 0) material.lightMapIntensity = json.lightMapIntensity;\n    if (json.aoMap !== void 0) material.aoMap = getTexture(json.aoMap);\n    if (json.aoMapIntensity !== void 0) material.aoMapIntensity = json.aoMapIntensity;\n    if (json.gradientMap !== void 0) material.gradientMap = getTexture(json.gradientMap);\n    if (json.clearcoatMap !== void 0) material.clearcoatMap = getTexture(json.clearcoatMap);\n    if (json.clearcoatRoughnessMap !== void 0) material.clearcoatRoughnessMap = getTexture(json.clearcoatRoughnessMap);\n    if (json.clearcoatNormalMap !== void 0) material.clearcoatNormalMap = getTexture(json.clearcoatNormalMap);\n    if (json.clearcoatNormalScale !== void 0) material.clearcoatNormalScale = new Vector2().fromArray(json.clearcoatNormalScale);\n    if (json.iridescenceMap !== void 0) material.iridescenceMap = getTexture(json.iridescenceMap);\n    if (json.iridescenceThicknessMap !== void 0) material.iridescenceThicknessMap = getTexture(json.iridescenceThicknessMap);\n    if (json.transmissionMap !== void 0) material.transmissionMap = getTexture(json.transmissionMap);\n    if (json.thicknessMap !== void 0) material.thicknessMap = getTexture(json.thicknessMap);\n    if (json.anisotropyMap !== void 0) material.anisotropyMap = getTexture(json.anisotropyMap);\n    if (json.sheenColorMap !== void 0) material.sheenColorMap = getTexture(json.sheenColorMap);\n    if (json.sheenRoughnessMap !== void 0) material.sheenRoughnessMap = getTexture(json.sheenRoughnessMap);\n    return material;\n  }\n  setTextures(value) {\n    this.textures = value;\n    return this;\n  }\n  static createMaterialFromType(type) {\n    const materialLib = {\n      ShadowMaterial,\n      SpriteMaterial,\n      RawShaderMaterial,\n      ShaderMaterial,\n      PointsMaterial,\n      MeshPhysicalMaterial,\n      MeshStandardMaterial,\n      MeshPhongMaterial,\n      MeshToonMaterial,\n      MeshNormalMaterial,\n      MeshLambertMaterial,\n      MeshDepthMaterial,\n      MeshDistanceMaterial,\n      MeshBasicMaterial,\n      MeshMatcapMaterial,\n      LineDashedMaterial,\n      LineBasicMaterial,\n      Material\n    };\n    return new materialLib[type]();\n  }\n}\nclass LoaderUtils {\n  static decodeText(array) {\n    if (typeof TextDecoder !== \"undefined\") {\n      return new TextDecoder().decode(array);\n    }\n    let s2 = \"\";\n    for (let i2 = 0, il = array.length; i2 < il; i2++) {\n      s2 += String.fromCharCode(array[i2]);\n    }\n    try {\n      return decodeURIComponent(escape(s2));\n    } catch (e2) {\n      return s2;\n    }\n  }\n  static extractUrlBase(url) {\n    const index = url.lastIndexOf(\"/\");\n    if (index === -1) return \"./\";\n    return url.slice(0, index + 1);\n  }\n  static resolveURL(url, path) {\n    if (typeof url !== \"string\" || url === \"\") return \"\";\n    if (/^https?:\\/\\//i.test(path) && /^\\//.test(url)) {\n      path = path.replace(/(^https?:\\/\\/[^\\/]+).*/i, \"$1\");\n    }\n    if (/^(https?:)?\\/\\//i.test(url)) return url;\n    if (/^data:.*,.*$/i.test(url)) return url;\n    if (/^blob:.*$/i.test(url)) return url;\n    return path + url;\n  }\n}\nclass InstancedBufferGeometry extends BufferGeometry {\n  constructor() {\n    super();\n    this.isInstancedBufferGeometry = true;\n    this.type = \"InstancedBufferGeometry\";\n    this.instanceCount = Infinity;\n  }\n  copy(source) {\n    super.copy(source);\n    this.instanceCount = source.instanceCount;\n    return this;\n  }\n  toJSON() {\n    const data = super.toJSON();\n    data.instanceCount = this.instanceCount;\n    data.isInstancedBufferGeometry = true;\n    return data;\n  }\n}\nclass BufferGeometryLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(scope.manager);\n    loader.setPath(scope.path);\n    loader.setRequestHeader(scope.requestHeader);\n    loader.setWithCredentials(scope.withCredentials);\n    loader.load(url, function(text) {\n      try {\n        onLoad(scope.parse(JSON.parse(text)));\n      } catch (e2) {\n        if (onError) {\n          onError(e2);\n        } else {\n          console.error(e2);\n        }\n        scope.manager.itemError(url);\n      }\n    }, onProgress, onError);\n  }\n  parse(json) {\n    const interleavedBufferMap = {};\n    const arrayBufferMap = {};\n    function getInterleavedBuffer(json2, uuid) {\n      if (interleavedBufferMap[uuid] !== void 0) return interleavedBufferMap[uuid];\n      const interleavedBuffers = json2.interleavedBuffers;\n      const interleavedBuffer = interleavedBuffers[uuid];\n      const buffer = getArrayBuffer(json2, interleavedBuffer.buffer);\n      const array = getTypedArray(interleavedBuffer.type, buffer);\n      const ib = new InterleavedBuffer(array, interleavedBuffer.stride);\n      ib.uuid = interleavedBuffer.uuid;\n      interleavedBufferMap[uuid] = ib;\n      return ib;\n    }\n    function getArrayBuffer(json2, uuid) {\n      if (arrayBufferMap[uuid] !== void 0) return arrayBufferMap[uuid];\n      const arrayBuffers = json2.arrayBuffers;\n      const arrayBuffer = arrayBuffers[uuid];\n      const ab = new Uint32Array(arrayBuffer).buffer;\n      arrayBufferMap[uuid] = ab;\n      return ab;\n    }\n    const geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\n    const index = json.data.index;\n    if (index !== void 0) {\n      const typedArray = getTypedArray(index.type, index.array);\n      geometry.setIndex(new BufferAttribute(typedArray, 1));\n    }\n    const attributes = json.data.attributes;\n    for (const key in attributes) {\n      const attribute = attributes[key];\n      let bufferAttribute;\n      if (attribute.isInterleavedBufferAttribute) {\n        const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n        bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n      } else {\n        const typedArray = getTypedArray(attribute.type, attribute.array);\n        const bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\n        bufferAttribute = new bufferAttributeConstr(typedArray, attribute.itemSize, attribute.normalized);\n      }\n      if (attribute.name !== void 0) bufferAttribute.name = attribute.name;\n      if (attribute.usage !== void 0) bufferAttribute.setUsage(attribute.usage);\n      geometry.setAttribute(key, bufferAttribute);\n    }\n    const morphAttributes = json.data.morphAttributes;\n    if (morphAttributes) {\n      for (const key in morphAttributes) {\n        const attributeArray = morphAttributes[key];\n        const array = [];\n        for (let i2 = 0, il = attributeArray.length; i2 < il; i2++) {\n          const attribute = attributeArray[i2];\n          let bufferAttribute;\n          if (attribute.isInterleavedBufferAttribute) {\n            const interleavedBuffer = getInterleavedBuffer(json.data, attribute.data);\n            bufferAttribute = new InterleavedBufferAttribute(interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized);\n          } else {\n            const typedArray = getTypedArray(attribute.type, attribute.array);\n            bufferAttribute = new BufferAttribute(typedArray, attribute.itemSize, attribute.normalized);\n          }\n          if (attribute.name !== void 0) bufferAttribute.name = attribute.name;\n          array.push(bufferAttribute);\n        }\n        geometry.morphAttributes[key] = array;\n      }\n    }\n    const morphTargetsRelative = json.data.morphTargetsRelative;\n    if (morphTargetsRelative) {\n      geometry.morphTargetsRelative = true;\n    }\n    const groups = json.data.groups || json.data.drawcalls || json.data.offsets;\n    if (groups !== void 0) {\n      for (let i2 = 0, n2 = groups.length; i2 !== n2; ++i2) {\n        const group = groups[i2];\n        geometry.addGroup(group.start, group.count, group.materialIndex);\n      }\n    }\n    const boundingSphere = json.data.boundingSphere;\n    if (boundingSphere !== void 0) {\n      const center = new Vector3();\n      if (boundingSphere.center !== void 0) {\n        center.fromArray(boundingSphere.center);\n      }\n      geometry.boundingSphere = new Sphere(center, boundingSphere.radius);\n    }\n    if (json.name) geometry.name = json.name;\n    if (json.userData) geometry.userData = json.userData;\n    return geometry;\n  }\n}\nclass ObjectLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n    this.resourcePath = this.resourcePath || path;\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, function(text) {\n      let json = null;\n      try {\n        json = JSON.parse(text);\n      } catch (error2) {\n        if (onError !== void 0) onError(error2);\n        console.error(\"THREE:ObjectLoader: Can't parse \" + url + \".\", error2.message);\n        return;\n      }\n      const metadata = json.metadata;\n      if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n        if (onError !== void 0) onError(new Error(\"THREE.ObjectLoader: Can't load \" + url));\n        console.error(\"THREE.ObjectLoader: Can't load \" + url);\n        return;\n      }\n      scope.parse(json, onLoad);\n    }, onProgress, onError);\n  }\n  async loadAsync(url, onProgress) {\n    const scope = this;\n    const path = this.path === \"\" ? LoaderUtils.extractUrlBase(url) : this.path;\n    this.resourcePath = this.resourcePath || path;\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    const text = await loader.loadAsync(url, onProgress);\n    const json = JSON.parse(text);\n    const metadata = json.metadata;\n    if (metadata === void 0 || metadata.type === void 0 || metadata.type.toLowerCase() === \"geometry\") {\n      throw new Error(\"THREE.ObjectLoader: Can't load \" + url);\n    }\n    return await scope.parseAsync(json);\n  }\n  parse(json, onLoad) {\n    const animations = this.parseAnimations(json.animations);\n    const shapes = this.parseShapes(json.shapes);\n    const geometries = this.parseGeometries(json.geometries, shapes);\n    const images = this.parseImages(json.images, function() {\n      if (onLoad !== void 0) onLoad(object);\n    });\n    const textures = this.parseTextures(json.textures, images);\n    const materials = this.parseMaterials(json.materials, textures);\n    const object = this.parseObject(json.object, geometries, materials, textures, animations);\n    const skeletons = this.parseSkeletons(json.skeletons, object);\n    this.bindSkeletons(object, skeletons);\n    if (onLoad !== void 0) {\n      let hasImages = false;\n      for (const uuid in images) {\n        if (images[uuid].data instanceof HTMLImageElement) {\n          hasImages = true;\n          break;\n        }\n      }\n      if (hasImages === false) onLoad(object);\n    }\n    return object;\n  }\n  async parseAsync(json) {\n    const animations = this.parseAnimations(json.animations);\n    const shapes = this.parseShapes(json.shapes);\n    const geometries = this.parseGeometries(json.geometries, shapes);\n    const images = await this.parseImagesAsync(json.images);\n    const textures = this.parseTextures(json.textures, images);\n    const materials = this.parseMaterials(json.materials, textures);\n    const object = this.parseObject(json.object, geometries, materials, textures, animations);\n    const skeletons = this.parseSkeletons(json.skeletons, object);\n    this.bindSkeletons(object, skeletons);\n    return object;\n  }\n  parseShapes(json) {\n    const shapes = {};\n    if (json !== void 0) {\n      for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n        const shape = new Shape().fromJSON(json[i2]);\n        shapes[shape.uuid] = shape;\n      }\n    }\n    return shapes;\n  }\n  parseSkeletons(json, object) {\n    const skeletons = {};\n    const bones = {};\n    object.traverse(function(child) {\n      if (child.isBone) bones[child.uuid] = child;\n    });\n    if (json !== void 0) {\n      for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n        const skeleton = new Skeleton().fromJSON(json[i2], bones);\n        skeletons[skeleton.uuid] = skeleton;\n      }\n    }\n    return skeletons;\n  }\n  parseGeometries(json, shapes) {\n    const geometries = {};\n    if (json !== void 0) {\n      const bufferGeometryLoader = new BufferGeometryLoader();\n      for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n        let geometry;\n        const data = json[i2];\n        switch (data.type) {\n          case \"BufferGeometry\":\n          case \"InstancedBufferGeometry\":\n            geometry = bufferGeometryLoader.parse(data);\n            break;\n          default:\n            if (data.type in Geometries) {\n              geometry = Geometries[data.type].fromJSON(data, shapes);\n            } else {\n              console.warn(`THREE.ObjectLoader: Unsupported geometry type \"${data.type}\"`);\n            }\n        }\n        geometry.uuid = data.uuid;\n        if (data.name !== void 0) geometry.name = data.name;\n        if (data.userData !== void 0) geometry.userData = data.userData;\n        geometries[data.uuid] = geometry;\n      }\n    }\n    return geometries;\n  }\n  parseMaterials(json, textures) {\n    const cache = {};\n    const materials = {};\n    if (json !== void 0) {\n      const loader = new MaterialLoader();\n      loader.setTextures(textures);\n      for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n        const data = json[i2];\n        if (cache[data.uuid] === void 0) {\n          cache[data.uuid] = loader.parse(data);\n        }\n        materials[data.uuid] = cache[data.uuid];\n      }\n    }\n    return materials;\n  }\n  parseAnimations(json) {\n    const animations = {};\n    if (json !== void 0) {\n      for (let i2 = 0; i2 < json.length; i2++) {\n        const data = json[i2];\n        const clip = AnimationClip.parse(data);\n        animations[clip.uuid] = clip;\n      }\n    }\n    return animations;\n  }\n  parseImages(json, onLoad) {\n    const scope = this;\n    const images = {};\n    let loader;\n    function loadImage(url) {\n      scope.manager.itemStart(url);\n      return loader.load(url, function() {\n        scope.manager.itemEnd(url);\n      }, void 0, function() {\n        scope.manager.itemError(url);\n        scope.manager.itemEnd(url);\n      });\n    }\n    function deserializeImage(image) {\n      if (typeof image === \"string\") {\n        const url = image;\n        const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n        return loadImage(path);\n      } else {\n        if (image.data) {\n          return {\n            data: getTypedArray(image.type, image.data),\n            width: image.width,\n            height: image.height\n          };\n        } else {\n          return null;\n        }\n      }\n    }\n    if (json !== void 0 && json.length > 0) {\n      const manager = new LoadingManager(onLoad);\n      loader = new ImageLoader(manager);\n      loader.setCrossOrigin(this.crossOrigin);\n      for (let i2 = 0, il = json.length; i2 < il; i2++) {\n        const image = json[i2];\n        const url = image.url;\n        if (Array.isArray(url)) {\n          const imageArray = [];\n          for (let j2 = 0, jl = url.length; j2 < jl; j2++) {\n            const currentUrl = url[j2];\n            const deserializedImage = deserializeImage(currentUrl);\n            if (deserializedImage !== null) {\n              if (deserializedImage instanceof HTMLImageElement) {\n                imageArray.push(deserializedImage);\n              } else {\n                imageArray.push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n              }\n            }\n          }\n          images[image.uuid] = new Source(imageArray);\n        } else {\n          const deserializedImage = deserializeImage(image.url);\n          images[image.uuid] = new Source(deserializedImage);\n        }\n      }\n    }\n    return images;\n  }\n  async parseImagesAsync(json) {\n    const scope = this;\n    const images = {};\n    let loader;\n    async function deserializeImage(image) {\n      if (typeof image === \"string\") {\n        const url = image;\n        const path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test(url) ? url : scope.resourcePath + url;\n        return await loader.loadAsync(path);\n      } else {\n        if (image.data) {\n          return {\n            data: getTypedArray(image.type, image.data),\n            width: image.width,\n            height: image.height\n          };\n        } else {\n          return null;\n        }\n      }\n    }\n    if (json !== void 0 && json.length > 0) {\n      loader = new ImageLoader(this.manager);\n      loader.setCrossOrigin(this.crossOrigin);\n      for (let i2 = 0, il = json.length; i2 < il; i2++) {\n        const image = json[i2];\n        const url = image.url;\n        if (Array.isArray(url)) {\n          const imageArray = [];\n          for (let j2 = 0, jl = url.length; j2 < jl; j2++) {\n            const currentUrl = url[j2];\n            const deserializedImage = await deserializeImage(currentUrl);\n            if (deserializedImage !== null) {\n              if (deserializedImage instanceof HTMLImageElement) {\n                imageArray.push(deserializedImage);\n              } else {\n                imageArray.push(new DataTexture(deserializedImage.data, deserializedImage.width, deserializedImage.height));\n              }\n            }\n          }\n          images[image.uuid] = new Source(imageArray);\n        } else {\n          const deserializedImage = await deserializeImage(image.url);\n          images[image.uuid] = new Source(deserializedImage);\n        }\n      }\n    }\n    return images;\n  }\n  parseTextures(json, images) {\n    function parseConstant(value, type) {\n      if (typeof value === \"number\") return value;\n      console.warn(\"THREE.ObjectLoader.parseTexture: Constant should be in numeric form.\", value);\n      return type[value];\n    }\n    const textures = {};\n    if (json !== void 0) {\n      for (let i2 = 0, l2 = json.length; i2 < l2; i2++) {\n        const data = json[i2];\n        if (data.image === void 0) {\n          console.warn('THREE.ObjectLoader: No \"image\" specified for', data.uuid);\n        }\n        if (images[data.image] === void 0) {\n          console.warn(\"THREE.ObjectLoader: Undefined image\", data.image);\n        }\n        const source = images[data.image];\n        const image = source.data;\n        let texture;\n        if (Array.isArray(image)) {\n          texture = new CubeTexture();\n          if (image.length === 6) texture.needsUpdate = true;\n        } else {\n          if (image && image.data) {\n            texture = new DataTexture();\n          } else {\n            texture = new Texture();\n          }\n          if (image) texture.needsUpdate = true;\n        }\n        texture.source = source;\n        texture.uuid = data.uuid;\n        if (data.name !== void 0) texture.name = data.name;\n        if (data.mapping !== void 0) texture.mapping = parseConstant(data.mapping, TEXTURE_MAPPING);\n        if (data.channel !== void 0) texture.channel = data.channel;\n        if (data.offset !== void 0) texture.offset.fromArray(data.offset);\n        if (data.repeat !== void 0) texture.repeat.fromArray(data.repeat);\n        if (data.center !== void 0) texture.center.fromArray(data.center);\n        if (data.rotation !== void 0) texture.rotation = data.rotation;\n        if (data.wrap !== void 0) {\n          texture.wrapS = parseConstant(data.wrap[0], TEXTURE_WRAPPING);\n          texture.wrapT = parseConstant(data.wrap[1], TEXTURE_WRAPPING);\n        }\n        if (data.format !== void 0) texture.format = data.format;\n        if (data.internalFormat !== void 0) texture.internalFormat = data.internalFormat;\n        if (data.type !== void 0) texture.type = data.type;\n        if (data.colorSpace !== void 0) texture.colorSpace = data.colorSpace;\n        if (data.encoding !== void 0) texture.encoding = data.encoding;\n        if (data.minFilter !== void 0) texture.minFilter = parseConstant(data.minFilter, TEXTURE_FILTER);\n        if (data.magFilter !== void 0) texture.magFilter = parseConstant(data.magFilter, TEXTURE_FILTER);\n        if (data.anisotropy !== void 0) texture.anisotropy = data.anisotropy;\n        if (data.flipY !== void 0) texture.flipY = data.flipY;\n        if (data.generateMipmaps !== void 0) texture.generateMipmaps = data.generateMipmaps;\n        if (data.premultiplyAlpha !== void 0) texture.premultiplyAlpha = data.premultiplyAlpha;\n        if (data.unpackAlignment !== void 0) texture.unpackAlignment = data.unpackAlignment;\n        if (data.compareFunction !== void 0) texture.compareFunction = data.compareFunction;\n        if (data.userData !== void 0) texture.userData = data.userData;\n        textures[data.uuid] = texture;\n      }\n    }\n    return textures;\n  }\n  parseObject(data, geometries, materials, textures, animations) {\n    let object;\n    function getGeometry(name) {\n      if (geometries[name] === void 0) {\n        console.warn(\"THREE.ObjectLoader: Undefined geometry\", name);\n      }\n      return geometries[name];\n    }\n    function getMaterial(name) {\n      if (name === void 0) return void 0;\n      if (Array.isArray(name)) {\n        const array = [];\n        for (let i2 = 0, l2 = name.length; i2 < l2; i2++) {\n          const uuid = name[i2];\n          if (materials[uuid] === void 0) {\n            console.warn(\"THREE.ObjectLoader: Undefined material\", uuid);\n          }\n          array.push(materials[uuid]);\n        }\n        return array;\n      }\n      if (materials[name] === void 0) {\n        console.warn(\"THREE.ObjectLoader: Undefined material\", name);\n      }\n      return materials[name];\n    }\n    function getTexture(uuid) {\n      if (textures[uuid] === void 0) {\n        console.warn(\"THREE.ObjectLoader: Undefined texture\", uuid);\n      }\n      return textures[uuid];\n    }\n    let geometry, material;\n    switch (data.type) {\n      case \"Scene\":\n        object = new Scene();\n        if (data.background !== void 0) {\n          if (Number.isInteger(data.background)) {\n            object.background = new Color(data.background);\n          } else {\n            object.background = getTexture(data.background);\n          }\n        }\n        if (data.environment !== void 0) {\n          object.environment = getTexture(data.environment);\n        }\n        if (data.fog !== void 0) {\n          if (data.fog.type === \"Fog\") {\n            object.fog = new Fog(data.fog.color, data.fog.near, data.fog.far);\n          } else if (data.fog.type === \"FogExp2\") {\n            object.fog = new FogExp2(data.fog.color, data.fog.density);\n          }\n          if (data.fog.name !== \"\") {\n            object.fog.name = data.fog.name;\n          }\n        }\n        if (data.backgroundBlurriness !== void 0) object.backgroundBlurriness = data.backgroundBlurriness;\n        if (data.backgroundIntensity !== void 0) object.backgroundIntensity = data.backgroundIntensity;\n        break;\n      case \"PerspectiveCamera\":\n        object = new PerspectiveCamera(data.fov, data.aspect, data.near, data.far);\n        if (data.focus !== void 0) object.focus = data.focus;\n        if (data.zoom !== void 0) object.zoom = data.zoom;\n        if (data.filmGauge !== void 0) object.filmGauge = data.filmGauge;\n        if (data.filmOffset !== void 0) object.filmOffset = data.filmOffset;\n        if (data.view !== void 0) object.view = Object.assign({}, data.view);\n        break;\n      case \"OrthographicCamera\":\n        object = new OrthographicCamera(data.left, data.right, data.top, data.bottom, data.near, data.far);\n        if (data.zoom !== void 0) object.zoom = data.zoom;\n        if (data.view !== void 0) object.view = Object.assign({}, data.view);\n        break;\n      case \"AmbientLight\":\n        object = new AmbientLight(data.color, data.intensity);\n        break;\n      case \"DirectionalLight\":\n        object = new DirectionalLight(data.color, data.intensity);\n        break;\n      case \"PointLight\":\n        object = new PointLight(data.color, data.intensity, data.distance, data.decay);\n        break;\n      case \"RectAreaLight\":\n        object = new RectAreaLight(data.color, data.intensity, data.width, data.height);\n        break;\n      case \"SpotLight\":\n        object = new SpotLight(data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay);\n        break;\n      case \"HemisphereLight\":\n        object = new HemisphereLight(data.color, data.groundColor, data.intensity);\n        break;\n      case \"LightProbe\":\n        object = new LightProbe().fromJSON(data);\n        break;\n      case \"SkinnedMesh\":\n        geometry = getGeometry(data.geometry);\n        material = getMaterial(data.material);\n        object = new SkinnedMesh(geometry, material);\n        if (data.bindMode !== void 0) object.bindMode = data.bindMode;\n        if (data.bindMatrix !== void 0) object.bindMatrix.fromArray(data.bindMatrix);\n        if (data.skeleton !== void 0) object.skeleton = data.skeleton;\n        break;\n      case \"Mesh\":\n        geometry = getGeometry(data.geometry);\n        material = getMaterial(data.material);\n        object = new Mesh(geometry, material);\n        break;\n      case \"InstancedMesh\":\n        geometry = getGeometry(data.geometry);\n        material = getMaterial(data.material);\n        const count = data.count;\n        const instanceMatrix = data.instanceMatrix;\n        const instanceColor = data.instanceColor;\n        object = new InstancedMesh(geometry, material, count);\n        object.instanceMatrix = new InstancedBufferAttribute(new Float32Array(instanceMatrix.array), 16);\n        if (instanceColor !== void 0) object.instanceColor = new InstancedBufferAttribute(new Float32Array(instanceColor.array), instanceColor.itemSize);\n        break;\n      case \"BatchedMesh\":\n        geometry = getGeometry(data.geometry);\n        material = getMaterial(data.material);\n        object = new BatchedMesh(data.maxGeometryCount, data.maxVertexCount, data.maxIndexCount, material);\n        object.geometry = geometry;\n        object.perObjectFrustumCulled = data.perObjectFrustumCulled;\n        object.sortObjects = data.sortObjects;\n        object._drawRanges = data.drawRanges;\n        object._reservedRanges = data.reservedRanges;\n        object._visibility = data.visibility;\n        object._active = data.active;\n        object._bounds = data.bounds.map((bound) => {\n          const box = new Box3();\n          box.min.fromArray(bound.boxMin);\n          box.max.fromArray(bound.boxMax);\n          const sphere = new Sphere();\n          sphere.radius = bound.sphereRadius;\n          sphere.center.fromArray(bound.sphereCenter);\n          return {\n            boxInitialized: bound.boxInitialized,\n            box,\n            sphereInitialized: bound.sphereInitialized,\n            sphere\n          };\n        });\n        object._maxGeometryCount = data.maxGeometryCount;\n        object._maxVertexCount = data.maxVertexCount;\n        object._maxIndexCount = data.maxIndexCount;\n        object._geometryInitialized = data.geometryInitialized;\n        object._geometryCount = data.geometryCount;\n        object._matricesTexture = getTexture(data.matricesTexture.uuid);\n        break;\n      case \"LOD\":\n        object = new LOD();\n        break;\n      case \"Line\":\n        object = new Line(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"LineLoop\":\n        object = new LineLoop(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"LineSegments\":\n        object = new LineSegments(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"PointCloud\":\n      case \"Points\":\n        object = new Points(getGeometry(data.geometry), getMaterial(data.material));\n        break;\n      case \"Sprite\":\n        object = new Sprite(getMaterial(data.material));\n        break;\n      case \"Group\":\n        object = new Group();\n        break;\n      case \"Bone\":\n        object = new Bone();\n        break;\n      default:\n        object = new Object3D();\n    }\n    object.uuid = data.uuid;\n    if (data.name !== void 0) object.name = data.name;\n    if (data.matrix !== void 0) {\n      object.matrix.fromArray(data.matrix);\n      if (data.matrixAutoUpdate !== void 0) object.matrixAutoUpdate = data.matrixAutoUpdate;\n      if (object.matrixAutoUpdate) object.matrix.decompose(object.position, object.quaternion, object.scale);\n    } else {\n      if (data.position !== void 0) object.position.fromArray(data.position);\n      if (data.rotation !== void 0) object.rotation.fromArray(data.rotation);\n      if (data.quaternion !== void 0) object.quaternion.fromArray(data.quaternion);\n      if (data.scale !== void 0) object.scale.fromArray(data.scale);\n    }\n    if (data.up !== void 0) object.up.fromArray(data.up);\n    if (data.castShadow !== void 0) object.castShadow = data.castShadow;\n    if (data.receiveShadow !== void 0) object.receiveShadow = data.receiveShadow;\n    if (data.shadow) {\n      if (data.shadow.bias !== void 0) object.shadow.bias = data.shadow.bias;\n      if (data.shadow.normalBias !== void 0) object.shadow.normalBias = data.shadow.normalBias;\n      if (data.shadow.radius !== void 0) object.shadow.radius = data.shadow.radius;\n      if (data.shadow.mapSize !== void 0) object.shadow.mapSize.fromArray(data.shadow.mapSize);\n      if (data.shadow.camera !== void 0) object.shadow.camera = this.parseObject(data.shadow.camera);\n    }\n    if (data.visible !== void 0) object.visible = data.visible;\n    if (data.frustumCulled !== void 0) object.frustumCulled = data.frustumCulled;\n    if (data.renderOrder !== void 0) object.renderOrder = data.renderOrder;\n    if (data.userData !== void 0) object.userData = data.userData;\n    if (data.layers !== void 0) object.layers.mask = data.layers;\n    if (data.children !== void 0) {\n      const children = data.children;\n      for (let i2 = 0; i2 < children.length; i2++) {\n        object.add(this.parseObject(children[i2], geometries, materials, textures, animations));\n      }\n    }\n    if (data.animations !== void 0) {\n      const objectAnimations = data.animations;\n      for (let i2 = 0; i2 < objectAnimations.length; i2++) {\n        const uuid = objectAnimations[i2];\n        object.animations.push(animations[uuid]);\n      }\n    }\n    if (data.type === \"LOD\") {\n      if (data.autoUpdate !== void 0) object.autoUpdate = data.autoUpdate;\n      const levels = data.levels;\n      for (let l2 = 0; l2 < levels.length; l2++) {\n        const level = levels[l2];\n        const child = object.getObjectByProperty(\"uuid\", level.object);\n        if (child !== void 0) {\n          object.addLevel(child, level.distance, level.hysteresis);\n        }\n      }\n    }\n    return object;\n  }\n  bindSkeletons(object, skeletons) {\n    if (Object.keys(skeletons).length === 0) return;\n    object.traverse(function(child) {\n      if (child.isSkinnedMesh === true && child.skeleton !== void 0) {\n        const skeleton = skeletons[child.skeleton];\n        if (skeleton === void 0) {\n          console.warn(\"THREE.ObjectLoader: No skeleton found with UUID:\", child.skeleton);\n        } else {\n          child.bind(skeleton, child.bindMatrix);\n        }\n      }\n    });\n  }\n}\nconst TEXTURE_MAPPING = {\n  UVMapping,\n  CubeReflectionMapping,\n  CubeRefractionMapping,\n  EquirectangularReflectionMapping,\n  EquirectangularRefractionMapping,\n  CubeUVReflectionMapping\n};\nconst TEXTURE_WRAPPING = {\n  RepeatWrapping,\n  ClampToEdgeWrapping,\n  MirroredRepeatWrapping\n};\nconst TEXTURE_FILTER = {\n  NearestFilter,\n  NearestMipmapNearestFilter,\n  NearestMipmapLinearFilter,\n  LinearFilter,\n  LinearMipmapNearestFilter,\n  LinearMipmapLinearFilter\n};\nclass ImageBitmapLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.isImageBitmapLoader = true;\n    if (typeof createImageBitmap === \"undefined\") {\n      console.warn(\"THREE.ImageBitmapLoader: createImageBitmap() not supported.\");\n    }\n    if (typeof fetch === \"undefined\") {\n      console.warn(\"THREE.ImageBitmapLoader: fetch() not supported.\");\n    }\n    this.options = { premultiplyAlpha: \"none\" };\n  }\n  setOptions(options) {\n    this.options = options;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    if (url === void 0) url = \"\";\n    if (this.path !== void 0) url = this.path + url;\n    url = this.manager.resolveURL(url);\n    const scope = this;\n    const cached = Cache.get(url);\n    if (cached !== void 0) {\n      scope.manager.itemStart(url);\n      if (cached.then) {\n        cached.then((imageBitmap) => {\n          if (onLoad) onLoad(imageBitmap);\n          scope.manager.itemEnd(url);\n        }).catch((e2) => {\n          if (onError) onError(e2);\n        });\n        return;\n      }\n      setTimeout(function() {\n        if (onLoad) onLoad(cached);\n        scope.manager.itemEnd(url);\n      }, 0);\n      return cached;\n    }\n    const fetchOptions = {};\n    fetchOptions.credentials = this.crossOrigin === \"anonymous\" ? \"same-origin\" : \"include\";\n    fetchOptions.headers = this.requestHeader;\n    const promise = fetch(url, fetchOptions).then(function(res) {\n      return res.blob();\n    }).then(function(blob) {\n      return createImageBitmap(blob, Object.assign(scope.options, { colorSpaceConversion: \"none\" }));\n    }).then(function(imageBitmap) {\n      Cache.add(url, imageBitmap);\n      if (onLoad) onLoad(imageBitmap);\n      scope.manager.itemEnd(url);\n      return imageBitmap;\n    }).catch(function(e2) {\n      if (onError) onError(e2);\n      Cache.remove(url);\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    });\n    Cache.add(url, promise);\n    scope.manager.itemStart(url);\n  }\n}\nlet _context;\nclass AudioContext {\n  static getContext() {\n    if (_context === void 0) {\n      _context = new (window.AudioContext || window.webkitAudioContext)();\n    }\n    return _context;\n  }\n  static setContext(value) {\n    _context = value;\n  }\n}\nclass AudioLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    const loader = new FileLoader(this.manager);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setPath(this.path);\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(url, function(buffer) {\n      try {\n        const bufferCopy = buffer.slice(0);\n        const context2 = AudioContext.getContext();\n        context2.decodeAudioData(bufferCopy, function(audioBuffer) {\n          onLoad(audioBuffer);\n        }).catch(handleError);\n      } catch (e2) {\n        handleError(e2);\n      }\n    }, onProgress, onError);\n    function handleError(e2) {\n      if (onError) {\n        onError(e2);\n      } else {\n        console.error(e2);\n      }\n      scope.manager.itemError(url);\n    }\n  }\n}\nconst _eyeRight = /* @__PURE__ */ new Matrix4();\nconst _eyeLeft = /* @__PURE__ */ new Matrix4();\nconst _projectionMatrix = /* @__PURE__ */ new Matrix4();\nclass StereoCamera {\n  constructor() {\n    this.type = \"StereoCamera\";\n    this.aspect = 1;\n    this.eyeSep = 0.064;\n    this.cameraL = new PerspectiveCamera();\n    this.cameraL.layers.enable(1);\n    this.cameraL.matrixAutoUpdate = false;\n    this.cameraR = new PerspectiveCamera();\n    this.cameraR.layers.enable(2);\n    this.cameraR.matrixAutoUpdate = false;\n    this._cache = {\n      focus: null,\n      fov: null,\n      aspect: null,\n      near: null,\n      far: null,\n      zoom: null,\n      eyeSep: null\n    };\n  }\n  update(camera) {\n    const cache = this._cache;\n    const needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov || cache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near || cache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\n    if (needsUpdate) {\n      cache.focus = camera.focus;\n      cache.fov = camera.fov;\n      cache.aspect = camera.aspect * this.aspect;\n      cache.near = camera.near;\n      cache.far = camera.far;\n      cache.zoom = camera.zoom;\n      cache.eyeSep = this.eyeSep;\n      _projectionMatrix.copy(camera.projectionMatrix);\n      const eyeSepHalf = cache.eyeSep / 2;\n      const eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\n      const ymax = cache.near * Math.tan(DEG2RAD * cache.fov * 0.5) / cache.zoom;\n      let xmin, xmax;\n      _eyeLeft.elements[12] = -eyeSepHalf;\n      _eyeRight.elements[12] = eyeSepHalf;\n      xmin = -ymax * cache.aspect + eyeSepOnProjection;\n      xmax = ymax * cache.aspect + eyeSepOnProjection;\n      _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n      _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n      this.cameraL.projectionMatrix.copy(_projectionMatrix);\n      xmin = -ymax * cache.aspect - eyeSepOnProjection;\n      xmax = ymax * cache.aspect - eyeSepOnProjection;\n      _projectionMatrix.elements[0] = 2 * cache.near / (xmax - xmin);\n      _projectionMatrix.elements[8] = (xmax + xmin) / (xmax - xmin);\n      this.cameraR.projectionMatrix.copy(_projectionMatrix);\n    }\n    this.cameraL.matrixWorld.copy(camera.matrixWorld).multiply(_eyeLeft);\n    this.cameraR.matrixWorld.copy(camera.matrixWorld).multiply(_eyeRight);\n  }\n}\nclass Clock {\n  constructor(autoStart = true) {\n    this.autoStart = autoStart;\n    this.startTime = 0;\n    this.oldTime = 0;\n    this.elapsedTime = 0;\n    this.running = false;\n  }\n  start() {\n    this.startTime = now();\n    this.oldTime = this.startTime;\n    this.elapsedTime = 0;\n    this.running = true;\n  }\n  stop() {\n    this.getElapsedTime();\n    this.running = false;\n    this.autoStart = false;\n  }\n  getElapsedTime() {\n    this.getDelta();\n    return this.elapsedTime;\n  }\n  getDelta() {\n    let diff = 0;\n    if (this.autoStart && !this.running) {\n      this.start();\n      return 0;\n    }\n    if (this.running) {\n      const newTime = now();\n      diff = (newTime - this.oldTime) / 1e3;\n      this.oldTime = newTime;\n      this.elapsedTime += diff;\n    }\n    return diff;\n  }\n}\nfunction now() {\n  return (typeof performance === \"undefined\" ? Date : performance).now();\n}\nconst _position$1 = /* @__PURE__ */ new Vector3();\nconst _quaternion$1 = /* @__PURE__ */ new Quaternion();\nconst _scale$1 = /* @__PURE__ */ new Vector3();\nconst _orientation$1 = /* @__PURE__ */ new Vector3();\nclass AudioListener extends Object3D {\n  constructor() {\n    super();\n    this.type = \"AudioListener\";\n    this.context = AudioContext.getContext();\n    this.gain = this.context.createGain();\n    this.gain.connect(this.context.destination);\n    this.filter = null;\n    this.timeDelta = 0;\n    this._clock = new Clock();\n  }\n  getInput() {\n    return this.gain;\n  }\n  removeFilter() {\n    if (this.filter !== null) {\n      this.gain.disconnect(this.filter);\n      this.filter.disconnect(this.context.destination);\n      this.gain.connect(this.context.destination);\n      this.filter = null;\n    }\n    return this;\n  }\n  getFilter() {\n    return this.filter;\n  }\n  setFilter(value) {\n    if (this.filter !== null) {\n      this.gain.disconnect(this.filter);\n      this.filter.disconnect(this.context.destination);\n    } else {\n      this.gain.disconnect(this.context.destination);\n    }\n    this.filter = value;\n    this.gain.connect(this.filter);\n    this.filter.connect(this.context.destination);\n    return this;\n  }\n  getMasterVolume() {\n    return this.gain.gain.value;\n  }\n  setMasterVolume(value) {\n    this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n    return this;\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    const listener = this.context.listener;\n    const up = this.up;\n    this.timeDelta = this._clock.getDelta();\n    this.matrixWorld.decompose(_position$1, _quaternion$1, _scale$1);\n    _orientation$1.set(0, 0, -1).applyQuaternion(_quaternion$1);\n    if (listener.positionX) {\n      const endTime = this.context.currentTime + this.timeDelta;\n      listener.positionX.linearRampToValueAtTime(_position$1.x, endTime);\n      listener.positionY.linearRampToValueAtTime(_position$1.y, endTime);\n      listener.positionZ.linearRampToValueAtTime(_position$1.z, endTime);\n      listener.forwardX.linearRampToValueAtTime(_orientation$1.x, endTime);\n      listener.forwardY.linearRampToValueAtTime(_orientation$1.y, endTime);\n      listener.forwardZ.linearRampToValueAtTime(_orientation$1.z, endTime);\n      listener.upX.linearRampToValueAtTime(up.x, endTime);\n      listener.upY.linearRampToValueAtTime(up.y, endTime);\n      listener.upZ.linearRampToValueAtTime(up.z, endTime);\n    } else {\n      listener.setPosition(_position$1.x, _position$1.y, _position$1.z);\n      listener.setOrientation(_orientation$1.x, _orientation$1.y, _orientation$1.z, up.x, up.y, up.z);\n    }\n  }\n}\nclass Audio extends Object3D {\n  constructor(listener) {\n    super();\n    this.type = \"Audio\";\n    this.listener = listener;\n    this.context = listener.context;\n    this.gain = this.context.createGain();\n    this.gain.connect(listener.getInput());\n    this.autoplay = false;\n    this.buffer = null;\n    this.detune = 0;\n    this.loop = false;\n    this.loopStart = 0;\n    this.loopEnd = 0;\n    this.offset = 0;\n    this.duration = void 0;\n    this.playbackRate = 1;\n    this.isPlaying = false;\n    this.hasPlaybackControl = true;\n    this.source = null;\n    this.sourceType = \"empty\";\n    this._startedAt = 0;\n    this._progress = 0;\n    this._connected = false;\n    this.filters = [];\n  }\n  getOutput() {\n    return this.gain;\n  }\n  setNodeSource(audioNode) {\n    this.hasPlaybackControl = false;\n    this.sourceType = \"audioNode\";\n    this.source = audioNode;\n    this.connect();\n    return this;\n  }\n  setMediaElementSource(mediaElement) {\n    this.hasPlaybackControl = false;\n    this.sourceType = \"mediaNode\";\n    this.source = this.context.createMediaElementSource(mediaElement);\n    this.connect();\n    return this;\n  }\n  setMediaStreamSource(mediaStream) {\n    this.hasPlaybackControl = false;\n    this.sourceType = \"mediaStreamNode\";\n    this.source = this.context.createMediaStreamSource(mediaStream);\n    this.connect();\n    return this;\n  }\n  setBuffer(audioBuffer) {\n    this.buffer = audioBuffer;\n    this.sourceType = \"buffer\";\n    if (this.autoplay) this.play();\n    return this;\n  }\n  play(delay = 0) {\n    if (this.isPlaying === true) {\n      console.warn(\"THREE.Audio: Audio is already playing.\");\n      return;\n    }\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this._startedAt = this.context.currentTime + delay;\n    const source = this.context.createBufferSource();\n    source.buffer = this.buffer;\n    source.loop = this.loop;\n    source.loopStart = this.loopStart;\n    source.loopEnd = this.loopEnd;\n    source.onended = this.onEnded.bind(this);\n    source.start(this._startedAt, this._progress + this.offset, this.duration);\n    this.isPlaying = true;\n    this.source = source;\n    this.setDetune(this.detune);\n    this.setPlaybackRate(this.playbackRate);\n    return this.connect();\n  }\n  pause() {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    if (this.isPlaying === true) {\n      this._progress += Math.max(this.context.currentTime - this._startedAt, 0) * this.playbackRate;\n      if (this.loop === true) {\n        this._progress = this._progress % (this.duration || this.buffer.duration);\n      }\n      this.source.stop();\n      this.source.onended = null;\n      this.isPlaying = false;\n    }\n    return this;\n  }\n  stop() {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this._progress = 0;\n    if (this.source !== null) {\n      this.source.stop();\n      this.source.onended = null;\n    }\n    this.isPlaying = false;\n    return this;\n  }\n  connect() {\n    if (this.filters.length > 0) {\n      this.source.connect(this.filters[0]);\n      for (let i2 = 1, l2 = this.filters.length; i2 < l2; i2++) {\n        this.filters[i2 - 1].connect(this.filters[i2]);\n      }\n      this.filters[this.filters.length - 1].connect(this.getOutput());\n    } else {\n      this.source.connect(this.getOutput());\n    }\n    this._connected = true;\n    return this;\n  }\n  disconnect() {\n    if (this._connected === false) {\n      return;\n    }\n    if (this.filters.length > 0) {\n      this.source.disconnect(this.filters[0]);\n      for (let i2 = 1, l2 = this.filters.length; i2 < l2; i2++) {\n        this.filters[i2 - 1].disconnect(this.filters[i2]);\n      }\n      this.filters[this.filters.length - 1].disconnect(this.getOutput());\n    } else {\n      this.source.disconnect(this.getOutput());\n    }\n    this._connected = false;\n    return this;\n  }\n  getFilters() {\n    return this.filters;\n  }\n  setFilters(value) {\n    if (!value) value = [];\n    if (this._connected === true) {\n      this.disconnect();\n      this.filters = value.slice();\n      this.connect();\n    } else {\n      this.filters = value.slice();\n    }\n    return this;\n  }\n  setDetune(value) {\n    this.detune = value;\n    if (this.isPlaying === true && this.source.detune !== void 0) {\n      this.source.detune.setTargetAtTime(this.detune, this.context.currentTime, 0.01);\n    }\n    return this;\n  }\n  getDetune() {\n    return this.detune;\n  }\n  getFilter() {\n    return this.getFilters()[0];\n  }\n  setFilter(filter) {\n    return this.setFilters(filter ? [filter] : []);\n  }\n  setPlaybackRate(value) {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this.playbackRate = value;\n    if (this.isPlaying === true) {\n      this.source.playbackRate.setTargetAtTime(this.playbackRate, this.context.currentTime, 0.01);\n    }\n    return this;\n  }\n  getPlaybackRate() {\n    return this.playbackRate;\n  }\n  onEnded() {\n    this.isPlaying = false;\n  }\n  getLoop() {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return false;\n    }\n    return this.loop;\n  }\n  setLoop(value) {\n    if (this.hasPlaybackControl === false) {\n      console.warn(\"THREE.Audio: this Audio has no playback control.\");\n      return;\n    }\n    this.loop = value;\n    if (this.isPlaying === true) {\n      this.source.loop = this.loop;\n    }\n    return this;\n  }\n  setLoopStart(value) {\n    this.loopStart = value;\n    return this;\n  }\n  setLoopEnd(value) {\n    this.loopEnd = value;\n    return this;\n  }\n  getVolume() {\n    return this.gain.gain.value;\n  }\n  setVolume(value) {\n    this.gain.gain.setTargetAtTime(value, this.context.currentTime, 0.01);\n    return this;\n  }\n}\nconst _position$4 = /* @__PURE__ */ new Vector3();\nconst _quaternion$5 = /* @__PURE__ */ new Quaternion();\nconst _scale$3 = /* @__PURE__ */ new Vector3();\nconst _orientation = /* @__PURE__ */ new Vector3();\nclass PositionalAudio extends Audio {\n  constructor(listener) {\n    super(listener);\n    this.panner = this.context.createPanner();\n    this.panner.panningModel = \"HRTF\";\n    this.panner.connect(this.gain);\n  }\n  connect() {\n    super.connect();\n    this.panner.connect(this.gain);\n  }\n  disconnect() {\n    super.disconnect();\n    this.panner.disconnect(this.gain);\n  }\n  getOutput() {\n    return this.panner;\n  }\n  getRefDistance() {\n    return this.panner.refDistance;\n  }\n  setRefDistance(value) {\n    this.panner.refDistance = value;\n    return this;\n  }\n  getRolloffFactor() {\n    return this.panner.rolloffFactor;\n  }\n  setRolloffFactor(value) {\n    this.panner.rolloffFactor = value;\n    return this;\n  }\n  getDistanceModel() {\n    return this.panner.distanceModel;\n  }\n  setDistanceModel(value) {\n    this.panner.distanceModel = value;\n    return this;\n  }\n  getMaxDistance() {\n    return this.panner.maxDistance;\n  }\n  setMaxDistance(value) {\n    this.panner.maxDistance = value;\n    return this;\n  }\n  setDirectionalCone(coneInnerAngle, coneOuterAngle, coneOuterGain) {\n    this.panner.coneInnerAngle = coneInnerAngle;\n    this.panner.coneOuterAngle = coneOuterAngle;\n    this.panner.coneOuterGain = coneOuterGain;\n    return this;\n  }\n  updateMatrixWorld(force) {\n    super.updateMatrixWorld(force);\n    if (this.hasPlaybackControl === true && this.isPlaying === false) return;\n    this.matrixWorld.decompose(_position$4, _quaternion$5, _scale$3);\n    _orientation.set(0, 0, 1).applyQuaternion(_quaternion$5);\n    const panner = this.panner;\n    if (panner.positionX) {\n      const endTime = this.context.currentTime + this.listener.timeDelta;\n      panner.positionX.linearRampToValueAtTime(_position$4.x, endTime);\n      panner.positionY.linearRampToValueAtTime(_position$4.y, endTime);\n      panner.positionZ.linearRampToValueAtTime(_position$4.z, endTime);\n      panner.orientationX.linearRampToValueAtTime(_orientation.x, endTime);\n      panner.orientationY.linearRampToValueAtTime(_orientation.y, endTime);\n      panner.orientationZ.linearRampToValueAtTime(_orientation.z, endTime);\n    } else {\n      panner.setPosition(_position$4.x, _position$4.y, _position$4.z);\n      panner.setOrientation(_orientation.x, _orientation.y, _orientation.z);\n    }\n  }\n}\nclass AudioAnalyser {\n  constructor(audio, fftSize = 2048) {\n    this.analyser = audio.context.createAnalyser();\n    this.analyser.fftSize = fftSize;\n    this.data = new Uint8Array(this.analyser.frequencyBinCount);\n    audio.getOutput().connect(this.analyser);\n  }\n  getFrequencyData() {\n    this.analyser.getByteFrequencyData(this.data);\n    return this.data;\n  }\n  getAverageFrequency() {\n    let value = 0;\n    const data = this.getFrequencyData();\n    for (let i2 = 0; i2 < data.length; i2++) {\n      value += data[i2];\n    }\n    return value / data.length;\n  }\n}\nclass PropertyMixer {\n  constructor(binding, typeName, valueSize) {\n    this.binding = binding;\n    this.valueSize = valueSize;\n    let mixFunction, mixFunctionAdditive, setIdentity;\n    switch (typeName) {\n      case \"quaternion\":\n        mixFunction = this._slerp;\n        mixFunctionAdditive = this._slerpAdditive;\n        setIdentity = this._setAdditiveIdentityQuaternion;\n        this.buffer = new Float64Array(valueSize * 6);\n        this._workIndex = 5;\n        break;\n      case \"string\":\n      case \"bool\":\n        mixFunction = this._select;\n        mixFunctionAdditive = this._select;\n        setIdentity = this._setAdditiveIdentityOther;\n        this.buffer = new Array(valueSize * 5);\n        break;\n      default:\n        mixFunction = this._lerp;\n        mixFunctionAdditive = this._lerpAdditive;\n        setIdentity = this._setAdditiveIdentityNumeric;\n        this.buffer = new Float64Array(valueSize * 5);\n    }\n    this._mixBufferRegion = mixFunction;\n    this._mixBufferRegionAdditive = mixFunctionAdditive;\n    this._setIdentity = setIdentity;\n    this._origIndex = 3;\n    this._addIndex = 4;\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n    this.useCount = 0;\n    this.referenceCount = 0;\n  }\n  // accumulate data in the 'incoming' region into 'accu<i>'\n  accumulate(accuIndex, weight) {\n    const buffer = this.buffer, stride = this.valueSize, offset = accuIndex * stride + stride;\n    let currentWeight = this.cumulativeWeight;\n    if (currentWeight === 0) {\n      for (let i2 = 0; i2 !== stride; ++i2) {\n        buffer[offset + i2] = buffer[i2];\n      }\n      currentWeight = weight;\n    } else {\n      currentWeight += weight;\n      const mix = weight / currentWeight;\n      this._mixBufferRegion(buffer, offset, 0, mix, stride);\n    }\n    this.cumulativeWeight = currentWeight;\n  }\n  // accumulate data in the 'incoming' region into 'add'\n  accumulateAdditive(weight) {\n    const buffer = this.buffer, stride = this.valueSize, offset = stride * this._addIndex;\n    if (this.cumulativeWeightAdditive === 0) {\n      this._setIdentity();\n    }\n    this._mixBufferRegionAdditive(buffer, offset, 0, weight, stride);\n    this.cumulativeWeightAdditive += weight;\n  }\n  // apply the state of 'accu<i>' to the binding when accus differ\n  apply(accuIndex) {\n    const stride = this.valueSize, buffer = this.buffer, offset = accuIndex * stride + stride, weight = this.cumulativeWeight, weightAdditive = this.cumulativeWeightAdditive, binding = this.binding;\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n    if (weight < 1) {\n      const originalValueOffset = stride * this._origIndex;\n      this._mixBufferRegion(\n        buffer,\n        offset,\n        originalValueOffset,\n        1 - weight,\n        stride\n      );\n    }\n    if (weightAdditive > 0) {\n      this._mixBufferRegionAdditive(buffer, offset, this._addIndex * stride, 1, stride);\n    }\n    for (let i2 = stride, e2 = stride + stride; i2 !== e2; ++i2) {\n      if (buffer[i2] !== buffer[i2 + stride]) {\n        binding.setValue(buffer, offset);\n        break;\n      }\n    }\n  }\n  // remember the state of the bound property and copy it to both accus\n  saveOriginalState() {\n    const binding = this.binding;\n    const buffer = this.buffer, stride = this.valueSize, originalValueOffset = stride * this._origIndex;\n    binding.getValue(buffer, originalValueOffset);\n    for (let i2 = stride, e2 = originalValueOffset; i2 !== e2; ++i2) {\n      buffer[i2] = buffer[originalValueOffset + i2 % stride];\n    }\n    this._setIdentity();\n    this.cumulativeWeight = 0;\n    this.cumulativeWeightAdditive = 0;\n  }\n  // apply the state previously taken via 'saveOriginalState' to the binding\n  restoreOriginalState() {\n    const originalValueOffset = this.valueSize * 3;\n    this.binding.setValue(this.buffer, originalValueOffset);\n  }\n  _setAdditiveIdentityNumeric() {\n    const startIndex = this._addIndex * this.valueSize;\n    const endIndex = startIndex + this.valueSize;\n    for (let i2 = startIndex; i2 < endIndex; i2++) {\n      this.buffer[i2] = 0;\n    }\n  }\n  _setAdditiveIdentityQuaternion() {\n    this._setAdditiveIdentityNumeric();\n    this.buffer[this._addIndex * this.valueSize + 3] = 1;\n  }\n  _setAdditiveIdentityOther() {\n    const startIndex = this._origIndex * this.valueSize;\n    const targetIndex = this._addIndex * this.valueSize;\n    for (let i2 = 0; i2 < this.valueSize; i2++) {\n      this.buffer[targetIndex + i2] = this.buffer[startIndex + i2];\n    }\n  }\n  // mix functions\n  _select(buffer, dstOffset, srcOffset, t2, stride) {\n    if (t2 >= 0.5) {\n      for (let i2 = 0; i2 !== stride; ++i2) {\n        buffer[dstOffset + i2] = buffer[srcOffset + i2];\n      }\n    }\n  }\n  _slerp(buffer, dstOffset, srcOffset, t2) {\n    Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t2);\n  }\n  _slerpAdditive(buffer, dstOffset, srcOffset, t2, stride) {\n    const workOffset = this._workIndex * stride;\n    Quaternion.multiplyQuaternionsFlat(buffer, workOffset, buffer, dstOffset, buffer, srcOffset);\n    Quaternion.slerpFlat(buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t2);\n  }\n  _lerp(buffer, dstOffset, srcOffset, t2, stride) {\n    const s2 = 1 - t2;\n    for (let i2 = 0; i2 !== stride; ++i2) {\n      const j2 = dstOffset + i2;\n      buffer[j2] = buffer[j2] * s2 + buffer[srcOffset + i2] * t2;\n    }\n  }\n  _lerpAdditive(buffer, dstOffset, srcOffset, t2, stride) {\n    for (let i2 = 0; i2 !== stride; ++i2) {\n      const j2 = dstOffset + i2;\n      buffer[j2] = buffer[j2] + buffer[srcOffset + i2] * t2;\n    }\n  }\n}\nconst _RESERVED_CHARS_RE = \"\\\\[\\\\]\\\\.:\\\\/\";\nconst _reservedRe = new RegExp(\"[\" + _RESERVED_CHARS_RE + \"]\", \"g\");\nconst _wordChar = \"[^\" + _RESERVED_CHARS_RE + \"]\";\nconst _wordCharOrDot = \"[^\" + _RESERVED_CHARS_RE.replace(\"\\\\.\", \"\") + \"]\";\nconst _directoryRe = /* @__PURE__ */ /((?:WC+[\\/:])*)/.source.replace(\"WC\", _wordChar);\nconst _nodeRe = /* @__PURE__ */ /(WCOD+)?/.source.replace(\"WCOD\", _wordCharOrDot);\nconst _objectRe = /* @__PURE__ */ /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace(\"WC\", _wordChar);\nconst _propertyRe = /* @__PURE__ */ /\\.(WC+)(?:\\[(.+)\\])?/.source.replace(\"WC\", _wordChar);\nconst _trackRe = new RegExp(\n  \"^\" + _directoryRe + _nodeRe + _objectRe + _propertyRe + \"$\"\n);\nconst _supportedObjectNames = [\"material\", \"materials\", \"bones\", \"map\"];\nclass Composite {\n  constructor(targetGroup, path, optionalParsedPath) {\n    const parsedPath = optionalParsedPath || PropertyBinding.parseTrackName(path);\n    this._targetGroup = targetGroup;\n    this._bindings = targetGroup.subscribe_(path, parsedPath);\n  }\n  getValue(array, offset) {\n    this.bind();\n    const firstValidIndex = this._targetGroup.nCachedObjects_, binding = this._bindings[firstValidIndex];\n    if (binding !== void 0) binding.getValue(array, offset);\n  }\n  setValue(array, offset) {\n    const bindings = this._bindings;\n    for (let i2 = this._targetGroup.nCachedObjects_, n2 = bindings.length; i2 !== n2; ++i2) {\n      bindings[i2].setValue(array, offset);\n    }\n  }\n  bind() {\n    const bindings = this._bindings;\n    for (let i2 = this._targetGroup.nCachedObjects_, n2 = bindings.length; i2 !== n2; ++i2) {\n      bindings[i2].bind();\n    }\n  }\n  unbind() {\n    const bindings = this._bindings;\n    for (let i2 = this._targetGroup.nCachedObjects_, n2 = bindings.length; i2 !== n2; ++i2) {\n      bindings[i2].unbind();\n    }\n  }\n}\nclass PropertyBinding {\n  constructor(rootNode, path, parsedPath) {\n    this.path = path;\n    this.parsedPath = parsedPath || PropertyBinding.parseTrackName(path);\n    this.node = PropertyBinding.findNode(rootNode, this.parsedPath.nodeName);\n    this.rootNode = rootNode;\n    this.getValue = this._getValue_unbound;\n    this.setValue = this._setValue_unbound;\n  }\n  static create(root, path, parsedPath) {\n    if (!(root && root.isAnimationObjectGroup)) {\n      return new PropertyBinding(root, path, parsedPath);\n    } else {\n      return new PropertyBinding.Composite(root, path, parsedPath);\n    }\n  }\n  /**\n   * Replaces spaces with underscores and removes unsupported characters from\n   * node names, to ensure compatibility with parseTrackName().\n   *\n   * @param {string} name Node name to be sanitized.\n   * @return {string}\n   */\n  static sanitizeNodeName(name) {\n    return name.replace(/\\s/g, \"_\").replace(_reservedRe, \"\");\n  }\n  static parseTrackName(trackName) {\n    const matches = _trackRe.exec(trackName);\n    if (matches === null) {\n      throw new Error(\"PropertyBinding: Cannot parse trackName: \" + trackName);\n    }\n    const results = {\n      // directoryName: matches[ 1 ], // (tschw) currently unused\n      nodeName: matches[2],\n      objectName: matches[3],\n      objectIndex: matches[4],\n      propertyName: matches[5],\n      // required\n      propertyIndex: matches[6]\n    };\n    const lastDot = results.nodeName && results.nodeName.lastIndexOf(\".\");\n    if (lastDot !== void 0 && lastDot !== -1) {\n      const objectName = results.nodeName.substring(lastDot + 1);\n      if (_supportedObjectNames.indexOf(objectName) !== -1) {\n        results.nodeName = results.nodeName.substring(0, lastDot);\n        results.objectName = objectName;\n      }\n    }\n    if (results.propertyName === null || results.propertyName.length === 0) {\n      throw new Error(\"PropertyBinding: can not parse propertyName from trackName: \" + trackName);\n    }\n    return results;\n  }\n  static findNode(root, nodeName) {\n    if (nodeName === void 0 || nodeName === \"\" || nodeName === \".\" || nodeName === -1 || nodeName === root.name || nodeName === root.uuid) {\n      return root;\n    }\n    if (root.skeleton) {\n      const bone = root.skeleton.getBoneByName(nodeName);\n      if (bone !== void 0) {\n        return bone;\n      }\n    }\n    if (root.children) {\n      const searchNodeSubtree = function(children) {\n        for (let i2 = 0; i2 < children.length; i2++) {\n          const childNode = children[i2];\n          if (childNode.name === nodeName || childNode.uuid === nodeName) {\n            return childNode;\n          }\n          const result = searchNodeSubtree(childNode.children);\n          if (result) return result;\n        }\n        return null;\n      };\n      const subTreeNode = searchNodeSubtree(root.children);\n      if (subTreeNode) {\n        return subTreeNode;\n      }\n    }\n    return null;\n  }\n  // these are used to \"bind\" a nonexistent property\n  _getValue_unavailable() {\n  }\n  _setValue_unavailable() {\n  }\n  // Getters\n  _getValue_direct(buffer, offset) {\n    buffer[offset] = this.targetObject[this.propertyName];\n  }\n  _getValue_array(buffer, offset) {\n    const source = this.resolvedProperty;\n    for (let i2 = 0, n2 = source.length; i2 !== n2; ++i2) {\n      buffer[offset++] = source[i2];\n    }\n  }\n  _getValue_arrayElement(buffer, offset) {\n    buffer[offset] = this.resolvedProperty[this.propertyIndex];\n  }\n  _getValue_toArray(buffer, offset) {\n    this.resolvedProperty.toArray(buffer, offset);\n  }\n  // Direct\n  _setValue_direct(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n  }\n  _setValue_direct_setNeedsUpdate(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_direct_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.targetObject[this.propertyName] = buffer[offset];\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  // EntireArray\n  _setValue_array(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i2 = 0, n2 = dest.length; i2 !== n2; ++i2) {\n      dest[i2] = buffer[offset++];\n    }\n  }\n  _setValue_array_setNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i2 = 0, n2 = dest.length; i2 !== n2; ++i2) {\n      dest[i2] = buffer[offset++];\n    }\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_array_setMatrixWorldNeedsUpdate(buffer, offset) {\n    const dest = this.resolvedProperty;\n    for (let i2 = 0, n2 = dest.length; i2 !== n2; ++i2) {\n      dest[i2] = buffer[offset++];\n    }\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  // ArrayElement\n  _setValue_arrayElement(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n  }\n  _setValue_arrayElement_setNeedsUpdate(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_arrayElement_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.resolvedProperty[this.propertyIndex] = buffer[offset];\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  // HasToFromArray\n  _setValue_fromArray(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n  }\n  _setValue_fromArray_setNeedsUpdate(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n    this.targetObject.needsUpdate = true;\n  }\n  _setValue_fromArray_setMatrixWorldNeedsUpdate(buffer, offset) {\n    this.resolvedProperty.fromArray(buffer, offset);\n    this.targetObject.matrixWorldNeedsUpdate = true;\n  }\n  _getValue_unbound(targetArray, offset) {\n    this.bind();\n    this.getValue(targetArray, offset);\n  }\n  _setValue_unbound(sourceArray, offset) {\n    this.bind();\n    this.setValue(sourceArray, offset);\n  }\n  // create getter / setter pair for a property in the scene graph\n  bind() {\n    let targetObject = this.node;\n    const parsedPath = this.parsedPath;\n    const objectName = parsedPath.objectName;\n    const propertyName = parsedPath.propertyName;\n    let propertyIndex = parsedPath.propertyIndex;\n    if (!targetObject) {\n      targetObject = PropertyBinding.findNode(this.rootNode, parsedPath.nodeName);\n      this.node = targetObject;\n    }\n    this.getValue = this._getValue_unavailable;\n    this.setValue = this._setValue_unavailable;\n    if (!targetObject) {\n      console.warn(\"THREE.PropertyBinding: No target node found for track: \" + this.path + \".\");\n      return;\n    }\n    if (objectName) {\n      let objectIndex = parsedPath.objectIndex;\n      switch (objectName) {\n        case \"materials\":\n          if (!targetObject.material) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n            return;\n          }\n          if (!targetObject.material.materials) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.\", this);\n            return;\n          }\n          targetObject = targetObject.material.materials;\n          break;\n        case \"bones\":\n          if (!targetObject.skeleton) {\n            console.error(\"THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.\", this);\n            return;\n          }\n          targetObject = targetObject.skeleton.bones;\n          for (let i2 = 0; i2 < targetObject.length; i2++) {\n            if (targetObject[i2].name === objectIndex) {\n              objectIndex = i2;\n              break;\n            }\n          }\n          break;\n        case \"map\":\n          if (\"map\" in targetObject) {\n            targetObject = targetObject.map;\n            break;\n          }\n          if (!targetObject.material) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material as node does not have a material.\", this);\n            return;\n          }\n          if (!targetObject.material.map) {\n            console.error(\"THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.\", this);\n            return;\n          }\n          targetObject = targetObject.material.map;\n          break;\n        default:\n          if (targetObject[objectName] === void 0) {\n            console.error(\"THREE.PropertyBinding: Can not bind to objectName of node undefined.\", this);\n            return;\n          }\n          targetObject = targetObject[objectName];\n      }\n      if (objectIndex !== void 0) {\n        if (targetObject[objectIndex] === void 0) {\n          console.error(\"THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.\", this, targetObject);\n          return;\n        }\n        targetObject = targetObject[objectIndex];\n      }\n    }\n    const nodeProperty = targetObject[propertyName];\n    if (nodeProperty === void 0) {\n      const nodeName = parsedPath.nodeName;\n      console.error(\"THREE.PropertyBinding: Trying to update property for track: \" + nodeName + \".\" + propertyName + \" but it wasn't found.\", targetObject);\n      return;\n    }\n    let versioning = this.Versioning.None;\n    this.targetObject = targetObject;\n    if (targetObject.needsUpdate !== void 0) {\n      versioning = this.Versioning.NeedsUpdate;\n    } else if (targetObject.matrixWorldNeedsUpdate !== void 0) {\n      versioning = this.Versioning.MatrixWorldNeedsUpdate;\n    }\n    let bindingType = this.BindingType.Direct;\n    if (propertyIndex !== void 0) {\n      if (propertyName === \"morphTargetInfluences\") {\n        if (!targetObject.geometry) {\n          console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.\", this);\n          return;\n        }\n        if (!targetObject.geometry.morphAttributes) {\n          console.error(\"THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.\", this);\n          return;\n        }\n        if (targetObject.morphTargetDictionary[propertyIndex] !== void 0) {\n          propertyIndex = targetObject.morphTargetDictionary[propertyIndex];\n        }\n      }\n      bindingType = this.BindingType.ArrayElement;\n      this.resolvedProperty = nodeProperty;\n      this.propertyIndex = propertyIndex;\n    } else if (nodeProperty.fromArray !== void 0 && nodeProperty.toArray !== void 0) {\n      bindingType = this.BindingType.HasFromToArray;\n      this.resolvedProperty = nodeProperty;\n    } else if (Array.isArray(nodeProperty)) {\n      bindingType = this.BindingType.EntireArray;\n      this.resolvedProperty = nodeProperty;\n    } else {\n      this.propertyName = propertyName;\n    }\n    this.getValue = this.GetterByBindingType[bindingType];\n    this.setValue = this.SetterByBindingTypeAndVersioning[bindingType][versioning];\n  }\n  unbind() {\n    this.node = null;\n    this.getValue = this._getValue_unbound;\n    this.setValue = this._setValue_unbound;\n  }\n}\nPropertyBinding.Composite = Composite;\nPropertyBinding.prototype.BindingType = {\n  Direct: 0,\n  EntireArray: 1,\n  ArrayElement: 2,\n  HasFromToArray: 3\n};\nPropertyBinding.prototype.Versioning = {\n  None: 0,\n  NeedsUpdate: 1,\n  MatrixWorldNeedsUpdate: 2\n};\nPropertyBinding.prototype.GetterByBindingType = [\n  PropertyBinding.prototype._getValue_direct,\n  PropertyBinding.prototype._getValue_array,\n  PropertyBinding.prototype._getValue_arrayElement,\n  PropertyBinding.prototype._getValue_toArray\n];\nPropertyBinding.prototype.SetterByBindingTypeAndVersioning = [\n  [\n    // Direct\n    PropertyBinding.prototype._setValue_direct,\n    PropertyBinding.prototype._setValue_direct_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_direct_setMatrixWorldNeedsUpdate\n  ],\n  [\n    // EntireArray\n    PropertyBinding.prototype._setValue_array,\n    PropertyBinding.prototype._setValue_array_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_array_setMatrixWorldNeedsUpdate\n  ],\n  [\n    // ArrayElement\n    PropertyBinding.prototype._setValue_arrayElement,\n    PropertyBinding.prototype._setValue_arrayElement_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate\n  ],\n  [\n    // HasToFromArray\n    PropertyBinding.prototype._setValue_fromArray,\n    PropertyBinding.prototype._setValue_fromArray_setNeedsUpdate,\n    PropertyBinding.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate\n  ]\n];\nclass AnimationObjectGroup {\n  constructor() {\n    this.isAnimationObjectGroup = true;\n    this.uuid = generateUUID();\n    this._objects = Array.prototype.slice.call(arguments);\n    this.nCachedObjects_ = 0;\n    const indices = {};\n    this._indicesByUUID = indices;\n    for (let i2 = 0, n2 = arguments.length; i2 !== n2; ++i2) {\n      indices[arguments[i2].uuid] = i2;\n    }\n    this._paths = [];\n    this._parsedPaths = [];\n    this._bindings = [];\n    this._bindingsIndicesByPath = {};\n    const scope = this;\n    this.stats = {\n      objects: {\n        get total() {\n          return scope._objects.length;\n        },\n        get inUse() {\n          return this.total - scope.nCachedObjects_;\n        }\n      },\n      get bindingsPerObject() {\n        return scope._bindings.length;\n      }\n    };\n  }\n  add() {\n    const objects = this._objects, indicesByUUID = this._indicesByUUID, paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, nBindings = bindings.length;\n    let knownObject = void 0, nObjects = objects.length, nCachedObjects = this.nCachedObjects_;\n    for (let i2 = 0, n2 = arguments.length; i2 !== n2; ++i2) {\n      const object = arguments[i2], uuid = object.uuid;\n      let index = indicesByUUID[uuid];\n      if (index === void 0) {\n        index = nObjects++;\n        indicesByUUID[uuid] = index;\n        objects.push(object);\n        for (let j2 = 0, m2 = nBindings; j2 !== m2; ++j2) {\n          bindings[j2].push(new PropertyBinding(object, paths[j2], parsedPaths[j2]));\n        }\n      } else if (index < nCachedObjects) {\n        knownObject = objects[index];\n        const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex];\n        indicesByUUID[lastCachedObject.uuid] = index;\n        objects[index] = lastCachedObject;\n        indicesByUUID[uuid] = firstActiveIndex;\n        objects[firstActiveIndex] = object;\n        for (let j2 = 0, m2 = nBindings; j2 !== m2; ++j2) {\n          const bindingsForPath = bindings[j2], lastCached = bindingsForPath[firstActiveIndex];\n          let binding = bindingsForPath[index];\n          bindingsForPath[index] = lastCached;\n          if (binding === void 0) {\n            binding = new PropertyBinding(object, paths[j2], parsedPaths[j2]);\n          }\n          bindingsForPath[firstActiveIndex] = binding;\n        }\n      } else if (objects[index] !== knownObject) {\n        console.error(\"THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.\");\n      }\n    }\n    this.nCachedObjects_ = nCachedObjects;\n  }\n  remove() {\n    const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n    let nCachedObjects = this.nCachedObjects_;\n    for (let i2 = 0, n2 = arguments.length; i2 !== n2; ++i2) {\n      const object = arguments[i2], uuid = object.uuid, index = indicesByUUID[uuid];\n      if (index !== void 0 && index >= nCachedObjects) {\n        const lastCachedIndex = nCachedObjects++, firstActiveObject = objects[lastCachedIndex];\n        indicesByUUID[firstActiveObject.uuid] = index;\n        objects[index] = firstActiveObject;\n        indicesByUUID[uuid] = lastCachedIndex;\n        objects[lastCachedIndex] = object;\n        for (let j2 = 0, m2 = nBindings; j2 !== m2; ++j2) {\n          const bindingsForPath = bindings[j2], firstActive = bindingsForPath[lastCachedIndex], binding = bindingsForPath[index];\n          bindingsForPath[index] = firstActive;\n          bindingsForPath[lastCachedIndex] = binding;\n        }\n      }\n    }\n    this.nCachedObjects_ = nCachedObjects;\n  }\n  // remove & forget\n  uncache() {\n    const objects = this._objects, indicesByUUID = this._indicesByUUID, bindings = this._bindings, nBindings = bindings.length;\n    let nCachedObjects = this.nCachedObjects_, nObjects = objects.length;\n    for (let i2 = 0, n2 = arguments.length; i2 !== n2; ++i2) {\n      const object = arguments[i2], uuid = object.uuid, index = indicesByUUID[uuid];\n      if (index !== void 0) {\n        delete indicesByUUID[uuid];\n        if (index < nCachedObjects) {\n          const firstActiveIndex = --nCachedObjects, lastCachedObject = objects[firstActiveIndex], lastIndex = --nObjects, lastObject = objects[lastIndex];\n          indicesByUUID[lastCachedObject.uuid] = index;\n          objects[index] = lastCachedObject;\n          indicesByUUID[lastObject.uuid] = firstActiveIndex;\n          objects[firstActiveIndex] = lastObject;\n          objects.pop();\n          for (let j2 = 0, m2 = nBindings; j2 !== m2; ++j2) {\n            const bindingsForPath = bindings[j2], lastCached = bindingsForPath[firstActiveIndex], last = bindingsForPath[lastIndex];\n            bindingsForPath[index] = lastCached;\n            bindingsForPath[firstActiveIndex] = last;\n            bindingsForPath.pop();\n          }\n        } else {\n          const lastIndex = --nObjects, lastObject = objects[lastIndex];\n          if (lastIndex > 0) {\n            indicesByUUID[lastObject.uuid] = index;\n          }\n          objects[index] = lastObject;\n          objects.pop();\n          for (let j2 = 0, m2 = nBindings; j2 !== m2; ++j2) {\n            const bindingsForPath = bindings[j2];\n            bindingsForPath[index] = bindingsForPath[lastIndex];\n            bindingsForPath.pop();\n          }\n        }\n      }\n    }\n    this.nCachedObjects_ = nCachedObjects;\n  }\n  // Internal interface used by befriended PropertyBinding.Composite:\n  subscribe_(path, parsedPath) {\n    const indicesByPath = this._bindingsIndicesByPath;\n    let index = indicesByPath[path];\n    const bindings = this._bindings;\n    if (index !== void 0) return bindings[index];\n    const paths = this._paths, parsedPaths = this._parsedPaths, objects = this._objects, nObjects = objects.length, nCachedObjects = this.nCachedObjects_, bindingsForPath = new Array(nObjects);\n    index = bindings.length;\n    indicesByPath[path] = index;\n    paths.push(path);\n    parsedPaths.push(parsedPath);\n    bindings.push(bindingsForPath);\n    for (let i2 = nCachedObjects, n2 = objects.length; i2 !== n2; ++i2) {\n      const object = objects[i2];\n      bindingsForPath[i2] = new PropertyBinding(object, path, parsedPath);\n    }\n    return bindingsForPath;\n  }\n  unsubscribe_(path) {\n    const indicesByPath = this._bindingsIndicesByPath, index = indicesByPath[path];\n    if (index !== void 0) {\n      const paths = this._paths, parsedPaths = this._parsedPaths, bindings = this._bindings, lastBindingsIndex = bindings.length - 1, lastBindings = bindings[lastBindingsIndex], lastBindingsPath = path[lastBindingsIndex];\n      indicesByPath[lastBindingsPath] = index;\n      bindings[index] = lastBindings;\n      bindings.pop();\n      parsedPaths[index] = parsedPaths[lastBindingsIndex];\n      parsedPaths.pop();\n      paths[index] = paths[lastBindingsIndex];\n      paths.pop();\n    }\n  }\n}\nclass AnimationAction {\n  constructor(mixer, clip, localRoot = null, blendMode = clip.blendMode) {\n    this._mixer = mixer;\n    this._clip = clip;\n    this._localRoot = localRoot;\n    this.blendMode = blendMode;\n    const tracks = clip.tracks, nTracks = tracks.length, interpolants = new Array(nTracks);\n    const interpolantSettings = {\n      endingStart: ZeroCurvatureEnding,\n      endingEnd: ZeroCurvatureEnding\n    };\n    for (let i2 = 0; i2 !== nTracks; ++i2) {\n      const interpolant = tracks[i2].createInterpolant(null);\n      interpolants[i2] = interpolant;\n      interpolant.settings = interpolantSettings;\n    }\n    this._interpolantSettings = interpolantSettings;\n    this._interpolants = interpolants;\n    this._propertyBindings = new Array(nTracks);\n    this._cacheIndex = null;\n    this._byClipCacheIndex = null;\n    this._timeScaleInterpolant = null;\n    this._weightInterpolant = null;\n    this.loop = LoopRepeat;\n    this._loopCount = -1;\n    this._startTime = null;\n    this.time = 0;\n    this.timeScale = 1;\n    this._effectiveTimeScale = 1;\n    this.weight = 1;\n    this._effectiveWeight = 1;\n    this.repetitions = Infinity;\n    this.paused = false;\n    this.enabled = true;\n    this.clampWhenFinished = false;\n    this.zeroSlopeAtStart = true;\n    this.zeroSlopeAtEnd = true;\n  }\n  // State & Scheduling\n  play() {\n    this._mixer._activateAction(this);\n    return this;\n  }\n  stop() {\n    this._mixer._deactivateAction(this);\n    return this.reset();\n  }\n  reset() {\n    this.paused = false;\n    this.enabled = true;\n    this.time = 0;\n    this._loopCount = -1;\n    this._startTime = null;\n    return this.stopFading().stopWarping();\n  }\n  isRunning() {\n    return this.enabled && !this.paused && this.timeScale !== 0 && this._startTime === null && this._mixer._isActiveAction(this);\n  }\n  // return true when play has been called\n  isScheduled() {\n    return this._mixer._isActiveAction(this);\n  }\n  startAt(time) {\n    this._startTime = time;\n    return this;\n  }\n  setLoop(mode, repetitions) {\n    this.loop = mode;\n    this.repetitions = repetitions;\n    return this;\n  }\n  // Weight\n  // set the weight stopping any scheduled fading\n  // although .enabled = false yields an effective weight of zero, this\n  // method does *not* change .enabled, because it would be confusing\n  setEffectiveWeight(weight) {\n    this.weight = weight;\n    this._effectiveWeight = this.enabled ? weight : 0;\n    return this.stopFading();\n  }\n  // return the weight considering fading and .enabled\n  getEffectiveWeight() {\n    return this._effectiveWeight;\n  }\n  fadeIn(duration) {\n    return this._scheduleFading(duration, 0, 1);\n  }\n  fadeOut(duration) {\n    return this._scheduleFading(duration, 1, 0);\n  }\n  crossFadeFrom(fadeOutAction, duration, warp) {\n    fadeOutAction.fadeOut(duration);\n    this.fadeIn(duration);\n    if (warp) {\n      const fadeInDuration = this._clip.duration, fadeOutDuration = fadeOutAction._clip.duration, startEndRatio = fadeOutDuration / fadeInDuration, endStartRatio = fadeInDuration / fadeOutDuration;\n      fadeOutAction.warp(1, startEndRatio, duration);\n      this.warp(endStartRatio, 1, duration);\n    }\n    return this;\n  }\n  crossFadeTo(fadeInAction, duration, warp) {\n    return fadeInAction.crossFadeFrom(this, duration, warp);\n  }\n  stopFading() {\n    const weightInterpolant = this._weightInterpolant;\n    if (weightInterpolant !== null) {\n      this._weightInterpolant = null;\n      this._mixer._takeBackControlInterpolant(weightInterpolant);\n    }\n    return this;\n  }\n  // Time Scale Control\n  // set the time scale stopping any scheduled warping\n  // although .paused = true yields an effective time scale of zero, this\n  // method does *not* change .paused, because it would be confusing\n  setEffectiveTimeScale(timeScale) {\n    this.timeScale = timeScale;\n    this._effectiveTimeScale = this.paused ? 0 : timeScale;\n    return this.stopWarping();\n  }\n  // return the time scale considering warping and .paused\n  getEffectiveTimeScale() {\n    return this._effectiveTimeScale;\n  }\n  setDuration(duration) {\n    this.timeScale = this._clip.duration / duration;\n    return this.stopWarping();\n  }\n  syncWith(action) {\n    this.time = action.time;\n    this.timeScale = action.timeScale;\n    return this.stopWarping();\n  }\n  halt(duration) {\n    return this.warp(this._effectiveTimeScale, 0, duration);\n  }\n  warp(startTimeScale, endTimeScale, duration) {\n    const mixer = this._mixer, now2 = mixer.time, timeScale = this.timeScale;\n    let interpolant = this._timeScaleInterpolant;\n    if (interpolant === null) {\n      interpolant = mixer._lendControlInterpolant();\n      this._timeScaleInterpolant = interpolant;\n    }\n    const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n    times[0] = now2;\n    times[1] = now2 + duration;\n    values[0] = startTimeScale / timeScale;\n    values[1] = endTimeScale / timeScale;\n    return this;\n  }\n  stopWarping() {\n    const timeScaleInterpolant = this._timeScaleInterpolant;\n    if (timeScaleInterpolant !== null) {\n      this._timeScaleInterpolant = null;\n      this._mixer._takeBackControlInterpolant(timeScaleInterpolant);\n    }\n    return this;\n  }\n  // Object Accessors\n  getMixer() {\n    return this._mixer;\n  }\n  getClip() {\n    return this._clip;\n  }\n  getRoot() {\n    return this._localRoot || this._mixer._root;\n  }\n  // Interna\n  _update(time, deltaTime, timeDirection, accuIndex) {\n    if (!this.enabled) {\n      this._updateWeight(time);\n      return;\n    }\n    const startTime = this._startTime;\n    if (startTime !== null) {\n      const timeRunning = (time - startTime) * timeDirection;\n      if (timeRunning < 0 || timeDirection === 0) {\n        deltaTime = 0;\n      } else {\n        this._startTime = null;\n        deltaTime = timeDirection * timeRunning;\n      }\n    }\n    deltaTime *= this._updateTimeScale(time);\n    const clipTime = this._updateTime(deltaTime);\n    const weight = this._updateWeight(time);\n    if (weight > 0) {\n      const interpolants = this._interpolants;\n      const propertyMixers = this._propertyBindings;\n      switch (this.blendMode) {\n        case AdditiveAnimationBlendMode:\n          for (let j2 = 0, m2 = interpolants.length; j2 !== m2; ++j2) {\n            interpolants[j2].evaluate(clipTime);\n            propertyMixers[j2].accumulateAdditive(weight);\n          }\n          break;\n        case NormalAnimationBlendMode:\n        default:\n          for (let j2 = 0, m2 = interpolants.length; j2 !== m2; ++j2) {\n            interpolants[j2].evaluate(clipTime);\n            propertyMixers[j2].accumulate(accuIndex, weight);\n          }\n      }\n    }\n  }\n  _updateWeight(time) {\n    let weight = 0;\n    if (this.enabled) {\n      weight = this.weight;\n      const interpolant = this._weightInterpolant;\n      if (interpolant !== null) {\n        const interpolantValue = interpolant.evaluate(time)[0];\n        weight *= interpolantValue;\n        if (time > interpolant.parameterPositions[1]) {\n          this.stopFading();\n          if (interpolantValue === 0) {\n            this.enabled = false;\n          }\n        }\n      }\n    }\n    this._effectiveWeight = weight;\n    return weight;\n  }\n  _updateTimeScale(time) {\n    let timeScale = 0;\n    if (!this.paused) {\n      timeScale = this.timeScale;\n      const interpolant = this._timeScaleInterpolant;\n      if (interpolant !== null) {\n        const interpolantValue = interpolant.evaluate(time)[0];\n        timeScale *= interpolantValue;\n        if (time > interpolant.parameterPositions[1]) {\n          this.stopWarping();\n          if (timeScale === 0) {\n            this.paused = true;\n          } else {\n            this.timeScale = timeScale;\n          }\n        }\n      }\n    }\n    this._effectiveTimeScale = timeScale;\n    return timeScale;\n  }\n  _updateTime(deltaTime) {\n    const duration = this._clip.duration;\n    const loop = this.loop;\n    let time = this.time + deltaTime;\n    let loopCount = this._loopCount;\n    const pingPong = loop === LoopPingPong;\n    if (deltaTime === 0) {\n      if (loopCount === -1) return time;\n      return pingPong && (loopCount & 1) === 1 ? duration - time : time;\n    }\n    if (loop === LoopOnce) {\n      if (loopCount === -1) {\n        this._loopCount = 0;\n        this._setEndings(true, true, false);\n      }\n      handle_stop: {\n        if (time >= duration) {\n          time = duration;\n        } else if (time < 0) {\n          time = 0;\n        } else {\n          this.time = time;\n          break handle_stop;\n        }\n        if (this.clampWhenFinished) this.paused = true;\n        else this.enabled = false;\n        this.time = time;\n        this._mixer.dispatchEvent({\n          type: \"finished\",\n          action: this,\n          direction: deltaTime < 0 ? -1 : 1\n        });\n      }\n    } else {\n      if (loopCount === -1) {\n        if (deltaTime >= 0) {\n          loopCount = 0;\n          this._setEndings(true, this.repetitions === 0, pingPong);\n        } else {\n          this._setEndings(this.repetitions === 0, true, pingPong);\n        }\n      }\n      if (time >= duration || time < 0) {\n        const loopDelta = Math.floor(time / duration);\n        time -= duration * loopDelta;\n        loopCount += Math.abs(loopDelta);\n        const pending = this.repetitions - loopCount;\n        if (pending <= 0) {\n          if (this.clampWhenFinished) this.paused = true;\n          else this.enabled = false;\n          time = deltaTime > 0 ? duration : 0;\n          this.time = time;\n          this._mixer.dispatchEvent({\n            type: \"finished\",\n            action: this,\n            direction: deltaTime > 0 ? 1 : -1\n          });\n        } else {\n          if (pending === 1) {\n            const atStart = deltaTime < 0;\n            this._setEndings(atStart, !atStart, pingPong);\n          } else {\n            this._setEndings(false, false, pingPong);\n          }\n          this._loopCount = loopCount;\n          this.time = time;\n          this._mixer.dispatchEvent({\n            type: \"loop\",\n            action: this,\n            loopDelta\n          });\n        }\n      } else {\n        this.time = time;\n      }\n      if (pingPong && (loopCount & 1) === 1) {\n        return duration - time;\n      }\n    }\n    return time;\n  }\n  _setEndings(atStart, atEnd, pingPong) {\n    const settings = this._interpolantSettings;\n    if (pingPong) {\n      settings.endingStart = ZeroSlopeEnding;\n      settings.endingEnd = ZeroSlopeEnding;\n    } else {\n      if (atStart) {\n        settings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\n      } else {\n        settings.endingStart = WrapAroundEnding;\n      }\n      if (atEnd) {\n        settings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\n      } else {\n        settings.endingEnd = WrapAroundEnding;\n      }\n    }\n  }\n  _scheduleFading(duration, weightNow, weightThen) {\n    const mixer = this._mixer, now2 = mixer.time;\n    let interpolant = this._weightInterpolant;\n    if (interpolant === null) {\n      interpolant = mixer._lendControlInterpolant();\n      this._weightInterpolant = interpolant;\n    }\n    const times = interpolant.parameterPositions, values = interpolant.sampleValues;\n    times[0] = now2;\n    values[0] = weightNow;\n    times[1] = now2 + duration;\n    values[1] = weightThen;\n    return this;\n  }\n}\nconst _controlInterpolantsResultBuffer = new Float32Array(1);\nclass AnimationMixer extends EventDispatcher {\n  constructor(root) {\n    super();\n    this._root = root;\n    this._initMemoryManager();\n    this._accuIndex = 0;\n    this.time = 0;\n    this.timeScale = 1;\n  }\n  _bindAction(action, prototypeAction) {\n    const root = action._localRoot || this._root, tracks = action._clip.tracks, nTracks = tracks.length, bindings = action._propertyBindings, interpolants = action._interpolants, rootUuid = root.uuid, bindingsByRoot = this._bindingsByRootAndName;\n    let bindingsByName = bindingsByRoot[rootUuid];\n    if (bindingsByName === void 0) {\n      bindingsByName = {};\n      bindingsByRoot[rootUuid] = bindingsByName;\n    }\n    for (let i2 = 0; i2 !== nTracks; ++i2) {\n      const track = tracks[i2], trackName = track.name;\n      let binding = bindingsByName[trackName];\n      if (binding !== void 0) {\n        ++binding.referenceCount;\n        bindings[i2] = binding;\n      } else {\n        binding = bindings[i2];\n        if (binding !== void 0) {\n          if (binding._cacheIndex === null) {\n            ++binding.referenceCount;\n            this._addInactiveBinding(binding, rootUuid, trackName);\n          }\n          continue;\n        }\n        const path = prototypeAction && prototypeAction._propertyBindings[i2].binding.parsedPath;\n        binding = new PropertyMixer(\n          PropertyBinding.create(root, trackName, path),\n          track.ValueTypeName,\n          track.getValueSize()\n        );\n        ++binding.referenceCount;\n        this._addInactiveBinding(binding, rootUuid, trackName);\n        bindings[i2] = binding;\n      }\n      interpolants[i2].resultBuffer = binding.buffer;\n    }\n  }\n  _activateAction(action) {\n    if (!this._isActiveAction(action)) {\n      if (action._cacheIndex === null) {\n        const rootUuid = (action._localRoot || this._root).uuid, clipUuid = action._clip.uuid, actionsForClip = this._actionsByClip[clipUuid];\n        this._bindAction(\n          action,\n          actionsForClip && actionsForClip.knownActions[0]\n        );\n        this._addInactiveAction(action, clipUuid, rootUuid);\n      }\n      const bindings = action._propertyBindings;\n      for (let i2 = 0, n2 = bindings.length; i2 !== n2; ++i2) {\n        const binding = bindings[i2];\n        if (binding.useCount++ === 0) {\n          this._lendBinding(binding);\n          binding.saveOriginalState();\n        }\n      }\n      this._lendAction(action);\n    }\n  }\n  _deactivateAction(action) {\n    if (this._isActiveAction(action)) {\n      const bindings = action._propertyBindings;\n      for (let i2 = 0, n2 = bindings.length; i2 !== n2; ++i2) {\n        const binding = bindings[i2];\n        if (--binding.useCount === 0) {\n          binding.restoreOriginalState();\n          this._takeBackBinding(binding);\n        }\n      }\n      this._takeBackAction(action);\n    }\n  }\n  // Memory manager\n  _initMemoryManager() {\n    this._actions = [];\n    this._nActiveActions = 0;\n    this._actionsByClip = {};\n    this._bindings = [];\n    this._nActiveBindings = 0;\n    this._bindingsByRootAndName = {};\n    this._controlInterpolants = [];\n    this._nActiveControlInterpolants = 0;\n    const scope = this;\n    this.stats = {\n      actions: {\n        get total() {\n          return scope._actions.length;\n        },\n        get inUse() {\n          return scope._nActiveActions;\n        }\n      },\n      bindings: {\n        get total() {\n          return scope._bindings.length;\n        },\n        get inUse() {\n          return scope._nActiveBindings;\n        }\n      },\n      controlInterpolants: {\n        get total() {\n          return scope._controlInterpolants.length;\n        },\n        get inUse() {\n          return scope._nActiveControlInterpolants;\n        }\n      }\n    };\n  }\n  // Memory management for AnimationAction objects\n  _isActiveAction(action) {\n    const index = action._cacheIndex;\n    return index !== null && index < this._nActiveActions;\n  }\n  _addInactiveAction(action, clipUuid, rootUuid) {\n    const actions = this._actions, actionsByClip = this._actionsByClip;\n    let actionsForClip = actionsByClip[clipUuid];\n    if (actionsForClip === void 0) {\n      actionsForClip = {\n        knownActions: [action],\n        actionByRoot: {}\n      };\n      action._byClipCacheIndex = 0;\n      actionsByClip[clipUuid] = actionsForClip;\n    } else {\n      const knownActions = actionsForClip.knownActions;\n      action._byClipCacheIndex = knownActions.length;\n      knownActions.push(action);\n    }\n    action._cacheIndex = actions.length;\n    actions.push(action);\n    actionsForClip.actionByRoot[rootUuid] = action;\n  }\n  _removeInactiveAction(action) {\n    const actions = this._actions, lastInactiveAction = actions[actions.length - 1], cacheIndex = action._cacheIndex;\n    lastInactiveAction._cacheIndex = cacheIndex;\n    actions[cacheIndex] = lastInactiveAction;\n    actions.pop();\n    action._cacheIndex = null;\n    const clipUuid = action._clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid], knownActionsForClip = actionsForClip.knownActions, lastKnownAction = knownActionsForClip[knownActionsForClip.length - 1], byClipCacheIndex = action._byClipCacheIndex;\n    lastKnownAction._byClipCacheIndex = byClipCacheIndex;\n    knownActionsForClip[byClipCacheIndex] = lastKnownAction;\n    knownActionsForClip.pop();\n    action._byClipCacheIndex = null;\n    const actionByRoot = actionsForClip.actionByRoot, rootUuid = (action._localRoot || this._root).uuid;\n    delete actionByRoot[rootUuid];\n    if (knownActionsForClip.length === 0) {\n      delete actionsByClip[clipUuid];\n    }\n    this._removeInactiveBindingsForAction(action);\n  }\n  _removeInactiveBindingsForAction(action) {\n    const bindings = action._propertyBindings;\n    for (let i2 = 0, n2 = bindings.length; i2 !== n2; ++i2) {\n      const binding = bindings[i2];\n      if (--binding.referenceCount === 0) {\n        this._removeInactiveBinding(binding);\n      }\n    }\n  }\n  _lendAction(action) {\n    const actions = this._actions, prevIndex = action._cacheIndex, lastActiveIndex = this._nActiveActions++, firstInactiveAction = actions[lastActiveIndex];\n    action._cacheIndex = lastActiveIndex;\n    actions[lastActiveIndex] = action;\n    firstInactiveAction._cacheIndex = prevIndex;\n    actions[prevIndex] = firstInactiveAction;\n  }\n  _takeBackAction(action) {\n    const actions = this._actions, prevIndex = action._cacheIndex, firstInactiveIndex = --this._nActiveActions, lastActiveAction = actions[firstInactiveIndex];\n    action._cacheIndex = firstInactiveIndex;\n    actions[firstInactiveIndex] = action;\n    lastActiveAction._cacheIndex = prevIndex;\n    actions[prevIndex] = lastActiveAction;\n  }\n  // Memory management for PropertyMixer objects\n  _addInactiveBinding(binding, rootUuid, trackName) {\n    const bindingsByRoot = this._bindingsByRootAndName, bindings = this._bindings;\n    let bindingByName = bindingsByRoot[rootUuid];\n    if (bindingByName === void 0) {\n      bindingByName = {};\n      bindingsByRoot[rootUuid] = bindingByName;\n    }\n    bindingByName[trackName] = binding;\n    binding._cacheIndex = bindings.length;\n    bindings.push(binding);\n  }\n  _removeInactiveBinding(binding) {\n    const bindings = this._bindings, propBinding = binding.binding, rootUuid = propBinding.rootNode.uuid, trackName = propBinding.path, bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid], lastInactiveBinding = bindings[bindings.length - 1], cacheIndex = binding._cacheIndex;\n    lastInactiveBinding._cacheIndex = cacheIndex;\n    bindings[cacheIndex] = lastInactiveBinding;\n    bindings.pop();\n    delete bindingByName[trackName];\n    if (Object.keys(bindingByName).length === 0) {\n      delete bindingsByRoot[rootUuid];\n    }\n  }\n  _lendBinding(binding) {\n    const bindings = this._bindings, prevIndex = binding._cacheIndex, lastActiveIndex = this._nActiveBindings++, firstInactiveBinding = bindings[lastActiveIndex];\n    binding._cacheIndex = lastActiveIndex;\n    bindings[lastActiveIndex] = binding;\n    firstInactiveBinding._cacheIndex = prevIndex;\n    bindings[prevIndex] = firstInactiveBinding;\n  }\n  _takeBackBinding(binding) {\n    const bindings = this._bindings, prevIndex = binding._cacheIndex, firstInactiveIndex = --this._nActiveBindings, lastActiveBinding = bindings[firstInactiveIndex];\n    binding._cacheIndex = firstInactiveIndex;\n    bindings[firstInactiveIndex] = binding;\n    lastActiveBinding._cacheIndex = prevIndex;\n    bindings[prevIndex] = lastActiveBinding;\n  }\n  // Memory management of Interpolants for weight and time scale\n  _lendControlInterpolant() {\n    const interpolants = this._controlInterpolants, lastActiveIndex = this._nActiveControlInterpolants++;\n    let interpolant = interpolants[lastActiveIndex];\n    if (interpolant === void 0) {\n      interpolant = new LinearInterpolant(\n        new Float32Array(2),\n        new Float32Array(2),\n        1,\n        _controlInterpolantsResultBuffer\n      );\n      interpolant.__cacheIndex = lastActiveIndex;\n      interpolants[lastActiveIndex] = interpolant;\n    }\n    return interpolant;\n  }\n  _takeBackControlInterpolant(interpolant) {\n    const interpolants = this._controlInterpolants, prevIndex = interpolant.__cacheIndex, firstInactiveIndex = --this._nActiveControlInterpolants, lastActiveInterpolant = interpolants[firstInactiveIndex];\n    interpolant.__cacheIndex = firstInactiveIndex;\n    interpolants[firstInactiveIndex] = interpolant;\n    lastActiveInterpolant.__cacheIndex = prevIndex;\n    interpolants[prevIndex] = lastActiveInterpolant;\n  }\n  // return an action for a clip optionally using a custom root target\n  // object (this method allocates a lot of dynamic memory in case a\n  // previously unknown clip/root combination is specified)\n  clipAction(clip, optionalRoot, blendMode) {\n    const root = optionalRoot || this._root, rootUuid = root.uuid;\n    let clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip;\n    const clipUuid = clipObject !== null ? clipObject.uuid : clip;\n    const actionsForClip = this._actionsByClip[clipUuid];\n    let prototypeAction = null;\n    if (blendMode === void 0) {\n      if (clipObject !== null) {\n        blendMode = clipObject.blendMode;\n      } else {\n        blendMode = NormalAnimationBlendMode;\n      }\n    }\n    if (actionsForClip !== void 0) {\n      const existingAction = actionsForClip.actionByRoot[rootUuid];\n      if (existingAction !== void 0 && existingAction.blendMode === blendMode) {\n        return existingAction;\n      }\n      prototypeAction = actionsForClip.knownActions[0];\n      if (clipObject === null)\n        clipObject = prototypeAction._clip;\n    }\n    if (clipObject === null) return null;\n    const newAction = new AnimationAction(this, clipObject, optionalRoot, blendMode);\n    this._bindAction(newAction, prototypeAction);\n    this._addInactiveAction(newAction, clipUuid, rootUuid);\n    return newAction;\n  }\n  // get an existing action\n  existingAction(clip, optionalRoot) {\n    const root = optionalRoot || this._root, rootUuid = root.uuid, clipObject = typeof clip === \"string\" ? AnimationClip.findByName(root, clip) : clip, clipUuid = clipObject ? clipObject.uuid : clip, actionsForClip = this._actionsByClip[clipUuid];\n    if (actionsForClip !== void 0) {\n      return actionsForClip.actionByRoot[rootUuid] || null;\n    }\n    return null;\n  }\n  // deactivates all previously scheduled actions\n  stopAllAction() {\n    const actions = this._actions, nActions = this._nActiveActions;\n    for (let i2 = nActions - 1; i2 >= 0; --i2) {\n      actions[i2].stop();\n    }\n    return this;\n  }\n  // advance the time and update apply the animation\n  update(deltaTime) {\n    deltaTime *= this.timeScale;\n    const actions = this._actions, nActions = this._nActiveActions, time = this.time += deltaTime, timeDirection = Math.sign(deltaTime), accuIndex = this._accuIndex ^= 1;\n    for (let i2 = 0; i2 !== nActions; ++i2) {\n      const action = actions[i2];\n      action._update(time, deltaTime, timeDirection, accuIndex);\n    }\n    const bindings = this._bindings, nBindings = this._nActiveBindings;\n    for (let i2 = 0; i2 !== nBindings; ++i2) {\n      bindings[i2].apply(accuIndex);\n    }\n    return this;\n  }\n  // Allows you to seek to a specific time in an animation.\n  setTime(timeInSeconds) {\n    this.time = 0;\n    for (let i2 = 0; i2 < this._actions.length; i2++) {\n      this._actions[i2].time = 0;\n    }\n    return this.update(timeInSeconds);\n  }\n  // return this mixer's root target object\n  getRoot() {\n    return this._root;\n  }\n  // free all resources specific to a particular clip\n  uncacheClip(clip) {\n    const actions = this._actions, clipUuid = clip.uuid, actionsByClip = this._actionsByClip, actionsForClip = actionsByClip[clipUuid];\n    if (actionsForClip !== void 0) {\n      const actionsToRemove = actionsForClip.knownActions;\n      for (let i2 = 0, n2 = actionsToRemove.length; i2 !== n2; ++i2) {\n        const action = actionsToRemove[i2];\n        this._deactivateAction(action);\n        const cacheIndex = action._cacheIndex, lastInactiveAction = actions[actions.length - 1];\n        action._cacheIndex = null;\n        action._byClipCacheIndex = null;\n        lastInactiveAction._cacheIndex = cacheIndex;\n        actions[cacheIndex] = lastInactiveAction;\n        actions.pop();\n        this._removeInactiveBindingsForAction(action);\n      }\n      delete actionsByClip[clipUuid];\n    }\n  }\n  // free all resources specific to a particular root target object\n  uncacheRoot(root) {\n    const rootUuid = root.uuid, actionsByClip = this._actionsByClip;\n    for (const clipUuid in actionsByClip) {\n      const actionByRoot = actionsByClip[clipUuid].actionByRoot, action = actionByRoot[rootUuid];\n      if (action !== void 0) {\n        this._deactivateAction(action);\n        this._removeInactiveAction(action);\n      }\n    }\n    const bindingsByRoot = this._bindingsByRootAndName, bindingByName = bindingsByRoot[rootUuid];\n    if (bindingByName !== void 0) {\n      for (const trackName in bindingByName) {\n        const binding = bindingByName[trackName];\n        binding.restoreOriginalState();\n        this._removeInactiveBinding(binding);\n      }\n    }\n  }\n  // remove a targeted clip from the cache\n  uncacheAction(clip, optionalRoot) {\n    const action = this.existingAction(clip, optionalRoot);\n    if (action !== null) {\n      this._deactivateAction(action);\n      this._removeInactiveAction(action);\n    }\n  }\n}\nclass Uniform {\n  constructor(value) {\n    this.value = value;\n  }\n  clone() {\n    return new Uniform(this.value.clone === void 0 ? this.value : this.value.clone());\n  }\n}\nlet _id = 0;\nclass UniformsGroup extends EventDispatcher {\n  constructor() {\n    super();\n    this.isUniformsGroup = true;\n    Object.defineProperty(this, \"id\", { value: _id++ });\n    this.name = \"\";\n    this.usage = StaticDrawUsage;\n    this.uniforms = [];\n  }\n  add(uniform) {\n    this.uniforms.push(uniform);\n    return this;\n  }\n  remove(uniform) {\n    const index = this.uniforms.indexOf(uniform);\n    if (index !== -1) this.uniforms.splice(index, 1);\n    return this;\n  }\n  setName(name) {\n    this.name = name;\n    return this;\n  }\n  setUsage(value) {\n    this.usage = value;\n    return this;\n  }\n  dispose() {\n    this.dispatchEvent({ type: \"dispose\" });\n    return this;\n  }\n  copy(source) {\n    this.name = source.name;\n    this.usage = source.usage;\n    const uniformsSource = source.uniforms;\n    this.uniforms.length = 0;\n    for (let i2 = 0, l2 = uniformsSource.length; i2 < l2; i2++) {\n      const uniforms = Array.isArray(uniformsSource[i2]) ? uniformsSource[i2] : [uniformsSource[i2]];\n      for (let j2 = 0; j2 < uniforms.length; j2++) {\n        this.uniforms.push(uniforms[j2].clone());\n      }\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass InstancedInterleavedBuffer extends InterleavedBuffer {\n  constructor(array, stride, meshPerAttribute = 1) {\n    super(array, stride);\n    this.isInstancedInterleavedBuffer = true;\n    this.meshPerAttribute = meshPerAttribute;\n  }\n  copy(source) {\n    super.copy(source);\n    this.meshPerAttribute = source.meshPerAttribute;\n    return this;\n  }\n  clone(data) {\n    const ib = super.clone(data);\n    ib.meshPerAttribute = this.meshPerAttribute;\n    return ib;\n  }\n  toJSON(data) {\n    const json = super.toJSON(data);\n    json.isInstancedInterleavedBuffer = true;\n    json.meshPerAttribute = this.meshPerAttribute;\n    return json;\n  }\n}\nclass GLBufferAttribute {\n  constructor(buffer, type, itemSize, elementSize, count) {\n    this.isGLBufferAttribute = true;\n    this.name = \"\";\n    this.buffer = buffer;\n    this.type = type;\n    this.itemSize = itemSize;\n    this.elementSize = elementSize;\n    this.count = count;\n    this.version = 0;\n  }\n  set needsUpdate(value) {\n    if (value === true) this.version++;\n  }\n  setBuffer(buffer) {\n    this.buffer = buffer;\n    return this;\n  }\n  setType(type, elementSize) {\n    this.type = type;\n    this.elementSize = elementSize;\n    return this;\n  }\n  setItemSize(itemSize) {\n    this.itemSize = itemSize;\n    return this;\n  }\n  setCount(count) {\n    this.count = count;\n    return this;\n  }\n}\nclass Raycaster {\n  constructor(origin, direction, near = 0, far = Infinity) {\n    this.ray = new Ray(origin, direction);\n    this.near = near;\n    this.far = far;\n    this.camera = null;\n    this.layers = new Layers();\n    this.params = {\n      Mesh: {},\n      Line: { threshold: 1 },\n      LOD: {},\n      Points: { threshold: 1 },\n      Sprite: {}\n    };\n  }\n  set(origin, direction) {\n    this.ray.set(origin, direction);\n  }\n  setFromCamera(coords, camera) {\n    if (camera.isPerspectiveCamera) {\n      this.ray.origin.setFromMatrixPosition(camera.matrixWorld);\n      this.ray.direction.set(coords.x, coords.y, 0.5).unproject(camera).sub(this.ray.origin).normalize();\n      this.camera = camera;\n    } else if (camera.isOrthographicCamera) {\n      this.ray.origin.set(coords.x, coords.y, (camera.near + camera.far) / (camera.near - camera.far)).unproject(camera);\n      this.ray.direction.set(0, 0, -1).transformDirection(camera.matrixWorld);\n      this.camera = camera;\n    } else {\n      console.error(\"THREE.Raycaster: Unsupported camera type: \" + camera.type);\n    }\n  }\n  intersectObject(object, recursive = true, intersects2 = []) {\n    intersectObject(object, this, intersects2, recursive);\n    intersects2.sort(ascSort);\n    return intersects2;\n  }\n  intersectObjects(objects, recursive = true, intersects2 = []) {\n    for (let i2 = 0, l2 = objects.length; i2 < l2; i2++) {\n      intersectObject(objects[i2], this, intersects2, recursive);\n    }\n    intersects2.sort(ascSort);\n    return intersects2;\n  }\n}\nfunction ascSort(a2, b2) {\n  return a2.distance - b2.distance;\n}\nfunction intersectObject(object, raycaster, intersects2, recursive) {\n  if (object.layers.test(raycaster.layers)) {\n    object.raycast(raycaster, intersects2);\n  }\n  if (recursive === true) {\n    const children = object.children;\n    for (let i2 = 0, l2 = children.length; i2 < l2; i2++) {\n      intersectObject(children[i2], raycaster, intersects2, true);\n    }\n  }\n}\nclass Spherical {\n  constructor(radius = 1, phi = 0, theta = 0) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this;\n  }\n  set(radius, phi, theta) {\n    this.radius = radius;\n    this.phi = phi;\n    this.theta = theta;\n    return this;\n  }\n  copy(other) {\n    this.radius = other.radius;\n    this.phi = other.phi;\n    this.theta = other.theta;\n    return this;\n  }\n  // restrict phi to be between EPS and PI-EPS\n  makeSafe() {\n    const EPS = 1e-6;\n    this.phi = Math.max(EPS, Math.min(Math.PI - EPS, this.phi));\n    return this;\n  }\n  setFromVector3(v2) {\n    return this.setFromCartesianCoords(v2.x, v2.y, v2.z);\n  }\n  setFromCartesianCoords(x2, y2, z2) {\n    this.radius = Math.sqrt(x2 * x2 + y2 * y2 + z2 * z2);\n    if (this.radius === 0) {\n      this.theta = 0;\n      this.phi = 0;\n    } else {\n      this.theta = Math.atan2(x2, z2);\n      this.phi = Math.acos(clamp(y2 / this.radius, -1, 1));\n    }\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nclass Cylindrical {\n  constructor(radius = 1, theta = 0, y2 = 0) {\n    this.radius = radius;\n    this.theta = theta;\n    this.y = y2;\n    return this;\n  }\n  set(radius, theta, y2) {\n    this.radius = radius;\n    this.theta = theta;\n    this.y = y2;\n    return this;\n  }\n  copy(other) {\n    this.radius = other.radius;\n    this.theta = other.theta;\n    this.y = other.y;\n    return this;\n  }\n  setFromVector3(v2) {\n    return this.setFromCartesianCoords(v2.x, v2.y, v2.z);\n  }\n  setFromCartesianCoords(x2, y2, z2) {\n    this.radius = Math.sqrt(x2 * x2 + z2 * z2);\n    this.theta = Math.atan2(x2, z2);\n    this.y = y2;\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _vector$4 = /* @__PURE__ */ new Vector2();\nclass Box2 {\n  constructor(min = new Vector2(Infinity, Infinity), max2 = new Vector2(-Infinity, -Infinity)) {\n    this.isBox2 = true;\n    this.min = min;\n    this.max = max2;\n  }\n  set(min, max2) {\n    this.min.copy(min);\n    this.max.copy(max2);\n    return this;\n  }\n  setFromPoints(points) {\n    this.makeEmpty();\n    for (let i2 = 0, il = points.length; i2 < il; i2++) {\n      this.expandByPoint(points[i2]);\n    }\n    return this;\n  }\n  setFromCenterAndSize(center, size) {\n    const halfSize = _vector$4.copy(size).multiplyScalar(0.5);\n    this.min.copy(center).sub(halfSize);\n    this.max.copy(center).add(halfSize);\n    return this;\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n  copy(box) {\n    this.min.copy(box.min);\n    this.max.copy(box.max);\n    return this;\n  }\n  makeEmpty() {\n    this.min.x = this.min.y = Infinity;\n    this.max.x = this.max.y = -Infinity;\n    return this;\n  }\n  isEmpty() {\n    return this.max.x < this.min.x || this.max.y < this.min.y;\n  }\n  getCenter(target) {\n    return this.isEmpty() ? target.set(0, 0) : target.addVectors(this.min, this.max).multiplyScalar(0.5);\n  }\n  getSize(target) {\n    return this.isEmpty() ? target.set(0, 0) : target.subVectors(this.max, this.min);\n  }\n  expandByPoint(point) {\n    this.min.min(point);\n    this.max.max(point);\n    return this;\n  }\n  expandByVector(vector) {\n    this.min.sub(vector);\n    this.max.add(vector);\n    return this;\n  }\n  expandByScalar(scalar) {\n    this.min.addScalar(-scalar);\n    this.max.addScalar(scalar);\n    return this;\n  }\n  containsPoint(point) {\n    return point.x < this.min.x || point.x > this.max.x || point.y < this.min.y || point.y > this.max.y ? false : true;\n  }\n  containsBox(box) {\n    return this.min.x <= box.min.x && box.max.x <= this.max.x && this.min.y <= box.min.y && box.max.y <= this.max.y;\n  }\n  getParameter(point, target) {\n    return target.set(\n      (point.x - this.min.x) / (this.max.x - this.min.x),\n      (point.y - this.min.y) / (this.max.y - this.min.y)\n    );\n  }\n  intersectsBox(box) {\n    return box.max.x < this.min.x || box.min.x > this.max.x || box.max.y < this.min.y || box.min.y > this.max.y ? false : true;\n  }\n  clampPoint(point, target) {\n    return target.copy(point).clamp(this.min, this.max);\n  }\n  distanceToPoint(point) {\n    return this.clampPoint(point, _vector$4).distanceTo(point);\n  }\n  intersect(box) {\n    this.min.max(box.min);\n    this.max.min(box.max);\n    if (this.isEmpty()) this.makeEmpty();\n    return this;\n  }\n  union(box) {\n    this.min.min(box.min);\n    this.max.max(box.max);\n    return this;\n  }\n  translate(offset) {\n    this.min.add(offset);\n    this.max.add(offset);\n    return this;\n  }\n  equals(box) {\n    return box.min.equals(this.min) && box.max.equals(this.max);\n  }\n}\nconst _startP = /* @__PURE__ */ new Vector3();\nconst _startEnd = /* @__PURE__ */ new Vector3();\nclass Line3 {\n  constructor(start = new Vector3(), end = new Vector3()) {\n    this.start = start;\n    this.end = end;\n  }\n  set(start, end) {\n    this.start.copy(start);\n    this.end.copy(end);\n    return this;\n  }\n  copy(line) {\n    this.start.copy(line.start);\n    this.end.copy(line.end);\n    return this;\n  }\n  getCenter(target) {\n    return target.addVectors(this.start, this.end).multiplyScalar(0.5);\n  }\n  delta(target) {\n    return target.subVectors(this.end, this.start);\n  }\n  distanceSq() {\n    return this.start.distanceToSquared(this.end);\n  }\n  distance() {\n    return this.start.distanceTo(this.end);\n  }\n  at(t2, target) {\n    return this.delta(target).multiplyScalar(t2).add(this.start);\n  }\n  closestPointToPointParameter(point, clampToLine) {\n    _startP.subVectors(point, this.start);\n    _startEnd.subVectors(this.end, this.start);\n    const startEnd2 = _startEnd.dot(_startEnd);\n    const startEnd_startP = _startEnd.dot(_startP);\n    let t2 = startEnd_startP / startEnd2;\n    if (clampToLine) {\n      t2 = clamp(t2, 0, 1);\n    }\n    return t2;\n  }\n  closestPointToPoint(point, clampToLine, target) {\n    const t2 = this.closestPointToPointParameter(point, clampToLine);\n    return this.delta(target).multiplyScalar(t2).add(this.start);\n  }\n  applyMatrix4(matrix) {\n    this.start.applyMatrix4(matrix);\n    this.end.applyMatrix4(matrix);\n    return this;\n  }\n  equals(line) {\n    return line.start.equals(this.start) && line.end.equals(this.end);\n  }\n  clone() {\n    return new this.constructor().copy(this);\n  }\n}\nconst _vector$3 = /* @__PURE__ */ new Vector3();\nclass SpotLightHelper extends Object3D {\n  constructor(light, color) {\n    super();\n    this.light = light;\n    this.matrix = light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.color = color;\n    this.type = \"SpotLightHelper\";\n    const geometry = new BufferGeometry();\n    const positions = [\n      0,\n      0,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      1,\n      0,\n      0,\n      0,\n      -1,\n      0,\n      1,\n      0,\n      0,\n      0,\n      0,\n      1,\n      1,\n      0,\n      0,\n      0,\n      0,\n      -1,\n      1\n    ];\n    for (let i2 = 0, j2 = 1, l2 = 32; i2 < l2; i2++, j2++) {\n      const p1 = i2 / l2 * Math.PI * 2;\n      const p2 = j2 / l2 * Math.PI * 2;\n      positions.push(\n        Math.cos(p1),\n        Math.sin(p1),\n        1,\n        Math.cos(p2),\n        Math.sin(p2),\n        1\n      );\n    }\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n    const material = new LineBasicMaterial({ fog: false, toneMapped: false });\n    this.cone = new LineSegments(geometry, material);\n    this.add(this.cone);\n    this.update();\n  }\n  dispose() {\n    this.cone.geometry.dispose();\n    this.cone.material.dispose();\n  }\n  update() {\n    this.light.updateWorldMatrix(true, false);\n    this.light.target.updateWorldMatrix(true, false);\n    const coneLength = this.light.distance ? this.light.distance : 1e3;\n    const coneWidth = coneLength * Math.tan(this.light.angle);\n    this.cone.scale.set(coneWidth, coneWidth, coneLength);\n    _vector$3.setFromMatrixPosition(this.light.target.matrixWorld);\n    this.cone.lookAt(_vector$3);\n    if (this.color !== void 0) {\n      this.cone.material.color.set(this.color);\n    } else {\n      this.cone.material.color.copy(this.light.color);\n    }\n  }\n}\nconst _vector$2 = /* @__PURE__ */ new Vector3();\nconst _boneMatrix = /* @__PURE__ */ new Matrix4();\nconst _matrixWorldInv = /* @__PURE__ */ new Matrix4();\nclass SkeletonHelper extends LineSegments {\n  constructor(object) {\n    const bones = getBoneList(object);\n    const geometry = new BufferGeometry();\n    const vertices = [];\n    const colors = [];\n    const color1 = new Color(0, 0, 1);\n    const color2 = new Color(0, 1, 0);\n    for (let i2 = 0; i2 < bones.length; i2++) {\n      const bone = bones[i2];\n      if (bone.parent && bone.parent.isBone) {\n        vertices.push(0, 0, 0);\n        vertices.push(0, 0, 0);\n        colors.push(color1.r, color1.g, color1.b);\n        colors.push(color2.r, color2.g, color2.b);\n      }\n    }\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true });\n    super(geometry, material);\n    this.isSkeletonHelper = true;\n    this.type = \"SkeletonHelper\";\n    this.root = object;\n    this.bones = bones;\n    this.matrix = object.matrixWorld;\n    this.matrixAutoUpdate = false;\n  }\n  updateMatrixWorld(force) {\n    const bones = this.bones;\n    const geometry = this.geometry;\n    const position = geometry.getAttribute(\"position\");\n    _matrixWorldInv.copy(this.root.matrixWorld).invert();\n    for (let i2 = 0, j2 = 0; i2 < bones.length; i2++) {\n      const bone = bones[i2];\n      if (bone.parent && bone.parent.isBone) {\n        _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.matrixWorld);\n        _vector$2.setFromMatrixPosition(_boneMatrix);\n        position.setXYZ(j2, _vector$2.x, _vector$2.y, _vector$2.z);\n        _boneMatrix.multiplyMatrices(_matrixWorldInv, bone.parent.matrixWorld);\n        _vector$2.setFromMatrixPosition(_boneMatrix);\n        position.setXYZ(j2 + 1, _vector$2.x, _vector$2.y, _vector$2.z);\n        j2 += 2;\n      }\n    }\n    geometry.getAttribute(\"position\").needsUpdate = true;\n    super.updateMatrixWorld(force);\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nfunction getBoneList(object) {\n  const boneList = [];\n  if (object.isBone === true) {\n    boneList.push(object);\n  }\n  for (let i2 = 0; i2 < object.children.length; i2++) {\n    boneList.push.apply(boneList, getBoneList(object.children[i2]));\n  }\n  return boneList;\n}\nclass PointLightHelper extends Mesh {\n  constructor(light, sphereSize, color) {\n    const geometry = new SphereGeometry(sphereSize, 4, 2);\n    const material = new MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false });\n    super(geometry, material);\n    this.light = light;\n    this.color = color;\n    this.type = \"PointLightHelper\";\n    this.matrix = this.light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.update();\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n  update() {\n    this.light.updateWorldMatrix(true, false);\n    if (this.color !== void 0) {\n      this.material.color.set(this.color);\n    } else {\n      this.material.color.copy(this.light.color);\n    }\n  }\n}\nconst _vector$1 = /* @__PURE__ */ new Vector3();\nconst _color1 = /* @__PURE__ */ new Color();\nconst _color2 = /* @__PURE__ */ new Color();\nclass HemisphereLightHelper extends Object3D {\n  constructor(light, size, color) {\n    super();\n    this.light = light;\n    this.matrix = light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.color = color;\n    this.type = \"HemisphereLightHelper\";\n    const geometry = new OctahedronGeometry(size);\n    geometry.rotateY(Math.PI * 0.5);\n    this.material = new MeshBasicMaterial({ wireframe: true, fog: false, toneMapped: false });\n    if (this.color === void 0) this.material.vertexColors = true;\n    const position = geometry.getAttribute(\"position\");\n    const colors = new Float32Array(position.count * 3);\n    geometry.setAttribute(\"color\", new BufferAttribute(colors, 3));\n    this.add(new Mesh(geometry, this.material));\n    this.update();\n  }\n  dispose() {\n    this.children[0].geometry.dispose();\n    this.children[0].material.dispose();\n  }\n  update() {\n    const mesh = this.children[0];\n    if (this.color !== void 0) {\n      this.material.color.set(this.color);\n    } else {\n      const colors = mesh.geometry.getAttribute(\"color\");\n      _color1.copy(this.light.color);\n      _color2.copy(this.light.groundColor);\n      for (let i2 = 0, l2 = colors.count; i2 < l2; i2++) {\n        const color = i2 < l2 / 2 ? _color1 : _color2;\n        colors.setXYZ(i2, color.r, color.g, color.b);\n      }\n      colors.needsUpdate = true;\n    }\n    this.light.updateWorldMatrix(true, false);\n    mesh.lookAt(_vector$1.setFromMatrixPosition(this.light.matrixWorld).negate());\n  }\n}\nclass GridHelper extends LineSegments {\n  constructor(size = 10, divisions = 10, color1 = 4473924, color2 = 8947848) {\n    color1 = new Color(color1);\n    color2 = new Color(color2);\n    const center = divisions / 2;\n    const step = size / divisions;\n    const halfSize = size / 2;\n    const vertices = [], colors = [];\n    for (let i2 = 0, j2 = 0, k2 = -halfSize; i2 <= divisions; i2++, k2 += step) {\n      vertices.push(-halfSize, 0, k2, halfSize, 0, k2);\n      vertices.push(k2, 0, -halfSize, k2, 0, halfSize);\n      const color = i2 === center ? color1 : color2;\n      color.toArray(colors, j2);\n      j2 += 3;\n      color.toArray(colors, j2);\n      j2 += 3;\n      color.toArray(colors, j2);\n      j2 += 3;\n      color.toArray(colors, j2);\n      j2 += 3;\n    }\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n    super(geometry, material);\n    this.type = \"GridHelper\";\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass PolarGridHelper extends LineSegments {\n  constructor(radius = 10, sectors = 16, rings = 8, divisions = 64, color1 = 4473924, color2 = 8947848) {\n    color1 = new Color(color1);\n    color2 = new Color(color2);\n    const vertices = [];\n    const colors = [];\n    if (sectors > 1) {\n      for (let i2 = 0; i2 < sectors; i2++) {\n        const v2 = i2 / sectors * (Math.PI * 2);\n        const x2 = Math.sin(v2) * radius;\n        const z2 = Math.cos(v2) * radius;\n        vertices.push(0, 0, 0);\n        vertices.push(x2, 0, z2);\n        const color = i2 & 1 ? color1 : color2;\n        colors.push(color.r, color.g, color.b);\n        colors.push(color.r, color.g, color.b);\n      }\n    }\n    for (let i2 = 0; i2 < rings; i2++) {\n      const color = i2 & 1 ? color1 : color2;\n      const r2 = radius - radius / rings * i2;\n      for (let j2 = 0; j2 < divisions; j2++) {\n        let v2 = j2 / divisions * (Math.PI * 2);\n        let x2 = Math.sin(v2) * r2;\n        let z2 = Math.cos(v2) * r2;\n        vertices.push(x2, 0, z2);\n        colors.push(color.r, color.g, color.b);\n        v2 = (j2 + 1) / divisions * (Math.PI * 2);\n        x2 = Math.sin(v2) * r2;\n        z2 = Math.cos(v2) * r2;\n        vertices.push(x2, 0, z2);\n        colors.push(color.r, color.g, color.b);\n      }\n    }\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n    super(geometry, material);\n    this.type = \"PolarGridHelper\";\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nconst _v1 = /* @__PURE__ */ new Vector3();\nconst _v2 = /* @__PURE__ */ new Vector3();\nconst _v3 = /* @__PURE__ */ new Vector3();\nclass DirectionalLightHelper extends Object3D {\n  constructor(light, size, color) {\n    super();\n    this.light = light;\n    this.matrix = light.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.color = color;\n    this.type = \"DirectionalLightHelper\";\n    if (size === void 0) size = 1;\n    let geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute([\n      -size,\n      size,\n      0,\n      size,\n      size,\n      0,\n      size,\n      -size,\n      0,\n      -size,\n      -size,\n      0,\n      -size,\n      size,\n      0\n    ], 3));\n    const material = new LineBasicMaterial({ fog: false, toneMapped: false });\n    this.lightPlane = new Line(geometry, material);\n    this.add(this.lightPlane);\n    geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 0, 1], 3));\n    this.targetLine = new Line(geometry, material);\n    this.add(this.targetLine);\n    this.update();\n  }\n  dispose() {\n    this.lightPlane.geometry.dispose();\n    this.lightPlane.material.dispose();\n    this.targetLine.geometry.dispose();\n    this.targetLine.material.dispose();\n  }\n  update() {\n    this.light.updateWorldMatrix(true, false);\n    this.light.target.updateWorldMatrix(true, false);\n    _v1.setFromMatrixPosition(this.light.matrixWorld);\n    _v2.setFromMatrixPosition(this.light.target.matrixWorld);\n    _v3.subVectors(_v2, _v1);\n    this.lightPlane.lookAt(_v2);\n    if (this.color !== void 0) {\n      this.lightPlane.material.color.set(this.color);\n      this.targetLine.material.color.set(this.color);\n    } else {\n      this.lightPlane.material.color.copy(this.light.color);\n      this.targetLine.material.color.copy(this.light.color);\n    }\n    this.targetLine.lookAt(_v2);\n    this.targetLine.scale.z = _v3.length();\n  }\n}\nconst _vector = /* @__PURE__ */ new Vector3();\nconst _camera = /* @__PURE__ */ new Camera();\nclass CameraHelper extends LineSegments {\n  constructor(camera) {\n    const geometry = new BufferGeometry();\n    const material = new LineBasicMaterial({ color: 16777215, vertexColors: true, toneMapped: false });\n    const vertices = [];\n    const colors = [];\n    const pointMap = {};\n    addLine(\"n1\", \"n2\");\n    addLine(\"n2\", \"n4\");\n    addLine(\"n4\", \"n3\");\n    addLine(\"n3\", \"n1\");\n    addLine(\"f1\", \"f2\");\n    addLine(\"f2\", \"f4\");\n    addLine(\"f4\", \"f3\");\n    addLine(\"f3\", \"f1\");\n    addLine(\"n1\", \"f1\");\n    addLine(\"n2\", \"f2\");\n    addLine(\"n3\", \"f3\");\n    addLine(\"n4\", \"f4\");\n    addLine(\"p\", \"n1\");\n    addLine(\"p\", \"n2\");\n    addLine(\"p\", \"n3\");\n    addLine(\"p\", \"n4\");\n    addLine(\"u1\", \"u2\");\n    addLine(\"u2\", \"u3\");\n    addLine(\"u3\", \"u1\");\n    addLine(\"c\", \"t\");\n    addLine(\"p\", \"c\");\n    addLine(\"cn1\", \"cn2\");\n    addLine(\"cn3\", \"cn4\");\n    addLine(\"cf1\", \"cf2\");\n    addLine(\"cf3\", \"cf4\");\n    function addLine(a2, b2) {\n      addPoint(a2);\n      addPoint(b2);\n    }\n    function addPoint(id) {\n      vertices.push(0, 0, 0);\n      colors.push(0, 0, 0);\n      if (pointMap[id] === void 0) {\n        pointMap[id] = [];\n      }\n      pointMap[id].push(vertices.length / 3 - 1);\n    }\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    super(geometry, material);\n    this.type = \"CameraHelper\";\n    this.camera = camera;\n    if (this.camera.updateProjectionMatrix) this.camera.updateProjectionMatrix();\n    this.matrix = camera.matrixWorld;\n    this.matrixAutoUpdate = false;\n    this.pointMap = pointMap;\n    this.update();\n    const colorFrustum = new Color(16755200);\n    const colorCone = new Color(16711680);\n    const colorUp = new Color(43775);\n    const colorTarget = new Color(16777215);\n    const colorCross = new Color(3355443);\n    this.setColors(colorFrustum, colorCone, colorUp, colorTarget, colorCross);\n  }\n  setColors(frustum, cone, up, target, cross) {\n    const geometry = this.geometry;\n    const colorAttribute = geometry.getAttribute(\"color\");\n    colorAttribute.setXYZ(0, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(1, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(2, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(3, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(4, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(5, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(6, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(7, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(8, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(9, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(10, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(11, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(12, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(13, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(14, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(15, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(16, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(17, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(18, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(19, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(20, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(21, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(22, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(23, frustum.r, frustum.g, frustum.b);\n    colorAttribute.setXYZ(24, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(25, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(26, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(27, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(28, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(29, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(30, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(31, cone.r, cone.g, cone.b);\n    colorAttribute.setXYZ(32, up.r, up.g, up.b);\n    colorAttribute.setXYZ(33, up.r, up.g, up.b);\n    colorAttribute.setXYZ(34, up.r, up.g, up.b);\n    colorAttribute.setXYZ(35, up.r, up.g, up.b);\n    colorAttribute.setXYZ(36, up.r, up.g, up.b);\n    colorAttribute.setXYZ(37, up.r, up.g, up.b);\n    colorAttribute.setXYZ(38, target.r, target.g, target.b);\n    colorAttribute.setXYZ(39, target.r, target.g, target.b);\n    colorAttribute.setXYZ(40, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(41, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(42, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(43, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(44, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(45, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(46, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(47, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(48, cross.r, cross.g, cross.b);\n    colorAttribute.setXYZ(49, cross.r, cross.g, cross.b);\n    colorAttribute.needsUpdate = true;\n  }\n  update() {\n    const geometry = this.geometry;\n    const pointMap = this.pointMap;\n    const w2 = 1, h2 = 1;\n    _camera.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);\n    setPoint(\"c\", pointMap, geometry, _camera, 0, 0, -1);\n    setPoint(\"t\", pointMap, geometry, _camera, 0, 0, 1);\n    setPoint(\"n1\", pointMap, geometry, _camera, -1, -1, -1);\n    setPoint(\"n2\", pointMap, geometry, _camera, w2, -1, -1);\n    setPoint(\"n3\", pointMap, geometry, _camera, -1, h2, -1);\n    setPoint(\"n4\", pointMap, geometry, _camera, w2, h2, -1);\n    setPoint(\"f1\", pointMap, geometry, _camera, -1, -1, 1);\n    setPoint(\"f2\", pointMap, geometry, _camera, w2, -1, 1);\n    setPoint(\"f3\", pointMap, geometry, _camera, -1, h2, 1);\n    setPoint(\"f4\", pointMap, geometry, _camera, w2, h2, 1);\n    setPoint(\"u1\", pointMap, geometry, _camera, w2 * 0.7, h2 * 1.1, -1);\n    setPoint(\"u2\", pointMap, geometry, _camera, -1 * 0.7, h2 * 1.1, -1);\n    setPoint(\"u3\", pointMap, geometry, _camera, 0, h2 * 2, -1);\n    setPoint(\"cf1\", pointMap, geometry, _camera, -1, 0, 1);\n    setPoint(\"cf2\", pointMap, geometry, _camera, w2, 0, 1);\n    setPoint(\"cf3\", pointMap, geometry, _camera, 0, -1, 1);\n    setPoint(\"cf4\", pointMap, geometry, _camera, 0, h2, 1);\n    setPoint(\"cn1\", pointMap, geometry, _camera, -1, 0, -1);\n    setPoint(\"cn2\", pointMap, geometry, _camera, w2, 0, -1);\n    setPoint(\"cn3\", pointMap, geometry, _camera, 0, -1, -1);\n    setPoint(\"cn4\", pointMap, geometry, _camera, 0, h2, -1);\n    geometry.getAttribute(\"position\").needsUpdate = true;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nfunction setPoint(point, pointMap, geometry, camera, x2, y2, z2) {\n  _vector.set(x2, y2, z2).unproject(camera);\n  const points = pointMap[point];\n  if (points !== void 0) {\n    const position = geometry.getAttribute(\"position\");\n    for (let i2 = 0, l2 = points.length; i2 < l2; i2++) {\n      position.setXYZ(points[i2], _vector.x, _vector.y, _vector.z);\n    }\n  }\n}\nconst _box = /* @__PURE__ */ new Box3();\nclass BoxHelper extends LineSegments {\n  constructor(object, color = 16776960) {\n    const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n    const positions = new Float32Array(8 * 3);\n    const geometry = new BufferGeometry();\n    geometry.setIndex(new BufferAttribute(indices, 1));\n    geometry.setAttribute(\"position\", new BufferAttribute(positions, 3));\n    super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.object = object;\n    this.type = \"BoxHelper\";\n    this.matrixAutoUpdate = false;\n    this.update();\n  }\n  update(object) {\n    if (object !== void 0) {\n      console.warn(\"THREE.BoxHelper: .update() has no longer arguments.\");\n    }\n    if (this.object !== void 0) {\n      _box.setFromObject(this.object);\n    }\n    if (_box.isEmpty()) return;\n    const min = _box.min;\n    const max2 = _box.max;\n    const position = this.geometry.attributes.position;\n    const array = position.array;\n    array[0] = max2.x;\n    array[1] = max2.y;\n    array[2] = max2.z;\n    array[3] = min.x;\n    array[4] = max2.y;\n    array[5] = max2.z;\n    array[6] = min.x;\n    array[7] = min.y;\n    array[8] = max2.z;\n    array[9] = max2.x;\n    array[10] = min.y;\n    array[11] = max2.z;\n    array[12] = max2.x;\n    array[13] = max2.y;\n    array[14] = min.z;\n    array[15] = min.x;\n    array[16] = max2.y;\n    array[17] = min.z;\n    array[18] = min.x;\n    array[19] = min.y;\n    array[20] = min.z;\n    array[21] = max2.x;\n    array[22] = min.y;\n    array[23] = min.z;\n    position.needsUpdate = true;\n    this.geometry.computeBoundingSphere();\n  }\n  setFromObject(object) {\n    this.object = object;\n    this.update();\n    return this;\n  }\n  copy(source, recursive) {\n    super.copy(source, recursive);\n    this.object = source.object;\n    return this;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass Box3Helper extends LineSegments {\n  constructor(box, color = 16776960) {\n    const indices = new Uint16Array([0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7]);\n    const positions = [1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1];\n    const geometry = new BufferGeometry();\n    geometry.setIndex(new BufferAttribute(indices, 1));\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n    super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.box = box;\n    this.type = \"Box3Helper\";\n    this.geometry.computeBoundingSphere();\n  }\n  updateMatrixWorld(force) {\n    const box = this.box;\n    if (box.isEmpty()) return;\n    box.getCenter(this.position);\n    box.getSize(this.scale);\n    this.scale.multiplyScalar(0.5);\n    super.updateMatrixWorld(force);\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass PlaneHelper extends Line {\n  constructor(plane, size = 1, hex = 16776960) {\n    const color = hex;\n    const positions = [1, -1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0, 1, 1, 0];\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(positions, 3));\n    geometry.computeBoundingSphere();\n    super(geometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.type = \"PlaneHelper\";\n    this.plane = plane;\n    this.size = size;\n    const positions2 = [1, 1, 0, -1, 1, 0, -1, -1, 0, 1, 1, 0, -1, -1, 0, 1, -1, 0];\n    const geometry2 = new BufferGeometry();\n    geometry2.setAttribute(\"position\", new Float32BufferAttribute(positions2, 3));\n    geometry2.computeBoundingSphere();\n    this.add(new Mesh(geometry2, new MeshBasicMaterial({ color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false })));\n  }\n  updateMatrixWorld(force) {\n    this.position.set(0, 0, 0);\n    this.scale.set(0.5 * this.size, 0.5 * this.size, 1);\n    this.lookAt(this.plane.normal);\n    this.translateZ(-this.plane.constant);\n    super.updateMatrixWorld(force);\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n    this.children[0].geometry.dispose();\n    this.children[0].material.dispose();\n  }\n}\nconst _axis = /* @__PURE__ */ new Vector3();\nlet _lineGeometry, _coneGeometry;\nclass ArrowHelper extends Object3D {\n  // dir is assumed to be normalized\n  constructor(dir = new Vector3(0, 0, 1), origin = new Vector3(0, 0, 0), length = 1, color = 16776960, headLength = length * 0.2, headWidth = headLength * 0.2) {\n    super();\n    this.type = \"ArrowHelper\";\n    if (_lineGeometry === void 0) {\n      _lineGeometry = new BufferGeometry();\n      _lineGeometry.setAttribute(\"position\", new Float32BufferAttribute([0, 0, 0, 0, 1, 0], 3));\n      _coneGeometry = new CylinderGeometry(0, 0.5, 1, 5, 1);\n      _coneGeometry.translate(0, -0.5, 0);\n    }\n    this.position.copy(origin);\n    this.line = new Line(_lineGeometry, new LineBasicMaterial({ color, toneMapped: false }));\n    this.line.matrixAutoUpdate = false;\n    this.add(this.line);\n    this.cone = new Mesh(_coneGeometry, new MeshBasicMaterial({ color, toneMapped: false }));\n    this.cone.matrixAutoUpdate = false;\n    this.add(this.cone);\n    this.setDirection(dir);\n    this.setLength(length, headLength, headWidth);\n  }\n  setDirection(dir) {\n    if (dir.y > 0.99999) {\n      this.quaternion.set(0, 0, 0, 1);\n    } else if (dir.y < -0.99999) {\n      this.quaternion.set(1, 0, 0, 0);\n    } else {\n      _axis.set(dir.z, 0, -dir.x).normalize();\n      const radians = Math.acos(dir.y);\n      this.quaternion.setFromAxisAngle(_axis, radians);\n    }\n  }\n  setLength(length, headLength = length * 0.2, headWidth = headLength * 0.2) {\n    this.line.scale.set(1, Math.max(1e-4, length - headLength), 1);\n    this.line.updateMatrix();\n    this.cone.scale.set(headWidth, headLength, headWidth);\n    this.cone.position.y = length;\n    this.cone.updateMatrix();\n  }\n  setColor(color) {\n    this.line.material.color.set(color);\n    this.cone.material.color.set(color);\n  }\n  copy(source) {\n    super.copy(source, false);\n    this.line.copy(source.line);\n    this.cone.copy(source.cone);\n    return this;\n  }\n  dispose() {\n    this.line.geometry.dispose();\n    this.line.material.dispose();\n    this.cone.geometry.dispose();\n    this.cone.material.dispose();\n  }\n}\nclass AxesHelper extends LineSegments {\n  constructor(size = 1) {\n    const vertices = [\n      0,\n      0,\n      0,\n      size,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      size,\n      0,\n      0,\n      0,\n      0,\n      0,\n      0,\n      size\n    ];\n    const colors = [\n      1,\n      0,\n      0,\n      1,\n      0.6,\n      0,\n      0,\n      1,\n      0,\n      0.6,\n      1,\n      0,\n      0,\n      0,\n      1,\n      0,\n      0.6,\n      1\n    ];\n    const geometry = new BufferGeometry();\n    geometry.setAttribute(\"position\", new Float32BufferAttribute(vertices, 3));\n    geometry.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n    const material = new LineBasicMaterial({ vertexColors: true, toneMapped: false });\n    super(geometry, material);\n    this.type = \"AxesHelper\";\n  }\n  setColors(xAxisColor, yAxisColor, zAxisColor) {\n    const color = new Color();\n    const array = this.geometry.attributes.color.array;\n    color.set(xAxisColor);\n    color.toArray(array, 0);\n    color.toArray(array, 3);\n    color.set(yAxisColor);\n    color.toArray(array, 6);\n    color.toArray(array, 9);\n    color.set(zAxisColor);\n    color.toArray(array, 12);\n    color.toArray(array, 15);\n    this.geometry.attributes.color.needsUpdate = true;\n    return this;\n  }\n  dispose() {\n    this.geometry.dispose();\n    this.material.dispose();\n  }\n}\nclass ShapePath {\n  constructor() {\n    this.type = \"ShapePath\";\n    this.color = new Color();\n    this.subPaths = [];\n    this.currentPath = null;\n  }\n  moveTo(x2, y2) {\n    this.currentPath = new Path();\n    this.subPaths.push(this.currentPath);\n    this.currentPath.moveTo(x2, y2);\n    return this;\n  }\n  lineTo(x2, y2) {\n    this.currentPath.lineTo(x2, y2);\n    return this;\n  }\n  quadraticCurveTo(aCPx, aCPy, aX, aY) {\n    this.currentPath.quadraticCurveTo(aCPx, aCPy, aX, aY);\n    return this;\n  }\n  bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY) {\n    this.currentPath.bezierCurveTo(aCP1x, aCP1y, aCP2x, aCP2y, aX, aY);\n    return this;\n  }\n  splineThru(pts) {\n    this.currentPath.splineThru(pts);\n    return this;\n  }\n  toShapes(isCCW) {\n    function toShapesNoHoles(inSubpaths) {\n      const shapes2 = [];\n      for (let i2 = 0, l2 = inSubpaths.length; i2 < l2; i2++) {\n        const tmpPath2 = inSubpaths[i2];\n        const tmpShape2 = new Shape();\n        tmpShape2.curves = tmpPath2.curves;\n        shapes2.push(tmpShape2);\n      }\n      return shapes2;\n    }\n    function isPointInsidePolygon(inPt, inPolygon) {\n      const polyLen = inPolygon.length;\n      let inside = false;\n      for (let p2 = polyLen - 1, q2 = 0; q2 < polyLen; p2 = q2++) {\n        let edgeLowPt = inPolygon[p2];\n        let edgeHighPt = inPolygon[q2];\n        let edgeDx = edgeHighPt.x - edgeLowPt.x;\n        let edgeDy = edgeHighPt.y - edgeLowPt.y;\n        if (Math.abs(edgeDy) > Number.EPSILON) {\n          if (edgeDy < 0) {\n            edgeLowPt = inPolygon[q2];\n            edgeDx = -edgeDx;\n            edgeHighPt = inPolygon[p2];\n            edgeDy = -edgeDy;\n          }\n          if (inPt.y < edgeLowPt.y || inPt.y > edgeHighPt.y) continue;\n          if (inPt.y === edgeLowPt.y) {\n            if (inPt.x === edgeLowPt.x) return true;\n          } else {\n            const perpEdge = edgeDy * (inPt.x - edgeLowPt.x) - edgeDx * (inPt.y - edgeLowPt.y);\n            if (perpEdge === 0) return true;\n            if (perpEdge < 0) continue;\n            inside = !inside;\n          }\n        } else {\n          if (inPt.y !== edgeLowPt.y) continue;\n          if (edgeHighPt.x <= inPt.x && inPt.x <= edgeLowPt.x || edgeLowPt.x <= inPt.x && inPt.x <= edgeHighPt.x) return true;\n        }\n      }\n      return inside;\n    }\n    const isClockWise = ShapeUtils.isClockWise;\n    const subPaths = this.subPaths;\n    if (subPaths.length === 0) return [];\n    let solid, tmpPath, tmpShape;\n    const shapes = [];\n    if (subPaths.length === 1) {\n      tmpPath = subPaths[0];\n      tmpShape = new Shape();\n      tmpShape.curves = tmpPath.curves;\n      shapes.push(tmpShape);\n      return shapes;\n    }\n    let holesFirst = !isClockWise(subPaths[0].getPoints());\n    holesFirst = isCCW ? !holesFirst : holesFirst;\n    const betterShapeHoles = [];\n    const newShapes = [];\n    let newShapeHoles = [];\n    let mainIdx = 0;\n    let tmpPoints;\n    newShapes[mainIdx] = void 0;\n    newShapeHoles[mainIdx] = [];\n    for (let i2 = 0, l2 = subPaths.length; i2 < l2; i2++) {\n      tmpPath = subPaths[i2];\n      tmpPoints = tmpPath.getPoints();\n      solid = isClockWise(tmpPoints);\n      solid = isCCW ? !solid : solid;\n      if (solid) {\n        if (!holesFirst && newShapes[mainIdx]) mainIdx++;\n        newShapes[mainIdx] = { s: new Shape(), p: tmpPoints };\n        newShapes[mainIdx].s.curves = tmpPath.curves;\n        if (holesFirst) mainIdx++;\n        newShapeHoles[mainIdx] = [];\n      } else {\n        newShapeHoles[mainIdx].push({ h: tmpPath, p: tmpPoints[0] });\n      }\n    }\n    if (!newShapes[0]) return toShapesNoHoles(subPaths);\n    if (newShapes.length > 1) {\n      let ambiguous = false;\n      let toChange = 0;\n      for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n        betterShapeHoles[sIdx] = [];\n      }\n      for (let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx++) {\n        const sho = newShapeHoles[sIdx];\n        for (let hIdx = 0; hIdx < sho.length; hIdx++) {\n          const ho = sho[hIdx];\n          let hole_unassigned = true;\n          for (let s2Idx = 0; s2Idx < newShapes.length; s2Idx++) {\n            if (isPointInsidePolygon(ho.p, newShapes[s2Idx].p)) {\n              if (sIdx !== s2Idx) toChange++;\n              if (hole_unassigned) {\n                hole_unassigned = false;\n                betterShapeHoles[s2Idx].push(ho);\n              } else {\n                ambiguous = true;\n              }\n            }\n          }\n          if (hole_unassigned) {\n            betterShapeHoles[sIdx].push(ho);\n          }\n        }\n      }\n      if (toChange > 0 && ambiguous === false) {\n        newShapeHoles = betterShapeHoles;\n      }\n    }\n    let tmpHoles;\n    for (let i2 = 0, il = newShapes.length; i2 < il; i2++) {\n      tmpShape = newShapes[i2].s;\n      shapes.push(tmpShape);\n      tmpHoles = newShapeHoles[i2];\n      for (let j2 = 0, jl = tmpHoles.length; j2 < jl; j2++) {\n        tmpShape.holes.push(tmpHoles[j2].h);\n      }\n    }\n    return shapes;\n  }\n}\nif (typeof __THREE_DEVTOOLS__ !== \"undefined\") {\n  __THREE_DEVTOOLS__.dispatchEvent(new CustomEvent(\"register\", { detail: {\n    revision: REVISION\n  } }));\n}\nif (typeof window !== \"undefined\") {\n  if (window.__THREE__) {\n    console.warn(\"WARNING: Multiple instances of Three.js being imported.\");\n  } else {\n    window.__THREE__ = REVISION;\n  }\n}\nconst THREE = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  ACESFilmicToneMapping,\n  AddEquation,\n  AddOperation,\n  AdditiveAnimationBlendMode,\n  AdditiveBlending,\n  AgXToneMapping,\n  AlphaFormat,\n  AlwaysCompare,\n  AlwaysDepth,\n  AlwaysStencilFunc,\n  AmbientLight,\n  AnimationAction,\n  AnimationClip,\n  AnimationLoader,\n  AnimationMixer,\n  AnimationObjectGroup,\n  AnimationUtils,\n  ArcCurve,\n  ArrayCamera,\n  ArrowHelper,\n  AttachedBindMode,\n  Audio,\n  AudioAnalyser,\n  AudioContext,\n  AudioListener,\n  AudioLoader,\n  AxesHelper,\n  BackSide,\n  BasicDepthPacking,\n  BasicShadowMap,\n  BatchedMesh,\n  Bone,\n  BooleanKeyframeTrack,\n  Box2,\n  Box3,\n  Box3Helper,\n  BoxGeometry,\n  BoxHelper,\n  BufferAttribute,\n  BufferGeometry,\n  BufferGeometryLoader,\n  ByteType,\n  Cache,\n  Camera,\n  CameraHelper,\n  CanvasTexture,\n  CapsuleGeometry,\n  CatmullRomCurve3,\n  CineonToneMapping,\n  CircleGeometry,\n  ClampToEdgeWrapping,\n  Clock,\n  Color,\n  ColorKeyframeTrack,\n  ColorManagement,\n  CompressedArrayTexture,\n  CompressedCubeTexture,\n  CompressedTexture,\n  CompressedTextureLoader,\n  ConeGeometry,\n  ConstantAlphaFactor,\n  ConstantColorFactor,\n  CubeCamera,\n  CubeReflectionMapping,\n  CubeRefractionMapping,\n  CubeTexture,\n  CubeTextureLoader,\n  CubeUVReflectionMapping,\n  CubicBezierCurve,\n  CubicBezierCurve3,\n  CubicInterpolant,\n  CullFaceBack,\n  CullFaceFront,\n  CullFaceFrontBack,\n  CullFaceNone,\n  Curve,\n  CurvePath,\n  CustomBlending,\n  CustomToneMapping,\n  CylinderGeometry,\n  Cylindrical,\n  Data3DTexture,\n  DataArrayTexture,\n  DataTexture,\n  DataTextureLoader,\n  DataUtils,\n  DecrementStencilOp,\n  DecrementWrapStencilOp,\n  DefaultLoadingManager,\n  DepthFormat,\n  DepthStencilFormat,\n  DepthTexture,\n  DetachedBindMode,\n  DirectionalLight,\n  DirectionalLightHelper,\n  DiscreteInterpolant,\n  DisplayP3ColorSpace,\n  DodecahedronGeometry,\n  DoubleSide,\n  DstAlphaFactor,\n  DstColorFactor,\n  DynamicCopyUsage,\n  DynamicDrawUsage,\n  DynamicReadUsage,\n  EdgesGeometry,\n  EllipseCurve,\n  EqualCompare,\n  EqualDepth,\n  EqualStencilFunc,\n  EquirectangularReflectionMapping,\n  EquirectangularRefractionMapping,\n  Euler,\n  EventDispatcher,\n  ExtrudeGeometry,\n  FileLoader,\n  Float16BufferAttribute,\n  Float32BufferAttribute,\n  Float64BufferAttribute,\n  FloatType,\n  Fog,\n  FogExp2,\n  FramebufferTexture,\n  FrontSide,\n  Frustum,\n  GLBufferAttribute,\n  GLSL1,\n  GLSL3,\n  GreaterCompare,\n  GreaterDepth,\n  GreaterEqualCompare,\n  GreaterEqualDepth,\n  GreaterEqualStencilFunc,\n  GreaterStencilFunc,\n  GridHelper,\n  Group,\n  HalfFloatType,\n  HemisphereLight,\n  HemisphereLightHelper,\n  IcosahedronGeometry,\n  ImageBitmapLoader,\n  ImageLoader,\n  ImageUtils,\n  IncrementStencilOp,\n  IncrementWrapStencilOp,\n  InstancedBufferAttribute,\n  InstancedBufferGeometry,\n  InstancedInterleavedBuffer,\n  InstancedMesh,\n  Int16BufferAttribute,\n  Int32BufferAttribute,\n  Int8BufferAttribute,\n  IntType,\n  InterleavedBuffer,\n  InterleavedBufferAttribute,\n  Interpolant,\n  InterpolateDiscrete,\n  InterpolateLinear,\n  InterpolateSmooth,\n  InvertStencilOp,\n  KeepStencilOp,\n  KeyframeTrack,\n  LOD,\n  LatheGeometry,\n  Layers,\n  LessCompare,\n  LessDepth,\n  LessEqualCompare,\n  LessEqualDepth,\n  LessEqualStencilFunc,\n  LessStencilFunc,\n  Light,\n  LightProbe,\n  Line,\n  Line3,\n  LineBasicMaterial,\n  LineCurve,\n  LineCurve3,\n  LineDashedMaterial,\n  LineLoop,\n  LineSegments,\n  LinearDisplayP3ColorSpace,\n  LinearEncoding: LinearEncoding$2,\n  LinearFilter,\n  LinearInterpolant,\n  LinearMipMapLinearFilter,\n  LinearMipMapNearestFilter,\n  LinearMipmapLinearFilter,\n  LinearMipmapNearestFilter,\n  LinearSRGBColorSpace: LinearSRGBColorSpace$1,\n  LinearToneMapping,\n  LinearTransfer,\n  Loader,\n  LoaderUtils,\n  LoadingManager,\n  LoopOnce,\n  LoopPingPong,\n  LoopRepeat,\n  LuminanceAlphaFormat,\n  LuminanceFormat,\n  MOUSE,\n  Material,\n  MaterialLoader,\n  MathUtils,\n  Matrix3,\n  Matrix4,\n  MaxEquation,\n  Mesh,\n  MeshBasicMaterial,\n  MeshDepthMaterial,\n  MeshDistanceMaterial,\n  MeshLambertMaterial,\n  MeshMatcapMaterial,\n  MeshNormalMaterial,\n  MeshPhongMaterial,\n  MeshPhysicalMaterial,\n  MeshStandardMaterial,\n  MeshToonMaterial,\n  MinEquation,\n  MirroredRepeatWrapping,\n  MixOperation,\n  MultiplyBlending,\n  MultiplyOperation,\n  NearestFilter,\n  NearestMipMapLinearFilter,\n  NearestMipMapNearestFilter,\n  NearestMipmapLinearFilter,\n  NearestMipmapNearestFilter,\n  NeverCompare,\n  NeverDepth,\n  NeverStencilFunc,\n  NoBlending,\n  NoColorSpace,\n  NoToneMapping,\n  NormalAnimationBlendMode,\n  NormalBlending,\n  NotEqualCompare,\n  NotEqualDepth,\n  NotEqualStencilFunc,\n  NumberKeyframeTrack,\n  Object3D,\n  ObjectLoader,\n  ObjectSpaceNormalMap,\n  OctahedronGeometry,\n  OneFactor,\n  OneMinusConstantAlphaFactor,\n  OneMinusConstantColorFactor,\n  OneMinusDstAlphaFactor,\n  OneMinusDstColorFactor,\n  OneMinusSrcAlphaFactor,\n  OneMinusSrcColorFactor,\n  OrthographicCamera,\n  P3Primaries,\n  PCFShadowMap,\n  PCFSoftShadowMap,\n  PMREMGenerator,\n  Path,\n  PerspectiveCamera,\n  Plane,\n  PlaneGeometry,\n  PlaneHelper,\n  PointLight,\n  PointLightHelper,\n  Points,\n  PointsMaterial,\n  PolarGridHelper,\n  PolyhedronGeometry,\n  PositionalAudio,\n  PropertyBinding,\n  PropertyMixer,\n  QuadraticBezierCurve,\n  QuadraticBezierCurve3,\n  Quaternion,\n  QuaternionKeyframeTrack,\n  QuaternionLinearInterpolant,\n  RED_GREEN_RGTC2_Format,\n  RED_RGTC1_Format,\n  REVISION,\n  RGBADepthPacking,\n  RGBAFormat,\n  RGBAIntegerFormat,\n  RGBA_ASTC_10x10_Format,\n  RGBA_ASTC_10x5_Format,\n  RGBA_ASTC_10x6_Format,\n  RGBA_ASTC_10x8_Format,\n  RGBA_ASTC_12x10_Format,\n  RGBA_ASTC_12x12_Format,\n  RGBA_ASTC_4x4_Format,\n  RGBA_ASTC_5x4_Format,\n  RGBA_ASTC_5x5_Format,\n  RGBA_ASTC_6x5_Format,\n  RGBA_ASTC_6x6_Format,\n  RGBA_ASTC_8x5_Format,\n  RGBA_ASTC_8x6_Format,\n  RGBA_ASTC_8x8_Format,\n  RGBA_BPTC_Format,\n  RGBA_ETC2_EAC_Format,\n  RGBA_PVRTC_2BPPV1_Format,\n  RGBA_PVRTC_4BPPV1_Format,\n  RGBA_S3TC_DXT1_Format,\n  RGBA_S3TC_DXT3_Format,\n  RGBA_S3TC_DXT5_Format,\n  RGB_BPTC_SIGNED_Format,\n  RGB_BPTC_UNSIGNED_Format,\n  RGB_ETC1_Format,\n  RGB_ETC2_Format,\n  RGB_PVRTC_2BPPV1_Format,\n  RGB_PVRTC_4BPPV1_Format,\n  RGB_S3TC_DXT1_Format,\n  RGFormat,\n  RGIntegerFormat,\n  RawShaderMaterial,\n  Ray,\n  Raycaster,\n  Rec709Primaries,\n  RectAreaLight,\n  RedFormat,\n  RedIntegerFormat,\n  ReinhardToneMapping,\n  RenderTarget,\n  RepeatWrapping,\n  ReplaceStencilOp,\n  ReverseSubtractEquation,\n  RingGeometry,\n  SIGNED_RED_GREEN_RGTC2_Format,\n  SIGNED_RED_RGTC1_Format,\n  SRGBColorSpace: SRGBColorSpace$1,\n  SRGBTransfer,\n  Scene,\n  ShaderChunk,\n  ShaderLib,\n  ShaderMaterial,\n  ShadowMaterial,\n  Shape,\n  ShapeGeometry,\n  ShapePath,\n  ShapeUtils,\n  ShortType,\n  Skeleton,\n  SkeletonHelper,\n  SkinnedMesh,\n  Source,\n  Sphere,\n  SphereGeometry,\n  Spherical,\n  SphericalHarmonics3,\n  SplineCurve,\n  SpotLight,\n  SpotLightHelper,\n  Sprite,\n  SpriteMaterial,\n  SrcAlphaFactor,\n  SrcAlphaSaturateFactor,\n  SrcColorFactor,\n  StaticCopyUsage,\n  StaticDrawUsage,\n  StaticReadUsage,\n  StereoCamera,\n  StreamCopyUsage,\n  StreamDrawUsage,\n  StreamReadUsage,\n  StringKeyframeTrack,\n  SubtractEquation,\n  SubtractiveBlending,\n  TOUCH,\n  TangentSpaceNormalMap,\n  TetrahedronGeometry,\n  Texture,\n  TextureLoader,\n  TorusGeometry,\n  TorusKnotGeometry,\n  Triangle,\n  TriangleFanDrawMode,\n  TriangleStripDrawMode,\n  TrianglesDrawMode,\n  TubeGeometry,\n  UVMapping,\n  Uint16BufferAttribute,\n  Uint32BufferAttribute,\n  Uint8BufferAttribute,\n  Uint8ClampedBufferAttribute,\n  Uniform,\n  UniformsGroup,\n  UniformsLib,\n  UniformsUtils,\n  UnsignedByteType,\n  UnsignedInt248Type,\n  UnsignedIntType,\n  UnsignedShort4444Type,\n  UnsignedShort5551Type,\n  UnsignedShortType,\n  VSMShadowMap,\n  Vector2,\n  Vector3,\n  Vector4,\n  VectorKeyframeTrack,\n  VideoTexture,\n  WebGL1Renderer,\n  WebGL3DRenderTarget,\n  WebGLArrayRenderTarget,\n  WebGLCoordinateSystem,\n  WebGLCubeRenderTarget,\n  WebGLMultipleRenderTargets,\n  WebGLRenderTarget,\n  WebGLRenderer,\n  WebGLUtils,\n  WebGPUCoordinateSystem,\n  WireframeGeometry,\n  WrapAroundEnding,\n  ZeroCurvatureEnding,\n  ZeroFactor,\n  ZeroSlopeEnding,\n  ZeroStencilOp,\n  _SRGBAFormat,\n  createCanvasElement,\n  sRGBEncoding: sRGBEncoding$2\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction getDefaultExportFromCjs(x2) {\n  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, \"default\") ? x2[\"default\"] : x2;\n}\nvar constants = { exports: {} };\nvar reactReconcilerConstants_production_min = {};\n/**\n * @license React\n * react-reconciler-constants.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactReconcilerConstants_production_min;\nfunction requireReactReconcilerConstants_production_min() {\n  if (hasRequiredReactReconcilerConstants_production_min) return reactReconcilerConstants_production_min;\n  hasRequiredReactReconcilerConstants_production_min = 1;\n  reactReconcilerConstants_production_min.ConcurrentRoot = 1;\n  reactReconcilerConstants_production_min.ContinuousEventPriority = 4;\n  reactReconcilerConstants_production_min.DefaultEventPriority = 16;\n  reactReconcilerConstants_production_min.DiscreteEventPriority = 1;\n  reactReconcilerConstants_production_min.IdleEventPriority = 536870912;\n  reactReconcilerConstants_production_min.LegacyRoot = 0;\n  return reactReconcilerConstants_production_min;\n}\nvar reactReconcilerConstants_development = {};\n/**\n * @license React\n * react-reconciler-constants.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactReconcilerConstants_development;\nfunction requireReactReconcilerConstants_development() {\n  if (hasRequiredReactReconcilerConstants_development) return reactReconcilerConstants_development;\n  hasRequiredReactReconcilerConstants_development = 1;\n  if (process.env.NODE_ENV !== \"production\") {\n    (function() {\n      var SyncLane = (\n        /*                        */\n        1\n      );\n      var InputContinuousLane = (\n        /*            */\n        4\n      );\n      var DefaultLane = (\n        /*                    */\n        16\n      );\n      var IdleLane = (\n        /*                       */\n        536870912\n      );\n      var DiscreteEventPriority = SyncLane;\n      var ContinuousEventPriority = InputContinuousLane;\n      var DefaultEventPriority = DefaultLane;\n      var IdleEventPriority = IdleLane;\n      var LegacyRoot = 0;\n      var ConcurrentRoot = 1;\n      reactReconcilerConstants_development.ConcurrentRoot = ConcurrentRoot;\n      reactReconcilerConstants_development.ContinuousEventPriority = ContinuousEventPriority;\n      reactReconcilerConstants_development.DefaultEventPriority = DefaultEventPriority;\n      reactReconcilerConstants_development.DiscreteEventPriority = DiscreteEventPriority;\n      reactReconcilerConstants_development.IdleEventPriority = IdleEventPriority;\n      reactReconcilerConstants_development.LegacyRoot = LegacyRoot;\n    })();\n  }\n  return reactReconcilerConstants_development;\n}\nvar hasRequiredConstants;\nfunction requireConstants() {\n  if (hasRequiredConstants) return constants.exports;\n  hasRequiredConstants = 1;\n  if (process.env.NODE_ENV === \"production\") {\n    constants.exports = requireReactReconcilerConstants_production_min();\n  } else {\n    constants.exports = requireReactReconcilerConstants_development();\n  }\n  return constants.exports;\n}\nvar constantsExports = requireConstants();\nfunction createStore$1(createState) {\n  let state;\n  const listeners = /* @__PURE__ */ new Set();\n  const setState = (partial, replace) => {\n    const nextState = typeof partial === \"function\" ? partial(state) : partial;\n    if (nextState !== state) {\n      const previousState = state;\n      state = replace ? nextState : Object.assign({}, state, nextState);\n      listeners.forEach((listener) => listener(state, previousState));\n    }\n  };\n  const getState = () => state;\n  const subscribeWithSelector = (listener, selector = getState, equalityFn = Object.is) => {\n    console.warn(\"[DEPRECATED] Please use `subscribeWithSelector` middleware\");\n    let currentSlice = selector(state);\n    function listenerToAdd() {\n      const nextSlice = selector(state);\n      if (!equalityFn(currentSlice, nextSlice)) {\n        const previousSlice = currentSlice;\n        listener(currentSlice = nextSlice, previousSlice);\n      }\n    }\n    listeners.add(listenerToAdd);\n    return () => listeners.delete(listenerToAdd);\n  };\n  const subscribe = (listener, selector, equalityFn) => {\n    if (selector || equalityFn) {\n      return subscribeWithSelector(listener, selector, equalityFn);\n    }\n    listeners.add(listener);\n    return () => listeners.delete(listener);\n  };\n  const destroy = () => listeners.clear();\n  const api = { setState, getState, subscribe, destroy };\n  state = createState(setState, getState, api);\n  return api;\n}\nconst isSSR = typeof window === \"undefined\" || !window.navigator || /ServerSideRendering|^Deno\\//.test(window.navigator.userAgent);\nconst useIsomorphicLayoutEffect$1 = isSSR ? useEffect : useLayoutEffect;\nfunction create(createState) {\n  const api = typeof createState === \"function\" ? createStore$1(createState) : createState;\n  const useStore2 = (selector = api.getState, equalityFn = Object.is) => {\n    const [, forceUpdate] = useReducer((c2) => c2 + 1, 0);\n    const state = api.getState();\n    const stateRef = useRef(state);\n    const selectorRef = useRef(selector);\n    const equalityFnRef = useRef(equalityFn);\n    const erroredRef = useRef(false);\n    const currentSliceRef = useRef();\n    if (currentSliceRef.current === void 0) {\n      currentSliceRef.current = selector(state);\n    }\n    let newStateSlice;\n    let hasNewStateSlice = false;\n    if (stateRef.current !== state || selectorRef.current !== selector || equalityFnRef.current !== equalityFn || erroredRef.current) {\n      newStateSlice = selector(state);\n      hasNewStateSlice = !equalityFn(currentSliceRef.current, newStateSlice);\n    }\n    useIsomorphicLayoutEffect$1(() => {\n      if (hasNewStateSlice) {\n        currentSliceRef.current = newStateSlice;\n      }\n      stateRef.current = state;\n      selectorRef.current = selector;\n      equalityFnRef.current = equalityFn;\n      erroredRef.current = false;\n    });\n    const stateBeforeSubscriptionRef = useRef(state);\n    useIsomorphicLayoutEffect$1(() => {\n      const listener = () => {\n        try {\n          const nextState = api.getState();\n          const nextStateSlice = selectorRef.current(nextState);\n          if (!equalityFnRef.current(currentSliceRef.current, nextStateSlice)) {\n            stateRef.current = nextState;\n            currentSliceRef.current = nextStateSlice;\n            forceUpdate();\n          }\n        } catch (error2) {\n          erroredRef.current = true;\n          forceUpdate();\n        }\n      };\n      const unsubscribe = api.subscribe(listener);\n      if (api.getState() !== stateBeforeSubscriptionRef.current) {\n        listener();\n      }\n      return unsubscribe;\n    }, []);\n    const sliceToReturn = hasNewStateSlice ? newStateSlice : currentSliceRef.current;\n    useDebugValue(sliceToReturn);\n    return sliceToReturn;\n  };\n  Object.assign(useStore2, api);\n  useStore2[Symbol.iterator] = function() {\n    console.warn(\"[useStore, api] = create() is deprecated and will be removed in v4\");\n    const items = [useStore2, api];\n    return {\n      next() {\n        const done = items.length <= 0;\n        return { value: items.shift(), done };\n      }\n    };\n  };\n  return useStore2;\n}\nconst isPromise = (promise) => typeof promise === \"object\" && typeof promise.then === \"function\";\nconst globalCache = [];\nfunction shallowEqualArrays(arrA, arrB, equal = (a2, b2) => a2 === b2) {\n  if (arrA === arrB) return true;\n  if (!arrA || !arrB) return false;\n  const len = arrA.length;\n  if (arrB.length !== len) return false;\n  for (let i2 = 0; i2 < len; i2++) if (!equal(arrA[i2], arrB[i2])) return false;\n  return true;\n}\nfunction query(fn, keys = null, preload2 = false, config = {}) {\n  if (keys === null) keys = [fn];\n  for (const entry2 of globalCache) {\n    if (shallowEqualArrays(keys, entry2.keys, entry2.equal)) {\n      if (preload2) return void 0;\n      if (Object.prototype.hasOwnProperty.call(entry2, \"error\")) throw entry2.error;\n      if (Object.prototype.hasOwnProperty.call(entry2, \"response\")) {\n        if (config.lifespan && config.lifespan > 0) {\n          if (entry2.timeout) clearTimeout(entry2.timeout);\n          entry2.timeout = setTimeout(entry2.remove, config.lifespan);\n        }\n        return entry2.response;\n      }\n      if (!preload2) throw entry2.promise;\n    }\n  }\n  const entry = {\n    keys,\n    equal: config.equal,\n    remove: () => {\n      const index = globalCache.indexOf(entry);\n      if (index !== -1) globalCache.splice(index, 1);\n    },\n    promise: (\n      // Execute the promise\n      (isPromise(fn) ? fn : fn(...keys)).then((response) => {\n        entry.response = response;\n        if (config.lifespan && config.lifespan > 0) {\n          entry.timeout = setTimeout(entry.remove, config.lifespan);\n        }\n      }).catch((error2) => entry.error = error2)\n    )\n  };\n  globalCache.push(entry);\n  if (!preload2) throw entry.promise;\n  return void 0;\n}\nconst suspend = (fn, keys, config) => query(fn, keys, false, config);\nconst preload = (fn, keys, config) => void query(fn, keys, true, config);\nconst clear = (keys) => {\n  if (keys === void 0 || keys.length === 0) globalCache.splice(0, globalCache.length);\n  else {\n    const entry = globalCache.find((entry2) => shallowEqualArrays(keys, entry2.keys, entry2.equal));\n    if (entry) entry.remove();\n  }\n};\nvar jsxRuntime = { exports: {} };\nvar reactJsxRuntime_production_min = {};\n/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactJsxRuntime_production_min;\nfunction requireReactJsxRuntime_production_min() {\n  if (hasRequiredReactJsxRuntime_production_min) return reactJsxRuntime_production_min;\n  hasRequiredReactJsxRuntime_production_min = 1;\n  var f2 = React__default, k2 = Symbol.for(\"react.element\"), l2 = Symbol.for(\"react.fragment\"), m2 = Object.prototype.hasOwnProperty, n2 = f2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p2 = { key: true, ref: true, __self: true, __source: true };\n  function q2(c2, a2, g2) {\n    var b2, d2 = {}, e2 = null, h2 = null;\n    void 0 !== g2 && (e2 = \"\" + g2);\n    void 0 !== a2.key && (e2 = \"\" + a2.key);\n    void 0 !== a2.ref && (h2 = a2.ref);\n    for (b2 in a2) m2.call(a2, b2) && !p2.hasOwnProperty(b2) && (d2[b2] = a2[b2]);\n    if (c2 && c2.defaultProps) for (b2 in a2 = c2.defaultProps, a2) void 0 === d2[b2] && (d2[b2] = a2[b2]);\n    return { $$typeof: k2, type: c2, key: e2, ref: h2, props: d2, _owner: n2.current };\n  }\n  reactJsxRuntime_production_min.Fragment = l2;\n  reactJsxRuntime_production_min.jsx = q2;\n  reactJsxRuntime_production_min.jsxs = q2;\n  return reactJsxRuntime_production_min;\n}\nvar reactJsxRuntime_development = {};\n/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactJsxRuntime_development;\nfunction requireReactJsxRuntime_development() {\n  if (hasRequiredReactJsxRuntime_development) return reactJsxRuntime_development;\n  hasRequiredReactJsxRuntime_development = 1;\n  if (process.env.NODE_ENV !== \"production\") {\n    (function() {\n      var React2 = React__default;\n      var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n      var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n      var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n      var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n      var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n      var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n      var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n      var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n      var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n      var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n      var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n      var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n      var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n      var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n      var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n      function getIteratorFn(maybeIterable) {\n        if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n          return null;\n        }\n        var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n        if (typeof maybeIterator === \"function\") {\n          return maybeIterator;\n        }\n        return null;\n      }\n      var ReactSharedInternals = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n      function error2(format) {\n        {\n          {\n            for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n              args[_key2 - 1] = arguments[_key2];\n            }\n            printWarning(\"error\", format, args);\n          }\n        }\n      }\n      function printWarning(level, format, args) {\n        {\n          var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;\n          var stack = ReactDebugCurrentFrame2.getStackAddendum();\n          if (stack !== \"\") {\n            format += \"%s\";\n            args = args.concat([stack]);\n          }\n          var argsWithFormat = args.map(function(item) {\n            return String(item);\n          });\n          argsWithFormat.unshift(\"Warning: \" + format);\n          Function.prototype.apply.call(console[level], console, argsWithFormat);\n        }\n      }\n      var enableScopeAPI = false;\n      var enableCacheElement = false;\n      var enableTransitionTracing = false;\n      var enableLegacyHidden = false;\n      var enableDebugTracing = false;\n      var REACT_MODULE_REFERENCE;\n      {\n        REACT_MODULE_REFERENCE = Symbol.for(\"react.module.reference\");\n      }\n      function isValidElementType(type) {\n        if (typeof type === \"string\" || typeof type === \"function\") {\n          return true;\n        }\n        if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing) {\n          return true;\n        }\n        if (typeof type === \"object\" && type !== null) {\n          if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n          // types supported by any Flight configuration anywhere since\n          // we don't know which Flight build this will end up being used\n          // with.\n          type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== void 0) {\n            return true;\n          }\n        }\n        return false;\n      }\n      function getWrappedName(outerType, innerType, wrapperName) {\n        var displayName = outerType.displayName;\n        if (displayName) {\n          return displayName;\n        }\n        var functionName = innerType.displayName || innerType.name || \"\";\n        return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n      }\n      function getContextName(type) {\n        return type.displayName || \"Context\";\n      }\n      function getComponentNameFromType(type) {\n        if (type == null) {\n          return null;\n        }\n        {\n          if (typeof type.tag === \"number\") {\n            error2(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\");\n          }\n        }\n        if (typeof type === \"function\") {\n          return type.displayName || type.name || null;\n        }\n        if (typeof type === \"string\") {\n          return type;\n        }\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n            return \"Fragment\";\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_PROFILER_TYPE:\n            return \"Profiler\";\n          case REACT_STRICT_MODE_TYPE:\n            return \"StrictMode\";\n          case REACT_SUSPENSE_TYPE:\n            return \"Suspense\";\n          case REACT_SUSPENSE_LIST_TYPE:\n            return \"SuspenseList\";\n        }\n        if (typeof type === \"object\") {\n          switch (type.$$typeof) {\n            case REACT_CONTEXT_TYPE:\n              var context2 = type;\n              return getContextName(context2) + \".Consumer\";\n            case REACT_PROVIDER_TYPE:\n              var provider = type;\n              return getContextName(provider._context) + \".Provider\";\n            case REACT_FORWARD_REF_TYPE:\n              return getWrappedName(type, type.render, \"ForwardRef\");\n            case REACT_MEMO_TYPE:\n              var outerName = type.displayName || null;\n              if (outerName !== null) {\n                return outerName;\n              }\n              return getComponentNameFromType(type.type) || \"Memo\";\n            case REACT_LAZY_TYPE: {\n              var lazyComponent = type;\n              var payload = lazyComponent._payload;\n              var init = lazyComponent._init;\n              try {\n                return getComponentNameFromType(init(payload));\n              } catch (x2) {\n                return null;\n              }\n            }\n          }\n        }\n        return null;\n      }\n      var assign = Object.assign;\n      var disabledDepth = 0;\n      var prevLog;\n      var prevInfo;\n      var prevWarn;\n      var prevError;\n      var prevGroup;\n      var prevGroupCollapsed;\n      var prevGroupEnd;\n      function disabledLog() {\n      }\n      disabledLog.__reactDisabledLog = true;\n      function disableLogs() {\n        {\n          if (disabledDepth === 0) {\n            prevLog = console.log;\n            prevInfo = console.info;\n            prevWarn = console.warn;\n            prevError = console.error;\n            prevGroup = console.group;\n            prevGroupCollapsed = console.groupCollapsed;\n            prevGroupEnd = console.groupEnd;\n            var props = {\n              configurable: true,\n              enumerable: true,\n              value: disabledLog,\n              writable: true\n            };\n            Object.defineProperties(console, {\n              info: props,\n              log: props,\n              warn: props,\n              error: props,\n              group: props,\n              groupCollapsed: props,\n              groupEnd: props\n            });\n          }\n          disabledDepth++;\n        }\n      }\n      function reenableLogs() {\n        {\n          disabledDepth--;\n          if (disabledDepth === 0) {\n            var props = {\n              configurable: true,\n              enumerable: true,\n              writable: true\n            };\n            Object.defineProperties(console, {\n              log: assign({}, props, {\n                value: prevLog\n              }),\n              info: assign({}, props, {\n                value: prevInfo\n              }),\n              warn: assign({}, props, {\n                value: prevWarn\n              }),\n              error: assign({}, props, {\n                value: prevError\n              }),\n              group: assign({}, props, {\n                value: prevGroup\n              }),\n              groupCollapsed: assign({}, props, {\n                value: prevGroupCollapsed\n              }),\n              groupEnd: assign({}, props, {\n                value: prevGroupEnd\n              })\n            });\n          }\n          if (disabledDepth < 0) {\n            error2(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\");\n          }\n        }\n      }\n      var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n      var prefix;\n      function describeBuiltInComponentFrame(name, source, ownerFn) {\n        {\n          if (prefix === void 0) {\n            try {\n              throw Error();\n            } catch (x2) {\n              var match = x2.stack.trim().match(/\\n( *(at )?)/);\n              prefix = match && match[1] || \"\";\n            }\n          }\n          return \"\\n\" + prefix + name;\n        }\n      }\n      var reentry = false;\n      var componentFrameCache;\n      {\n        var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n        componentFrameCache = new PossiblyWeakMap();\n      }\n      function describeNativeComponentFrame(fn, construct) {\n        if (!fn || reentry) {\n          return \"\";\n        }\n        {\n          var frame = componentFrameCache.get(fn);\n          if (frame !== void 0) {\n            return frame;\n          }\n        }\n        var control;\n        reentry = true;\n        var previousPrepareStackTrace = Error.prepareStackTrace;\n        Error.prepareStackTrace = void 0;\n        var previousDispatcher;\n        {\n          previousDispatcher = ReactCurrentDispatcher.current;\n          ReactCurrentDispatcher.current = null;\n          disableLogs();\n        }\n        try {\n          if (construct) {\n            var Fake = function() {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function() {\n                throw Error();\n              }\n            });\n            if (typeof Reflect === \"object\" && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x2) {\n                control = x2;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x2) {\n                control = x2;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x2) {\n              control = x2;\n            }\n            fn();\n          }\n        } catch (sample) {\n          if (sample && control && typeof sample.stack === \"string\") {\n            var sampleLines = sample.stack.split(\"\\n\");\n            var controlLines = control.stack.split(\"\\n\");\n            var s2 = sampleLines.length - 1;\n            var c2 = controlLines.length - 1;\n            while (s2 >= 1 && c2 >= 0 && sampleLines[s2] !== controlLines[c2]) {\n              c2--;\n            }\n            for (; s2 >= 1 && c2 >= 0; s2--, c2--) {\n              if (sampleLines[s2] !== controlLines[c2]) {\n                if (s2 !== 1 || c2 !== 1) {\n                  do {\n                    s2--;\n                    c2--;\n                    if (c2 < 0 || sampleLines[s2] !== controlLines[c2]) {\n                      var _frame = \"\\n\" + sampleLines[s2].replace(\" at new \", \" at \");\n                      if (fn.displayName && _frame.includes(\"<anonymous>\")) {\n                        _frame = _frame.replace(\"<anonymous>\", fn.displayName);\n                      }\n                      {\n                        if (typeof fn === \"function\") {\n                          componentFrameCache.set(fn, _frame);\n                        }\n                      }\n                      return _frame;\n                    }\n                  } while (s2 >= 1 && c2 >= 0);\n                }\n                break;\n              }\n            }\n          }\n        } finally {\n          reentry = false;\n          {\n            ReactCurrentDispatcher.current = previousDispatcher;\n            reenableLogs();\n          }\n          Error.prepareStackTrace = previousPrepareStackTrace;\n        }\n        var name = fn ? fn.displayName || fn.name : \"\";\n        var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n        {\n          if (typeof fn === \"function\") {\n            componentFrameCache.set(fn, syntheticFrame);\n          }\n        }\n        return syntheticFrame;\n      }\n      function describeFunctionComponentFrame(fn, source, ownerFn) {\n        {\n          return describeNativeComponentFrame(fn, false);\n        }\n      }\n      function shouldConstruct(Component) {\n        var prototype = Component.prototype;\n        return !!(prototype && prototype.isReactComponent);\n      }\n      function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n        if (type == null) {\n          return \"\";\n        }\n        if (typeof type === \"function\") {\n          {\n            return describeNativeComponentFrame(type, shouldConstruct(type));\n          }\n        }\n        if (typeof type === \"string\") {\n          return describeBuiltInComponentFrame(type);\n        }\n        switch (type) {\n          case REACT_SUSPENSE_TYPE:\n            return describeBuiltInComponentFrame(\"Suspense\");\n          case REACT_SUSPENSE_LIST_TYPE:\n            return describeBuiltInComponentFrame(\"SuspenseList\");\n        }\n        if (typeof type === \"object\") {\n          switch (type.$$typeof) {\n            case REACT_FORWARD_REF_TYPE:\n              return describeFunctionComponentFrame(type.render);\n            case REACT_MEMO_TYPE:\n              return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n            case REACT_LAZY_TYPE: {\n              var lazyComponent = type;\n              var payload = lazyComponent._payload;\n              var init = lazyComponent._init;\n              try {\n                return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n              } catch (x2) {\n              }\n            }\n          }\n        }\n        return \"\";\n      }\n      var hasOwnProperty = Object.prototype.hasOwnProperty;\n      var loggedTypeFailures = {};\n      var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n      function setCurrentlyValidatingElement(element) {\n        {\n          if (element) {\n            var owner = element._owner;\n            var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n            ReactDebugCurrentFrame.setExtraStackFrame(stack);\n          } else {\n            ReactDebugCurrentFrame.setExtraStackFrame(null);\n          }\n        }\n      }\n      function checkPropTypes(typeSpecs, values, location, componentName, element) {\n        {\n          var has = Function.call.bind(hasOwnProperty);\n          for (var typeSpecName in typeSpecs) {\n            if (has(typeSpecs, typeSpecName)) {\n              var error$1 = void 0;\n              try {\n                if (typeof typeSpecs[typeSpecName] !== \"function\") {\n                  var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n                  err.name = \"Invariant Violation\";\n                  throw err;\n                }\n                error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n              } catch (ex) {\n                error$1 = ex;\n              }\n              if (error$1 && !(error$1 instanceof Error)) {\n                setCurrentlyValidatingElement(element);\n                error2(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$1);\n                setCurrentlyValidatingElement(null);\n              }\n              if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n                loggedTypeFailures[error$1.message] = true;\n                setCurrentlyValidatingElement(element);\n                error2(\"Failed %s type: %s\", location, error$1.message);\n                setCurrentlyValidatingElement(null);\n              }\n            }\n          }\n        }\n      }\n      var isArrayImpl = Array.isArray;\n      function isArray2(a2) {\n        return isArrayImpl(a2);\n      }\n      function typeName(value) {\n        {\n          var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n          var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\";\n          return type;\n        }\n      }\n      function willCoercionThrow(value) {\n        {\n          try {\n            testStringCoercion(value);\n            return false;\n          } catch (e2) {\n            return true;\n          }\n        }\n      }\n      function testStringCoercion(value) {\n        return \"\" + value;\n      }\n      function checkKeyStringCoercion(value) {\n        {\n          if (willCoercionThrow(value)) {\n            error2(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\", typeName(value));\n            return testStringCoercion(value);\n          }\n        }\n      }\n      var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\n      var RESERVED_PROPS = {\n        key: true,\n        ref: true,\n        __self: true,\n        __source: true\n      };\n      var specialPropKeyWarningShown;\n      var specialPropRefWarningShown;\n      function hasValidRef(config) {\n        {\n          if (hasOwnProperty.call(config, \"ref\")) {\n            var getter = Object.getOwnPropertyDescriptor(config, \"ref\").get;\n            if (getter && getter.isReactWarning) {\n              return false;\n            }\n          }\n        }\n        return config.ref !== void 0;\n      }\n      function hasValidKey(config) {\n        {\n          if (hasOwnProperty.call(config, \"key\")) {\n            var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n            if (getter && getter.isReactWarning) {\n              return false;\n            }\n          }\n        }\n        return config.key !== void 0;\n      }\n      function warnIfStringRefCannotBeAutoConverted(config, self2) {\n        {\n          if (typeof config.ref === \"string\" && ReactCurrentOwner.current && self2) ;\n        }\n      }\n      function defineKeyPropWarningGetter(props, displayName) {\n        {\n          var warnAboutAccessingKey = function() {\n            if (!specialPropKeyWarningShown) {\n              specialPropKeyWarningShown = true;\n              error2(\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n            }\n          };\n          warnAboutAccessingKey.isReactWarning = true;\n          Object.defineProperty(props, \"key\", {\n            get: warnAboutAccessingKey,\n            configurable: true\n          });\n        }\n      }\n      function defineRefPropWarningGetter(props, displayName) {\n        {\n          var warnAboutAccessingRef = function() {\n            if (!specialPropRefWarningShown) {\n              specialPropRefWarningShown = true;\n              error2(\"%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)\", displayName);\n            }\n          };\n          warnAboutAccessingRef.isReactWarning = true;\n          Object.defineProperty(props, \"ref\", {\n            get: warnAboutAccessingRef,\n            configurable: true\n          });\n        }\n      }\n      var ReactElement = function(type, key, ref, self2, source, owner, props) {\n        var element = {\n          // This tag allows us to uniquely identify this as a React Element\n          $$typeof: REACT_ELEMENT_TYPE,\n          // Built-in properties that belong on the element\n          type,\n          key,\n          ref,\n          props,\n          // Record the component responsible for creating this element.\n          _owner: owner\n        };\n        {\n          element._store = {};\n          Object.defineProperty(element._store, \"validated\", {\n            configurable: false,\n            enumerable: false,\n            writable: true,\n            value: false\n          });\n          Object.defineProperty(element, \"_self\", {\n            configurable: false,\n            enumerable: false,\n            writable: false,\n            value: self2\n          });\n          Object.defineProperty(element, \"_source\", {\n            configurable: false,\n            enumerable: false,\n            writable: false,\n            value: source\n          });\n          if (Object.freeze) {\n            Object.freeze(element.props);\n            Object.freeze(element);\n          }\n        }\n        return element;\n      };\n      function jsxDEV(type, config, maybeKey, source, self2) {\n        {\n          var propName;\n          var props = {};\n          var key = null;\n          var ref = null;\n          if (maybeKey !== void 0) {\n            {\n              checkKeyStringCoercion(maybeKey);\n            }\n            key = \"\" + maybeKey;\n          }\n          if (hasValidKey(config)) {\n            {\n              checkKeyStringCoercion(config.key);\n            }\n            key = \"\" + config.key;\n          }\n          if (hasValidRef(config)) {\n            ref = config.ref;\n            warnIfStringRefCannotBeAutoConverted(config, self2);\n          }\n          for (propName in config) {\n            if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n              props[propName] = config[propName];\n            }\n          }\n          if (type && type.defaultProps) {\n            var defaultProps = type.defaultProps;\n            for (propName in defaultProps) {\n              if (props[propName] === void 0) {\n                props[propName] = defaultProps[propName];\n              }\n            }\n          }\n          if (key || ref) {\n            var displayName = typeof type === \"function\" ? type.displayName || type.name || \"Unknown\" : type;\n            if (key) {\n              defineKeyPropWarningGetter(props, displayName);\n            }\n            if (ref) {\n              defineRefPropWarningGetter(props, displayName);\n            }\n          }\n          return ReactElement(type, key, ref, self2, source, ReactCurrentOwner.current, props);\n        }\n      }\n      var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\n      var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n      function setCurrentlyValidatingElement$1(element) {\n        {\n          if (element) {\n            var owner = element._owner;\n            var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n            ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n          } else {\n            ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n          }\n        }\n      }\n      var propTypesMisspellWarningShown;\n      {\n        propTypesMisspellWarningShown = false;\n      }\n      function isValidElement(object) {\n        {\n          return typeof object === \"object\" && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n        }\n      }\n      function getDeclarationErrorAddendum() {\n        {\n          if (ReactCurrentOwner$1.current) {\n            var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n            if (name) {\n              return \"\\n\\nCheck the render method of `\" + name + \"`.\";\n            }\n          }\n          return \"\";\n        }\n      }\n      function getSourceInfoErrorAddendum(source) {\n        {\n          return \"\";\n        }\n      }\n      var ownerHasKeyUseWarning = {};\n      function getCurrentComponentErrorInfo(parentType) {\n        {\n          var info = getDeclarationErrorAddendum();\n          if (!info) {\n            var parentName = typeof parentType === \"string\" ? parentType : parentType.displayName || parentType.name;\n            if (parentName) {\n              info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n            }\n          }\n          return info;\n        }\n      }\n      function validateExplicitKey(element, parentType) {\n        {\n          if (!element._store || element._store.validated || element.key != null) {\n            return;\n          }\n          element._store.validated = true;\n          var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n          if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n            return;\n          }\n          ownerHasKeyUseWarning[currentComponentErrorInfo] = true;\n          var childOwner = \"\";\n          if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n            childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n          }\n          setCurrentlyValidatingElement$1(element);\n          error2('Each child in a list should have a unique \"key\" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n          setCurrentlyValidatingElement$1(null);\n        }\n      }\n      function validateChildKeys(node, parentType) {\n        {\n          if (typeof node !== \"object\") {\n            return;\n          }\n          if (isArray2(node)) {\n            for (var i2 = 0; i2 < node.length; i2++) {\n              var child = node[i2];\n              if (isValidElement(child)) {\n                validateExplicitKey(child, parentType);\n              }\n            }\n          } else if (isValidElement(node)) {\n            if (node._store) {\n              node._store.validated = true;\n            }\n          } else if (node) {\n            var iteratorFn = getIteratorFn(node);\n            if (typeof iteratorFn === \"function\") {\n              if (iteratorFn !== node.entries) {\n                var iterator = iteratorFn.call(node);\n                var step;\n                while (!(step = iterator.next()).done) {\n                  if (isValidElement(step.value)) {\n                    validateExplicitKey(step.value, parentType);\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n      function validatePropTypes(element) {\n        {\n          var type = element.type;\n          if (type === null || type === void 0 || typeof type === \"string\") {\n            return;\n          }\n          var propTypes;\n          if (typeof type === \"function\") {\n            propTypes = type.propTypes;\n          } else if (typeof type === \"object\" && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n          // Inner props are checked in the reconciler.\n          type.$$typeof === REACT_MEMO_TYPE)) {\n            propTypes = type.propTypes;\n          } else {\n            return;\n          }\n          if (propTypes) {\n            var name = getComponentNameFromType(type);\n            checkPropTypes(propTypes, element.props, \"prop\", name, element);\n          } else if (type.PropTypes !== void 0 && !propTypesMisspellWarningShown) {\n            propTypesMisspellWarningShown = true;\n            var _name = getComponentNameFromType(type);\n            error2(\"Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?\", _name || \"Unknown\");\n          }\n          if (typeof type.getDefaultProps === \"function\" && !type.getDefaultProps.isReactClassApproved) {\n            error2(\"getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.\");\n          }\n        }\n      }\n      function validateFragmentProps(fragment2) {\n        {\n          var keys = Object.keys(fragment2.props);\n          for (var i2 = 0; i2 < keys.length; i2++) {\n            var key = keys[i2];\n            if (key !== \"children\" && key !== \"key\") {\n              setCurrentlyValidatingElement$1(fragment2);\n              error2(\"Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.\", key);\n              setCurrentlyValidatingElement$1(null);\n              break;\n            }\n          }\n          if (fragment2.ref !== null) {\n            setCurrentlyValidatingElement$1(fragment2);\n            error2(\"Invalid attribute `ref` supplied to `React.Fragment`.\");\n            setCurrentlyValidatingElement$1(null);\n          }\n        }\n      }\n      var didWarnAboutKeySpread = {};\n      function jsxWithValidation(type, props, key, isStaticChildren, source, self2) {\n        {\n          var validType = isValidElementType(type);\n          if (!validType) {\n            var info = \"\";\n            if (type === void 0 || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n              info += \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n            }\n            var sourceInfo = getSourceInfoErrorAddendum();\n            if (sourceInfo) {\n              info += sourceInfo;\n            } else {\n              info += getDeclarationErrorAddendum();\n            }\n            var typeString;\n            if (type === null) {\n              typeString = \"null\";\n            } else if (isArray2(type)) {\n              typeString = \"array\";\n            } else if (type !== void 0 && type.$$typeof === REACT_ELEMENT_TYPE) {\n              typeString = \"<\" + (getComponentNameFromType(type.type) || \"Unknown\") + \" />\";\n              info = \" Did you accidentally export a JSX literal instead of a component?\";\n            } else {\n              typeString = typeof type;\n            }\n            error2(\"React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s\", typeString, info);\n          }\n          var element = jsxDEV(type, props, key, source, self2);\n          if (element == null) {\n            return element;\n          }\n          if (validType) {\n            var children = props.children;\n            if (children !== void 0) {\n              if (isStaticChildren) {\n                if (isArray2(children)) {\n                  for (var i2 = 0; i2 < children.length; i2++) {\n                    validateChildKeys(children[i2], type);\n                  }\n                  if (Object.freeze) {\n                    Object.freeze(children);\n                  }\n                } else {\n                  error2(\"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\");\n                }\n              } else {\n                validateChildKeys(children, type);\n              }\n            }\n          }\n          {\n            if (hasOwnProperty.call(props, \"key\")) {\n              var componentName = getComponentNameFromType(type);\n              var keys = Object.keys(props).filter(function(k2) {\n                return k2 !== \"key\";\n              });\n              var beforeExample = keys.length > 0 ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\" : \"{key: someKey}\";\n              if (!didWarnAboutKeySpread[componentName + beforeExample]) {\n                var afterExample = keys.length > 0 ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\";\n                error2('A props object containing a \"key\" prop is being spread into JSX:\\n  let props = %s;\\n  <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n  let props = %s;\\n  <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\n                didWarnAboutKeySpread[componentName + beforeExample] = true;\n              }\n            }\n          }\n          if (type === REACT_FRAGMENT_TYPE) {\n            validateFragmentProps(element);\n          } else {\n            validatePropTypes(element);\n          }\n          return element;\n        }\n      }\n      function jsxWithValidationStatic(type, props, key) {\n        {\n          return jsxWithValidation(type, props, key, true);\n        }\n      }\n      function jsxWithValidationDynamic(type, props, key) {\n        {\n          return jsxWithValidation(type, props, key, false);\n        }\n      }\n      var jsx = jsxWithValidationDynamic;\n      var jsxs = jsxWithValidationStatic;\n      reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;\n      reactJsxRuntime_development.jsx = jsx;\n      reactJsxRuntime_development.jsxs = jsxs;\n    })();\n  }\n  return reactJsxRuntime_development;\n}\nvar hasRequiredJsxRuntime;\nfunction requireJsxRuntime() {\n  if (hasRequiredJsxRuntime) return jsxRuntime.exports;\n  hasRequiredJsxRuntime = 1;\n  if (process.env.NODE_ENV === \"production\") {\n    jsxRuntime.exports = requireReactJsxRuntime_production_min();\n  } else {\n    jsxRuntime.exports = requireReactJsxRuntime_development();\n  }\n  return jsxRuntime.exports;\n}\nvar jsxRuntimeExports = requireJsxRuntime();\nvar reactReconciler = { exports: {} };\nvar scheduler = { exports: {} };\nvar scheduler_production_min = {};\n/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredScheduler_production_min;\nfunction requireScheduler_production_min() {\n  if (hasRequiredScheduler_production_min) return scheduler_production_min;\n  hasRequiredScheduler_production_min = 1;\n  (function(exports) {\n    function f2(a2, b2) {\n      var c2 = a2.length;\n      a2.push(b2);\n      a: for (; 0 < c2; ) {\n        var d2 = c2 - 1 >>> 1, e2 = a2[d2];\n        if (0 < g2(e2, b2)) a2[d2] = b2, a2[c2] = e2, c2 = d2;\n        else break a;\n      }\n    }\n    function h2(a2) {\n      return 0 === a2.length ? null : a2[0];\n    }\n    function k2(a2) {\n      if (0 === a2.length) return null;\n      var b2 = a2[0], c2 = a2.pop();\n      if (c2 !== b2) {\n        a2[0] = c2;\n        a: for (var d2 = 0, e2 = a2.length, w2 = e2 >>> 1; d2 < w2; ) {\n          var m2 = 2 * (d2 + 1) - 1, C2 = a2[m2], n2 = m2 + 1, x2 = a2[n2];\n          if (0 > g2(C2, c2)) n2 < e2 && 0 > g2(x2, C2) ? (a2[d2] = x2, a2[n2] = c2, d2 = n2) : (a2[d2] = C2, a2[m2] = c2, d2 = m2);\n          else if (n2 < e2 && 0 > g2(x2, c2)) a2[d2] = x2, a2[n2] = c2, d2 = n2;\n          else break a;\n        }\n      }\n      return b2;\n    }\n    function g2(a2, b2) {\n      var c2 = a2.sortIndex - b2.sortIndex;\n      return 0 !== c2 ? c2 : a2.id - b2.id;\n    }\n    if (\"object\" === typeof performance && \"function\" === typeof performance.now) {\n      var l2 = performance;\n      exports.unstable_now = function() {\n        return l2.now();\n      };\n    } else {\n      var p2 = Date, q2 = p2.now();\n      exports.unstable_now = function() {\n        return p2.now() - q2;\n      };\n    }\n    var r2 = [], t2 = [], u2 = 1, v2 = null, y2 = 3, z2 = false, A2 = false, B2 = false, D2 = \"function\" === typeof setTimeout ? setTimeout : null, E2 = \"function\" === typeof clearTimeout ? clearTimeout : null, F2 = \"undefined\" !== typeof setImmediate ? setImmediate : null;\n    \"undefined\" !== typeof navigator && void 0 !== navigator.scheduling && void 0 !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling);\n    function G2(a2) {\n      for (var b2 = h2(t2); null !== b2; ) {\n        if (null === b2.callback) k2(t2);\n        else if (b2.startTime <= a2) k2(t2), b2.sortIndex = b2.expirationTime, f2(r2, b2);\n        else break;\n        b2 = h2(t2);\n      }\n    }\n    function H2(a2) {\n      B2 = false;\n      G2(a2);\n      if (!A2) if (null !== h2(r2)) A2 = true, I2(J2);\n      else {\n        var b2 = h2(t2);\n        null !== b2 && K2(H2, b2.startTime - a2);\n      }\n    }\n    function J2(a2, b2) {\n      A2 = false;\n      B2 && (B2 = false, E2(L2), L2 = -1);\n      z2 = true;\n      var c2 = y2;\n      try {\n        G2(b2);\n        for (v2 = h2(r2); null !== v2 && (!(v2.expirationTime > b2) || a2 && !M2()); ) {\n          var d2 = v2.callback;\n          if (\"function\" === typeof d2) {\n            v2.callback = null;\n            y2 = v2.priorityLevel;\n            var e2 = d2(v2.expirationTime <= b2);\n            b2 = exports.unstable_now();\n            \"function\" === typeof e2 ? v2.callback = e2 : v2 === h2(r2) && k2(r2);\n            G2(b2);\n          } else k2(r2);\n          v2 = h2(r2);\n        }\n        if (null !== v2) var w2 = true;\n        else {\n          var m2 = h2(t2);\n          null !== m2 && K2(H2, m2.startTime - b2);\n          w2 = false;\n        }\n        return w2;\n      } finally {\n        v2 = null, y2 = c2, z2 = false;\n      }\n    }\n    var N2 = false, O2 = null, L2 = -1, P2 = 5, Q2 = -1;\n    function M2() {\n      return exports.unstable_now() - Q2 < P2 ? false : true;\n    }\n    function R2() {\n      if (null !== O2) {\n        var a2 = exports.unstable_now();\n        Q2 = a2;\n        var b2 = true;\n        try {\n          b2 = O2(true, a2);\n        } finally {\n          b2 ? S2() : (N2 = false, O2 = null);\n        }\n      } else N2 = false;\n    }\n    var S2;\n    if (\"function\" === typeof F2) S2 = function() {\n      F2(R2);\n    };\n    else if (\"undefined\" !== typeof MessageChannel) {\n      var T2 = new MessageChannel(), U2 = T2.port2;\n      T2.port1.onmessage = R2;\n      S2 = function() {\n        U2.postMessage(null);\n      };\n    } else S2 = function() {\n      D2(R2, 0);\n    };\n    function I2(a2) {\n      O2 = a2;\n      N2 || (N2 = true, S2());\n    }\n    function K2(a2, b2) {\n      L2 = D2(function() {\n        a2(exports.unstable_now());\n      }, b2);\n    }\n    exports.unstable_IdlePriority = 5;\n    exports.unstable_ImmediatePriority = 1;\n    exports.unstable_LowPriority = 4;\n    exports.unstable_NormalPriority = 3;\n    exports.unstable_Profiling = null;\n    exports.unstable_UserBlockingPriority = 2;\n    exports.unstable_cancelCallback = function(a2) {\n      a2.callback = null;\n    };\n    exports.unstable_continueExecution = function() {\n      A2 || z2 || (A2 = true, I2(J2));\n    };\n    exports.unstable_forceFrameRate = function(a2) {\n      0 > a2 || 125 < a2 ? console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\") : P2 = 0 < a2 ? Math.floor(1e3 / a2) : 5;\n    };\n    exports.unstable_getCurrentPriorityLevel = function() {\n      return y2;\n    };\n    exports.unstable_getFirstCallbackNode = function() {\n      return h2(r2);\n    };\n    exports.unstable_next = function(a2) {\n      switch (y2) {\n        case 1:\n        case 2:\n        case 3:\n          var b2 = 3;\n          break;\n        default:\n          b2 = y2;\n      }\n      var c2 = y2;\n      y2 = b2;\n      try {\n        return a2();\n      } finally {\n        y2 = c2;\n      }\n    };\n    exports.unstable_pauseExecution = function() {\n    };\n    exports.unstable_requestPaint = function() {\n    };\n    exports.unstable_runWithPriority = function(a2, b2) {\n      switch (a2) {\n        case 1:\n        case 2:\n        case 3:\n        case 4:\n        case 5:\n          break;\n        default:\n          a2 = 3;\n      }\n      var c2 = y2;\n      y2 = a2;\n      try {\n        return b2();\n      } finally {\n        y2 = c2;\n      }\n    };\n    exports.unstable_scheduleCallback = function(a2, b2, c2) {\n      var d2 = exports.unstable_now();\n      \"object\" === typeof c2 && null !== c2 ? (c2 = c2.delay, c2 = \"number\" === typeof c2 && 0 < c2 ? d2 + c2 : d2) : c2 = d2;\n      switch (a2) {\n        case 1:\n          var e2 = -1;\n          break;\n        case 2:\n          e2 = 250;\n          break;\n        case 5:\n          e2 = 1073741823;\n          break;\n        case 4:\n          e2 = 1e4;\n          break;\n        default:\n          e2 = 5e3;\n      }\n      e2 = c2 + e2;\n      a2 = { id: u2++, callback: b2, priorityLevel: a2, startTime: c2, expirationTime: e2, sortIndex: -1 };\n      c2 > d2 ? (a2.sortIndex = c2, f2(t2, a2), null === h2(r2) && a2 === h2(t2) && (B2 ? (E2(L2), L2 = -1) : B2 = true, K2(H2, c2 - d2))) : (a2.sortIndex = e2, f2(r2, a2), A2 || z2 || (A2 = true, I2(J2)));\n      return a2;\n    };\n    exports.unstable_shouldYield = M2;\n    exports.unstable_wrapCallback = function(a2) {\n      var b2 = y2;\n      return function() {\n        var c2 = y2;\n        y2 = b2;\n        try {\n          return a2.apply(this, arguments);\n        } finally {\n          y2 = c2;\n        }\n      };\n    };\n  })(scheduler_production_min);\n  return scheduler_production_min;\n}\nvar scheduler_development = {};\n/**\n * @license React\n * scheduler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredScheduler_development;\nfunction requireScheduler_development() {\n  if (hasRequiredScheduler_development) return scheduler_development;\n  hasRequiredScheduler_development = 1;\n  (function(exports) {\n    if (process.env.NODE_ENV !== \"production\") {\n      (function() {\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n        }\n        var enableProfiling = false;\n        var frameYieldMs = 5;\n        function push(heap, node) {\n          var index = heap.length;\n          heap.push(node);\n          siftUp(heap, node, index);\n        }\n        function peek(heap) {\n          return heap.length === 0 ? null : heap[0];\n        }\n        function pop(heap) {\n          if (heap.length === 0) {\n            return null;\n          }\n          var first = heap[0];\n          var last = heap.pop();\n          if (last !== first) {\n            heap[0] = last;\n            siftDown(heap, last, 0);\n          }\n          return first;\n        }\n        function siftUp(heap, node, i2) {\n          var index = i2;\n          while (index > 0) {\n            var parentIndex = index - 1 >>> 1;\n            var parent = heap[parentIndex];\n            if (compare(parent, node) > 0) {\n              heap[parentIndex] = node;\n              heap[index] = parent;\n              index = parentIndex;\n            } else {\n              return;\n            }\n          }\n        }\n        function siftDown(heap, node, i2) {\n          var index = i2;\n          var length = heap.length;\n          var halfLength = length >>> 1;\n          while (index < halfLength) {\n            var leftIndex = (index + 1) * 2 - 1;\n            var left = heap[leftIndex];\n            var rightIndex = leftIndex + 1;\n            var right = heap[rightIndex];\n            if (compare(left, node) < 0) {\n              if (rightIndex < length && compare(right, left) < 0) {\n                heap[index] = right;\n                heap[rightIndex] = node;\n                index = rightIndex;\n              } else {\n                heap[index] = left;\n                heap[leftIndex] = node;\n                index = leftIndex;\n              }\n            } else if (rightIndex < length && compare(right, node) < 0) {\n              heap[index] = right;\n              heap[rightIndex] = node;\n              index = rightIndex;\n            } else {\n              return;\n            }\n          }\n        }\n        function compare(a2, b2) {\n          var diff = a2.sortIndex - b2.sortIndex;\n          return diff !== 0 ? diff : a2.id - b2.id;\n        }\n        var ImmediatePriority = 1;\n        var UserBlockingPriority = 2;\n        var NormalPriority = 3;\n        var LowPriority = 4;\n        var IdlePriority = 5;\n        function markTaskErrored(task, ms) {\n        }\n        var hasPerformanceNow = typeof performance === \"object\" && typeof performance.now === \"function\";\n        if (hasPerformanceNow) {\n          var localPerformance = performance;\n          exports.unstable_now = function() {\n            return localPerformance.now();\n          };\n        } else {\n          var localDate = Date;\n          var initialTime = localDate.now();\n          exports.unstable_now = function() {\n            return localDate.now() - initialTime;\n          };\n        }\n        var maxSigned31BitInt = 1073741823;\n        var IMMEDIATE_PRIORITY_TIMEOUT = -1;\n        var USER_BLOCKING_PRIORITY_TIMEOUT = 250;\n        var NORMAL_PRIORITY_TIMEOUT = 5e3;\n        var LOW_PRIORITY_TIMEOUT = 1e4;\n        var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt;\n        var taskQueue = [];\n        var timerQueue = [];\n        var taskIdCounter = 1;\n        var currentTask = null;\n        var currentPriorityLevel = NormalPriority;\n        var isPerformingWork = false;\n        var isHostCallbackScheduled = false;\n        var isHostTimeoutScheduled = false;\n        var localSetTimeout = typeof setTimeout === \"function\" ? setTimeout : null;\n        var localClearTimeout = typeof clearTimeout === \"function\" ? clearTimeout : null;\n        var localSetImmediate = typeof setImmediate !== \"undefined\" ? setImmediate : null;\n        typeof navigator !== \"undefined\" && navigator.scheduling !== void 0 && navigator.scheduling.isInputPending !== void 0 ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n        function advanceTimers(currentTime) {\n          var timer = peek(timerQueue);\n          while (timer !== null) {\n            if (timer.callback === null) {\n              pop(timerQueue);\n            } else if (timer.startTime <= currentTime) {\n              pop(timerQueue);\n              timer.sortIndex = timer.expirationTime;\n              push(taskQueue, timer);\n            } else {\n              return;\n            }\n            timer = peek(timerQueue);\n          }\n        }\n        function handleTimeout(currentTime) {\n          isHostTimeoutScheduled = false;\n          advanceTimers(currentTime);\n          if (!isHostCallbackScheduled) {\n            if (peek(taskQueue) !== null) {\n              isHostCallbackScheduled = true;\n              requestHostCallback(flushWork);\n            } else {\n              var firstTimer = peek(timerQueue);\n              if (firstTimer !== null) {\n                requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n              }\n            }\n          }\n        }\n        function flushWork(hasTimeRemaining, initialTime2) {\n          isHostCallbackScheduled = false;\n          if (isHostTimeoutScheduled) {\n            isHostTimeoutScheduled = false;\n            cancelHostTimeout();\n          }\n          isPerformingWork = true;\n          var previousPriorityLevel = currentPriorityLevel;\n          try {\n            var currentTime;\n            if (enableProfiling) ;\n            else {\n              return workLoop(hasTimeRemaining, initialTime2);\n            }\n          } finally {\n            currentTask = null;\n            currentPriorityLevel = previousPriorityLevel;\n            isPerformingWork = false;\n          }\n        }\n        function workLoop(hasTimeRemaining, initialTime2) {\n          var currentTime = initialTime2;\n          advanceTimers(currentTime);\n          currentTask = peek(taskQueue);\n          while (currentTask !== null && true) {\n            if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n              break;\n            }\n            var callback = currentTask.callback;\n            if (typeof callback === \"function\") {\n              currentTask.callback = null;\n              currentPriorityLevel = currentTask.priorityLevel;\n              var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n              var continuationCallback = callback(didUserCallbackTimeout);\n              currentTime = exports.unstable_now();\n              if (typeof continuationCallback === \"function\") {\n                currentTask.callback = continuationCallback;\n              } else {\n                if (currentTask === peek(taskQueue)) {\n                  pop(taskQueue);\n                }\n              }\n              advanceTimers(currentTime);\n            } else {\n              pop(taskQueue);\n            }\n            currentTask = peek(taskQueue);\n          }\n          if (currentTask !== null) {\n            return true;\n          } else {\n            var firstTimer = peek(timerQueue);\n            if (firstTimer !== null) {\n              requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n            }\n            return false;\n          }\n        }\n        function unstable_runWithPriority(priorityLevel, eventHandler) {\n          switch (priorityLevel) {\n            case ImmediatePriority:\n            case UserBlockingPriority:\n            case NormalPriority:\n            case LowPriority:\n            case IdlePriority:\n              break;\n            default:\n              priorityLevel = NormalPriority;\n          }\n          var previousPriorityLevel = currentPriorityLevel;\n          currentPriorityLevel = priorityLevel;\n          try {\n            return eventHandler();\n          } finally {\n            currentPriorityLevel = previousPriorityLevel;\n          }\n        }\n        function unstable_next(eventHandler) {\n          var priorityLevel;\n          switch (currentPriorityLevel) {\n            case ImmediatePriority:\n            case UserBlockingPriority:\n            case NormalPriority:\n              priorityLevel = NormalPriority;\n              break;\n            default:\n              priorityLevel = currentPriorityLevel;\n              break;\n          }\n          var previousPriorityLevel = currentPriorityLevel;\n          currentPriorityLevel = priorityLevel;\n          try {\n            return eventHandler();\n          } finally {\n            currentPriorityLevel = previousPriorityLevel;\n          }\n        }\n        function unstable_wrapCallback(callback) {\n          var parentPriorityLevel = currentPriorityLevel;\n          return function() {\n            var previousPriorityLevel = currentPriorityLevel;\n            currentPriorityLevel = parentPriorityLevel;\n            try {\n              return callback.apply(this, arguments);\n            } finally {\n              currentPriorityLevel = previousPriorityLevel;\n            }\n          };\n        }\n        function unstable_scheduleCallback(priorityLevel, callback, options) {\n          var currentTime = exports.unstable_now();\n          var startTime2;\n          if (typeof options === \"object\" && options !== null) {\n            var delay = options.delay;\n            if (typeof delay === \"number\" && delay > 0) {\n              startTime2 = currentTime + delay;\n            } else {\n              startTime2 = currentTime;\n            }\n          } else {\n            startTime2 = currentTime;\n          }\n          var timeout;\n          switch (priorityLevel) {\n            case ImmediatePriority:\n              timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n              break;\n            case UserBlockingPriority:\n              timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n              break;\n            case IdlePriority:\n              timeout = IDLE_PRIORITY_TIMEOUT;\n              break;\n            case LowPriority:\n              timeout = LOW_PRIORITY_TIMEOUT;\n              break;\n            case NormalPriority:\n            default:\n              timeout = NORMAL_PRIORITY_TIMEOUT;\n              break;\n          }\n          var expirationTime = startTime2 + timeout;\n          var newTask = {\n            id: taskIdCounter++,\n            callback,\n            priorityLevel,\n            startTime: startTime2,\n            expirationTime,\n            sortIndex: -1\n          };\n          if (startTime2 > currentTime) {\n            newTask.sortIndex = startTime2;\n            push(timerQueue, newTask);\n            if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n              if (isHostTimeoutScheduled) {\n                cancelHostTimeout();\n              } else {\n                isHostTimeoutScheduled = true;\n              }\n              requestHostTimeout(handleTimeout, startTime2 - currentTime);\n            }\n          } else {\n            newTask.sortIndex = expirationTime;\n            push(taskQueue, newTask);\n            if (!isHostCallbackScheduled && !isPerformingWork) {\n              isHostCallbackScheduled = true;\n              requestHostCallback(flushWork);\n            }\n          }\n          return newTask;\n        }\n        function unstable_pauseExecution() {\n        }\n        function unstable_continueExecution() {\n          if (!isHostCallbackScheduled && !isPerformingWork) {\n            isHostCallbackScheduled = true;\n            requestHostCallback(flushWork);\n          }\n        }\n        function unstable_getFirstCallbackNode() {\n          return peek(taskQueue);\n        }\n        function unstable_cancelCallback(task) {\n          task.callback = null;\n        }\n        function unstable_getCurrentPriorityLevel() {\n          return currentPriorityLevel;\n        }\n        var isMessageLoopRunning = false;\n        var scheduledHostCallback = null;\n        var taskTimeoutID = -1;\n        var frameInterval = frameYieldMs;\n        var startTime = -1;\n        function shouldYieldToHost() {\n          var timeElapsed = exports.unstable_now() - startTime;\n          if (timeElapsed < frameInterval) {\n            return false;\n          }\n          return true;\n        }\n        function requestPaint() {\n        }\n        function forceFrameRate(fps) {\n          if (fps < 0 || fps > 125) {\n            console[\"error\"](\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\");\n            return;\n          }\n          if (fps > 0) {\n            frameInterval = Math.floor(1e3 / fps);\n          } else {\n            frameInterval = frameYieldMs;\n          }\n        }\n        var performWorkUntilDeadline = function() {\n          if (scheduledHostCallback !== null) {\n            var currentTime = exports.unstable_now();\n            startTime = currentTime;\n            var hasTimeRemaining = true;\n            var hasMoreWork = true;\n            try {\n              hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n            } finally {\n              if (hasMoreWork) {\n                schedulePerformWorkUntilDeadline();\n              } else {\n                isMessageLoopRunning = false;\n                scheduledHostCallback = null;\n              }\n            }\n          } else {\n            isMessageLoopRunning = false;\n          }\n        };\n        var schedulePerformWorkUntilDeadline;\n        if (typeof localSetImmediate === \"function\") {\n          schedulePerformWorkUntilDeadline = function() {\n            localSetImmediate(performWorkUntilDeadline);\n          };\n        } else if (typeof MessageChannel !== \"undefined\") {\n          var channel = new MessageChannel();\n          var port = channel.port2;\n          channel.port1.onmessage = performWorkUntilDeadline;\n          schedulePerformWorkUntilDeadline = function() {\n            port.postMessage(null);\n          };\n        } else {\n          schedulePerformWorkUntilDeadline = function() {\n            localSetTimeout(performWorkUntilDeadline, 0);\n          };\n        }\n        function requestHostCallback(callback) {\n          scheduledHostCallback = callback;\n          if (!isMessageLoopRunning) {\n            isMessageLoopRunning = true;\n            schedulePerformWorkUntilDeadline();\n          }\n        }\n        function requestHostTimeout(callback, ms) {\n          taskTimeoutID = localSetTimeout(function() {\n            callback(exports.unstable_now());\n          }, ms);\n        }\n        function cancelHostTimeout() {\n          localClearTimeout(taskTimeoutID);\n          taskTimeoutID = -1;\n        }\n        var unstable_requestPaint = requestPaint;\n        var unstable_Profiling = null;\n        exports.unstable_IdlePriority = IdlePriority;\n        exports.unstable_ImmediatePriority = ImmediatePriority;\n        exports.unstable_LowPriority = LowPriority;\n        exports.unstable_NormalPriority = NormalPriority;\n        exports.unstable_Profiling = unstable_Profiling;\n        exports.unstable_UserBlockingPriority = UserBlockingPriority;\n        exports.unstable_cancelCallback = unstable_cancelCallback;\n        exports.unstable_continueExecution = unstable_continueExecution;\n        exports.unstable_forceFrameRate = forceFrameRate;\n        exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\n        exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\n        exports.unstable_next = unstable_next;\n        exports.unstable_pauseExecution = unstable_pauseExecution;\n        exports.unstable_requestPaint = unstable_requestPaint;\n        exports.unstable_runWithPriority = unstable_runWithPriority;\n        exports.unstable_scheduleCallback = unstable_scheduleCallback;\n        exports.unstable_shouldYield = shouldYieldToHost;\n        exports.unstable_wrapCallback = unstable_wrapCallback;\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\" && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop === \"function\") {\n          __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n        }\n      })();\n    }\n  })(scheduler_development);\n  return scheduler_development;\n}\nvar hasRequiredScheduler;\nfunction requireScheduler() {\n  if (hasRequiredScheduler) return scheduler.exports;\n  hasRequiredScheduler = 1;\n  if (process.env.NODE_ENV === \"production\") {\n    scheduler.exports = requireScheduler_production_min();\n  } else {\n    scheduler.exports = requireScheduler_development();\n  }\n  return scheduler.exports;\n}\n/**\n * @license React\n * react-reconciler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar reactReconciler_production_min;\nvar hasRequiredReactReconciler_production_min;\nfunction requireReactReconciler_production_min() {\n  if (hasRequiredReactReconciler_production_min) return reactReconciler_production_min;\n  hasRequiredReactReconciler_production_min = 1;\n  reactReconciler_production_min = function $$$reconciler($$$hostConfig) {\n    var exports = {};\n    var aa = React__default, ba = requireScheduler(), ca = Object.assign;\n    function n2(a2) {\n      for (var b2 = \"https://reactjs.org/docs/error-decoder.html?invariant=\" + a2, c2 = 1; c2 < arguments.length; c2++) b2 += \"&args[]=\" + encodeURIComponent(arguments[c2]);\n      return \"Minified React error #\" + a2 + \"; visit \" + b2 + \" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\";\n    }\n    var ea = aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, fa = Symbol.for(\"react.element\"), ha = Symbol.for(\"react.portal\"), ia = Symbol.for(\"react.fragment\"), ja = Symbol.for(\"react.strict_mode\"), ka = Symbol.for(\"react.profiler\"), la = Symbol.for(\"react.provider\"), ma = Symbol.for(\"react.context\"), na = Symbol.for(\"react.forward_ref\"), oa = Symbol.for(\"react.suspense\"), pa = Symbol.for(\"react.suspense_list\"), qa = Symbol.for(\"react.memo\"), ra = Symbol.for(\"react.lazy\");\n    var sa = Symbol.for(\"react.offscreen\");\n    var ta = Symbol.iterator;\n    function ua(a2) {\n      if (null === a2 || \"object\" !== typeof a2) return null;\n      a2 = ta && a2[ta] || a2[\"@@iterator\"];\n      return \"function\" === typeof a2 ? a2 : null;\n    }\n    function va(a2) {\n      if (null == a2) return null;\n      if (\"function\" === typeof a2) return a2.displayName || a2.name || null;\n      if (\"string\" === typeof a2) return a2;\n      switch (a2) {\n        case ia:\n          return \"Fragment\";\n        case ha:\n          return \"Portal\";\n        case ka:\n          return \"Profiler\";\n        case ja:\n          return \"StrictMode\";\n        case oa:\n          return \"Suspense\";\n        case pa:\n          return \"SuspenseList\";\n      }\n      if (\"object\" === typeof a2) switch (a2.$$typeof) {\n        case ma:\n          return (a2.displayName || \"Context\") + \".Consumer\";\n        case la:\n          return (a2._context.displayName || \"Context\") + \".Provider\";\n        case na:\n          var b2 = a2.render;\n          a2 = a2.displayName;\n          a2 || (a2 = b2.displayName || b2.name || \"\", a2 = \"\" !== a2 ? \"ForwardRef(\" + a2 + \")\" : \"ForwardRef\");\n          return a2;\n        case qa:\n          return b2 = a2.displayName || null, null !== b2 ? b2 : va(a2.type) || \"Memo\";\n        case ra:\n          b2 = a2._payload;\n          a2 = a2._init;\n          try {\n            return va(a2(b2));\n          } catch (c2) {\n          }\n      }\n      return null;\n    }\n    function xa(a2) {\n      var b2 = a2.type;\n      switch (a2.tag) {\n        case 24:\n          return \"Cache\";\n        case 9:\n          return (b2.displayName || \"Context\") + \".Consumer\";\n        case 10:\n          return (b2._context.displayName || \"Context\") + \".Provider\";\n        case 18:\n          return \"DehydratedFragment\";\n        case 11:\n          return a2 = b2.render, a2 = a2.displayName || a2.name || \"\", b2.displayName || (\"\" !== a2 ? \"ForwardRef(\" + a2 + \")\" : \"ForwardRef\");\n        case 7:\n          return \"Fragment\";\n        case 5:\n          return b2;\n        case 4:\n          return \"Portal\";\n        case 3:\n          return \"Root\";\n        case 6:\n          return \"Text\";\n        case 16:\n          return va(b2);\n        case 8:\n          return b2 === ja ? \"StrictMode\" : \"Mode\";\n        case 22:\n          return \"Offscreen\";\n        case 12:\n          return \"Profiler\";\n        case 21:\n          return \"Scope\";\n        case 13:\n          return \"Suspense\";\n        case 19:\n          return \"SuspenseList\";\n        case 25:\n          return \"TracingMarker\";\n        case 1:\n        case 0:\n        case 17:\n        case 2:\n        case 14:\n        case 15:\n          if (\"function\" === typeof b2) return b2.displayName || b2.name || null;\n          if (\"string\" === typeof b2) return b2;\n      }\n      return null;\n    }\n    function ya(a2) {\n      var b2 = a2, c2 = a2;\n      if (a2.alternate) for (; b2.return; ) b2 = b2.return;\n      else {\n        a2 = b2;\n        do\n          b2 = a2, 0 !== (b2.flags & 4098) && (c2 = b2.return), a2 = b2.return;\n        while (a2);\n      }\n      return 3 === b2.tag ? c2 : null;\n    }\n    function za(a2) {\n      if (ya(a2) !== a2) throw Error(n2(188));\n    }\n    function Aa(a2) {\n      var b2 = a2.alternate;\n      if (!b2) {\n        b2 = ya(a2);\n        if (null === b2) throw Error(n2(188));\n        return b2 !== a2 ? null : a2;\n      }\n      for (var c2 = a2, d2 = b2; ; ) {\n        var e2 = c2.return;\n        if (null === e2) break;\n        var f2 = e2.alternate;\n        if (null === f2) {\n          d2 = e2.return;\n          if (null !== d2) {\n            c2 = d2;\n            continue;\n          }\n          break;\n        }\n        if (e2.child === f2.child) {\n          for (f2 = e2.child; f2; ) {\n            if (f2 === c2) return za(e2), a2;\n            if (f2 === d2) return za(e2), b2;\n            f2 = f2.sibling;\n          }\n          throw Error(n2(188));\n        }\n        if (c2.return !== d2.return) c2 = e2, d2 = f2;\n        else {\n          for (var g2 = false, h2 = e2.child; h2; ) {\n            if (h2 === c2) {\n              g2 = true;\n              c2 = e2;\n              d2 = f2;\n              break;\n            }\n            if (h2 === d2) {\n              g2 = true;\n              d2 = e2;\n              c2 = f2;\n              break;\n            }\n            h2 = h2.sibling;\n          }\n          if (!g2) {\n            for (h2 = f2.child; h2; ) {\n              if (h2 === c2) {\n                g2 = true;\n                c2 = f2;\n                d2 = e2;\n                break;\n              }\n              if (h2 === d2) {\n                g2 = true;\n                d2 = f2;\n                c2 = e2;\n                break;\n              }\n              h2 = h2.sibling;\n            }\n            if (!g2) throw Error(n2(189));\n          }\n        }\n        if (c2.alternate !== d2) throw Error(n2(190));\n      }\n      if (3 !== c2.tag) throw Error(n2(188));\n      return c2.stateNode.current === c2 ? a2 : b2;\n    }\n    function Ba(a2) {\n      a2 = Aa(a2);\n      return null !== a2 ? Ca(a2) : null;\n    }\n    function Ca(a2) {\n      if (5 === a2.tag || 6 === a2.tag) return a2;\n      for (a2 = a2.child; null !== a2; ) {\n        var b2 = Ca(a2);\n        if (null !== b2) return b2;\n        a2 = a2.sibling;\n      }\n      return null;\n    }\n    function Da(a2) {\n      if (5 === a2.tag || 6 === a2.tag) return a2;\n      for (a2 = a2.child; null !== a2; ) {\n        if (4 !== a2.tag) {\n          var b2 = Da(a2);\n          if (null !== b2) return b2;\n        }\n        a2 = a2.sibling;\n      }\n      return null;\n    }\n    var Ea = Array.isArray, Fa = $$$hostConfig.getPublicInstance, Ga = $$$hostConfig.getRootHostContext, Ha = $$$hostConfig.getChildHostContext, Ia = $$$hostConfig.prepareForCommit, Ja = $$$hostConfig.resetAfterCommit, Ka = $$$hostConfig.createInstance, La = $$$hostConfig.appendInitialChild, Ma = $$$hostConfig.finalizeInitialChildren, Na = $$$hostConfig.prepareUpdate, Oa = $$$hostConfig.shouldSetTextContent, Pa = $$$hostConfig.createTextInstance, Qa = $$$hostConfig.scheduleTimeout, Ra = $$$hostConfig.cancelTimeout, Sa = $$$hostConfig.noTimeout, Ta = $$$hostConfig.isPrimaryRenderer, Ua = $$$hostConfig.supportsMutation, Va = $$$hostConfig.supportsPersistence, p2 = $$$hostConfig.supportsHydration, Wa = $$$hostConfig.getInstanceFromNode, Xa = $$$hostConfig.preparePortalMount, Ya = $$$hostConfig.getCurrentEventPriority, Za = $$$hostConfig.detachDeletedInstance, $a = $$$hostConfig.supportsMicrotasks, ab = $$$hostConfig.scheduleMicrotask, bb = $$$hostConfig.supportsTestSelectors, cb = $$$hostConfig.findFiberRoot, db = $$$hostConfig.getBoundingRect, eb = $$$hostConfig.getTextContent, fb = $$$hostConfig.isHiddenSubtree, gb = $$$hostConfig.matchAccessibilityRole, hb = $$$hostConfig.setFocusIfFocusable, ib = $$$hostConfig.setupIntersectionObserver, jb = $$$hostConfig.appendChild, kb = $$$hostConfig.appendChildToContainer, lb = $$$hostConfig.commitTextUpdate, mb = $$$hostConfig.commitMount, nb = $$$hostConfig.commitUpdate, ob = $$$hostConfig.insertBefore, pb = $$$hostConfig.insertInContainerBefore, qb = $$$hostConfig.removeChild, rb = $$$hostConfig.removeChildFromContainer, sb = $$$hostConfig.resetTextContent, tb = $$$hostConfig.hideInstance, ub = $$$hostConfig.hideTextInstance, vb = $$$hostConfig.unhideInstance, wb = $$$hostConfig.unhideTextInstance, xb = $$$hostConfig.clearContainer, yb = $$$hostConfig.cloneInstance, zb = $$$hostConfig.createContainerChildSet, Ab = $$$hostConfig.appendChildToContainerChildSet, Bb = $$$hostConfig.finalizeContainerChildren, Cb = $$$hostConfig.replaceContainerChildren, Db = $$$hostConfig.cloneHiddenInstance, Eb = $$$hostConfig.cloneHiddenTextInstance, Fb = $$$hostConfig.canHydrateInstance, Gb = $$$hostConfig.canHydrateTextInstance, Hb = $$$hostConfig.canHydrateSuspenseInstance, Ib = $$$hostConfig.isSuspenseInstancePending, Jb = $$$hostConfig.isSuspenseInstanceFallback, Kb = $$$hostConfig.registerSuspenseInstanceRetry, Lb = $$$hostConfig.getNextHydratableSibling, Mb = $$$hostConfig.getFirstHydratableChild, Nb = $$$hostConfig.getFirstHydratableChildWithinContainer, Ob = $$$hostConfig.getFirstHydratableChildWithinSuspenseInstance, Pb = $$$hostConfig.hydrateInstance, Qb = $$$hostConfig.hydrateTextInstance, Rb = $$$hostConfig.hydrateSuspenseInstance, Sb = $$$hostConfig.getNextHydratableInstanceAfterSuspenseInstance, Tb = $$$hostConfig.commitHydratedContainer, Ub = $$$hostConfig.commitHydratedSuspenseInstance, Vb = $$$hostConfig.clearSuspenseBoundary, Wb = $$$hostConfig.clearSuspenseBoundaryFromContainer, Xb = $$$hostConfig.shouldDeleteUnhydratedTailInstances, Yb = $$$hostConfig.didNotMatchHydratedContainerTextInstance, Zb = $$$hostConfig.didNotMatchHydratedTextInstance, $b;\n    function ac(a2) {\n      if (void 0 === $b) try {\n        throw Error();\n      } catch (c2) {\n        var b2 = c2.stack.trim().match(/\\n( *(at )?)/);\n        $b = b2 && b2[1] || \"\";\n      }\n      return \"\\n\" + $b + a2;\n    }\n    var bc = false;\n    function cc(a2, b2) {\n      if (!a2 || bc) return \"\";\n      bc = true;\n      var c2 = Error.prepareStackTrace;\n      Error.prepareStackTrace = void 0;\n      try {\n        if (b2) if (b2 = function() {\n          throw Error();\n        }, Object.defineProperty(b2.prototype, \"props\", { set: function() {\n          throw Error();\n        } }), \"object\" === typeof Reflect && Reflect.construct) {\n          try {\n            Reflect.construct(b2, []);\n          } catch (l2) {\n            var d2 = l2;\n          }\n          Reflect.construct(a2, [], b2);\n        } else {\n          try {\n            b2.call();\n          } catch (l2) {\n            d2 = l2;\n          }\n          a2.call(b2.prototype);\n        }\n        else {\n          try {\n            throw Error();\n          } catch (l2) {\n            d2 = l2;\n          }\n          a2();\n        }\n      } catch (l2) {\n        if (l2 && d2 && \"string\" === typeof l2.stack) {\n          for (var e2 = l2.stack.split(\"\\n\"), f2 = d2.stack.split(\"\\n\"), g2 = e2.length - 1, h2 = f2.length - 1; 1 <= g2 && 0 <= h2 && e2[g2] !== f2[h2]; ) h2--;\n          for (; 1 <= g2 && 0 <= h2; g2--, h2--) if (e2[g2] !== f2[h2]) {\n            if (1 !== g2 || 1 !== h2) {\n              do\n                if (g2--, h2--, 0 > h2 || e2[g2] !== f2[h2]) {\n                  var k2 = \"\\n\" + e2[g2].replace(\" at new \", \" at \");\n                  a2.displayName && k2.includes(\"<anonymous>\") && (k2 = k2.replace(\"<anonymous>\", a2.displayName));\n                  return k2;\n                }\n              while (1 <= g2 && 0 <= h2);\n            }\n            break;\n          }\n        }\n      } finally {\n        bc = false, Error.prepareStackTrace = c2;\n      }\n      return (a2 = a2 ? a2.displayName || a2.name : \"\") ? ac(a2) : \"\";\n    }\n    var dc = Object.prototype.hasOwnProperty, ec = [], fc = -1;\n    function gc(a2) {\n      return { current: a2 };\n    }\n    function x2(a2) {\n      0 > fc || (a2.current = ec[fc], ec[fc] = null, fc--);\n    }\n    function y2(a2, b2) {\n      fc++;\n      ec[fc] = a2.current;\n      a2.current = b2;\n    }\n    var hc = {}, A2 = gc(hc), B2 = gc(false), ic = hc;\n    function jc(a2, b2) {\n      var c2 = a2.type.contextTypes;\n      if (!c2) return hc;\n      var d2 = a2.stateNode;\n      if (d2 && d2.__reactInternalMemoizedUnmaskedChildContext === b2) return d2.__reactInternalMemoizedMaskedChildContext;\n      var e2 = {}, f2;\n      for (f2 in c2) e2[f2] = b2[f2];\n      d2 && (a2 = a2.stateNode, a2.__reactInternalMemoizedUnmaskedChildContext = b2, a2.__reactInternalMemoizedMaskedChildContext = e2);\n      return e2;\n    }\n    function C2(a2) {\n      a2 = a2.childContextTypes;\n      return null !== a2 && void 0 !== a2;\n    }\n    function kc() {\n      x2(B2);\n      x2(A2);\n    }\n    function lc(a2, b2, c2) {\n      if (A2.current !== hc) throw Error(n2(168));\n      y2(A2, b2);\n      y2(B2, c2);\n    }\n    function mc(a2, b2, c2) {\n      var d2 = a2.stateNode;\n      b2 = b2.childContextTypes;\n      if (\"function\" !== typeof d2.getChildContext) return c2;\n      d2 = d2.getChildContext();\n      for (var e2 in d2) if (!(e2 in b2)) throw Error(n2(108, xa(a2) || \"Unknown\", e2));\n      return ca({}, c2, d2);\n    }\n    function nc(a2) {\n      a2 = (a2 = a2.stateNode) && a2.__reactInternalMemoizedMergedChildContext || hc;\n      ic = A2.current;\n      y2(A2, a2);\n      y2(B2, B2.current);\n      return true;\n    }\n    function oc(a2, b2, c2) {\n      var d2 = a2.stateNode;\n      if (!d2) throw Error(n2(169));\n      c2 ? (a2 = mc(a2, b2, ic), d2.__reactInternalMemoizedMergedChildContext = a2, x2(B2), x2(A2), y2(A2, a2)) : x2(B2);\n      y2(B2, c2);\n    }\n    var qc = Math.clz32 ? Math.clz32 : pc, rc = Math.log, sc = Math.LN2;\n    function pc(a2) {\n      a2 >>>= 0;\n      return 0 === a2 ? 32 : 31 - (rc(a2) / sc | 0) | 0;\n    }\n    var tc = 64, uc = 4194304;\n    function vc(a2) {\n      switch (a2 & -a2) {\n        case 1:\n          return 1;\n        case 2:\n          return 2;\n        case 4:\n          return 4;\n        case 8:\n          return 8;\n        case 16:\n          return 16;\n        case 32:\n          return 32;\n        case 64:\n        case 128:\n        case 256:\n        case 512:\n        case 1024:\n        case 2048:\n        case 4096:\n        case 8192:\n        case 16384:\n        case 32768:\n        case 65536:\n        case 131072:\n        case 262144:\n        case 524288:\n        case 1048576:\n        case 2097152:\n          return a2 & 4194240;\n        case 4194304:\n        case 8388608:\n        case 16777216:\n        case 33554432:\n        case 67108864:\n          return a2 & 130023424;\n        case 134217728:\n          return 134217728;\n        case 268435456:\n          return 268435456;\n        case 536870912:\n          return 536870912;\n        case 1073741824:\n          return 1073741824;\n        default:\n          return a2;\n      }\n    }\n    function wc(a2, b2) {\n      var c2 = a2.pendingLanes;\n      if (0 === c2) return 0;\n      var d2 = 0, e2 = a2.suspendedLanes, f2 = a2.pingedLanes, g2 = c2 & 268435455;\n      if (0 !== g2) {\n        var h2 = g2 & ~e2;\n        0 !== h2 ? d2 = vc(h2) : (f2 &= g2, 0 !== f2 && (d2 = vc(f2)));\n      } else g2 = c2 & ~e2, 0 !== g2 ? d2 = vc(g2) : 0 !== f2 && (d2 = vc(f2));\n      if (0 === d2) return 0;\n      if (0 !== b2 && b2 !== d2 && 0 === (b2 & e2) && (e2 = d2 & -d2, f2 = b2 & -b2, e2 >= f2 || 16 === e2 && 0 !== (f2 & 4194240))) return b2;\n      0 !== (d2 & 4) && (d2 |= c2 & 16);\n      b2 = a2.entangledLanes;\n      if (0 !== b2) for (a2 = a2.entanglements, b2 &= d2; 0 < b2; ) c2 = 31 - qc(b2), e2 = 1 << c2, d2 |= a2[c2], b2 &= ~e2;\n      return d2;\n    }\n    function xc(a2, b2) {\n      switch (a2) {\n        case 1:\n        case 2:\n        case 4:\n          return b2 + 250;\n        case 8:\n        case 16:\n        case 32:\n        case 64:\n        case 128:\n        case 256:\n        case 512:\n        case 1024:\n        case 2048:\n        case 4096:\n        case 8192:\n        case 16384:\n        case 32768:\n        case 65536:\n        case 131072:\n        case 262144:\n        case 524288:\n        case 1048576:\n        case 2097152:\n          return b2 + 5e3;\n        case 4194304:\n        case 8388608:\n        case 16777216:\n        case 33554432:\n        case 67108864:\n          return -1;\n        case 134217728:\n        case 268435456:\n        case 536870912:\n        case 1073741824:\n          return -1;\n        default:\n          return -1;\n      }\n    }\n    function yc(a2, b2) {\n      for (var c2 = a2.suspendedLanes, d2 = a2.pingedLanes, e2 = a2.expirationTimes, f2 = a2.pendingLanes; 0 < f2; ) {\n        var g2 = 31 - qc(f2), h2 = 1 << g2, k2 = e2[g2];\n        if (-1 === k2) {\n          if (0 === (h2 & c2) || 0 !== (h2 & d2)) e2[g2] = xc(h2, b2);\n        } else k2 <= b2 && (a2.expiredLanes |= h2);\n        f2 &= ~h2;\n      }\n    }\n    function zc(a2) {\n      a2 = a2.pendingLanes & -1073741825;\n      return 0 !== a2 ? a2 : a2 & 1073741824 ? 1073741824 : 0;\n    }\n    function Ac(a2) {\n      for (var b2 = [], c2 = 0; 31 > c2; c2++) b2.push(a2);\n      return b2;\n    }\n    function Bc(a2, b2, c2) {\n      a2.pendingLanes |= b2;\n      536870912 !== b2 && (a2.suspendedLanes = 0, a2.pingedLanes = 0);\n      a2 = a2.eventTimes;\n      b2 = 31 - qc(b2);\n      a2[b2] = c2;\n    }\n    function Cc(a2, b2) {\n      var c2 = a2.pendingLanes & ~b2;\n      a2.pendingLanes = b2;\n      a2.suspendedLanes = 0;\n      a2.pingedLanes = 0;\n      a2.expiredLanes &= b2;\n      a2.mutableReadLanes &= b2;\n      a2.entangledLanes &= b2;\n      b2 = a2.entanglements;\n      var d2 = a2.eventTimes;\n      for (a2 = a2.expirationTimes; 0 < c2; ) {\n        var e2 = 31 - qc(c2), f2 = 1 << e2;\n        b2[e2] = 0;\n        d2[e2] = -1;\n        a2[e2] = -1;\n        c2 &= ~f2;\n      }\n    }\n    function Dc(a2, b2) {\n      var c2 = a2.entangledLanes |= b2;\n      for (a2 = a2.entanglements; c2; ) {\n        var d2 = 31 - qc(c2), e2 = 1 << d2;\n        e2 & b2 | a2[d2] & b2 && (a2[d2] |= b2);\n        c2 &= ~e2;\n      }\n    }\n    var D2 = 0;\n    function Ec(a2) {\n      a2 &= -a2;\n      return 1 < a2 ? 4 < a2 ? 0 !== (a2 & 268435455) ? 16 : 536870912 : 4 : 1;\n    }\n    var Fc = ba.unstable_scheduleCallback, Gc = ba.unstable_cancelCallback, Hc = ba.unstable_shouldYield, Ic = ba.unstable_requestPaint, E2 = ba.unstable_now, Jc = ba.unstable_ImmediatePriority, Kc = ba.unstable_UserBlockingPriority, Lc = ba.unstable_NormalPriority, Mc = ba.unstable_IdlePriority, Nc = null, Oc = null;\n    function Pc(a2) {\n      if (Oc && \"function\" === typeof Oc.onCommitFiberRoot) try {\n        Oc.onCommitFiberRoot(Nc, a2, void 0, 128 === (a2.current.flags & 128));\n      } catch (b2) {\n      }\n    }\n    function Qc(a2, b2) {\n      return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2;\n    }\n    var Rc = \"function\" === typeof Object.is ? Object.is : Qc, Sc = null, Tc = false, Uc = false;\n    function Vc(a2) {\n      null === Sc ? Sc = [a2] : Sc.push(a2);\n    }\n    function Wc(a2) {\n      Tc = true;\n      Vc(a2);\n    }\n    function Xc() {\n      if (!Uc && null !== Sc) {\n        Uc = true;\n        var a2 = 0, b2 = D2;\n        try {\n          var c2 = Sc;\n          for (D2 = 1; a2 < c2.length; a2++) {\n            var d2 = c2[a2];\n            do\n              d2 = d2(true);\n            while (null !== d2);\n          }\n          Sc = null;\n          Tc = false;\n        } catch (e2) {\n          throw null !== Sc && (Sc = Sc.slice(a2 + 1)), Fc(Jc, Xc), e2;\n        } finally {\n          D2 = b2, Uc = false;\n        }\n      }\n      return null;\n    }\n    var Yc = ea.ReactCurrentBatchConfig;\n    function Zc(a2, b2) {\n      if (Rc(a2, b2)) return true;\n      if (\"object\" !== typeof a2 || null === a2 || \"object\" !== typeof b2 || null === b2) return false;\n      var c2 = Object.keys(a2), d2 = Object.keys(b2);\n      if (c2.length !== d2.length) return false;\n      for (d2 = 0; d2 < c2.length; d2++) {\n        var e2 = c2[d2];\n        if (!dc.call(b2, e2) || !Rc(a2[e2], b2[e2])) return false;\n      }\n      return true;\n    }\n    function $c(a2) {\n      switch (a2.tag) {\n        case 5:\n          return ac(a2.type);\n        case 16:\n          return ac(\"Lazy\");\n        case 13:\n          return ac(\"Suspense\");\n        case 19:\n          return ac(\"SuspenseList\");\n        case 0:\n        case 2:\n        case 15:\n          return a2 = cc(a2.type, false), a2;\n        case 11:\n          return a2 = cc(a2.type.render, false), a2;\n        case 1:\n          return a2 = cc(a2.type, true), a2;\n        default:\n          return \"\";\n      }\n    }\n    function ad(a2, b2) {\n      if (a2 && a2.defaultProps) {\n        b2 = ca({}, b2);\n        a2 = a2.defaultProps;\n        for (var c2 in a2) void 0 === b2[c2] && (b2[c2] = a2[c2]);\n        return b2;\n      }\n      return b2;\n    }\n    var bd = gc(null), cd = null, dd = null, ed = null;\n    function fd2() {\n      ed = dd = cd = null;\n    }\n    function gd(a2, b2, c2) {\n      Ta ? (y2(bd, b2._currentValue), b2._currentValue = c2) : (y2(bd, b2._currentValue2), b2._currentValue2 = c2);\n    }\n    function hd(a2) {\n      var b2 = bd.current;\n      x2(bd);\n      Ta ? a2._currentValue = b2 : a2._currentValue2 = b2;\n    }\n    function id(a2, b2, c2) {\n      for (; null !== a2; ) {\n        var d2 = a2.alternate;\n        (a2.childLanes & b2) !== b2 ? (a2.childLanes |= b2, null !== d2 && (d2.childLanes |= b2)) : null !== d2 && (d2.childLanes & b2) !== b2 && (d2.childLanes |= b2);\n        if (a2 === c2) break;\n        a2 = a2.return;\n      }\n    }\n    function jd(a2, b2) {\n      cd = a2;\n      ed = dd = null;\n      a2 = a2.dependencies;\n      null !== a2 && null !== a2.firstContext && (0 !== (a2.lanes & b2) && (kd = true), a2.firstContext = null);\n    }\n    function ld(a2) {\n      var b2 = Ta ? a2._currentValue : a2._currentValue2;\n      if (ed !== a2) if (a2 = { context: a2, memoizedValue: b2, next: null }, null === dd) {\n        if (null === cd) throw Error(n2(308));\n        dd = a2;\n        cd.dependencies = { lanes: 0, firstContext: a2 };\n      } else dd = dd.next = a2;\n      return b2;\n    }\n    var md = null, nd = false;\n    function od(a2) {\n      a2.updateQueue = { baseState: a2.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null };\n    }\n    function pd(a2, b2) {\n      a2 = a2.updateQueue;\n      b2.updateQueue === a2 && (b2.updateQueue = { baseState: a2.baseState, firstBaseUpdate: a2.firstBaseUpdate, lastBaseUpdate: a2.lastBaseUpdate, shared: a2.shared, effects: a2.effects });\n    }\n    function qd(a2, b2) {\n      return { eventTime: a2, lane: b2, tag: 0, payload: null, callback: null, next: null };\n    }\n    function rd(a2, b2) {\n      var c2 = a2.updateQueue;\n      null !== c2 && (c2 = c2.shared, null !== F2 && 0 !== (a2.mode & 1) && 0 === (G2 & 2) ? (a2 = c2.interleaved, null === a2 ? (b2.next = b2, null === md ? md = [c2] : md.push(c2)) : (b2.next = a2.next, a2.next = b2), c2.interleaved = b2) : (a2 = c2.pending, null === a2 ? b2.next = b2 : (b2.next = a2.next, a2.next = b2), c2.pending = b2));\n    }\n    function sd(a2, b2, c2) {\n      b2 = b2.updateQueue;\n      if (null !== b2 && (b2 = b2.shared, 0 !== (c2 & 4194240))) {\n        var d2 = b2.lanes;\n        d2 &= a2.pendingLanes;\n        c2 |= d2;\n        b2.lanes = c2;\n        Dc(a2, c2);\n      }\n    }\n    function td2(a2, b2) {\n      var c2 = a2.updateQueue, d2 = a2.alternate;\n      if (null !== d2 && (d2 = d2.updateQueue, c2 === d2)) {\n        var e2 = null, f2 = null;\n        c2 = c2.firstBaseUpdate;\n        if (null !== c2) {\n          do {\n            var g2 = { eventTime: c2.eventTime, lane: c2.lane, tag: c2.tag, payload: c2.payload, callback: c2.callback, next: null };\n            null === f2 ? e2 = f2 = g2 : f2 = f2.next = g2;\n            c2 = c2.next;\n          } while (null !== c2);\n          null === f2 ? e2 = f2 = b2 : f2 = f2.next = b2;\n        } else e2 = f2 = b2;\n        c2 = { baseState: d2.baseState, firstBaseUpdate: e2, lastBaseUpdate: f2, shared: d2.shared, effects: d2.effects };\n        a2.updateQueue = c2;\n        return;\n      }\n      a2 = c2.lastBaseUpdate;\n      null === a2 ? c2.firstBaseUpdate = b2 : a2.next = b2;\n      c2.lastBaseUpdate = b2;\n    }\n    function ud(a2, b2, c2, d2) {\n      var e2 = a2.updateQueue;\n      nd = false;\n      var f2 = e2.firstBaseUpdate, g2 = e2.lastBaseUpdate, h2 = e2.shared.pending;\n      if (null !== h2) {\n        e2.shared.pending = null;\n        var k2 = h2, l2 = k2.next;\n        k2.next = null;\n        null === g2 ? f2 = l2 : g2.next = l2;\n        g2 = k2;\n        var m2 = a2.alternate;\n        null !== m2 && (m2 = m2.updateQueue, h2 = m2.lastBaseUpdate, h2 !== g2 && (null === h2 ? m2.firstBaseUpdate = l2 : h2.next = l2, m2.lastBaseUpdate = k2));\n      }\n      if (null !== f2) {\n        var v2 = e2.baseState;\n        g2 = 0;\n        m2 = l2 = k2 = null;\n        h2 = f2;\n        do {\n          var r2 = h2.lane, z2 = h2.eventTime;\n          if ((d2 & r2) === r2) {\n            null !== m2 && (m2 = m2.next = {\n              eventTime: z2,\n              lane: 0,\n              tag: h2.tag,\n              payload: h2.payload,\n              callback: h2.callback,\n              next: null\n            });\n            a: {\n              var q2 = a2, N2 = h2;\n              r2 = b2;\n              z2 = c2;\n              switch (N2.tag) {\n                case 1:\n                  q2 = N2.payload;\n                  if (\"function\" === typeof q2) {\n                    v2 = q2.call(z2, v2, r2);\n                    break a;\n                  }\n                  v2 = q2;\n                  break a;\n                case 3:\n                  q2.flags = q2.flags & -65537 | 128;\n                case 0:\n                  q2 = N2.payload;\n                  r2 = \"function\" === typeof q2 ? q2.call(z2, v2, r2) : q2;\n                  if (null === r2 || void 0 === r2) break a;\n                  v2 = ca({}, v2, r2);\n                  break a;\n                case 2:\n                  nd = true;\n              }\n            }\n            null !== h2.callback && 0 !== h2.lane && (a2.flags |= 64, r2 = e2.effects, null === r2 ? e2.effects = [h2] : r2.push(h2));\n          } else z2 = { eventTime: z2, lane: r2, tag: h2.tag, payload: h2.payload, callback: h2.callback, next: null }, null === m2 ? (l2 = m2 = z2, k2 = v2) : m2 = m2.next = z2, g2 |= r2;\n          h2 = h2.next;\n          if (null === h2) if (h2 = e2.shared.pending, null === h2) break;\n          else r2 = h2, h2 = r2.next, r2.next = null, e2.lastBaseUpdate = r2, e2.shared.pending = null;\n        } while (1);\n        null === m2 && (k2 = v2);\n        e2.baseState = k2;\n        e2.firstBaseUpdate = l2;\n        e2.lastBaseUpdate = m2;\n        b2 = e2.shared.interleaved;\n        if (null !== b2) {\n          e2 = b2;\n          do\n            g2 |= e2.lane, e2 = e2.next;\n          while (e2 !== b2);\n        } else null === f2 && (e2.shared.lanes = 0);\n        vd |= g2;\n        a2.lanes = g2;\n        a2.memoizedState = v2;\n      }\n    }\n    function wd(a2, b2, c2) {\n      a2 = b2.effects;\n      b2.effects = null;\n      if (null !== a2) for (b2 = 0; b2 < a2.length; b2++) {\n        var d2 = a2[b2], e2 = d2.callback;\n        if (null !== e2) {\n          d2.callback = null;\n          d2 = c2;\n          if (\"function\" !== typeof e2) throw Error(n2(191, e2));\n          e2.call(d2);\n        }\n      }\n    }\n    var xd = new aa.Component().refs;\n    function yd(a2, b2, c2, d2) {\n      b2 = a2.memoizedState;\n      c2 = c2(d2, b2);\n      c2 = null === c2 || void 0 === c2 ? b2 : ca({}, b2, c2);\n      a2.memoizedState = c2;\n      0 === a2.lanes && (a2.updateQueue.baseState = c2);\n    }\n    var Bd = { isMounted: function(a2) {\n      return (a2 = a2._reactInternals) ? ya(a2) === a2 : false;\n    }, enqueueSetState: function(a2, b2, c2) {\n      a2 = a2._reactInternals;\n      var d2 = H2(), e2 = zd(a2), f2 = qd(d2, e2);\n      f2.payload = b2;\n      void 0 !== c2 && null !== c2 && (f2.callback = c2);\n      rd(a2, f2);\n      b2 = Ad(a2, e2, d2);\n      null !== b2 && sd(b2, a2, e2);\n    }, enqueueReplaceState: function(a2, b2, c2) {\n      a2 = a2._reactInternals;\n      var d2 = H2(), e2 = zd(a2), f2 = qd(d2, e2);\n      f2.tag = 1;\n      f2.payload = b2;\n      void 0 !== c2 && null !== c2 && (f2.callback = c2);\n      rd(a2, f2);\n      b2 = Ad(a2, e2, d2);\n      null !== b2 && sd(b2, a2, e2);\n    }, enqueueForceUpdate: function(a2, b2) {\n      a2 = a2._reactInternals;\n      var c2 = H2(), d2 = zd(a2), e2 = qd(\n        c2,\n        d2\n      );\n      e2.tag = 2;\n      void 0 !== b2 && null !== b2 && (e2.callback = b2);\n      rd(a2, e2);\n      b2 = Ad(a2, d2, c2);\n      null !== b2 && sd(b2, a2, d2);\n    } };\n    function Cd(a2, b2, c2, d2, e2, f2, g2) {\n      a2 = a2.stateNode;\n      return \"function\" === typeof a2.shouldComponentUpdate ? a2.shouldComponentUpdate(d2, f2, g2) : b2.prototype && b2.prototype.isPureReactComponent ? !Zc(c2, d2) || !Zc(e2, f2) : true;\n    }\n    function Dd(a2, b2, c2) {\n      var d2 = false, e2 = hc;\n      var f2 = b2.contextType;\n      \"object\" === typeof f2 && null !== f2 ? f2 = ld(f2) : (e2 = C2(b2) ? ic : A2.current, d2 = b2.contextTypes, f2 = (d2 = null !== d2 && void 0 !== d2) ? jc(a2, e2) : hc);\n      b2 = new b2(c2, f2);\n      a2.memoizedState = null !== b2.state && void 0 !== b2.state ? b2.state : null;\n      b2.updater = Bd;\n      a2.stateNode = b2;\n      b2._reactInternals = a2;\n      d2 && (a2 = a2.stateNode, a2.__reactInternalMemoizedUnmaskedChildContext = e2, a2.__reactInternalMemoizedMaskedChildContext = f2);\n      return b2;\n    }\n    function Ed(a2, b2, c2, d2) {\n      a2 = b2.state;\n      \"function\" === typeof b2.componentWillReceiveProps && b2.componentWillReceiveProps(c2, d2);\n      \"function\" === typeof b2.UNSAFE_componentWillReceiveProps && b2.UNSAFE_componentWillReceiveProps(c2, d2);\n      b2.state !== a2 && Bd.enqueueReplaceState(b2, b2.state, null);\n    }\n    function Fd(a2, b2, c2, d2) {\n      var e2 = a2.stateNode;\n      e2.props = c2;\n      e2.state = a2.memoizedState;\n      e2.refs = xd;\n      od(a2);\n      var f2 = b2.contextType;\n      \"object\" === typeof f2 && null !== f2 ? e2.context = ld(f2) : (f2 = C2(b2) ? ic : A2.current, e2.context = jc(a2, f2));\n      e2.state = a2.memoizedState;\n      f2 = b2.getDerivedStateFromProps;\n      \"function\" === typeof f2 && (yd(a2, b2, f2, c2), e2.state = a2.memoizedState);\n      \"function\" === typeof b2.getDerivedStateFromProps || \"function\" === typeof e2.getSnapshotBeforeUpdate || \"function\" !== typeof e2.UNSAFE_componentWillMount && \"function\" !== typeof e2.componentWillMount || (b2 = e2.state, \"function\" === typeof e2.componentWillMount && e2.componentWillMount(), \"function\" === typeof e2.UNSAFE_componentWillMount && e2.UNSAFE_componentWillMount(), b2 !== e2.state && Bd.enqueueReplaceState(e2, e2.state, null), ud(a2, c2, e2, d2), e2.state = a2.memoizedState);\n      \"function\" === typeof e2.componentDidMount && (a2.flags |= 4194308);\n    }\n    var Gd = [], Hd = 0, Id = null, Jd = 0, Kd = [], Ld = 0, Md = null, Nd = 1, Od = \"\";\n    function Pd(a2, b2) {\n      Gd[Hd++] = Jd;\n      Gd[Hd++] = Id;\n      Id = a2;\n      Jd = b2;\n    }\n    function Qd(a2, b2, c2) {\n      Kd[Ld++] = Nd;\n      Kd[Ld++] = Od;\n      Kd[Ld++] = Md;\n      Md = a2;\n      var d2 = Nd;\n      a2 = Od;\n      var e2 = 32 - qc(d2) - 1;\n      d2 &= ~(1 << e2);\n      c2 += 1;\n      var f2 = 32 - qc(b2) + e2;\n      if (30 < f2) {\n        var g2 = e2 - e2 % 5;\n        f2 = (d2 & (1 << g2) - 1).toString(32);\n        d2 >>= g2;\n        e2 -= g2;\n        Nd = 1 << 32 - qc(b2) + e2 | c2 << e2 | d2;\n        Od = f2 + a2;\n      } else Nd = 1 << f2 | c2 << e2 | d2, Od = a2;\n    }\n    function Rd(a2) {\n      null !== a2.return && (Pd(a2, 1), Qd(a2, 1, 0));\n    }\n    function Sd(a2) {\n      for (; a2 === Id; ) Id = Gd[--Hd], Gd[Hd] = null, Jd = Gd[--Hd], Gd[Hd] = null;\n      for (; a2 === Md; ) Md = Kd[--Ld], Kd[Ld] = null, Od = Kd[--Ld], Kd[Ld] = null, Nd = Kd[--Ld], Kd[Ld] = null;\n    }\n    var Td = null, Ud = null, I2 = false, Vd = false, Wd = null;\n    function Xd(a2, b2) {\n      var c2 = Yd(5, null, null, 0);\n      c2.elementType = \"DELETED\";\n      c2.stateNode = b2;\n      c2.return = a2;\n      b2 = a2.deletions;\n      null === b2 ? (a2.deletions = [c2], a2.flags |= 16) : b2.push(c2);\n    }\n    function Zd(a2, b2) {\n      switch (a2.tag) {\n        case 5:\n          return b2 = Fb(b2, a2.type, a2.pendingProps), null !== b2 ? (a2.stateNode = b2, Td = a2, Ud = Mb(b2), true) : false;\n        case 6:\n          return b2 = Gb(b2, a2.pendingProps), null !== b2 ? (a2.stateNode = b2, Td = a2, Ud = null, true) : false;\n        case 13:\n          b2 = Hb(b2);\n          if (null !== b2) {\n            var c2 = null !== Md ? { id: Nd, overflow: Od } : null;\n            a2.memoizedState = { dehydrated: b2, treeContext: c2, retryLane: 1073741824 };\n            c2 = Yd(18, null, null, 0);\n            c2.stateNode = b2;\n            c2.return = a2;\n            a2.child = c2;\n            Td = a2;\n            Ud = null;\n            return true;\n          }\n          return false;\n        default:\n          return false;\n      }\n    }\n    function $d(a2) {\n      return 0 !== (a2.mode & 1) && 0 === (a2.flags & 128);\n    }\n    function ae(a2) {\n      if (I2) {\n        var b2 = Ud;\n        if (b2) {\n          var c2 = b2;\n          if (!Zd(a2, b2)) {\n            if ($d(a2)) throw Error(n2(418));\n            b2 = Lb(c2);\n            var d2 = Td;\n            b2 && Zd(a2, b2) ? Xd(d2, c2) : (a2.flags = a2.flags & -4097 | 2, I2 = false, Td = a2);\n          }\n        } else {\n          if ($d(a2)) throw Error(n2(418));\n          a2.flags = a2.flags & -4097 | 2;\n          I2 = false;\n          Td = a2;\n        }\n      }\n    }\n    function be(a2) {\n      for (a2 = a2.return; null !== a2 && 5 !== a2.tag && 3 !== a2.tag && 13 !== a2.tag; ) a2 = a2.return;\n      Td = a2;\n    }\n    function ce(a2) {\n      if (!p2 || a2 !== Td) return false;\n      if (!I2) return be(a2), I2 = true, false;\n      if (3 !== a2.tag && (5 !== a2.tag || Xb(a2.type) && !Oa(a2.type, a2.memoizedProps))) {\n        var b2 = Ud;\n        if (b2) {\n          if ($d(a2)) {\n            for (a2 = Ud; a2; ) a2 = Lb(a2);\n            throw Error(n2(418));\n          }\n          for (; b2; ) Xd(a2, b2), b2 = Lb(b2);\n        }\n      }\n      be(a2);\n      if (13 === a2.tag) {\n        if (!p2) throw Error(n2(316));\n        a2 = a2.memoizedState;\n        a2 = null !== a2 ? a2.dehydrated : null;\n        if (!a2) throw Error(n2(317));\n        Ud = Sb(a2);\n      } else Ud = Td ? Lb(a2.stateNode) : null;\n      return true;\n    }\n    function de() {\n      p2 && (Ud = Td = null, Vd = I2 = false);\n    }\n    function ee(a2) {\n      null === Wd ? Wd = [a2] : Wd.push(a2);\n    }\n    function fe(a2, b2, c2) {\n      a2 = c2.ref;\n      if (null !== a2 && \"function\" !== typeof a2 && \"object\" !== typeof a2) {\n        if (c2._owner) {\n          c2 = c2._owner;\n          if (c2) {\n            if (1 !== c2.tag) throw Error(n2(309));\n            var d2 = c2.stateNode;\n          }\n          if (!d2) throw Error(n2(147, a2));\n          var e2 = d2, f2 = \"\" + a2;\n          if (null !== b2 && null !== b2.ref && \"function\" === typeof b2.ref && b2.ref._stringRef === f2) return b2.ref;\n          b2 = function(a3) {\n            var b3 = e2.refs;\n            b3 === xd && (b3 = e2.refs = {});\n            null === a3 ? delete b3[f2] : b3[f2] = a3;\n          };\n          b2._stringRef = f2;\n          return b2;\n        }\n        if (\"string\" !== typeof a2) throw Error(n2(284));\n        if (!c2._owner) throw Error(n2(290, a2));\n      }\n      return a2;\n    }\n    function ge(a2, b2) {\n      a2 = Object.prototype.toString.call(b2);\n      throw Error(n2(31, \"[object Object]\" === a2 ? \"object with keys {\" + Object.keys(b2).join(\", \") + \"}\" : a2));\n    }\n    function he(a2) {\n      var b2 = a2._init;\n      return b2(a2._payload);\n    }\n    function ie(a2) {\n      function b2(b3, c3) {\n        if (a2) {\n          var d3 = b3.deletions;\n          null === d3 ? (b3.deletions = [c3], b3.flags |= 16) : d3.push(c3);\n        }\n      }\n      function c2(c3, d3) {\n        if (!a2) return null;\n        for (; null !== d3; ) b2(c3, d3), d3 = d3.sibling;\n        return null;\n      }\n      function d2(a3, b3) {\n        for (a3 = /* @__PURE__ */ new Map(); null !== b3; ) null !== b3.key ? a3.set(b3.key, b3) : a3.set(b3.index, b3), b3 = b3.sibling;\n        return a3;\n      }\n      function e2(a3, b3) {\n        a3 = je(a3, b3);\n        a3.index = 0;\n        a3.sibling = null;\n        return a3;\n      }\n      function f2(b3, c3, d3) {\n        b3.index = d3;\n        if (!a2) return b3.flags |= 1048576, c3;\n        d3 = b3.alternate;\n        if (null !== d3) return d3 = d3.index, d3 < c3 ? (b3.flags |= 2, c3) : d3;\n        b3.flags |= 2;\n        return c3;\n      }\n      function g2(b3) {\n        a2 && null === b3.alternate && (b3.flags |= 2);\n        return b3;\n      }\n      function h2(a3, b3, c3, d3) {\n        if (null === b3 || 6 !== b3.tag) return b3 = ke(c3, a3.mode, d3), b3.return = a3, b3;\n        b3 = e2(b3, c3);\n        b3.return = a3;\n        return b3;\n      }\n      function k2(a3, b3, c3, d3) {\n        var f3 = c3.type;\n        if (f3 === ia) return m2(a3, b3, c3.props.children, d3, c3.key);\n        if (null !== b3 && (b3.elementType === f3 || \"object\" === typeof f3 && null !== f3 && f3.$$typeof === ra && he(f3) === b3.type)) return d3 = e2(b3, c3.props), d3.ref = fe(a3, b3, c3), d3.return = a3, d3;\n        d3 = le(c3.type, c3.key, c3.props, null, a3.mode, d3);\n        d3.ref = fe(a3, b3, c3);\n        d3.return = a3;\n        return d3;\n      }\n      function l2(a3, b3, c3, d3) {\n        if (null === b3 || 4 !== b3.tag || b3.stateNode.containerInfo !== c3.containerInfo || b3.stateNode.implementation !== c3.implementation) return b3 = me(c3, a3.mode, d3), b3.return = a3, b3;\n        b3 = e2(b3, c3.children || []);\n        b3.return = a3;\n        return b3;\n      }\n      function m2(a3, b3, c3, d3, f3) {\n        if (null === b3 || 7 !== b3.tag) return b3 = ne(c3, a3.mode, d3, f3), b3.return = a3, b3;\n        b3 = e2(b3, c3);\n        b3.return = a3;\n        return b3;\n      }\n      function v2(a3, b3, c3) {\n        if (\"string\" === typeof b3 && \"\" !== b3 || \"number\" === typeof b3) return b3 = ke(\"\" + b3, a3.mode, c3), b3.return = a3, b3;\n        if (\"object\" === typeof b3 && null !== b3) {\n          switch (b3.$$typeof) {\n            case fa:\n              return c3 = le(b3.type, b3.key, b3.props, null, a3.mode, c3), c3.ref = fe(a3, null, b3), c3.return = a3, c3;\n            case ha:\n              return b3 = me(b3, a3.mode, c3), b3.return = a3, b3;\n            case ra:\n              var d3 = b3._init;\n              return v2(a3, d3(b3._payload), c3);\n          }\n          if (Ea(b3) || ua(b3)) return b3 = ne(b3, a3.mode, c3, null), b3.return = a3, b3;\n          ge(a3, b3);\n        }\n        return null;\n      }\n      function r2(a3, b3, c3, d3) {\n        var e3 = null !== b3 ? b3.key : null;\n        if (\"string\" === typeof c3 && \"\" !== c3 || \"number\" === typeof c3) return null !== e3 ? null : h2(a3, b3, \"\" + c3, d3);\n        if (\"object\" === typeof c3 && null !== c3) {\n          switch (c3.$$typeof) {\n            case fa:\n              return c3.key === e3 ? k2(a3, b3, c3, d3) : null;\n            case ha:\n              return c3.key === e3 ? l2(a3, b3, c3, d3) : null;\n            case ra:\n              return e3 = c3._init, r2(\n                a3,\n                b3,\n                e3(c3._payload),\n                d3\n              );\n          }\n          if (Ea(c3) || ua(c3)) return null !== e3 ? null : m2(a3, b3, c3, d3, null);\n          ge(a3, c3);\n        }\n        return null;\n      }\n      function z2(a3, b3, c3, d3, e3) {\n        if (\"string\" === typeof d3 && \"\" !== d3 || \"number\" === typeof d3) return a3 = a3.get(c3) || null, h2(b3, a3, \"\" + d3, e3);\n        if (\"object\" === typeof d3 && null !== d3) {\n          switch (d3.$$typeof) {\n            case fa:\n              return a3 = a3.get(null === d3.key ? c3 : d3.key) || null, k2(b3, a3, d3, e3);\n            case ha:\n              return a3 = a3.get(null === d3.key ? c3 : d3.key) || null, l2(b3, a3, d3, e3);\n            case ra:\n              var f3 = d3._init;\n              return z2(a3, b3, c3, f3(d3._payload), e3);\n          }\n          if (Ea(d3) || ua(d3)) return a3 = a3.get(c3) || null, m2(b3, a3, d3, e3, null);\n          ge(b3, d3);\n        }\n        return null;\n      }\n      function q2(e3, g3, h3, k3) {\n        for (var l3 = null, m3 = null, w2 = g3, u2 = g3 = 0, t2 = null; null !== w2 && u2 < h3.length; u2++) {\n          w2.index > u2 ? (t2 = w2, w2 = null) : t2 = w2.sibling;\n          var q3 = r2(e3, w2, h3[u2], k3);\n          if (null === q3) {\n            null === w2 && (w2 = t2);\n            break;\n          }\n          a2 && w2 && null === q3.alternate && b2(e3, w2);\n          g3 = f2(q3, g3, u2);\n          null === m3 ? l3 = q3 : m3.sibling = q3;\n          m3 = q3;\n          w2 = t2;\n        }\n        if (u2 === h3.length) return c2(e3, w2), I2 && Pd(e3, u2), l3;\n        if (null === w2) {\n          for (; u2 < h3.length; u2++) w2 = v2(e3, h3[u2], k3), null !== w2 && (g3 = f2(w2, g3, u2), null === m3 ? l3 = w2 : m3.sibling = w2, m3 = w2);\n          I2 && Pd(e3, u2);\n          return l3;\n        }\n        for (w2 = d2(e3, w2); u2 < h3.length; u2++) t2 = z2(w2, e3, u2, h3[u2], k3), null !== t2 && (a2 && null !== t2.alternate && w2.delete(null === t2.key ? u2 : t2.key), g3 = f2(t2, g3, u2), null === m3 ? l3 = t2 : m3.sibling = t2, m3 = t2);\n        a2 && w2.forEach(function(a3) {\n          return b2(e3, a3);\n        });\n        I2 && Pd(e3, u2);\n        return l3;\n      }\n      function N2(e3, g3, h3, k3) {\n        var l3 = ua(h3);\n        if (\"function\" !== typeof l3) throw Error(n2(150));\n        h3 = l3.call(h3);\n        if (null == h3) throw Error(n2(151));\n        for (var w2 = l3 = null, m3 = g3, u2 = g3 = 0, q3 = null, t2 = h3.next(); null !== m3 && !t2.done; u2++, t2 = h3.next()) {\n          m3.index > u2 ? (q3 = m3, m3 = null) : q3 = m3.sibling;\n          var V2 = r2(e3, m3, t2.value, k3);\n          if (null === V2) {\n            null === m3 && (m3 = q3);\n            break;\n          }\n          a2 && m3 && null === V2.alternate && b2(e3, m3);\n          g3 = f2(V2, g3, u2);\n          null === w2 ? l3 = V2 : w2.sibling = V2;\n          w2 = V2;\n          m3 = q3;\n        }\n        if (t2.done) return c2(\n          e3,\n          m3\n        ), I2 && Pd(e3, u2), l3;\n        if (null === m3) {\n          for (; !t2.done; u2++, t2 = h3.next()) t2 = v2(e3, t2.value, k3), null !== t2 && (g3 = f2(t2, g3, u2), null === w2 ? l3 = t2 : w2.sibling = t2, w2 = t2);\n          I2 && Pd(e3, u2);\n          return l3;\n        }\n        for (m3 = d2(e3, m3); !t2.done; u2++, t2 = h3.next()) t2 = z2(m3, e3, u2, t2.value, k3), null !== t2 && (a2 && null !== t2.alternate && m3.delete(null === t2.key ? u2 : t2.key), g3 = f2(t2, g3, u2), null === w2 ? l3 = t2 : w2.sibling = t2, w2 = t2);\n        a2 && m3.forEach(function(a3) {\n          return b2(e3, a3);\n        });\n        I2 && Pd(e3, u2);\n        return l3;\n      }\n      function da(a3, d3, f3, h3) {\n        \"object\" === typeof f3 && null !== f3 && f3.type === ia && null === f3.key && (f3 = f3.props.children);\n        if (\"object\" === typeof f3 && null !== f3) {\n          switch (f3.$$typeof) {\n            case fa:\n              a: {\n                for (var k3 = f3.key, l3 = d3; null !== l3; ) {\n                  if (l3.key === k3) {\n                    k3 = f3.type;\n                    if (k3 === ia) {\n                      if (7 === l3.tag) {\n                        c2(a3, l3.sibling);\n                        d3 = e2(l3, f3.props.children);\n                        d3.return = a3;\n                        a3 = d3;\n                        break a;\n                      }\n                    } else if (l3.elementType === k3 || \"object\" === typeof k3 && null !== k3 && k3.$$typeof === ra && he(k3) === l3.type) {\n                      c2(a3, l3.sibling);\n                      d3 = e2(l3, f3.props);\n                      d3.ref = fe(a3, l3, f3);\n                      d3.return = a3;\n                      a3 = d3;\n                      break a;\n                    }\n                    c2(a3, l3);\n                    break;\n                  } else b2(a3, l3);\n                  l3 = l3.sibling;\n                }\n                f3.type === ia ? (d3 = ne(f3.props.children, a3.mode, h3, f3.key), d3.return = a3, a3 = d3) : (h3 = le(f3.type, f3.key, f3.props, null, a3.mode, h3), h3.ref = fe(a3, d3, f3), h3.return = a3, a3 = h3);\n              }\n              return g2(a3);\n            case ha:\n              a: {\n                for (l3 = f3.key; null !== d3; ) {\n                  if (d3.key === l3) if (4 === d3.tag && d3.stateNode.containerInfo === f3.containerInfo && d3.stateNode.implementation === f3.implementation) {\n                    c2(a3, d3.sibling);\n                    d3 = e2(d3, f3.children || []);\n                    d3.return = a3;\n                    a3 = d3;\n                    break a;\n                  } else {\n                    c2(a3, d3);\n                    break;\n                  }\n                  else b2(a3, d3);\n                  d3 = d3.sibling;\n                }\n                d3 = me(f3, a3.mode, h3);\n                d3.return = a3;\n                a3 = d3;\n              }\n              return g2(a3);\n            case ra:\n              return l3 = f3._init, da(a3, d3, l3(f3._payload), h3);\n          }\n          if (Ea(f3)) return q2(a3, d3, f3, h3);\n          if (ua(f3)) return N2(a3, d3, f3, h3);\n          ge(a3, f3);\n        }\n        return \"string\" === typeof f3 && \"\" !== f3 || \"number\" === typeof f3 ? (f3 = \"\" + f3, null !== d3 && 6 === d3.tag ? (c2(a3, d3.sibling), d3 = e2(d3, f3), d3.return = a3, a3 = d3) : (c2(a3, d3), d3 = ke(f3, a3.mode, h3), d3.return = a3, a3 = d3), g2(a3)) : c2(a3, d3);\n      }\n      return da;\n    }\n    var oe = ie(true), pe = ie(false), qe = {}, re = gc(qe), se = gc(qe), te = gc(qe);\n    function ue(a2) {\n      if (a2 === qe) throw Error(n2(174));\n      return a2;\n    }\n    function ve(a2, b2) {\n      y2(te, b2);\n      y2(se, a2);\n      y2(re, qe);\n      a2 = Ga(b2);\n      x2(re);\n      y2(re, a2);\n    }\n    function we() {\n      x2(re);\n      x2(se);\n      x2(te);\n    }\n    function xe(a2) {\n      var b2 = ue(te.current), c2 = ue(re.current);\n      b2 = Ha(c2, a2.type, b2);\n      c2 !== b2 && (y2(se, a2), y2(re, b2));\n    }\n    function ye(a2) {\n      se.current === a2 && (x2(re), x2(se));\n    }\n    var J2 = gc(0);\n    function ze(a2) {\n      for (var b2 = a2; null !== b2; ) {\n        if (13 === b2.tag) {\n          var c2 = b2.memoizedState;\n          if (null !== c2 && (c2 = c2.dehydrated, null === c2 || Ib(c2) || Jb(c2))) return b2;\n        } else if (19 === b2.tag && void 0 !== b2.memoizedProps.revealOrder) {\n          if (0 !== (b2.flags & 128)) return b2;\n        } else if (null !== b2.child) {\n          b2.child.return = b2;\n          b2 = b2.child;\n          continue;\n        }\n        if (b2 === a2) break;\n        for (; null === b2.sibling; ) {\n          if (null === b2.return || b2.return === a2) return null;\n          b2 = b2.return;\n        }\n        b2.sibling.return = b2.return;\n        b2 = b2.sibling;\n      }\n      return null;\n    }\n    var Ae = [];\n    function Be() {\n      for (var a2 = 0; a2 < Ae.length; a2++) {\n        var b2 = Ae[a2];\n        Ta ? b2._workInProgressVersionPrimary = null : b2._workInProgressVersionSecondary = null;\n      }\n      Ae.length = 0;\n    }\n    var Ce = ea.ReactCurrentDispatcher, De = ea.ReactCurrentBatchConfig, Ee = 0, K2 = null, L2 = null, M2 = null, Fe = false, Ge = false, He = 0, Ie = 0;\n    function O2() {\n      throw Error(n2(321));\n    }\n    function Je(a2, b2) {\n      if (null === b2) return false;\n      for (var c2 = 0; c2 < b2.length && c2 < a2.length; c2++) if (!Rc(a2[c2], b2[c2])) return false;\n      return true;\n    }\n    function Ke(a2, b2, c2, d2, e2, f2) {\n      Ee = f2;\n      K2 = b2;\n      b2.memoizedState = null;\n      b2.updateQueue = null;\n      b2.lanes = 0;\n      Ce.current = null === a2 || null === a2.memoizedState ? Le : Me;\n      a2 = c2(d2, e2);\n      if (Ge) {\n        f2 = 0;\n        do {\n          Ge = false;\n          He = 0;\n          if (25 <= f2) throw Error(n2(301));\n          f2 += 1;\n          M2 = L2 = null;\n          b2.updateQueue = null;\n          Ce.current = Ne;\n          a2 = c2(d2, e2);\n        } while (Ge);\n      }\n      Ce.current = Oe;\n      b2 = null !== L2 && null !== L2.next;\n      Ee = 0;\n      M2 = L2 = K2 = null;\n      Fe = false;\n      if (b2) throw Error(n2(300));\n      return a2;\n    }\n    function Pe() {\n      var a2 = 0 !== He;\n      He = 0;\n      return a2;\n    }\n    function Qe() {\n      var a2 = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null };\n      null === M2 ? K2.memoizedState = M2 = a2 : M2 = M2.next = a2;\n      return M2;\n    }\n    function Re() {\n      if (null === L2) {\n        var a2 = K2.alternate;\n        a2 = null !== a2 ? a2.memoizedState : null;\n      } else a2 = L2.next;\n      var b2 = null === M2 ? K2.memoizedState : M2.next;\n      if (null !== b2) M2 = b2, L2 = a2;\n      else {\n        if (null === a2) throw Error(n2(310));\n        L2 = a2;\n        a2 = { memoizedState: L2.memoizedState, baseState: L2.baseState, baseQueue: L2.baseQueue, queue: L2.queue, next: null };\n        null === M2 ? K2.memoizedState = M2 = a2 : M2 = M2.next = a2;\n      }\n      return M2;\n    }\n    function Se(a2, b2) {\n      return \"function\" === typeof b2 ? b2(a2) : b2;\n    }\n    function Te(a2) {\n      var b2 = Re(), c2 = b2.queue;\n      if (null === c2) throw Error(n2(311));\n      c2.lastRenderedReducer = a2;\n      var d2 = L2, e2 = d2.baseQueue, f2 = c2.pending;\n      if (null !== f2) {\n        if (null !== e2) {\n          var g2 = e2.next;\n          e2.next = f2.next;\n          f2.next = g2;\n        }\n        d2.baseQueue = e2 = f2;\n        c2.pending = null;\n      }\n      if (null !== e2) {\n        f2 = e2.next;\n        d2 = d2.baseState;\n        var h2 = g2 = null, k2 = null, l2 = f2;\n        do {\n          var m2 = l2.lane;\n          if ((Ee & m2) === m2) null !== k2 && (k2 = k2.next = { lane: 0, action: l2.action, hasEagerState: l2.hasEagerState, eagerState: l2.eagerState, next: null }), d2 = l2.hasEagerState ? l2.eagerState : a2(d2, l2.action);\n          else {\n            var v2 = {\n              lane: m2,\n              action: l2.action,\n              hasEagerState: l2.hasEagerState,\n              eagerState: l2.eagerState,\n              next: null\n            };\n            null === k2 ? (h2 = k2 = v2, g2 = d2) : k2 = k2.next = v2;\n            K2.lanes |= m2;\n            vd |= m2;\n          }\n          l2 = l2.next;\n        } while (null !== l2 && l2 !== f2);\n        null === k2 ? g2 = d2 : k2.next = h2;\n        Rc(d2, b2.memoizedState) || (kd = true);\n        b2.memoizedState = d2;\n        b2.baseState = g2;\n        b2.baseQueue = k2;\n        c2.lastRenderedState = d2;\n      }\n      a2 = c2.interleaved;\n      if (null !== a2) {\n        e2 = a2;\n        do\n          f2 = e2.lane, K2.lanes |= f2, vd |= f2, e2 = e2.next;\n        while (e2 !== a2);\n      } else null === e2 && (c2.lanes = 0);\n      return [b2.memoizedState, c2.dispatch];\n    }\n    function Ue(a2) {\n      var b2 = Re(), c2 = b2.queue;\n      if (null === c2) throw Error(n2(311));\n      c2.lastRenderedReducer = a2;\n      var d2 = c2.dispatch, e2 = c2.pending, f2 = b2.memoizedState;\n      if (null !== e2) {\n        c2.pending = null;\n        var g2 = e2 = e2.next;\n        do\n          f2 = a2(f2, g2.action), g2 = g2.next;\n        while (g2 !== e2);\n        Rc(f2, b2.memoizedState) || (kd = true);\n        b2.memoizedState = f2;\n        null === b2.baseQueue && (b2.baseState = f2);\n        c2.lastRenderedState = f2;\n      }\n      return [f2, d2];\n    }\n    function Ve() {\n    }\n    function We(a2, b2) {\n      var c2 = K2, d2 = Re(), e2 = b2(), f2 = !Rc(d2.memoizedState, e2);\n      f2 && (d2.memoizedState = e2, kd = true);\n      d2 = d2.queue;\n      Xe(Ye.bind(null, c2, d2, a2), [a2]);\n      if (d2.getSnapshot !== b2 || f2 || null !== M2 && M2.memoizedState.tag & 1) {\n        c2.flags |= 2048;\n        Ze(9, $e.bind(null, c2, d2, e2, b2), void 0, null);\n        if (null === F2) throw Error(n2(349));\n        0 !== (Ee & 30) || af(c2, b2, e2);\n      }\n      return e2;\n    }\n    function af(a2, b2, c2) {\n      a2.flags |= 16384;\n      a2 = { getSnapshot: b2, value: c2 };\n      b2 = K2.updateQueue;\n      null === b2 ? (b2 = { lastEffect: null, stores: null }, K2.updateQueue = b2, b2.stores = [a2]) : (c2 = b2.stores, null === c2 ? b2.stores = [a2] : c2.push(a2));\n    }\n    function $e(a2, b2, c2, d2) {\n      b2.value = c2;\n      b2.getSnapshot = d2;\n      bf(b2) && Ad(a2, 1, -1);\n    }\n    function Ye(a2, b2, c2) {\n      return c2(function() {\n        bf(b2) && Ad(a2, 1, -1);\n      });\n    }\n    function bf(a2) {\n      var b2 = a2.getSnapshot;\n      a2 = a2.value;\n      try {\n        var c2 = b2();\n        return !Rc(a2, c2);\n      } catch (d2) {\n        return true;\n      }\n    }\n    function cf(a2) {\n      var b2 = Qe();\n      \"function\" === typeof a2 && (a2 = a2());\n      b2.memoizedState = b2.baseState = a2;\n      a2 = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: Se, lastRenderedState: a2 };\n      b2.queue = a2;\n      a2 = a2.dispatch = df.bind(null, K2, a2);\n      return [b2.memoizedState, a2];\n    }\n    function Ze(a2, b2, c2, d2) {\n      a2 = { tag: a2, create: b2, destroy: c2, deps: d2, next: null };\n      b2 = K2.updateQueue;\n      null === b2 ? (b2 = { lastEffect: null, stores: null }, K2.updateQueue = b2, b2.lastEffect = a2.next = a2) : (c2 = b2.lastEffect, null === c2 ? b2.lastEffect = a2.next = a2 : (d2 = c2.next, c2.next = a2, a2.next = d2, b2.lastEffect = a2));\n      return a2;\n    }\n    function ef() {\n      return Re().memoizedState;\n    }\n    function ff(a2, b2, c2, d2) {\n      var e2 = Qe();\n      K2.flags |= a2;\n      e2.memoizedState = Ze(1 | b2, c2, void 0, void 0 === d2 ? null : d2);\n    }\n    function gf(a2, b2, c2, d2) {\n      var e2 = Re();\n      d2 = void 0 === d2 ? null : d2;\n      var f2 = void 0;\n      if (null !== L2) {\n        var g2 = L2.memoizedState;\n        f2 = g2.destroy;\n        if (null !== d2 && Je(d2, g2.deps)) {\n          e2.memoizedState = Ze(b2, c2, f2, d2);\n          return;\n        }\n      }\n      K2.flags |= a2;\n      e2.memoizedState = Ze(1 | b2, c2, f2, d2);\n    }\n    function hf(a2, b2) {\n      return ff(8390656, 8, a2, b2);\n    }\n    function Xe(a2, b2) {\n      return gf(2048, 8, a2, b2);\n    }\n    function jf(a2, b2) {\n      return gf(4, 2, a2, b2);\n    }\n    function kf(a2, b2) {\n      return gf(4, 4, a2, b2);\n    }\n    function lf(a2, b2) {\n      if (\"function\" === typeof b2) return a2 = a2(), b2(a2), function() {\n        b2(null);\n      };\n      if (null !== b2 && void 0 !== b2) return a2 = a2(), b2.current = a2, function() {\n        b2.current = null;\n      };\n    }\n    function mf(a2, b2, c2) {\n      c2 = null !== c2 && void 0 !== c2 ? c2.concat([a2]) : null;\n      return gf(4, 4, lf.bind(null, b2, a2), c2);\n    }\n    function nf() {\n    }\n    function of(a2, b2) {\n      var c2 = Re();\n      b2 = void 0 === b2 ? null : b2;\n      var d2 = c2.memoizedState;\n      if (null !== d2 && null !== b2 && Je(b2, d2[1])) return d2[0];\n      c2.memoizedState = [a2, b2];\n      return a2;\n    }\n    function pf(a2, b2) {\n      var c2 = Re();\n      b2 = void 0 === b2 ? null : b2;\n      var d2 = c2.memoizedState;\n      if (null !== d2 && null !== b2 && Je(b2, d2[1])) return d2[0];\n      a2 = a2();\n      c2.memoizedState = [a2, b2];\n      return a2;\n    }\n    function qf(a2, b2) {\n      var c2 = D2;\n      D2 = 0 !== c2 && 4 > c2 ? c2 : 4;\n      a2(true);\n      var d2 = De.transition;\n      De.transition = {};\n      try {\n        a2(false), b2();\n      } finally {\n        D2 = c2, De.transition = d2;\n      }\n    }\n    function rf() {\n      return Re().memoizedState;\n    }\n    function sf(a2, b2, c2) {\n      var d2 = zd(a2);\n      c2 = { lane: d2, action: c2, hasEagerState: false, eagerState: null, next: null };\n      tf(a2) ? uf(b2, c2) : (vf(a2, b2, c2), c2 = H2(), a2 = Ad(a2, d2, c2), null !== a2 && wf(a2, b2, d2));\n    }\n    function df(a2, b2, c2) {\n      var d2 = zd(a2), e2 = { lane: d2, action: c2, hasEagerState: false, eagerState: null, next: null };\n      if (tf(a2)) uf(b2, e2);\n      else {\n        vf(a2, b2, e2);\n        var f2 = a2.alternate;\n        if (0 === a2.lanes && (null === f2 || 0 === f2.lanes) && (f2 = b2.lastRenderedReducer, null !== f2)) try {\n          var g2 = b2.lastRenderedState, h2 = f2(g2, c2);\n          e2.hasEagerState = true;\n          e2.eagerState = h2;\n          if (Rc(h2, g2)) return;\n        } catch (k2) {\n        } finally {\n        }\n        c2 = H2();\n        a2 = Ad(a2, d2, c2);\n        null !== a2 && wf(a2, b2, d2);\n      }\n    }\n    function tf(a2) {\n      var b2 = a2.alternate;\n      return a2 === K2 || null !== b2 && b2 === K2;\n    }\n    function uf(a2, b2) {\n      Ge = Fe = true;\n      var c2 = a2.pending;\n      null === c2 ? b2.next = b2 : (b2.next = c2.next, c2.next = b2);\n      a2.pending = b2;\n    }\n    function vf(a2, b2, c2) {\n      null !== F2 && 0 !== (a2.mode & 1) && 0 === (G2 & 2) ? (a2 = b2.interleaved, null === a2 ? (c2.next = c2, null === md ? md = [b2] : md.push(b2)) : (c2.next = a2.next, a2.next = c2), b2.interleaved = c2) : (a2 = b2.pending, null === a2 ? c2.next = c2 : (c2.next = a2.next, a2.next = c2), b2.pending = c2);\n    }\n    function wf(a2, b2, c2) {\n      if (0 !== (c2 & 4194240)) {\n        var d2 = b2.lanes;\n        d2 &= a2.pendingLanes;\n        c2 |= d2;\n        b2.lanes = c2;\n        Dc(a2, c2);\n      }\n    }\n    var Oe = { readContext: ld, useCallback: O2, useContext: O2, useEffect: O2, useImperativeHandle: O2, useInsertionEffect: O2, useLayoutEffect: O2, useMemo: O2, useReducer: O2, useRef: O2, useState: O2, useDebugValue: O2, useDeferredValue: O2, useTransition: O2, useMutableSource: O2, useSyncExternalStore: O2, useId: O2, unstable_isNewReconciler: false }, Le = { readContext: ld, useCallback: function(a2, b2) {\n      Qe().memoizedState = [a2, void 0 === b2 ? null : b2];\n      return a2;\n    }, useContext: ld, useEffect: hf, useImperativeHandle: function(a2, b2, c2) {\n      c2 = null !== c2 && void 0 !== c2 ? c2.concat([a2]) : null;\n      return ff(\n        4194308,\n        4,\n        lf.bind(null, b2, a2),\n        c2\n      );\n    }, useLayoutEffect: function(a2, b2) {\n      return ff(4194308, 4, a2, b2);\n    }, useInsertionEffect: function(a2, b2) {\n      return ff(4, 2, a2, b2);\n    }, useMemo: function(a2, b2) {\n      var c2 = Qe();\n      b2 = void 0 === b2 ? null : b2;\n      a2 = a2();\n      c2.memoizedState = [a2, b2];\n      return a2;\n    }, useReducer: function(a2, b2, c2) {\n      var d2 = Qe();\n      b2 = void 0 !== c2 ? c2(b2) : b2;\n      d2.memoizedState = d2.baseState = b2;\n      a2 = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: a2, lastRenderedState: b2 };\n      d2.queue = a2;\n      a2 = a2.dispatch = sf.bind(null, K2, a2);\n      return [d2.memoizedState, a2];\n    }, useRef: function(a2) {\n      var b2 = Qe();\n      a2 = { current: a2 };\n      return b2.memoizedState = a2;\n    }, useState: cf, useDebugValue: nf, useDeferredValue: function(a2) {\n      var b2 = cf(a2), c2 = b2[0], d2 = b2[1];\n      hf(function() {\n        var b3 = De.transition;\n        De.transition = {};\n        try {\n          d2(a2);\n        } finally {\n          De.transition = b3;\n        }\n      }, [a2]);\n      return c2;\n    }, useTransition: function() {\n      var a2 = cf(false), b2 = a2[0];\n      a2 = qf.bind(null, a2[1]);\n      Qe().memoizedState = a2;\n      return [b2, a2];\n    }, useMutableSource: function() {\n    }, useSyncExternalStore: function(a2, b2, c2) {\n      var d2 = K2, e2 = Qe();\n      if (I2) {\n        if (void 0 === c2) throw Error(n2(407));\n        c2 = c2();\n      } else {\n        c2 = b2();\n        if (null === F2) throw Error(n2(349));\n        0 !== (Ee & 30) || af(d2, b2, c2);\n      }\n      e2.memoizedState = c2;\n      var f2 = { value: c2, getSnapshot: b2 };\n      e2.queue = f2;\n      hf(Ye.bind(null, d2, f2, a2), [a2]);\n      d2.flags |= 2048;\n      Ze(9, $e.bind(null, d2, f2, c2, b2), void 0, null);\n      return c2;\n    }, useId: function() {\n      var a2 = Qe(), b2 = F2.identifierPrefix;\n      if (I2) {\n        var c2 = Od;\n        var d2 = Nd;\n        c2 = (d2 & ~(1 << 32 - qc(d2) - 1)).toString(32) + c2;\n        b2 = \":\" + b2 + \"R\" + c2;\n        c2 = He++;\n        0 < c2 && (b2 += \"H\" + c2.toString(32));\n        b2 += \":\";\n      } else c2 = Ie++, b2 = \":\" + b2 + \"r\" + c2.toString(32) + \":\";\n      return a2.memoizedState = b2;\n    }, unstable_isNewReconciler: false }, Me = {\n      readContext: ld,\n      useCallback: of,\n      useContext: ld,\n      useEffect: Xe,\n      useImperativeHandle: mf,\n      useInsertionEffect: jf,\n      useLayoutEffect: kf,\n      useMemo: pf,\n      useReducer: Te,\n      useRef: ef,\n      useState: function() {\n        return Te(Se);\n      },\n      useDebugValue: nf,\n      useDeferredValue: function(a2) {\n        var b2 = Te(Se), c2 = b2[0], d2 = b2[1];\n        Xe(function() {\n          var b3 = De.transition;\n          De.transition = {};\n          try {\n            d2(a2);\n          } finally {\n            De.transition = b3;\n          }\n        }, [a2]);\n        return c2;\n      },\n      useTransition: function() {\n        var a2 = Te(Se)[0], b2 = Re().memoizedState;\n        return [a2, b2];\n      },\n      useMutableSource: Ve,\n      useSyncExternalStore: We,\n      useId: rf,\n      unstable_isNewReconciler: false\n    }, Ne = {\n      readContext: ld,\n      useCallback: of,\n      useContext: ld,\n      useEffect: Xe,\n      useImperativeHandle: mf,\n      useInsertionEffect: jf,\n      useLayoutEffect: kf,\n      useMemo: pf,\n      useReducer: Ue,\n      useRef: ef,\n      useState: function() {\n        return Ue(Se);\n      },\n      useDebugValue: nf,\n      useDeferredValue: function(a2) {\n        var b2 = Ue(Se), c2 = b2[0], d2 = b2[1];\n        Xe(function() {\n          var b3 = De.transition;\n          De.transition = {};\n          try {\n            d2(a2);\n          } finally {\n            De.transition = b3;\n          }\n        }, [a2]);\n        return c2;\n      },\n      useTransition: function() {\n        var a2 = Ue(Se)[0], b2 = Re().memoizedState;\n        return [a2, b2];\n      },\n      useMutableSource: Ve,\n      useSyncExternalStore: We,\n      useId: rf,\n      unstable_isNewReconciler: false\n    };\n    function xf(a2, b2) {\n      try {\n        var c2 = \"\", d2 = b2;\n        do\n          c2 += $c(d2), d2 = d2.return;\n        while (d2);\n        var e2 = c2;\n      } catch (f2) {\n        e2 = \"\\nError generating stack: \" + f2.message + \"\\n\" + f2.stack;\n      }\n      return { value: a2, source: b2, stack: e2 };\n    }\n    function yf(a2, b2) {\n      try {\n        console.error(b2.value);\n      } catch (c2) {\n        setTimeout(function() {\n          throw c2;\n        });\n      }\n    }\n    var zf = \"function\" === typeof WeakMap ? WeakMap : Map;\n    function Af(a2, b2, c2) {\n      c2 = qd(-1, c2);\n      c2.tag = 3;\n      c2.payload = { element: null };\n      var d2 = b2.value;\n      c2.callback = function() {\n        Bf || (Bf = true, Cf = d2);\n        yf(a2, b2);\n      };\n      return c2;\n    }\n    function Df(a2, b2, c2) {\n      c2 = qd(-1, c2);\n      c2.tag = 3;\n      var d2 = a2.type.getDerivedStateFromError;\n      if (\"function\" === typeof d2) {\n        var e2 = b2.value;\n        c2.payload = function() {\n          return d2(e2);\n        };\n        c2.callback = function() {\n          yf(a2, b2);\n        };\n      }\n      var f2 = a2.stateNode;\n      null !== f2 && \"function\" === typeof f2.componentDidCatch && (c2.callback = function() {\n        yf(a2, b2);\n        \"function\" !== typeof d2 && (null === Ef ? Ef = /* @__PURE__ */ new Set([this]) : Ef.add(this));\n        var c3 = b2.stack;\n        this.componentDidCatch(b2.value, { componentStack: null !== c3 ? c3 : \"\" });\n      });\n      return c2;\n    }\n    function Ff(a2, b2, c2) {\n      var d2 = a2.pingCache;\n      if (null === d2) {\n        d2 = a2.pingCache = new zf();\n        var e2 = /* @__PURE__ */ new Set();\n        d2.set(b2, e2);\n      } else e2 = d2.get(b2), void 0 === e2 && (e2 = /* @__PURE__ */ new Set(), d2.set(b2, e2));\n      e2.has(c2) || (e2.add(c2), a2 = Gf.bind(null, a2, b2, c2), b2.then(a2, a2));\n    }\n    function Hf(a2) {\n      do {\n        var b2;\n        if (b2 = 13 === a2.tag) b2 = a2.memoizedState, b2 = null !== b2 ? null !== b2.dehydrated ? true : false : true;\n        if (b2) return a2;\n        a2 = a2.return;\n      } while (null !== a2);\n      return null;\n    }\n    function If(a2, b2, c2, d2, e2) {\n      if (0 === (a2.mode & 1)) return a2 === b2 ? a2.flags |= 65536 : (a2.flags |= 128, c2.flags |= 131072, c2.flags &= -52805, 1 === c2.tag && (null === c2.alternate ? c2.tag = 17 : (b2 = qd(-1, 1), b2.tag = 2, rd(c2, b2))), c2.lanes |= 1), a2;\n      a2.flags |= 65536;\n      a2.lanes = e2;\n      return a2;\n    }\n    function Jf(a2) {\n      a2.flags |= 4;\n    }\n    function Kf(a2, b2) {\n      if (null !== a2 && a2.child === b2.child) return true;\n      if (0 !== (b2.flags & 16)) return false;\n      for (a2 = b2.child; null !== a2; ) {\n        if (0 !== (a2.flags & 12854) || 0 !== (a2.subtreeFlags & 12854)) return false;\n        a2 = a2.sibling;\n      }\n      return true;\n    }\n    var Lf, Mf, Nf, Of;\n    if (Ua) Lf = function(a2, b2) {\n      for (var c2 = b2.child; null !== c2; ) {\n        if (5 === c2.tag || 6 === c2.tag) La(a2, c2.stateNode);\n        else if (4 !== c2.tag && null !== c2.child) {\n          c2.child.return = c2;\n          c2 = c2.child;\n          continue;\n        }\n        if (c2 === b2) break;\n        for (; null === c2.sibling; ) {\n          if (null === c2.return || c2.return === b2) return;\n          c2 = c2.return;\n        }\n        c2.sibling.return = c2.return;\n        c2 = c2.sibling;\n      }\n    }, Mf = function() {\n    }, Nf = function(a2, b2, c2, d2, e2) {\n      a2 = a2.memoizedProps;\n      if (a2 !== d2) {\n        var f2 = b2.stateNode, g2 = ue(re.current);\n        c2 = Na(f2, c2, a2, d2, e2, g2);\n        (b2.updateQueue = c2) && Jf(b2);\n      }\n    }, Of = function(a2, b2, c2, d2) {\n      c2 !== d2 && Jf(b2);\n    };\n    else if (Va) {\n      Lf = function(a2, b2, c2, d2) {\n        for (var e2 = b2.child; null !== e2; ) {\n          if (5 === e2.tag) {\n            var f2 = e2.stateNode;\n            c2 && d2 && (f2 = Db(f2, e2.type, e2.memoizedProps, e2));\n            La(a2, f2);\n          } else if (6 === e2.tag) f2 = e2.stateNode, c2 && d2 && (f2 = Eb(f2, e2.memoizedProps, e2)), La(a2, f2);\n          else if (4 !== e2.tag) {\n            if (22 === e2.tag && null !== e2.memoizedState) f2 = e2.child, null !== f2 && (f2.return = e2), Lf(a2, e2, true, true);\n            else if (null !== e2.child) {\n              e2.child.return = e2;\n              e2 = e2.child;\n              continue;\n            }\n          }\n          if (e2 === b2) break;\n          for (; null === e2.sibling; ) {\n            if (null === e2.return || e2.return === b2) return;\n            e2 = e2.return;\n          }\n          e2.sibling.return = e2.return;\n          e2 = e2.sibling;\n        }\n      };\n      var Pf = function(a2, b2, c2, d2) {\n        for (var e2 = b2.child; null !== e2; ) {\n          if (5 === e2.tag) {\n            var f2 = e2.stateNode;\n            c2 && d2 && (f2 = Db(f2, e2.type, e2.memoizedProps, e2));\n            Ab(a2, f2);\n          } else if (6 === e2.tag) f2 = e2.stateNode, c2 && d2 && (f2 = Eb(f2, e2.memoizedProps, e2)), Ab(a2, f2);\n          else if (4 !== e2.tag) {\n            if (22 === e2.tag && null !== e2.memoizedState) f2 = e2.child, null !== f2 && (f2.return = e2), Pf(a2, e2, true, true);\n            else if (null !== e2.child) {\n              e2.child.return = e2;\n              e2 = e2.child;\n              continue;\n            }\n          }\n          if (e2 === b2) break;\n          for (; null === e2.sibling; ) {\n            if (null === e2.return || e2.return === b2) return;\n            e2 = e2.return;\n          }\n          e2.sibling.return = e2.return;\n          e2 = e2.sibling;\n        }\n      };\n      Mf = function(a2, b2) {\n        var c2 = b2.stateNode;\n        if (!Kf(a2, b2)) {\n          a2 = c2.containerInfo;\n          var d2 = zb(a2);\n          Pf(d2, b2, false, false);\n          c2.pendingChildren = d2;\n          Jf(b2);\n          Bb(a2, d2);\n        }\n      };\n      Nf = function(a2, b2, c2, d2, e2) {\n        var f2 = a2.stateNode, g2 = a2.memoizedProps;\n        if ((a2 = Kf(a2, b2)) && g2 === d2) b2.stateNode = f2;\n        else {\n          var h2 = b2.stateNode, k2 = ue(re.current), l2 = null;\n          g2 !== d2 && (l2 = Na(h2, c2, g2, d2, e2, k2));\n          a2 && null === l2 ? b2.stateNode = f2 : (f2 = yb(f2, l2, c2, g2, d2, b2, a2, h2), Ma(f2, c2, d2, e2, k2) && Jf(b2), b2.stateNode = f2, a2 ? Jf(b2) : Lf(f2, b2, false, false));\n        }\n      };\n      Of = function(a2, b2, c2, d2) {\n        c2 !== d2 ? (a2 = ue(te.current), c2 = ue(re.current), b2.stateNode = Pa(d2, a2, c2, b2), Jf(b2)) : b2.stateNode = a2.stateNode;\n      };\n    } else Mf = function() {\n    }, Nf = function() {\n    }, Of = function() {\n    };\n    function Qf(a2, b2) {\n      if (!I2) switch (a2.tailMode) {\n        case \"hidden\":\n          b2 = a2.tail;\n          for (var c2 = null; null !== b2; ) null !== b2.alternate && (c2 = b2), b2 = b2.sibling;\n          null === c2 ? a2.tail = null : c2.sibling = null;\n          break;\n        case \"collapsed\":\n          c2 = a2.tail;\n          for (var d2 = null; null !== c2; ) null !== c2.alternate && (d2 = c2), c2 = c2.sibling;\n          null === d2 ? b2 || null === a2.tail ? a2.tail = null : a2.tail.sibling = null : d2.sibling = null;\n      }\n    }\n    function P2(a2) {\n      var b2 = null !== a2.alternate && a2.alternate.child === a2.child, c2 = 0, d2 = 0;\n      if (b2) for (var e2 = a2.child; null !== e2; ) c2 |= e2.lanes | e2.childLanes, d2 |= e2.subtreeFlags & 14680064, d2 |= e2.flags & 14680064, e2.return = a2, e2 = e2.sibling;\n      else for (e2 = a2.child; null !== e2; ) c2 |= e2.lanes | e2.childLanes, d2 |= e2.subtreeFlags, d2 |= e2.flags, e2.return = a2, e2 = e2.sibling;\n      a2.subtreeFlags |= d2;\n      a2.childLanes = c2;\n      return b2;\n    }\n    function Rf(a2, b2, c2) {\n      var d2 = b2.pendingProps;\n      Sd(b2);\n      switch (b2.tag) {\n        case 2:\n        case 16:\n        case 15:\n        case 0:\n        case 11:\n        case 7:\n        case 8:\n        case 12:\n        case 9:\n        case 14:\n          return P2(b2), null;\n        case 1:\n          return C2(b2.type) && kc(), P2(b2), null;\n        case 3:\n          d2 = b2.stateNode;\n          we();\n          x2(B2);\n          x2(A2);\n          Be();\n          d2.pendingContext && (d2.context = d2.pendingContext, d2.pendingContext = null);\n          if (null === a2 || null === a2.child) ce(b2) ? Jf(b2) : null === a2 || a2.memoizedState.isDehydrated && 0 === (b2.flags & 256) || (b2.flags |= 1024, null !== Wd && (Sf(Wd), Wd = null));\n          Mf(a2, b2);\n          P2(b2);\n          return null;\n        case 5:\n          ye(b2);\n          c2 = ue(te.current);\n          var e2 = b2.type;\n          if (null !== a2 && null != b2.stateNode) Nf(a2, b2, e2, d2, c2), a2.ref !== b2.ref && (b2.flags |= 512, b2.flags |= 2097152);\n          else {\n            if (!d2) {\n              if (null === b2.stateNode) throw Error(n2(166));\n              P2(b2);\n              return null;\n            }\n            a2 = ue(re.current);\n            if (ce(b2)) {\n              if (!p2) throw Error(n2(175));\n              a2 = Pb(b2.stateNode, b2.type, b2.memoizedProps, c2, a2, b2, !Vd);\n              b2.updateQueue = a2;\n              null !== a2 && Jf(b2);\n            } else {\n              var f2 = Ka(e2, d2, c2, a2, b2);\n              Lf(f2, b2, false, false);\n              b2.stateNode = f2;\n              Ma(f2, e2, d2, c2, a2) && Jf(b2);\n            }\n            null !== b2.ref && (b2.flags |= 512, b2.flags |= 2097152);\n          }\n          P2(b2);\n          return null;\n        case 6:\n          if (a2 && null != b2.stateNode) Of(a2, b2, a2.memoizedProps, d2);\n          else {\n            if (\"string\" !== typeof d2 && null === b2.stateNode) throw Error(n2(166));\n            a2 = ue(te.current);\n            c2 = ue(re.current);\n            if (ce(b2)) {\n              if (!p2) throw Error(n2(176));\n              a2 = b2.stateNode;\n              d2 = b2.memoizedProps;\n              if (c2 = Qb(a2, d2, b2, !Vd)) {\n                if (e2 = Td, null !== e2) switch (f2 = 0 !== (e2.mode & 1), e2.tag) {\n                  case 3:\n                    Yb(e2.stateNode.containerInfo, a2, d2, f2);\n                    break;\n                  case 5:\n                    Zb(e2.type, e2.memoizedProps, e2.stateNode, a2, d2, f2);\n                }\n              }\n              c2 && Jf(b2);\n            } else b2.stateNode = Pa(d2, a2, c2, b2);\n          }\n          P2(b2);\n          return null;\n        case 13:\n          x2(J2);\n          d2 = b2.memoizedState;\n          if (I2 && null !== Ud && 0 !== (b2.mode & 1) && 0 === (b2.flags & 128)) {\n            for (a2 = Ud; a2; ) a2 = Lb(a2);\n            de();\n            b2.flags |= 98560;\n            return b2;\n          }\n          if (null !== d2 && null !== d2.dehydrated) {\n            d2 = ce(b2);\n            if (null === a2) {\n              if (!d2) throw Error(n2(318));\n              if (!p2) throw Error(n2(344));\n              a2 = b2.memoizedState;\n              a2 = null !== a2 ? a2.dehydrated : null;\n              if (!a2) throw Error(n2(317));\n              Rb(a2, b2);\n            } else de(), 0 === (b2.flags & 128) && (b2.memoizedState = null), b2.flags |= 4;\n            P2(b2);\n            return null;\n          }\n          null !== Wd && (Sf(Wd), Wd = null);\n          if (0 !== (b2.flags & 128)) return b2.lanes = c2, b2;\n          d2 = null !== d2;\n          c2 = false;\n          null === a2 ? ce(b2) : c2 = null !== a2.memoizedState;\n          d2 && !c2 && (b2.child.flags |= 8192, 0 !== (b2.mode & 1) && (null === a2 || 0 !== (J2.current & 1) ? 0 === Q2 && (Q2 = 3) : Tf()));\n          null !== b2.updateQueue && (b2.flags |= 4);\n          P2(b2);\n          return null;\n        case 4:\n          return we(), Mf(a2, b2), null === a2 && Xa(b2.stateNode.containerInfo), P2(b2), null;\n        case 10:\n          return hd(b2.type._context), P2(b2), null;\n        case 17:\n          return C2(b2.type) && kc(), P2(b2), null;\n        case 19:\n          x2(J2);\n          e2 = b2.memoizedState;\n          if (null === e2) return P2(b2), null;\n          d2 = 0 !== (b2.flags & 128);\n          f2 = e2.rendering;\n          if (null === f2) if (d2) Qf(e2, false);\n          else {\n            if (0 !== Q2 || null !== a2 && 0 !== (a2.flags & 128)) for (a2 = b2.child; null !== a2; ) {\n              f2 = ze(a2);\n              if (null !== f2) {\n                b2.flags |= 128;\n                Qf(e2, false);\n                a2 = f2.updateQueue;\n                null !== a2 && (b2.updateQueue = a2, b2.flags |= 4);\n                b2.subtreeFlags = 0;\n                a2 = c2;\n                for (d2 = b2.child; null !== d2; ) c2 = d2, e2 = a2, c2.flags &= 14680066, f2 = c2.alternate, null === f2 ? (c2.childLanes = 0, c2.lanes = e2, c2.child = null, c2.subtreeFlags = 0, c2.memoizedProps = null, c2.memoizedState = null, c2.updateQueue = null, c2.dependencies = null, c2.stateNode = null) : (c2.childLanes = f2.childLanes, c2.lanes = f2.lanes, c2.child = f2.child, c2.subtreeFlags = 0, c2.deletions = null, c2.memoizedProps = f2.memoizedProps, c2.memoizedState = f2.memoizedState, c2.updateQueue = f2.updateQueue, c2.type = f2.type, e2 = f2.dependencies, c2.dependencies = null === e2 ? null : { lanes: e2.lanes, firstContext: e2.firstContext }), d2 = d2.sibling;\n                y2(J2, J2.current & 1 | 2);\n                return b2.child;\n              }\n              a2 = a2.sibling;\n            }\n            null !== e2.tail && E2() > Uf && (b2.flags |= 128, d2 = true, Qf(e2, false), b2.lanes = 4194304);\n          }\n          else {\n            if (!d2) if (a2 = ze(f2), null !== a2) {\n              if (b2.flags |= 128, d2 = true, a2 = a2.updateQueue, null !== a2 && (b2.updateQueue = a2, b2.flags |= 4), Qf(e2, true), null === e2.tail && \"hidden\" === e2.tailMode && !f2.alternate && !I2) return P2(b2), null;\n            } else 2 * E2() - e2.renderingStartTime > Uf && 1073741824 !== c2 && (b2.flags |= 128, d2 = true, Qf(e2, false), b2.lanes = 4194304);\n            e2.isBackwards ? (f2.sibling = b2.child, b2.child = f2) : (a2 = e2.last, null !== a2 ? a2.sibling = f2 : b2.child = f2, e2.last = f2);\n          }\n          if (null !== e2.tail) return b2 = e2.tail, e2.rendering = b2, e2.tail = b2.sibling, e2.renderingStartTime = E2(), b2.sibling = null, a2 = J2.current, y2(J2, d2 ? a2 & 1 | 2 : a2 & 1), b2;\n          P2(b2);\n          return null;\n        case 22:\n        case 23:\n          return Vf(), d2 = null !== b2.memoizedState, null !== a2 && null !== a2.memoizedState !== d2 && (b2.flags |= 8192), d2 && 0 !== (b2.mode & 1) ? 0 !== (Wf & 1073741824) && (P2(b2), Ua && b2.subtreeFlags & 6 && (b2.flags |= 8192)) : P2(b2), null;\n        case 24:\n          return null;\n        case 25:\n          return null;\n      }\n      throw Error(n2(156, b2.tag));\n    }\n    var Xf = ea.ReactCurrentOwner, kd = false;\n    function R2(a2, b2, c2, d2) {\n      b2.child = null === a2 ? pe(b2, null, c2, d2) : oe(b2, a2.child, c2, d2);\n    }\n    function Yf(a2, b2, c2, d2, e2) {\n      c2 = c2.render;\n      var f2 = b2.ref;\n      jd(b2, e2);\n      d2 = Ke(a2, b2, c2, d2, f2, e2);\n      c2 = Pe();\n      if (null !== a2 && !kd) return b2.updateQueue = a2.updateQueue, b2.flags &= -2053, a2.lanes &= ~e2, Zf(a2, b2, e2);\n      I2 && c2 && Rd(b2);\n      b2.flags |= 1;\n      R2(a2, b2, d2, e2);\n      return b2.child;\n    }\n    function $f(a2, b2, c2, d2, e2) {\n      if (null === a2) {\n        var f2 = c2.type;\n        if (\"function\" === typeof f2 && !ag2(f2) && void 0 === f2.defaultProps && null === c2.compare && void 0 === c2.defaultProps) return b2.tag = 15, b2.type = f2, bg(a2, b2, f2, d2, e2);\n        a2 = le(c2.type, null, d2, b2, b2.mode, e2);\n        a2.ref = b2.ref;\n        a2.return = b2;\n        return b2.child = a2;\n      }\n      f2 = a2.child;\n      if (0 === (a2.lanes & e2)) {\n        var g2 = f2.memoizedProps;\n        c2 = c2.compare;\n        c2 = null !== c2 ? c2 : Zc;\n        if (c2(g2, d2) && a2.ref === b2.ref) return Zf(a2, b2, e2);\n      }\n      b2.flags |= 1;\n      a2 = je(f2, d2);\n      a2.ref = b2.ref;\n      a2.return = b2;\n      return b2.child = a2;\n    }\n    function bg(a2, b2, c2, d2, e2) {\n      if (null !== a2 && Zc(a2.memoizedProps, d2) && a2.ref === b2.ref) if (kd = false, 0 !== (a2.lanes & e2)) 0 !== (a2.flags & 131072) && (kd = true);\n      else return b2.lanes = a2.lanes, Zf(a2, b2, e2);\n      return cg2(a2, b2, c2, d2, e2);\n    }\n    function dg2(a2, b2, c2) {\n      var d2 = b2.pendingProps, e2 = d2.children, f2 = null !== a2 ? a2.memoizedState : null;\n      if (\"hidden\" === d2.mode) if (0 === (b2.mode & 1)) b2.memoizedState = { baseLanes: 0, cachePool: null }, y2(eg, Wf), Wf |= c2;\n      else if (0 !== (c2 & 1073741824)) b2.memoizedState = { baseLanes: 0, cachePool: null }, d2 = null !== f2 ? f2.baseLanes : c2, y2(eg, Wf), Wf |= d2;\n      else return a2 = null !== f2 ? f2.baseLanes | c2 : c2, b2.lanes = b2.childLanes = 1073741824, b2.memoizedState = { baseLanes: a2, cachePool: null }, b2.updateQueue = null, y2(eg, Wf), Wf |= a2, null;\n      else null !== f2 ? (d2 = f2.baseLanes | c2, b2.memoizedState = null) : d2 = c2, y2(eg, Wf), Wf |= d2;\n      R2(a2, b2, e2, c2);\n      return b2.child;\n    }\n    function fg(a2, b2) {\n      var c2 = b2.ref;\n      if (null === a2 && null !== c2 || null !== a2 && a2.ref !== c2) b2.flags |= 512, b2.flags |= 2097152;\n    }\n    function cg2(a2, b2, c2, d2, e2) {\n      var f2 = C2(c2) ? ic : A2.current;\n      f2 = jc(b2, f2);\n      jd(b2, e2);\n      c2 = Ke(a2, b2, c2, d2, f2, e2);\n      d2 = Pe();\n      if (null !== a2 && !kd) return b2.updateQueue = a2.updateQueue, b2.flags &= -2053, a2.lanes &= ~e2, Zf(a2, b2, e2);\n      I2 && d2 && Rd(b2);\n      b2.flags |= 1;\n      R2(a2, b2, c2, e2);\n      return b2.child;\n    }\n    function gg2(a2, b2, c2, d2, e2) {\n      if (C2(c2)) {\n        var f2 = true;\n        nc(b2);\n      } else f2 = false;\n      jd(b2, e2);\n      if (null === b2.stateNode) null !== a2 && (a2.alternate = null, b2.alternate = null, b2.flags |= 2), Dd(b2, c2, d2), Fd(b2, c2, d2, e2), d2 = true;\n      else if (null === a2) {\n        var g2 = b2.stateNode, h2 = b2.memoizedProps;\n        g2.props = h2;\n        var k2 = g2.context, l2 = c2.contextType;\n        \"object\" === typeof l2 && null !== l2 ? l2 = ld(l2) : (l2 = C2(c2) ? ic : A2.current, l2 = jc(b2, l2));\n        var m2 = c2.getDerivedStateFromProps, v2 = \"function\" === typeof m2 || \"function\" === typeof g2.getSnapshotBeforeUpdate;\n        v2 || \"function\" !== typeof g2.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g2.componentWillReceiveProps || (h2 !== d2 || k2 !== l2) && Ed(b2, g2, d2, l2);\n        nd = false;\n        var r2 = b2.memoizedState;\n        g2.state = r2;\n        ud(b2, d2, g2, e2);\n        k2 = b2.memoizedState;\n        h2 !== d2 || r2 !== k2 || B2.current || nd ? (\"function\" === typeof m2 && (yd(b2, c2, m2, d2), k2 = b2.memoizedState), (h2 = nd || Cd(b2, c2, h2, d2, r2, k2, l2)) ? (v2 || \"function\" !== typeof g2.UNSAFE_componentWillMount && \"function\" !== typeof g2.componentWillMount || (\"function\" === typeof g2.componentWillMount && g2.componentWillMount(), \"function\" === typeof g2.UNSAFE_componentWillMount && g2.UNSAFE_componentWillMount()), \"function\" === typeof g2.componentDidMount && (b2.flags |= 4194308)) : (\"function\" === typeof g2.componentDidMount && (b2.flags |= 4194308), b2.memoizedProps = d2, b2.memoizedState = k2), g2.props = d2, g2.state = k2, g2.context = l2, d2 = h2) : (\"function\" === typeof g2.componentDidMount && (b2.flags |= 4194308), d2 = false);\n      } else {\n        g2 = b2.stateNode;\n        pd(a2, b2);\n        h2 = b2.memoizedProps;\n        l2 = b2.type === b2.elementType ? h2 : ad(b2.type, h2);\n        g2.props = l2;\n        v2 = b2.pendingProps;\n        r2 = g2.context;\n        k2 = c2.contextType;\n        \"object\" === typeof k2 && null !== k2 ? k2 = ld(k2) : (k2 = C2(c2) ? ic : A2.current, k2 = jc(b2, k2));\n        var z2 = c2.getDerivedStateFromProps;\n        (m2 = \"function\" === typeof z2 || \"function\" === typeof g2.getSnapshotBeforeUpdate) || \"function\" !== typeof g2.UNSAFE_componentWillReceiveProps && \"function\" !== typeof g2.componentWillReceiveProps || (h2 !== v2 || r2 !== k2) && Ed(b2, g2, d2, k2);\n        nd = false;\n        r2 = b2.memoizedState;\n        g2.state = r2;\n        ud(b2, d2, g2, e2);\n        var q2 = b2.memoizedState;\n        h2 !== v2 || r2 !== q2 || B2.current || nd ? (\"function\" === typeof z2 && (yd(b2, c2, z2, d2), q2 = b2.memoizedState), (l2 = nd || Cd(b2, c2, l2, d2, r2, q2, k2) || false) ? (m2 || \"function\" !== typeof g2.UNSAFE_componentWillUpdate && \"function\" !== typeof g2.componentWillUpdate || (\"function\" === typeof g2.componentWillUpdate && g2.componentWillUpdate(\n          d2,\n          q2,\n          k2\n        ), \"function\" === typeof g2.UNSAFE_componentWillUpdate && g2.UNSAFE_componentWillUpdate(d2, q2, k2)), \"function\" === typeof g2.componentDidUpdate && (b2.flags |= 4), \"function\" === typeof g2.getSnapshotBeforeUpdate && (b2.flags |= 1024)) : (\"function\" !== typeof g2.componentDidUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 4), \"function\" !== typeof g2.getSnapshotBeforeUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 1024), b2.memoizedProps = d2, b2.memoizedState = q2), g2.props = d2, g2.state = q2, g2.context = k2, d2 = l2) : (\"function\" !== typeof g2.componentDidUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 4), \"function\" !== typeof g2.getSnapshotBeforeUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 1024), d2 = false);\n      }\n      return hg2(a2, b2, c2, d2, f2, e2);\n    }\n    function hg2(a2, b2, c2, d2, e2, f2) {\n      fg(a2, b2);\n      var g2 = 0 !== (b2.flags & 128);\n      if (!d2 && !g2) return e2 && oc(b2, c2, false), Zf(a2, b2, f2);\n      d2 = b2.stateNode;\n      Xf.current = b2;\n      var h2 = g2 && \"function\" !== typeof c2.getDerivedStateFromError ? null : d2.render();\n      b2.flags |= 1;\n      null !== a2 && g2 ? (b2.child = oe(b2, a2.child, null, f2), b2.child = oe(b2, null, h2, f2)) : R2(a2, b2, h2, f2);\n      b2.memoizedState = d2.state;\n      e2 && oc(b2, c2, true);\n      return b2.child;\n    }\n    function ig2(a2) {\n      var b2 = a2.stateNode;\n      b2.pendingContext ? lc(a2, b2.pendingContext, b2.pendingContext !== b2.context) : b2.context && lc(a2, b2.context, false);\n      ve(a2, b2.containerInfo);\n    }\n    function jg(a2, b2, c2, d2, e2) {\n      de();\n      ee(e2);\n      b2.flags |= 256;\n      R2(a2, b2, c2, d2);\n      return b2.child;\n    }\n    var kg2 = { dehydrated: null, treeContext: null, retryLane: 0 };\n    function lg(a2) {\n      return { baseLanes: a2, cachePool: null };\n    }\n    function mg(a2, b2, c2) {\n      var d2 = b2.pendingProps, e2 = J2.current, f2 = false, g2 = 0 !== (b2.flags & 128), h2;\n      (h2 = g2) || (h2 = null !== a2 && null === a2.memoizedState ? false : 0 !== (e2 & 2));\n      if (h2) f2 = true, b2.flags &= -129;\n      else if (null === a2 || null !== a2.memoizedState) e2 |= 1;\n      y2(J2, e2 & 1);\n      if (null === a2) {\n        ae(b2);\n        a2 = b2.memoizedState;\n        if (null !== a2 && (a2 = a2.dehydrated, null !== a2)) return 0 === (b2.mode & 1) ? b2.lanes = 1 : Jb(a2) ? b2.lanes = 8 : b2.lanes = 1073741824, null;\n        e2 = d2.children;\n        a2 = d2.fallback;\n        return f2 ? (d2 = b2.mode, f2 = b2.child, e2 = { mode: \"hidden\", children: e2 }, 0 === (d2 & 1) && null !== f2 ? (f2.childLanes = 0, f2.pendingProps = e2) : f2 = ng2(e2, d2, 0, null), a2 = ne(a2, d2, c2, null), f2.return = b2, a2.return = b2, f2.sibling = a2, b2.child = f2, b2.child.memoizedState = lg(c2), b2.memoizedState = kg2, a2) : og2(b2, e2);\n      }\n      e2 = a2.memoizedState;\n      if (null !== e2) {\n        h2 = e2.dehydrated;\n        if (null !== h2) {\n          if (g2) {\n            if (b2.flags & 256) return b2.flags &= -257, pg(a2, b2, c2, Error(n2(422)));\n            if (null !== b2.memoizedState) return b2.child = a2.child, b2.flags |= 128, null;\n            f2 = d2.fallback;\n            e2 = b2.mode;\n            d2 = ng2({ mode: \"visible\", children: d2.children }, e2, 0, null);\n            f2 = ne(f2, e2, c2, null);\n            f2.flags |= 2;\n            d2.return = b2;\n            f2.return = b2;\n            d2.sibling = f2;\n            b2.child = d2;\n            0 !== (b2.mode & 1) && oe(\n              b2,\n              a2.child,\n              null,\n              c2\n            );\n            b2.child.memoizedState = lg(c2);\n            b2.memoizedState = kg2;\n            return f2;\n          }\n          if (0 === (b2.mode & 1)) b2 = pg(a2, b2, c2, null);\n          else if (Jb(h2)) b2 = pg(a2, b2, c2, Error(n2(419)));\n          else if (d2 = 0 !== (c2 & a2.childLanes), kd || d2) {\n            d2 = F2;\n            if (null !== d2) {\n              switch (c2 & -c2) {\n                case 4:\n                  f2 = 2;\n                  break;\n                case 16:\n                  f2 = 8;\n                  break;\n                case 64:\n                case 128:\n                case 256:\n                case 512:\n                case 1024:\n                case 2048:\n                case 4096:\n                case 8192:\n                case 16384:\n                case 32768:\n                case 65536:\n                case 131072:\n                case 262144:\n                case 524288:\n                case 1048576:\n                case 2097152:\n                case 4194304:\n                case 8388608:\n                case 16777216:\n                case 33554432:\n                case 67108864:\n                  f2 = 32;\n                  break;\n                case 536870912:\n                  f2 = 268435456;\n                  break;\n                default:\n                  f2 = 0;\n              }\n              d2 = 0 !== (f2 & (d2.suspendedLanes | c2)) ? 0 : f2;\n              0 !== d2 && d2 !== e2.retryLane && (e2.retryLane = d2, Ad(a2, d2, -1));\n            }\n            Tf();\n            b2 = pg(a2, b2, c2, Error(n2(421)));\n          } else Ib(h2) ? (b2.flags |= 128, b2.child = a2.child, b2 = qg2.bind(null, a2), Kb(h2, b2), b2 = null) : (c2 = e2.treeContext, p2 && (Ud = Ob(h2), Td = b2, I2 = true, Wd = null, Vd = false, null !== c2 && (Kd[Ld++] = Nd, Kd[Ld++] = Od, Kd[Ld++] = Md, Nd = c2.id, Od = c2.overflow, Md = b2)), b2 = og2(b2, b2.pendingProps.children), b2.flags |= 4096);\n          return b2;\n        }\n        if (f2) return d2 = rg2(a2, b2, d2.children, d2.fallback, c2), f2 = b2.child, e2 = a2.child.memoizedState, f2.memoizedState = null === e2 ? lg(c2) : { baseLanes: e2.baseLanes | c2, cachePool: null }, f2.childLanes = a2.childLanes & ~c2, b2.memoizedState = kg2, d2;\n        c2 = sg2(a2, b2, d2.children, c2);\n        b2.memoizedState = null;\n        return c2;\n      }\n      if (f2) return d2 = rg2(a2, b2, d2.children, d2.fallback, c2), f2 = b2.child, e2 = a2.child.memoizedState, f2.memoizedState = null === e2 ? lg(c2) : { baseLanes: e2.baseLanes | c2, cachePool: null }, f2.childLanes = a2.childLanes & ~c2, b2.memoizedState = kg2, d2;\n      c2 = sg2(a2, b2, d2.children, c2);\n      b2.memoizedState = null;\n      return c2;\n    }\n    function og2(a2, b2) {\n      b2 = ng2({ mode: \"visible\", children: b2 }, a2.mode, 0, null);\n      b2.return = a2;\n      return a2.child = b2;\n    }\n    function sg2(a2, b2, c2, d2) {\n      var e2 = a2.child;\n      a2 = e2.sibling;\n      c2 = je(e2, { mode: \"visible\", children: c2 });\n      0 === (b2.mode & 1) && (c2.lanes = d2);\n      c2.return = b2;\n      c2.sibling = null;\n      null !== a2 && (d2 = b2.deletions, null === d2 ? (b2.deletions = [a2], b2.flags |= 16) : d2.push(a2));\n      return b2.child = c2;\n    }\n    function rg2(a2, b2, c2, d2, e2) {\n      var f2 = b2.mode;\n      a2 = a2.child;\n      var g2 = a2.sibling, h2 = { mode: \"hidden\", children: c2 };\n      0 === (f2 & 1) && b2.child !== a2 ? (c2 = b2.child, c2.childLanes = 0, c2.pendingProps = h2, b2.deletions = null) : (c2 = je(a2, h2), c2.subtreeFlags = a2.subtreeFlags & 14680064);\n      null !== g2 ? d2 = je(g2, d2) : (d2 = ne(d2, f2, e2, null), d2.flags |= 2);\n      d2.return = b2;\n      c2.return = b2;\n      c2.sibling = d2;\n      b2.child = c2;\n      return d2;\n    }\n    function pg(a2, b2, c2, d2) {\n      null !== d2 && ee(d2);\n      oe(b2, a2.child, null, c2);\n      a2 = og2(b2, b2.pendingProps.children);\n      a2.flags |= 2;\n      b2.memoizedState = null;\n      return a2;\n    }\n    function tg(a2, b2, c2) {\n      a2.lanes |= b2;\n      var d2 = a2.alternate;\n      null !== d2 && (d2.lanes |= b2);\n      id(a2.return, b2, c2);\n    }\n    function ug(a2, b2, c2, d2, e2) {\n      var f2 = a2.memoizedState;\n      null === f2 ? a2.memoizedState = { isBackwards: b2, rendering: null, renderingStartTime: 0, last: d2, tail: c2, tailMode: e2 } : (f2.isBackwards = b2, f2.rendering = null, f2.renderingStartTime = 0, f2.last = d2, f2.tail = c2, f2.tailMode = e2);\n    }\n    function vg(a2, b2, c2) {\n      var d2 = b2.pendingProps, e2 = d2.revealOrder, f2 = d2.tail;\n      R2(a2, b2, d2.children, c2);\n      d2 = J2.current;\n      if (0 !== (d2 & 2)) d2 = d2 & 1 | 2, b2.flags |= 128;\n      else {\n        if (null !== a2 && 0 !== (a2.flags & 128)) a: for (a2 = b2.child; null !== a2; ) {\n          if (13 === a2.tag) null !== a2.memoizedState && tg(a2, c2, b2);\n          else if (19 === a2.tag) tg(a2, c2, b2);\n          else if (null !== a2.child) {\n            a2.child.return = a2;\n            a2 = a2.child;\n            continue;\n          }\n          if (a2 === b2) break a;\n          for (; null === a2.sibling; ) {\n            if (null === a2.return || a2.return === b2) break a;\n            a2 = a2.return;\n          }\n          a2.sibling.return = a2.return;\n          a2 = a2.sibling;\n        }\n        d2 &= 1;\n      }\n      y2(J2, d2);\n      if (0 === (b2.mode & 1)) b2.memoizedState = null;\n      else switch (e2) {\n        case \"forwards\":\n          c2 = b2.child;\n          for (e2 = null; null !== c2; ) a2 = c2.alternate, null !== a2 && null === ze(a2) && (e2 = c2), c2 = c2.sibling;\n          c2 = e2;\n          null === c2 ? (e2 = b2.child, b2.child = null) : (e2 = c2.sibling, c2.sibling = null);\n          ug(b2, false, e2, c2, f2);\n          break;\n        case \"backwards\":\n          c2 = null;\n          e2 = b2.child;\n          for (b2.child = null; null !== e2; ) {\n            a2 = e2.alternate;\n            if (null !== a2 && null === ze(a2)) {\n              b2.child = e2;\n              break;\n            }\n            a2 = e2.sibling;\n            e2.sibling = c2;\n            c2 = e2;\n            e2 = a2;\n          }\n          ug(b2, true, c2, null, f2);\n          break;\n        case \"together\":\n          ug(b2, false, null, null, void 0);\n          break;\n        default:\n          b2.memoizedState = null;\n      }\n      return b2.child;\n    }\n    function Zf(a2, b2, c2) {\n      null !== a2 && (b2.dependencies = a2.dependencies);\n      vd |= b2.lanes;\n      if (0 === (c2 & b2.childLanes)) return null;\n      if (null !== a2 && b2.child !== a2.child) throw Error(n2(153));\n      if (null !== b2.child) {\n        a2 = b2.child;\n        c2 = je(a2, a2.pendingProps);\n        b2.child = c2;\n        for (c2.return = b2; null !== a2.sibling; ) a2 = a2.sibling, c2 = c2.sibling = je(a2, a2.pendingProps), c2.return = b2;\n        c2.sibling = null;\n      }\n      return b2.child;\n    }\n    function wg2(a2, b2, c2) {\n      switch (b2.tag) {\n        case 3:\n          ig2(b2);\n          de();\n          break;\n        case 5:\n          xe(b2);\n          break;\n        case 1:\n          C2(b2.type) && nc(b2);\n          break;\n        case 4:\n          ve(b2, b2.stateNode.containerInfo);\n          break;\n        case 10:\n          gd(b2, b2.type._context, b2.memoizedProps.value);\n          break;\n        case 13:\n          var d2 = b2.memoizedState;\n          if (null !== d2) {\n            if (null !== d2.dehydrated) return y2(J2, J2.current & 1), b2.flags |= 128, null;\n            if (0 !== (c2 & b2.child.childLanes)) return mg(a2, b2, c2);\n            y2(J2, J2.current & 1);\n            a2 = Zf(a2, b2, c2);\n            return null !== a2 ? a2.sibling : null;\n          }\n          y2(J2, J2.current & 1);\n          break;\n        case 19:\n          d2 = 0 !== (c2 & b2.childLanes);\n          if (0 !== (a2.flags & 128)) {\n            if (d2) return vg(\n              a2,\n              b2,\n              c2\n            );\n            b2.flags |= 128;\n          }\n          var e2 = b2.memoizedState;\n          null !== e2 && (e2.rendering = null, e2.tail = null, e2.lastEffect = null);\n          y2(J2, J2.current);\n          if (d2) break;\n          else return null;\n        case 22:\n        case 23:\n          return b2.lanes = 0, dg2(a2, b2, c2);\n      }\n      return Zf(a2, b2, c2);\n    }\n    function xg(a2, b2) {\n      Sd(b2);\n      switch (b2.tag) {\n        case 1:\n          return C2(b2.type) && kc(), a2 = b2.flags, a2 & 65536 ? (b2.flags = a2 & -65537 | 128, b2) : null;\n        case 3:\n          return we(), x2(B2), x2(A2), Be(), a2 = b2.flags, 0 !== (a2 & 65536) && 0 === (a2 & 128) ? (b2.flags = a2 & -65537 | 128, b2) : null;\n        case 5:\n          return ye(b2), null;\n        case 13:\n          x2(J2);\n          a2 = b2.memoizedState;\n          if (null !== a2 && null !== a2.dehydrated) {\n            if (null === b2.alternate) throw Error(n2(340));\n            de();\n          }\n          a2 = b2.flags;\n          return a2 & 65536 ? (b2.flags = a2 & -65537 | 128, b2) : null;\n        case 19:\n          return x2(J2), null;\n        case 4:\n          return we(), null;\n        case 10:\n          return hd(b2.type._context), null;\n        case 22:\n        case 23:\n          return Vf(), null;\n        case 24:\n          return null;\n        default:\n          return null;\n      }\n    }\n    var yg2 = false, zg = false, Ag2 = \"function\" === typeof WeakSet ? WeakSet : Set, S2 = null;\n    function Bg2(a2, b2) {\n      var c2 = a2.ref;\n      if (null !== c2) if (\"function\" === typeof c2) try {\n        c2(null);\n      } catch (d2) {\n        T2(a2, b2, d2);\n      }\n      else c2.current = null;\n    }\n    function Cg2(a2, b2, c2) {\n      try {\n        c2();\n      } catch (d2) {\n        T2(a2, b2, d2);\n      }\n    }\n    var Dg2 = false;\n    function Eg2(a2, b2) {\n      Ia(a2.containerInfo);\n      for (S2 = b2; null !== S2; ) if (a2 = S2, b2 = a2.child, 0 !== (a2.subtreeFlags & 1028) && null !== b2) b2.return = a2, S2 = b2;\n      else for (; null !== S2; ) {\n        a2 = S2;\n        try {\n          var c2 = a2.alternate;\n          if (0 !== (a2.flags & 1024)) switch (a2.tag) {\n            case 0:\n            case 11:\n            case 15:\n              break;\n            case 1:\n              if (null !== c2) {\n                var d2 = c2.memoizedProps, e2 = c2.memoizedState, f2 = a2.stateNode, g2 = f2.getSnapshotBeforeUpdate(a2.elementType === a2.type ? d2 : ad(a2.type, d2), e2);\n                f2.__reactInternalSnapshotBeforeUpdate = g2;\n              }\n              break;\n            case 3:\n              Ua && xb(a2.stateNode.containerInfo);\n              break;\n            case 5:\n            case 6:\n            case 4:\n            case 17:\n              break;\n            default:\n              throw Error(n2(163));\n          }\n        } catch (h2) {\n          T2(a2, a2.return, h2);\n        }\n        b2 = a2.sibling;\n        if (null !== b2) {\n          b2.return = a2.return;\n          S2 = b2;\n          break;\n        }\n        S2 = a2.return;\n      }\n      c2 = Dg2;\n      Dg2 = false;\n      return c2;\n    }\n    function Fg2(a2, b2, c2) {\n      var d2 = b2.updateQueue;\n      d2 = null !== d2 ? d2.lastEffect : null;\n      if (null !== d2) {\n        var e2 = d2 = d2.next;\n        do {\n          if ((e2.tag & a2) === a2) {\n            var f2 = e2.destroy;\n            e2.destroy = void 0;\n            void 0 !== f2 && Cg2(b2, c2, f2);\n          }\n          e2 = e2.next;\n        } while (e2 !== d2);\n      }\n    }\n    function Gg2(a2, b2) {\n      b2 = b2.updateQueue;\n      b2 = null !== b2 ? b2.lastEffect : null;\n      if (null !== b2) {\n        var c2 = b2 = b2.next;\n        do {\n          if ((c2.tag & a2) === a2) {\n            var d2 = c2.create;\n            c2.destroy = d2();\n          }\n          c2 = c2.next;\n        } while (c2 !== b2);\n      }\n    }\n    function Hg(a2) {\n      var b2 = a2.ref;\n      if (null !== b2) {\n        var c2 = a2.stateNode;\n        switch (a2.tag) {\n          case 5:\n            a2 = Fa(c2);\n            break;\n          default:\n            a2 = c2;\n        }\n        \"function\" === typeof b2 ? b2(a2) : b2.current = a2;\n      }\n    }\n    function Ig2(a2, b2, c2) {\n      if (Oc && \"function\" === typeof Oc.onCommitFiberUnmount) try {\n        Oc.onCommitFiberUnmount(Nc, b2);\n      } catch (g2) {\n      }\n      switch (b2.tag) {\n        case 0:\n        case 11:\n        case 14:\n        case 15:\n          a2 = b2.updateQueue;\n          if (null !== a2 && (a2 = a2.lastEffect, null !== a2)) {\n            var d2 = a2 = a2.next;\n            do {\n              var e2 = d2, f2 = e2.destroy;\n              e2 = e2.tag;\n              void 0 !== f2 && (0 !== (e2 & 2) ? Cg2(b2, c2, f2) : 0 !== (e2 & 4) && Cg2(b2, c2, f2));\n              d2 = d2.next;\n            } while (d2 !== a2);\n          }\n          break;\n        case 1:\n          Bg2(b2, c2);\n          a2 = b2.stateNode;\n          if (\"function\" === typeof a2.componentWillUnmount) try {\n            a2.props = b2.memoizedProps, a2.state = b2.memoizedState, a2.componentWillUnmount();\n          } catch (g2) {\n            T2(\n              b2,\n              c2,\n              g2\n            );\n          }\n          break;\n        case 5:\n          Bg2(b2, c2);\n          break;\n        case 4:\n          Ua ? Jg2(a2, b2, c2) : Va && Va && (b2 = b2.stateNode.containerInfo, c2 = zb(b2), Cb(b2, c2));\n      }\n    }\n    function Kg2(a2, b2, c2) {\n      for (var d2 = b2; ; ) if (Ig2(a2, d2, c2), null === d2.child || Ua && 4 === d2.tag) {\n        if (d2 === b2) break;\n        for (; null === d2.sibling; ) {\n          if (null === d2.return || d2.return === b2) return;\n          d2 = d2.return;\n        }\n        d2.sibling.return = d2.return;\n        d2 = d2.sibling;\n      } else d2.child.return = d2, d2 = d2.child;\n    }\n    function Lg(a2) {\n      var b2 = a2.alternate;\n      null !== b2 && (a2.alternate = null, Lg(b2));\n      a2.child = null;\n      a2.deletions = null;\n      a2.sibling = null;\n      5 === a2.tag && (b2 = a2.stateNode, null !== b2 && Za(b2));\n      a2.stateNode = null;\n      a2.return = null;\n      a2.dependencies = null;\n      a2.memoizedProps = null;\n      a2.memoizedState = null;\n      a2.pendingProps = null;\n      a2.stateNode = null;\n      a2.updateQueue = null;\n    }\n    function Mg2(a2) {\n      return 5 === a2.tag || 3 === a2.tag || 4 === a2.tag;\n    }\n    function Ng2(a2) {\n      a: for (; ; ) {\n        for (; null === a2.sibling; ) {\n          if (null === a2.return || Mg2(a2.return)) return null;\n          a2 = a2.return;\n        }\n        a2.sibling.return = a2.return;\n        for (a2 = a2.sibling; 5 !== a2.tag && 6 !== a2.tag && 18 !== a2.tag; ) {\n          if (a2.flags & 2) continue a;\n          if (null === a2.child || 4 === a2.tag) continue a;\n          else a2.child.return = a2, a2 = a2.child;\n        }\n        if (!(a2.flags & 2)) return a2.stateNode;\n      }\n    }\n    function Og2(a2) {\n      if (Ua) {\n        a: {\n          for (var b2 = a2.return; null !== b2; ) {\n            if (Mg2(b2)) break a;\n            b2 = b2.return;\n          }\n          throw Error(n2(160));\n        }\n        var c2 = b2;\n        switch (c2.tag) {\n          case 5:\n            b2 = c2.stateNode;\n            c2.flags & 32 && (sb(b2), c2.flags &= -33);\n            c2 = Ng2(a2);\n            Pg(a2, c2, b2);\n            break;\n          case 3:\n          case 4:\n            b2 = c2.stateNode.containerInfo;\n            c2 = Ng2(a2);\n            Qg2(a2, c2, b2);\n            break;\n          default:\n            throw Error(n2(161));\n        }\n      }\n    }\n    function Qg2(a2, b2, c2) {\n      var d2 = a2.tag;\n      if (5 === d2 || 6 === d2) a2 = a2.stateNode, b2 ? pb(c2, a2, b2) : kb(c2, a2);\n      else if (4 !== d2 && (a2 = a2.child, null !== a2)) for (Qg2(a2, b2, c2), a2 = a2.sibling; null !== a2; ) Qg2(a2, b2, c2), a2 = a2.sibling;\n    }\n    function Pg(a2, b2, c2) {\n      var d2 = a2.tag;\n      if (5 === d2 || 6 === d2) a2 = a2.stateNode, b2 ? ob(c2, a2, b2) : jb(c2, a2);\n      else if (4 !== d2 && (a2 = a2.child, null !== a2)) for (Pg(a2, b2, c2), a2 = a2.sibling; null !== a2; ) Pg(a2, b2, c2), a2 = a2.sibling;\n    }\n    function Jg2(a2, b2, c2) {\n      for (var d2 = b2, e2 = false, f2, g2; ; ) {\n        if (!e2) {\n          e2 = d2.return;\n          a: for (; ; ) {\n            if (null === e2) throw Error(n2(160));\n            f2 = e2.stateNode;\n            switch (e2.tag) {\n              case 5:\n                g2 = false;\n                break a;\n              case 3:\n                f2 = f2.containerInfo;\n                g2 = true;\n                break a;\n              case 4:\n                f2 = f2.containerInfo;\n                g2 = true;\n                break a;\n            }\n            e2 = e2.return;\n          }\n          e2 = true;\n        }\n        if (5 === d2.tag || 6 === d2.tag) Kg2(a2, d2, c2), g2 ? rb(f2, d2.stateNode) : qb(f2, d2.stateNode);\n        else if (18 === d2.tag) g2 ? Wb(f2, d2.stateNode) : Vb(f2, d2.stateNode);\n        else if (4 === d2.tag) {\n          if (null !== d2.child) {\n            f2 = d2.stateNode.containerInfo;\n            g2 = true;\n            d2.child.return = d2;\n            d2 = d2.child;\n            continue;\n          }\n        } else if (Ig2(a2, d2, c2), null !== d2.child) {\n          d2.child.return = d2;\n          d2 = d2.child;\n          continue;\n        }\n        if (d2 === b2) break;\n        for (; null === d2.sibling; ) {\n          if (null === d2.return || d2.return === b2) return;\n          d2 = d2.return;\n          4 === d2.tag && (e2 = false);\n        }\n        d2.sibling.return = d2.return;\n        d2 = d2.sibling;\n      }\n    }\n    function Rg2(a2, b2) {\n      if (Ua) {\n        switch (b2.tag) {\n          case 0:\n          case 11:\n          case 14:\n          case 15:\n            Fg2(3, b2, b2.return);\n            Gg2(3, b2);\n            Fg2(5, b2, b2.return);\n            return;\n          case 1:\n            return;\n          case 5:\n            var c2 = b2.stateNode;\n            if (null != c2) {\n              var d2 = b2.memoizedProps;\n              a2 = null !== a2 ? a2.memoizedProps : d2;\n              var e2 = b2.type, f2 = b2.updateQueue;\n              b2.updateQueue = null;\n              null !== f2 && nb(c2, f2, e2, a2, d2, b2);\n            }\n            return;\n          case 6:\n            if (null === b2.stateNode) throw Error(n2(162));\n            c2 = b2.memoizedProps;\n            lb(b2.stateNode, null !== a2 ? a2.memoizedProps : c2, c2);\n            return;\n          case 3:\n            p2 && null !== a2 && a2.memoizedState.isDehydrated && Tb(b2.stateNode.containerInfo);\n            return;\n          case 12:\n            return;\n          case 13:\n            Sg2(b2);\n            return;\n          case 19:\n            Sg2(b2);\n            return;\n          case 17:\n            return;\n        }\n        throw Error(n2(163));\n      }\n      switch (b2.tag) {\n        case 0:\n        case 11:\n        case 14:\n        case 15:\n          Fg2(3, b2, b2.return);\n          Gg2(3, b2);\n          Fg2(5, b2, b2.return);\n          return;\n        case 12:\n          return;\n        case 13:\n          Sg2(b2);\n          return;\n        case 19:\n          Sg2(b2);\n          return;\n        case 3:\n          p2 && null !== a2 && a2.memoizedState.isDehydrated && Tb(b2.stateNode.containerInfo);\n          break;\n        case 22:\n        case 23:\n          return;\n      }\n      a: if (Va) {\n        switch (b2.tag) {\n          case 1:\n          case 5:\n          case 6:\n            break a;\n          case 3:\n          case 4:\n            b2 = b2.stateNode;\n            Cb(b2.containerInfo, b2.pendingChildren);\n            break a;\n        }\n        throw Error(n2(163));\n      }\n    }\n    function Sg2(a2) {\n      var b2 = a2.updateQueue;\n      if (null !== b2) {\n        a2.updateQueue = null;\n        var c2 = a2.stateNode;\n        null === c2 && (c2 = a2.stateNode = new Ag2());\n        b2.forEach(function(b3) {\n          var d2 = Tg2.bind(null, a2, b3);\n          c2.has(b3) || (c2.add(b3), b3.then(d2, d2));\n        });\n      }\n    }\n    function Ug2(a2, b2) {\n      for (S2 = b2; null !== S2; ) {\n        b2 = S2;\n        var c2 = b2.deletions;\n        if (null !== c2) for (var d2 = 0; d2 < c2.length; d2++) {\n          var e2 = c2[d2];\n          try {\n            var f2 = a2;\n            Ua ? Jg2(f2, e2, b2) : Kg2(f2, e2, b2);\n            var g2 = e2.alternate;\n            null !== g2 && (g2.return = null);\n            e2.return = null;\n          } catch (wa) {\n            T2(e2, b2, wa);\n          }\n        }\n        c2 = b2.child;\n        if (0 !== (b2.subtreeFlags & 12854) && null !== c2) c2.return = b2, S2 = c2;\n        else for (; null !== S2; ) {\n          b2 = S2;\n          try {\n            var h2 = b2.flags;\n            h2 & 32 && Ua && sb(b2.stateNode);\n            if (h2 & 512) {\n              var k2 = b2.alternate;\n              if (null !== k2) {\n                var l2 = k2.ref;\n                null !== l2 && (\"function\" === typeof l2 ? l2(null) : l2.current = null);\n              }\n            }\n            if (h2 & 8192) switch (b2.tag) {\n              case 13:\n                if (null !== b2.memoizedState) {\n                  var m2 = b2.alternate;\n                  if (null === m2 || null === m2.memoizedState) Vg = E2();\n                }\n                break;\n              case 22:\n                var v2 = null !== b2.memoizedState, r2 = b2.alternate, z2 = null !== r2 && null !== r2.memoizedState;\n                c2 = b2;\n                if (Ua) {\n                  a: if (d2 = c2, e2 = v2, f2 = null, Ua) for (var q2 = d2; ; ) {\n                    if (5 === q2.tag) {\n                      if (null === f2) {\n                        f2 = q2;\n                        var N2 = q2.stateNode;\n                        e2 ? tb(N2) : vb(q2.stateNode, q2.memoizedProps);\n                      }\n                    } else if (6 === q2.tag) {\n                      if (null === f2) {\n                        var da = q2.stateNode;\n                        e2 ? ub(da) : wb(da, q2.memoizedProps);\n                      }\n                    } else if ((22 !== q2.tag && 23 !== q2.tag || null === q2.memoizedState || q2 === d2) && null !== q2.child) {\n                      q2.child.return = q2;\n                      q2 = q2.child;\n                      continue;\n                    }\n                    if (q2 === d2) break;\n                    for (; null === q2.sibling; ) {\n                      if (null === q2.return || q2.return === d2) break a;\n                      f2 === q2 && (f2 = null);\n                      q2 = q2.return;\n                    }\n                    f2 === q2 && (f2 = null);\n                    q2.sibling.return = q2.return;\n                    q2 = q2.sibling;\n                  }\n                }\n                if (v2 && !z2 && 0 !== (c2.mode & 1)) {\n                  S2 = c2;\n                  for (var t2 = c2.child; null !== t2; ) {\n                    for (c2 = S2 = t2; null !== S2; ) {\n                      d2 = S2;\n                      var w2 = d2.child;\n                      switch (d2.tag) {\n                        case 0:\n                        case 11:\n                        case 14:\n                        case 15:\n                          Fg2(4, d2, d2.return);\n                          break;\n                        case 1:\n                          Bg2(d2, d2.return);\n                          var u2 = d2.stateNode;\n                          if (\"function\" === typeof u2.componentWillUnmount) {\n                            var V2 = d2.return;\n                            try {\n                              u2.props = d2.memoizedProps, u2.state = d2.memoizedState, u2.componentWillUnmount();\n                            } catch (wa) {\n                              T2(\n                                d2,\n                                V2,\n                                wa\n                              );\n                            }\n                          }\n                          break;\n                        case 5:\n                          Bg2(d2, d2.return);\n                          break;\n                        case 22:\n                          if (null !== d2.memoizedState) {\n                            Wg(c2);\n                            continue;\n                          }\n                      }\n                      null !== w2 ? (w2.return = d2, S2 = w2) : Wg(c2);\n                    }\n                    t2 = t2.sibling;\n                  }\n                }\n            }\n            switch (h2 & 4102) {\n              case 2:\n                Og2(b2);\n                b2.flags &= -3;\n                break;\n              case 6:\n                Og2(b2);\n                b2.flags &= -3;\n                Rg2(b2.alternate, b2);\n                break;\n              case 4096:\n                b2.flags &= -4097;\n                break;\n              case 4100:\n                b2.flags &= -4097;\n                Rg2(b2.alternate, b2);\n                break;\n              case 4:\n                Rg2(b2.alternate, b2);\n            }\n          } catch (wa) {\n            T2(b2, b2.return, wa);\n          }\n          c2 = b2.sibling;\n          if (null !== c2) {\n            c2.return = b2.return;\n            S2 = c2;\n            break;\n          }\n          S2 = b2.return;\n        }\n      }\n    }\n    function Xg(a2, b2, c2) {\n      S2 = a2;\n      Yg(a2);\n    }\n    function Yg(a2, b2, c2) {\n      for (var d2 = 0 !== (a2.mode & 1); null !== S2; ) {\n        var e2 = S2, f2 = e2.child;\n        if (22 === e2.tag && d2) {\n          var g2 = null !== e2.memoizedState || yg2;\n          if (!g2) {\n            var h2 = e2.alternate, k2 = null !== h2 && null !== h2.memoizedState || zg;\n            h2 = yg2;\n            var l2 = zg;\n            yg2 = g2;\n            if ((zg = k2) && !l2) for (S2 = e2; null !== S2; ) g2 = S2, k2 = g2.child, 22 === g2.tag && null !== g2.memoizedState ? Zg(e2) : null !== k2 ? (k2.return = g2, S2 = k2) : Zg(e2);\n            for (; null !== f2; ) S2 = f2, Yg(f2), f2 = f2.sibling;\n            S2 = e2;\n            yg2 = h2;\n            zg = l2;\n          }\n          $g(a2);\n        } else 0 !== (e2.subtreeFlags & 8772) && null !== f2 ? (f2.return = e2, S2 = f2) : $g(a2);\n      }\n    }\n    function $g(a2) {\n      for (; null !== S2; ) {\n        var b2 = S2;\n        if (0 !== (b2.flags & 8772)) {\n          var c2 = b2.alternate;\n          try {\n            if (0 !== (b2.flags & 8772)) switch (b2.tag) {\n              case 0:\n              case 11:\n              case 15:\n                zg || Gg2(5, b2);\n                break;\n              case 1:\n                var d2 = b2.stateNode;\n                if (b2.flags & 4 && !zg) if (null === c2) d2.componentDidMount();\n                else {\n                  var e2 = b2.elementType === b2.type ? c2.memoizedProps : ad(b2.type, c2.memoizedProps);\n                  d2.componentDidUpdate(e2, c2.memoizedState, d2.__reactInternalSnapshotBeforeUpdate);\n                }\n                var f2 = b2.updateQueue;\n                null !== f2 && wd(b2, f2, d2);\n                break;\n              case 3:\n                var g2 = b2.updateQueue;\n                if (null !== g2) {\n                  c2 = null;\n                  if (null !== b2.child) switch (b2.child.tag) {\n                    case 5:\n                      c2 = Fa(b2.child.stateNode);\n                      break;\n                    case 1:\n                      c2 = b2.child.stateNode;\n                  }\n                  wd(b2, g2, c2);\n                }\n                break;\n              case 5:\n                var h2 = b2.stateNode;\n                null === c2 && b2.flags & 4 && mb(h2, b2.type, b2.memoizedProps, b2);\n                break;\n              case 6:\n                break;\n              case 4:\n                break;\n              case 12:\n                break;\n              case 13:\n                if (p2 && null === b2.memoizedState) {\n                  var k2 = b2.alternate;\n                  if (null !== k2) {\n                    var l2 = k2.memoizedState;\n                    if (null !== l2) {\n                      var m2 = l2.dehydrated;\n                      null !== m2 && Ub(m2);\n                    }\n                  }\n                }\n                break;\n              case 19:\n              case 17:\n              case 21:\n              case 22:\n              case 23:\n                break;\n              default:\n                throw Error(n2(163));\n            }\n            zg || b2.flags & 512 && Hg(b2);\n          } catch (v2) {\n            T2(b2, b2.return, v2);\n          }\n        }\n        if (b2 === a2) {\n          S2 = null;\n          break;\n        }\n        c2 = b2.sibling;\n        if (null !== c2) {\n          c2.return = b2.return;\n          S2 = c2;\n          break;\n        }\n        S2 = b2.return;\n      }\n    }\n    function Wg(a2) {\n      for (; null !== S2; ) {\n        var b2 = S2;\n        if (b2 === a2) {\n          S2 = null;\n          break;\n        }\n        var c2 = b2.sibling;\n        if (null !== c2) {\n          c2.return = b2.return;\n          S2 = c2;\n          break;\n        }\n        S2 = b2.return;\n      }\n    }\n    function Zg(a2) {\n      for (; null !== S2; ) {\n        var b2 = S2;\n        try {\n          switch (b2.tag) {\n            case 0:\n            case 11:\n            case 15:\n              var c2 = b2.return;\n              try {\n                Gg2(4, b2);\n              } catch (k2) {\n                T2(b2, c2, k2);\n              }\n              break;\n            case 1:\n              var d2 = b2.stateNode;\n              if (\"function\" === typeof d2.componentDidMount) {\n                var e2 = b2.return;\n                try {\n                  d2.componentDidMount();\n                } catch (k2) {\n                  T2(b2, e2, k2);\n                }\n              }\n              var f2 = b2.return;\n              try {\n                Hg(b2);\n              } catch (k2) {\n                T2(b2, f2, k2);\n              }\n              break;\n            case 5:\n              var g2 = b2.return;\n              try {\n                Hg(b2);\n              } catch (k2) {\n                T2(b2, g2, k2);\n              }\n          }\n        } catch (k2) {\n          T2(b2, b2.return, k2);\n        }\n        if (b2 === a2) {\n          S2 = null;\n          break;\n        }\n        var h2 = b2.sibling;\n        if (null !== h2) {\n          h2.return = b2.return;\n          S2 = h2;\n          break;\n        }\n        S2 = b2.return;\n      }\n    }\n    var ah = 0, bh = 1, ch = 2, dh = 3, eh = 4;\n    if (\"function\" === typeof Symbol && Symbol.for) {\n      var fh = Symbol.for;\n      ah = fh(\"selector.component\");\n      bh = fh(\"selector.has_pseudo_class\");\n      ch = fh(\"selector.role\");\n      dh = fh(\"selector.test_id\");\n      eh = fh(\"selector.text\");\n    }\n    function gh(a2) {\n      var b2 = Wa(a2);\n      if (null != b2) {\n        if (\"string\" !== typeof b2.memoizedProps[\"data-testname\"]) throw Error(n2(364));\n        return b2;\n      }\n      a2 = cb(a2);\n      if (null === a2) throw Error(n2(362));\n      return a2.stateNode.current;\n    }\n    function hh(a2, b2) {\n      switch (b2.$$typeof) {\n        case ah:\n          if (a2.type === b2.value) return true;\n          break;\n        case bh:\n          a: {\n            b2 = b2.value;\n            a2 = [a2, 0];\n            for (var c2 = 0; c2 < a2.length; ) {\n              var d2 = a2[c2++], e2 = a2[c2++], f2 = b2[e2];\n              if (5 !== d2.tag || !fb(d2)) {\n                for (; null != f2 && hh(d2, f2); ) e2++, f2 = b2[e2];\n                if (e2 === b2.length) {\n                  b2 = true;\n                  break a;\n                } else for (d2 = d2.child; null !== d2; ) a2.push(d2, e2), d2 = d2.sibling;\n              }\n            }\n            b2 = false;\n          }\n          return b2;\n        case ch:\n          if (5 === a2.tag && gb(a2.stateNode, b2.value)) return true;\n          break;\n        case eh:\n          if (5 === a2.tag || 6 === a2.tag) {\n            if (a2 = eb(a2), null !== a2 && 0 <= a2.indexOf(b2.value)) return true;\n          }\n          break;\n        case dh:\n          if (5 === a2.tag && (a2 = a2.memoizedProps[\"data-testname\"], \"string\" === typeof a2 && a2.toLowerCase() === b2.value.toLowerCase())) return true;\n          break;\n        default:\n          throw Error(n2(365));\n      }\n      return false;\n    }\n    function ih(a2) {\n      switch (a2.$$typeof) {\n        case ah:\n          return \"<\" + (va(a2.value) || \"Unknown\") + \">\";\n        case bh:\n          return \":has(\" + (ih(a2) || \"\") + \")\";\n        case ch:\n          return '[role=\"' + a2.value + '\"]';\n        case eh:\n          return '\"' + a2.value + '\"';\n        case dh:\n          return '[data-testname=\"' + a2.value + '\"]';\n        default:\n          throw Error(n2(365));\n      }\n    }\n    function jh(a2, b2) {\n      var c2 = [];\n      a2 = [a2, 0];\n      for (var d2 = 0; d2 < a2.length; ) {\n        var e2 = a2[d2++], f2 = a2[d2++], g2 = b2[f2];\n        if (5 !== e2.tag || !fb(e2)) {\n          for (; null != g2 && hh(e2, g2); ) f2++, g2 = b2[f2];\n          if (f2 === b2.length) c2.push(e2);\n          else for (e2 = e2.child; null !== e2; ) a2.push(e2, f2), e2 = e2.sibling;\n        }\n      }\n      return c2;\n    }\n    function kh(a2, b2) {\n      if (!bb) throw Error(n2(363));\n      a2 = gh(a2);\n      a2 = jh(a2, b2);\n      b2 = [];\n      a2 = Array.from(a2);\n      for (var c2 = 0; c2 < a2.length; ) {\n        var d2 = a2[c2++];\n        if (5 === d2.tag) fb(d2) || b2.push(d2.stateNode);\n        else for (d2 = d2.child; null !== d2; ) a2.push(d2), d2 = d2.sibling;\n      }\n      return b2;\n    }\n    var lh = Math.ceil, mh = ea.ReactCurrentDispatcher, nh = ea.ReactCurrentOwner, U2 = ea.ReactCurrentBatchConfig, G2 = 0, F2 = null, W2 = null, X2 = 0, Wf = 0, eg = gc(0), Q2 = 0, oh = null, vd = 0, ph = 0, qh = 0, rh = null, Y2 = null, Vg = 0, Uf = Infinity;\n    function sh() {\n      Uf = E2() + 500;\n    }\n    var Bf = false, Cf = null, Ef = null, th = false, uh = null, vh = 0, wh = 0, xh = null, yh = -1, zh = 0;\n    function H2() {\n      return 0 !== (G2 & 6) ? E2() : -1 !== yh ? yh : yh = E2();\n    }\n    function zd(a2) {\n      if (0 === (a2.mode & 1)) return 1;\n      if (0 !== (G2 & 2) && 0 !== X2) return X2 & -X2;\n      if (null !== Yc.transition) return 0 === zh && (a2 = tc, tc <<= 1, 0 === (tc & 4194240) && (tc = 64), zh = a2), zh;\n      a2 = D2;\n      return 0 !== a2 ? a2 : Ya();\n    }\n    function Ad(a2, b2, c2) {\n      if (50 < wh) throw wh = 0, xh = null, Error(n2(185));\n      var d2 = Ah(a2, b2);\n      if (null === d2) return null;\n      Bc(d2, b2, c2);\n      if (0 === (G2 & 2) || d2 !== F2) d2 === F2 && (0 === (G2 & 2) && (ph |= b2), 4 === Q2 && Bh(d2, X2)), Z2(d2, c2), 1 === b2 && 0 === G2 && 0 === (a2.mode & 1) && (sh(), Tc && Xc());\n      return d2;\n    }\n    function Ah(a2, b2) {\n      a2.lanes |= b2;\n      var c2 = a2.alternate;\n      null !== c2 && (c2.lanes |= b2);\n      c2 = a2;\n      for (a2 = a2.return; null !== a2; ) a2.childLanes |= b2, c2 = a2.alternate, null !== c2 && (c2.childLanes |= b2), c2 = a2, a2 = a2.return;\n      return 3 === c2.tag ? c2.stateNode : null;\n    }\n    function Z2(a2, b2) {\n      var c2 = a2.callbackNode;\n      yc(a2, b2);\n      var d2 = wc(a2, a2 === F2 ? X2 : 0);\n      if (0 === d2) null !== c2 && Gc(c2), a2.callbackNode = null, a2.callbackPriority = 0;\n      else if (b2 = d2 & -d2, a2.callbackPriority !== b2) {\n        null != c2 && Gc(c2);\n        if (1 === b2) 0 === a2.tag ? Wc(Ch.bind(null, a2)) : Vc(Ch.bind(null, a2)), $a ? ab(function() {\n          0 === G2 && Xc();\n        }) : Fc(Jc, Xc), c2 = null;\n        else {\n          switch (Ec(d2)) {\n            case 1:\n              c2 = Jc;\n              break;\n            case 4:\n              c2 = Kc;\n              break;\n            case 16:\n              c2 = Lc;\n              break;\n            case 536870912:\n              c2 = Mc;\n              break;\n            default:\n              c2 = Lc;\n          }\n          c2 = Dh(c2, Eh.bind(null, a2));\n        }\n        a2.callbackPriority = b2;\n        a2.callbackNode = c2;\n      }\n    }\n    function Eh(a2, b2) {\n      yh = -1;\n      zh = 0;\n      if (0 !== (G2 & 6)) throw Error(n2(327));\n      var c2 = a2.callbackNode;\n      if (Fh() && a2.callbackNode !== c2) return null;\n      var d2 = wc(a2, a2 === F2 ? X2 : 0);\n      if (0 === d2) return null;\n      if (0 !== (d2 & 30) || 0 !== (d2 & a2.expiredLanes) || b2) b2 = Gh(a2, d2);\n      else {\n        b2 = d2;\n        var e2 = G2;\n        G2 |= 2;\n        var f2 = Hh();\n        if (F2 !== a2 || X2 !== b2) sh(), Ih(a2, b2);\n        do\n          try {\n            Jh();\n            break;\n          } catch (h2) {\n            Kh(a2, h2);\n          }\n        while (1);\n        fd2();\n        mh.current = f2;\n        G2 = e2;\n        null !== W2 ? b2 = 0 : (F2 = null, X2 = 0, b2 = Q2);\n      }\n      if (0 !== b2) {\n        2 === b2 && (e2 = zc(a2), 0 !== e2 && (d2 = e2, b2 = Lh(a2, e2)));\n        if (1 === b2) throw c2 = oh, Ih(a2, 0), Bh(a2, d2), Z2(a2, E2()), c2;\n        if (6 === b2) Bh(a2, d2);\n        else {\n          e2 = a2.current.alternate;\n          if (0 === (d2 & 30) && !Mh(e2) && (b2 = Gh(a2, d2), 2 === b2 && (f2 = zc(a2), 0 !== f2 && (d2 = f2, b2 = Lh(a2, f2))), 1 === b2)) throw c2 = oh, Ih(a2, 0), Bh(a2, d2), Z2(a2, E2()), c2;\n          a2.finishedWork = e2;\n          a2.finishedLanes = d2;\n          switch (b2) {\n            case 0:\n            case 1:\n              throw Error(n2(345));\n            case 2:\n              Nh(a2, Y2);\n              break;\n            case 3:\n              Bh(a2, d2);\n              if ((d2 & 130023424) === d2 && (b2 = Vg + 500 - E2(), 10 < b2)) {\n                if (0 !== wc(a2, 0)) break;\n                e2 = a2.suspendedLanes;\n                if ((e2 & d2) !== d2) {\n                  H2();\n                  a2.pingedLanes |= a2.suspendedLanes & e2;\n                  break;\n                }\n                a2.timeoutHandle = Qa(Nh.bind(null, a2, Y2), b2);\n                break;\n              }\n              Nh(a2, Y2);\n              break;\n            case 4:\n              Bh(a2, d2);\n              if ((d2 & 4194240) === d2) break;\n              b2 = a2.eventTimes;\n              for (e2 = -1; 0 < d2; ) {\n                var g2 = 31 - qc(d2);\n                f2 = 1 << g2;\n                g2 = b2[g2];\n                g2 > e2 && (e2 = g2);\n                d2 &= ~f2;\n              }\n              d2 = e2;\n              d2 = E2() - d2;\n              d2 = (120 > d2 ? 120 : 480 > d2 ? 480 : 1080 > d2 ? 1080 : 1920 > d2 ? 1920 : 3e3 > d2 ? 3e3 : 4320 > d2 ? 4320 : 1960 * lh(d2 / 1960)) - d2;\n              if (10 < d2) {\n                a2.timeoutHandle = Qa(Nh.bind(null, a2, Y2), d2);\n                break;\n              }\n              Nh(a2, Y2);\n              break;\n            case 5:\n              Nh(a2, Y2);\n              break;\n            default:\n              throw Error(n2(329));\n          }\n        }\n      }\n      Z2(a2, E2());\n      return a2.callbackNode === c2 ? Eh.bind(null, a2) : null;\n    }\n    function Lh(a2, b2) {\n      var c2 = rh;\n      a2.current.memoizedState.isDehydrated && (Ih(a2, b2).flags |= 256);\n      a2 = Gh(a2, b2);\n      2 !== a2 && (b2 = Y2, Y2 = c2, null !== b2 && Sf(b2));\n      return a2;\n    }\n    function Sf(a2) {\n      null === Y2 ? Y2 = a2 : Y2.push.apply(Y2, a2);\n    }\n    function Mh(a2) {\n      for (var b2 = a2; ; ) {\n        if (b2.flags & 16384) {\n          var c2 = b2.updateQueue;\n          if (null !== c2 && (c2 = c2.stores, null !== c2)) for (var d2 = 0; d2 < c2.length; d2++) {\n            var e2 = c2[d2], f2 = e2.getSnapshot;\n            e2 = e2.value;\n            try {\n              if (!Rc(f2(), e2)) return false;\n            } catch (g2) {\n              return false;\n            }\n          }\n        }\n        c2 = b2.child;\n        if (b2.subtreeFlags & 16384 && null !== c2) c2.return = b2, b2 = c2;\n        else {\n          if (b2 === a2) break;\n          for (; null === b2.sibling; ) {\n            if (null === b2.return || b2.return === a2) return true;\n            b2 = b2.return;\n          }\n          b2.sibling.return = b2.return;\n          b2 = b2.sibling;\n        }\n      }\n      return true;\n    }\n    function Bh(a2, b2) {\n      b2 &= ~qh;\n      b2 &= ~ph;\n      a2.suspendedLanes |= b2;\n      a2.pingedLanes &= ~b2;\n      for (a2 = a2.expirationTimes; 0 < b2; ) {\n        var c2 = 31 - qc(b2), d2 = 1 << c2;\n        a2[c2] = -1;\n        b2 &= ~d2;\n      }\n    }\n    function Ch(a2) {\n      if (0 !== (G2 & 6)) throw Error(n2(327));\n      Fh();\n      var b2 = wc(a2, 0);\n      if (0 === (b2 & 1)) return Z2(a2, E2()), null;\n      var c2 = Gh(a2, b2);\n      if (0 !== a2.tag && 2 === c2) {\n        var d2 = zc(a2);\n        0 !== d2 && (b2 = d2, c2 = Lh(a2, d2));\n      }\n      if (1 === c2) throw c2 = oh, Ih(a2, 0), Bh(a2, b2), Z2(a2, E2()), c2;\n      if (6 === c2) throw Error(n2(345));\n      a2.finishedWork = a2.current.alternate;\n      a2.finishedLanes = b2;\n      Nh(a2, Y2);\n      Z2(a2, E2());\n      return null;\n    }\n    function Oh(a2) {\n      null !== uh && 0 === uh.tag && 0 === (G2 & 6) && Fh();\n      var b2 = G2;\n      G2 |= 1;\n      var c2 = U2.transition, d2 = D2;\n      try {\n        if (U2.transition = null, D2 = 1, a2) return a2();\n      } finally {\n        D2 = d2, U2.transition = c2, G2 = b2, 0 === (G2 & 6) && Xc();\n      }\n    }\n    function Vf() {\n      Wf = eg.current;\n      x2(eg);\n    }\n    function Ih(a2, b2) {\n      a2.finishedWork = null;\n      a2.finishedLanes = 0;\n      var c2 = a2.timeoutHandle;\n      c2 !== Sa && (a2.timeoutHandle = Sa, Ra(c2));\n      if (null !== W2) for (c2 = W2.return; null !== c2; ) {\n        var d2 = c2;\n        Sd(d2);\n        switch (d2.tag) {\n          case 1:\n            d2 = d2.type.childContextTypes;\n            null !== d2 && void 0 !== d2 && kc();\n            break;\n          case 3:\n            we();\n            x2(B2);\n            x2(A2);\n            Be();\n            break;\n          case 5:\n            ye(d2);\n            break;\n          case 4:\n            we();\n            break;\n          case 13:\n            x2(J2);\n            break;\n          case 19:\n            x2(J2);\n            break;\n          case 10:\n            hd(d2.type._context);\n            break;\n          case 22:\n          case 23:\n            Vf();\n        }\n        c2 = c2.return;\n      }\n      F2 = a2;\n      W2 = a2 = je(a2.current, null);\n      X2 = Wf = b2;\n      Q2 = 0;\n      oh = null;\n      qh = ph = vd = 0;\n      Y2 = rh = null;\n      if (null !== md) {\n        for (b2 = 0; b2 < md.length; b2++) if (c2 = md[b2], d2 = c2.interleaved, null !== d2) {\n          c2.interleaved = null;\n          var e2 = d2.next, f2 = c2.pending;\n          if (null !== f2) {\n            var g2 = f2.next;\n            f2.next = e2;\n            d2.next = g2;\n          }\n          c2.pending = d2;\n        }\n        md = null;\n      }\n      return a2;\n    }\n    function Kh(a2, b2) {\n      do {\n        var c2 = W2;\n        try {\n          fd2();\n          Ce.current = Oe;\n          if (Fe) {\n            for (var d2 = K2.memoizedState; null !== d2; ) {\n              var e2 = d2.queue;\n              null !== e2 && (e2.pending = null);\n              d2 = d2.next;\n            }\n            Fe = false;\n          }\n          Ee = 0;\n          M2 = L2 = K2 = null;\n          Ge = false;\n          He = 0;\n          nh.current = null;\n          if (null === c2 || null === c2.return) {\n            Q2 = 1;\n            oh = b2;\n            W2 = null;\n            break;\n          }\n          a: {\n            var f2 = a2, g2 = c2.return, h2 = c2, k2 = b2;\n            b2 = X2;\n            h2.flags |= 32768;\n            if (null !== k2 && \"object\" === typeof k2 && \"function\" === typeof k2.then) {\n              var l2 = k2, m2 = h2, v2 = m2.tag;\n              if (0 === (m2.mode & 1) && (0 === v2 || 11 === v2 || 15 === v2)) {\n                var r2 = m2.alternate;\n                r2 ? (m2.updateQueue = r2.updateQueue, m2.memoizedState = r2.memoizedState, m2.lanes = r2.lanes) : (m2.updateQueue = null, m2.memoizedState = null);\n              }\n              var z2 = Hf(g2);\n              if (null !== z2) {\n                z2.flags &= -257;\n                If(z2, g2, h2, f2, b2);\n                z2.mode & 1 && Ff(f2, l2, b2);\n                b2 = z2;\n                k2 = l2;\n                var q2 = b2.updateQueue;\n                if (null === q2) {\n                  var N2 = /* @__PURE__ */ new Set();\n                  N2.add(k2);\n                  b2.updateQueue = N2;\n                } else q2.add(k2);\n                break a;\n              } else {\n                if (0 === (b2 & 1)) {\n                  Ff(f2, l2, b2);\n                  Tf();\n                  break a;\n                }\n                k2 = Error(n2(426));\n              }\n            } else if (I2 && h2.mode & 1) {\n              var da = Hf(g2);\n              if (null !== da) {\n                0 === (da.flags & 65536) && (da.flags |= 256);\n                If(da, g2, h2, f2, b2);\n                ee(k2);\n                break a;\n              }\n            }\n            f2 = k2;\n            4 !== Q2 && (Q2 = 2);\n            null === rh ? rh = [f2] : rh.push(f2);\n            k2 = xf(k2, h2);\n            h2 = g2;\n            do {\n              switch (h2.tag) {\n                case 3:\n                  h2.flags |= 65536;\n                  b2 &= -b2;\n                  h2.lanes |= b2;\n                  var t2 = Af(h2, k2, b2);\n                  td2(h2, t2);\n                  break a;\n                case 1:\n                  f2 = k2;\n                  var w2 = h2.type, u2 = h2.stateNode;\n                  if (0 === (h2.flags & 128) && (\"function\" === typeof w2.getDerivedStateFromError || null !== u2 && \"function\" === typeof u2.componentDidCatch && (null === Ef || !Ef.has(u2)))) {\n                    h2.flags |= 65536;\n                    b2 &= -b2;\n                    h2.lanes |= b2;\n                    var V2 = Df(h2, f2, b2);\n                    td2(h2, V2);\n                    break a;\n                  }\n              }\n              h2 = h2.return;\n            } while (null !== h2);\n          }\n          Ph(c2);\n        } catch (wa) {\n          b2 = wa;\n          W2 === c2 && null !== c2 && (W2 = c2 = c2.return);\n          continue;\n        }\n        break;\n      } while (1);\n    }\n    function Hh() {\n      var a2 = mh.current;\n      mh.current = Oe;\n      return null === a2 ? Oe : a2;\n    }\n    function Tf() {\n      if (0 === Q2 || 3 === Q2 || 2 === Q2) Q2 = 4;\n      null === F2 || 0 === (vd & 268435455) && 0 === (ph & 268435455) || Bh(F2, X2);\n    }\n    function Gh(a2, b2) {\n      var c2 = G2;\n      G2 |= 2;\n      var d2 = Hh();\n      F2 === a2 && X2 === b2 || Ih(a2, b2);\n      do\n        try {\n          Qh();\n          break;\n        } catch (e2) {\n          Kh(a2, e2);\n        }\n      while (1);\n      fd2();\n      G2 = c2;\n      mh.current = d2;\n      if (null !== W2) throw Error(n2(261));\n      F2 = null;\n      X2 = 0;\n      return Q2;\n    }\n    function Qh() {\n      for (; null !== W2; ) Rh(W2);\n    }\n    function Jh() {\n      for (; null !== W2 && !Hc(); ) Rh(W2);\n    }\n    function Rh(a2) {\n      var b2 = Sh(a2.alternate, a2, Wf);\n      a2.memoizedProps = a2.pendingProps;\n      null === b2 ? Ph(a2) : W2 = b2;\n      nh.current = null;\n    }\n    function Ph(a2) {\n      var b2 = a2;\n      do {\n        var c2 = b2.alternate;\n        a2 = b2.return;\n        if (0 === (b2.flags & 32768)) {\n          if (c2 = Rf(c2, b2, Wf), null !== c2) {\n            W2 = c2;\n            return;\n          }\n        } else {\n          c2 = xg(c2, b2);\n          if (null !== c2) {\n            c2.flags &= 32767;\n            W2 = c2;\n            return;\n          }\n          if (null !== a2) a2.flags |= 32768, a2.subtreeFlags = 0, a2.deletions = null;\n          else {\n            Q2 = 6;\n            W2 = null;\n            return;\n          }\n        }\n        b2 = b2.sibling;\n        if (null !== b2) {\n          W2 = b2;\n          return;\n        }\n        W2 = b2 = a2;\n      } while (null !== b2);\n      0 === Q2 && (Q2 = 5);\n    }\n    function Nh(a2, b2) {\n      var c2 = D2, d2 = U2.transition;\n      try {\n        U2.transition = null, D2 = 1, Th(a2, b2, c2);\n      } finally {\n        U2.transition = d2, D2 = c2;\n      }\n      return null;\n    }\n    function Th(a2, b2, c2) {\n      do\n        Fh();\n      while (null !== uh);\n      if (0 !== (G2 & 6)) throw Error(n2(327));\n      var d2 = a2.finishedWork, e2 = a2.finishedLanes;\n      if (null === d2) return null;\n      a2.finishedWork = null;\n      a2.finishedLanes = 0;\n      if (d2 === a2.current) throw Error(n2(177));\n      a2.callbackNode = null;\n      a2.callbackPriority = 0;\n      var f2 = d2.lanes | d2.childLanes;\n      Cc(a2, f2);\n      a2 === F2 && (W2 = F2 = null, X2 = 0);\n      0 === (d2.subtreeFlags & 2064) && 0 === (d2.flags & 2064) || th || (th = true, Dh(Lc, function() {\n        Fh();\n        return null;\n      }));\n      f2 = 0 !== (d2.flags & 15990);\n      if (0 !== (d2.subtreeFlags & 15990) || f2) {\n        f2 = U2.transition;\n        U2.transition = null;\n        var g2 = D2;\n        D2 = 1;\n        var h2 = G2;\n        G2 |= 4;\n        nh.current = null;\n        Eg2(a2, d2);\n        Ug2(a2, d2);\n        Ja(a2.containerInfo);\n        a2.current = d2;\n        Xg(d2);\n        Ic();\n        G2 = h2;\n        D2 = g2;\n        U2.transition = f2;\n      } else a2.current = d2;\n      th && (th = false, uh = a2, vh = e2);\n      f2 = a2.pendingLanes;\n      0 === f2 && (Ef = null);\n      Pc(d2.stateNode);\n      Z2(a2, E2());\n      if (null !== b2) for (c2 = a2.onRecoverableError, d2 = 0; d2 < b2.length; d2++) c2(b2[d2]);\n      if (Bf) throw Bf = false, a2 = Cf, Cf = null, a2;\n      0 !== (vh & 1) && 0 !== a2.tag && Fh();\n      f2 = a2.pendingLanes;\n      0 !== (f2 & 1) ? a2 === xh ? wh++ : (wh = 0, xh = a2) : wh = 0;\n      Xc();\n      return null;\n    }\n    function Fh() {\n      if (null !== uh) {\n        var a2 = Ec(vh), b2 = U2.transition, c2 = D2;\n        try {\n          U2.transition = null;\n          D2 = 16 > a2 ? 16 : a2;\n          if (null === uh) var d2 = false;\n          else {\n            a2 = uh;\n            uh = null;\n            vh = 0;\n            if (0 !== (G2 & 6)) throw Error(n2(331));\n            var e2 = G2;\n            G2 |= 4;\n            for (S2 = a2.current; null !== S2; ) {\n              var f2 = S2, g2 = f2.child;\n              if (0 !== (S2.flags & 16)) {\n                var h2 = f2.deletions;\n                if (null !== h2) {\n                  for (var k2 = 0; k2 < h2.length; k2++) {\n                    var l2 = h2[k2];\n                    for (S2 = l2; null !== S2; ) {\n                      var m2 = S2;\n                      switch (m2.tag) {\n                        case 0:\n                        case 11:\n                        case 15:\n                          Fg2(8, m2, f2);\n                      }\n                      var v2 = m2.child;\n                      if (null !== v2) v2.return = m2, S2 = v2;\n                      else for (; null !== S2; ) {\n                        m2 = S2;\n                        var r2 = m2.sibling, z2 = m2.return;\n                        Lg(m2);\n                        if (m2 === l2) {\n                          S2 = null;\n                          break;\n                        }\n                        if (null !== r2) {\n                          r2.return = z2;\n                          S2 = r2;\n                          break;\n                        }\n                        S2 = z2;\n                      }\n                    }\n                  }\n                  var q2 = f2.alternate;\n                  if (null !== q2) {\n                    var N2 = q2.child;\n                    if (null !== N2) {\n                      q2.child = null;\n                      do {\n                        var da = N2.sibling;\n                        N2.sibling = null;\n                        N2 = da;\n                      } while (null !== N2);\n                    }\n                  }\n                  S2 = f2;\n                }\n              }\n              if (0 !== (f2.subtreeFlags & 2064) && null !== g2) g2.return = f2, S2 = g2;\n              else b: for (; null !== S2; ) {\n                f2 = S2;\n                if (0 !== (f2.flags & 2048)) switch (f2.tag) {\n                  case 0:\n                  case 11:\n                  case 15:\n                    Fg2(9, f2, f2.return);\n                }\n                var t2 = f2.sibling;\n                if (null !== t2) {\n                  t2.return = f2.return;\n                  S2 = t2;\n                  break b;\n                }\n                S2 = f2.return;\n              }\n            }\n            var w2 = a2.current;\n            for (S2 = w2; null !== S2; ) {\n              g2 = S2;\n              var u2 = g2.child;\n              if (0 !== (g2.subtreeFlags & 2064) && null !== u2) u2.return = g2, S2 = u2;\n              else b: for (g2 = w2; null !== S2; ) {\n                h2 = S2;\n                if (0 !== (h2.flags & 2048)) try {\n                  switch (h2.tag) {\n                    case 0:\n                    case 11:\n                    case 15:\n                      Gg2(9, h2);\n                  }\n                } catch (wa) {\n                  T2(h2, h2.return, wa);\n                }\n                if (h2 === g2) {\n                  S2 = null;\n                  break b;\n                }\n                var V2 = h2.sibling;\n                if (null !== V2) {\n                  V2.return = h2.return;\n                  S2 = V2;\n                  break b;\n                }\n                S2 = h2.return;\n              }\n            }\n            G2 = e2;\n            Xc();\n            if (Oc && \"function\" === typeof Oc.onPostCommitFiberRoot) try {\n              Oc.onPostCommitFiberRoot(Nc, a2);\n            } catch (wa) {\n            }\n            d2 = true;\n          }\n          return d2;\n        } finally {\n          D2 = c2, U2.transition = b2;\n        }\n      }\n      return false;\n    }\n    function Uh(a2, b2, c2) {\n      b2 = xf(c2, b2);\n      b2 = Af(a2, b2, 1);\n      rd(a2, b2);\n      b2 = H2();\n      a2 = Ah(a2, 1);\n      null !== a2 && (Bc(a2, 1, b2), Z2(a2, b2));\n    }\n    function T2(a2, b2, c2) {\n      if (3 === a2.tag) Uh(a2, a2, c2);\n      else for (; null !== b2; ) {\n        if (3 === b2.tag) {\n          Uh(b2, a2, c2);\n          break;\n        } else if (1 === b2.tag) {\n          var d2 = b2.stateNode;\n          if (\"function\" === typeof b2.type.getDerivedStateFromError || \"function\" === typeof d2.componentDidCatch && (null === Ef || !Ef.has(d2))) {\n            a2 = xf(c2, a2);\n            a2 = Df(b2, a2, 1);\n            rd(b2, a2);\n            a2 = H2();\n            b2 = Ah(b2, 1);\n            null !== b2 && (Bc(b2, 1, a2), Z2(b2, a2));\n            break;\n          }\n        }\n        b2 = b2.return;\n      }\n    }\n    function Gf(a2, b2, c2) {\n      var d2 = a2.pingCache;\n      null !== d2 && d2.delete(b2);\n      b2 = H2();\n      a2.pingedLanes |= a2.suspendedLanes & c2;\n      F2 === a2 && (X2 & c2) === c2 && (4 === Q2 || 3 === Q2 && (X2 & 130023424) === X2 && 500 > E2() - Vg ? Ih(a2, 0) : qh |= c2);\n      Z2(a2, b2);\n    }\n    function Vh(a2, b2) {\n      0 === b2 && (0 === (a2.mode & 1) ? b2 = 1 : (b2 = uc, uc <<= 1, 0 === (uc & 130023424) && (uc = 4194304)));\n      var c2 = H2();\n      a2 = Ah(a2, b2);\n      null !== a2 && (Bc(a2, b2, c2), Z2(a2, c2));\n    }\n    function qg2(a2) {\n      var b2 = a2.memoizedState, c2 = 0;\n      null !== b2 && (c2 = b2.retryLane);\n      Vh(a2, c2);\n    }\n    function Tg2(a2, b2) {\n      var c2 = 0;\n      switch (a2.tag) {\n        case 13:\n          var d2 = a2.stateNode;\n          var e2 = a2.memoizedState;\n          null !== e2 && (c2 = e2.retryLane);\n          break;\n        case 19:\n          d2 = a2.stateNode;\n          break;\n        default:\n          throw Error(n2(314));\n      }\n      null !== d2 && d2.delete(b2);\n      Vh(a2, c2);\n    }\n    var Sh;\n    Sh = function(a2, b2, c2) {\n      if (null !== a2) if (a2.memoizedProps !== b2.pendingProps || B2.current) kd = true;\n      else {\n        if (0 === (a2.lanes & c2) && 0 === (b2.flags & 128)) return kd = false, wg2(a2, b2, c2);\n        kd = 0 !== (a2.flags & 131072) ? true : false;\n      }\n      else kd = false, I2 && 0 !== (b2.flags & 1048576) && Qd(b2, Jd, b2.index);\n      b2.lanes = 0;\n      switch (b2.tag) {\n        case 2:\n          var d2 = b2.type;\n          null !== a2 && (a2.alternate = null, b2.alternate = null, b2.flags |= 2);\n          a2 = b2.pendingProps;\n          var e2 = jc(b2, A2.current);\n          jd(b2, c2);\n          e2 = Ke(null, b2, d2, a2, e2, c2);\n          var f2 = Pe();\n          b2.flags |= 1;\n          \"object\" === typeof e2 && null !== e2 && \"function\" === typeof e2.render && void 0 === e2.$$typeof ? (b2.tag = 1, b2.memoizedState = null, b2.updateQueue = null, C2(d2) ? (f2 = true, nc(b2)) : f2 = false, b2.memoizedState = null !== e2.state && void 0 !== e2.state ? e2.state : null, od(b2), e2.updater = Bd, b2.stateNode = e2, e2._reactInternals = b2, Fd(b2, d2, a2, c2), b2 = hg2(null, b2, d2, true, f2, c2)) : (b2.tag = 0, I2 && f2 && Rd(b2), R2(null, b2, e2, c2), b2 = b2.child);\n          return b2;\n        case 16:\n          d2 = b2.elementType;\n          a: {\n            null !== a2 && (a2.alternate = null, b2.alternate = null, b2.flags |= 2);\n            a2 = b2.pendingProps;\n            e2 = d2._init;\n            d2 = e2(d2._payload);\n            b2.type = d2;\n            e2 = b2.tag = Wh(d2);\n            a2 = ad(d2, a2);\n            switch (e2) {\n              case 0:\n                b2 = cg2(null, b2, d2, a2, c2);\n                break a;\n              case 1:\n                b2 = gg2(\n                  null,\n                  b2,\n                  d2,\n                  a2,\n                  c2\n                );\n                break a;\n              case 11:\n                b2 = Yf(null, b2, d2, a2, c2);\n                break a;\n              case 14:\n                b2 = $f(null, b2, d2, ad(d2.type, a2), c2);\n                break a;\n            }\n            throw Error(n2(306, d2, \"\"));\n          }\n          return b2;\n        case 0:\n          return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : ad(d2, e2), cg2(a2, b2, d2, e2, c2);\n        case 1:\n          return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : ad(d2, e2), gg2(a2, b2, d2, e2, c2);\n        case 3:\n          a: {\n            ig2(b2);\n            if (null === a2) throw Error(n2(387));\n            d2 = b2.pendingProps;\n            f2 = b2.memoizedState;\n            e2 = f2.element;\n            pd(a2, b2);\n            ud(b2, d2, null, c2);\n            var g2 = b2.memoizedState;\n            d2 = g2.element;\n            if (p2 && f2.isDehydrated) if (f2 = {\n              element: d2,\n              isDehydrated: false,\n              cache: g2.cache,\n              transitions: g2.transitions\n            }, b2.updateQueue.baseState = f2, b2.memoizedState = f2, b2.flags & 256) {\n              e2 = Error(n2(423));\n              b2 = jg(a2, b2, d2, c2, e2);\n              break a;\n            } else if (d2 !== e2) {\n              e2 = Error(n2(424));\n              b2 = jg(a2, b2, d2, c2, e2);\n              break a;\n            } else for (p2 && (Ud = Nb(b2.stateNode.containerInfo), Td = b2, I2 = true, Wd = null, Vd = false), c2 = pe(b2, null, d2, c2), b2.child = c2; c2; ) c2.flags = c2.flags & -3 | 4096, c2 = c2.sibling;\n            else {\n              de();\n              if (d2 === e2) {\n                b2 = Zf(a2, b2, c2);\n                break a;\n              }\n              R2(a2, b2, d2, c2);\n            }\n            b2 = b2.child;\n          }\n          return b2;\n        case 5:\n          return xe(b2), null === a2 && ae(b2), d2 = b2.type, e2 = b2.pendingProps, f2 = null !== a2 ? a2.memoizedProps : null, g2 = e2.children, Oa(d2, e2) ? g2 = null : null !== f2 && Oa(d2, f2) && (b2.flags |= 32), fg(a2, b2), R2(a2, b2, g2, c2), b2.child;\n        case 6:\n          return null === a2 && ae(b2), null;\n        case 13:\n          return mg(a2, b2, c2);\n        case 4:\n          return ve(b2, b2.stateNode.containerInfo), d2 = b2.pendingProps, null === a2 ? b2.child = oe(b2, null, d2, c2) : R2(a2, b2, d2, c2), b2.child;\n        case 11:\n          return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : ad(d2, e2), Yf(a2, b2, d2, e2, c2);\n        case 7:\n          return R2(a2, b2, b2.pendingProps, c2), b2.child;\n        case 8:\n          return R2(a2, b2, b2.pendingProps.children, c2), b2.child;\n        case 12:\n          return R2(a2, b2, b2.pendingProps.children, c2), b2.child;\n        case 10:\n          a: {\n            d2 = b2.type._context;\n            e2 = b2.pendingProps;\n            f2 = b2.memoizedProps;\n            g2 = e2.value;\n            gd(b2, d2, g2);\n            if (null !== f2) if (Rc(f2.value, g2)) {\n              if (f2.children === e2.children && !B2.current) {\n                b2 = Zf(a2, b2, c2);\n                break a;\n              }\n            } else for (f2 = b2.child, null !== f2 && (f2.return = b2); null !== f2; ) {\n              var h2 = f2.dependencies;\n              if (null !== h2) {\n                g2 = f2.child;\n                for (var k2 = h2.firstContext; null !== k2; ) {\n                  if (k2.context === d2) {\n                    if (1 === f2.tag) {\n                      k2 = qd(-1, c2 & -c2);\n                      k2.tag = 2;\n                      var l2 = f2.updateQueue;\n                      if (null !== l2) {\n                        l2 = l2.shared;\n                        var m2 = l2.pending;\n                        null === m2 ? k2.next = k2 : (k2.next = m2.next, m2.next = k2);\n                        l2.pending = k2;\n                      }\n                    }\n                    f2.lanes |= c2;\n                    k2 = f2.alternate;\n                    null !== k2 && (k2.lanes |= c2);\n                    id(f2.return, c2, b2);\n                    h2.lanes |= c2;\n                    break;\n                  }\n                  k2 = k2.next;\n                }\n              } else if (10 === f2.tag) g2 = f2.type === b2.type ? null : f2.child;\n              else if (18 === f2.tag) {\n                g2 = f2.return;\n                if (null === g2) throw Error(n2(341));\n                g2.lanes |= c2;\n                h2 = g2.alternate;\n                null !== h2 && (h2.lanes |= c2);\n                id(g2, c2, b2);\n                g2 = f2.sibling;\n              } else g2 = f2.child;\n              if (null !== g2) g2.return = f2;\n              else for (g2 = f2; null !== g2; ) {\n                if (g2 === b2) {\n                  g2 = null;\n                  break;\n                }\n                f2 = g2.sibling;\n                if (null !== f2) {\n                  f2.return = g2.return;\n                  g2 = f2;\n                  break;\n                }\n                g2 = g2.return;\n              }\n              f2 = g2;\n            }\n            R2(a2, b2, e2.children, c2);\n            b2 = b2.child;\n          }\n          return b2;\n        case 9:\n          return e2 = b2.type, d2 = b2.pendingProps.children, jd(b2, c2), e2 = ld(e2), d2 = d2(e2), b2.flags |= 1, R2(a2, b2, d2, c2), b2.child;\n        case 14:\n          return d2 = b2.type, e2 = ad(d2, b2.pendingProps), e2 = ad(d2.type, e2), $f(a2, b2, d2, e2, c2);\n        case 15:\n          return bg(a2, b2, b2.type, b2.pendingProps, c2);\n        case 17:\n          return d2 = b2.type, e2 = b2.pendingProps, e2 = b2.elementType === d2 ? e2 : ad(d2, e2), null !== a2 && (a2.alternate = null, b2.alternate = null, b2.flags |= 2), b2.tag = 1, C2(d2) ? (a2 = true, nc(b2)) : a2 = false, jd(b2, c2), Dd(b2, d2, e2), Fd(b2, d2, e2, c2), hg2(null, b2, d2, true, a2, c2);\n        case 19:\n          return vg(a2, b2, c2);\n        case 22:\n          return dg2(a2, b2, c2);\n      }\n      throw Error(n2(156, b2.tag));\n    };\n    function Dh(a2, b2) {\n      return Fc(a2, b2);\n    }\n    function Xh(a2, b2, c2, d2) {\n      this.tag = a2;\n      this.key = c2;\n      this.sibling = this.child = this.return = this.stateNode = this.type = this.elementType = null;\n      this.index = 0;\n      this.ref = null;\n      this.pendingProps = b2;\n      this.dependencies = this.memoizedState = this.updateQueue = this.memoizedProps = null;\n      this.mode = d2;\n      this.subtreeFlags = this.flags = 0;\n      this.deletions = null;\n      this.childLanes = this.lanes = 0;\n      this.alternate = null;\n    }\n    function Yd(a2, b2, c2, d2) {\n      return new Xh(a2, b2, c2, d2);\n    }\n    function ag2(a2) {\n      a2 = a2.prototype;\n      return !(!a2 || !a2.isReactComponent);\n    }\n    function Wh(a2) {\n      if (\"function\" === typeof a2) return ag2(a2) ? 1 : 0;\n      if (void 0 !== a2 && null !== a2) {\n        a2 = a2.$$typeof;\n        if (a2 === na) return 11;\n        if (a2 === qa) return 14;\n      }\n      return 2;\n    }\n    function je(a2, b2) {\n      var c2 = a2.alternate;\n      null === c2 ? (c2 = Yd(a2.tag, b2, a2.key, a2.mode), c2.elementType = a2.elementType, c2.type = a2.type, c2.stateNode = a2.stateNode, c2.alternate = a2, a2.alternate = c2) : (c2.pendingProps = b2, c2.type = a2.type, c2.flags = 0, c2.subtreeFlags = 0, c2.deletions = null);\n      c2.flags = a2.flags & 14680064;\n      c2.childLanes = a2.childLanes;\n      c2.lanes = a2.lanes;\n      c2.child = a2.child;\n      c2.memoizedProps = a2.memoizedProps;\n      c2.memoizedState = a2.memoizedState;\n      c2.updateQueue = a2.updateQueue;\n      b2 = a2.dependencies;\n      c2.dependencies = null === b2 ? null : { lanes: b2.lanes, firstContext: b2.firstContext };\n      c2.sibling = a2.sibling;\n      c2.index = a2.index;\n      c2.ref = a2.ref;\n      return c2;\n    }\n    function le(a2, b2, c2, d2, e2, f2) {\n      var g2 = 2;\n      d2 = a2;\n      if (\"function\" === typeof a2) ag2(a2) && (g2 = 1);\n      else if (\"string\" === typeof a2) g2 = 5;\n      else a: switch (a2) {\n        case ia:\n          return ne(c2.children, e2, f2, b2);\n        case ja:\n          g2 = 8;\n          e2 |= 8;\n          break;\n        case ka:\n          return a2 = Yd(12, c2, b2, e2 | 2), a2.elementType = ka, a2.lanes = f2, a2;\n        case oa:\n          return a2 = Yd(13, c2, b2, e2), a2.elementType = oa, a2.lanes = f2, a2;\n        case pa:\n          return a2 = Yd(19, c2, b2, e2), a2.elementType = pa, a2.lanes = f2, a2;\n        case sa:\n          return ng2(c2, e2, f2, b2);\n        default:\n          if (\"object\" === typeof a2 && null !== a2) switch (a2.$$typeof) {\n            case la:\n              g2 = 10;\n              break a;\n            case ma:\n              g2 = 9;\n              break a;\n            case na:\n              g2 = 11;\n              break a;\n            case qa:\n              g2 = 14;\n              break a;\n            case ra:\n              g2 = 16;\n              d2 = null;\n              break a;\n          }\n          throw Error(n2(130, null == a2 ? a2 : typeof a2, \"\"));\n      }\n      b2 = Yd(g2, c2, b2, e2);\n      b2.elementType = a2;\n      b2.type = d2;\n      b2.lanes = f2;\n      return b2;\n    }\n    function ne(a2, b2, c2, d2) {\n      a2 = Yd(7, a2, d2, b2);\n      a2.lanes = c2;\n      return a2;\n    }\n    function ng2(a2, b2, c2, d2) {\n      a2 = Yd(22, a2, d2, b2);\n      a2.elementType = sa;\n      a2.lanes = c2;\n      a2.stateNode = {};\n      return a2;\n    }\n    function ke(a2, b2, c2) {\n      a2 = Yd(6, a2, null, b2);\n      a2.lanes = c2;\n      return a2;\n    }\n    function me(a2, b2, c2) {\n      b2 = Yd(4, null !== a2.children ? a2.children : [], a2.key, b2);\n      b2.lanes = c2;\n      b2.stateNode = { containerInfo: a2.containerInfo, pendingChildren: null, implementation: a2.implementation };\n      return b2;\n    }\n    function Yh(a2, b2, c2, d2, e2) {\n      this.tag = b2;\n      this.containerInfo = a2;\n      this.finishedWork = this.pingCache = this.current = this.pendingChildren = null;\n      this.timeoutHandle = Sa;\n      this.callbackNode = this.pendingContext = this.context = null;\n      this.callbackPriority = 0;\n      this.eventTimes = Ac(0);\n      this.expirationTimes = Ac(-1);\n      this.entangledLanes = this.finishedLanes = this.mutableReadLanes = this.expiredLanes = this.pingedLanes = this.suspendedLanes = this.pendingLanes = 0;\n      this.entanglements = Ac(0);\n      this.identifierPrefix = d2;\n      this.onRecoverableError = e2;\n      p2 && (this.mutableSourceEagerHydrationData = null);\n    }\n    function Zh(a2, b2, c2, d2, e2, f2, g2, h2, k2) {\n      a2 = new Yh(a2, b2, c2, h2, k2);\n      1 === b2 ? (b2 = 1, true === f2 && (b2 |= 8)) : b2 = 0;\n      f2 = Yd(3, null, null, b2);\n      a2.current = f2;\n      f2.stateNode = a2;\n      f2.memoizedState = { element: d2, isDehydrated: c2, cache: null, transitions: null };\n      od(f2);\n      return a2;\n    }\n    function $h(a2) {\n      if (!a2) return hc;\n      a2 = a2._reactInternals;\n      a: {\n        if (ya(a2) !== a2 || 1 !== a2.tag) throw Error(n2(170));\n        var b2 = a2;\n        do {\n          switch (b2.tag) {\n            case 3:\n              b2 = b2.stateNode.context;\n              break a;\n            case 1:\n              if (C2(b2.type)) {\n                b2 = b2.stateNode.__reactInternalMemoizedMergedChildContext;\n                break a;\n              }\n          }\n          b2 = b2.return;\n        } while (null !== b2);\n        throw Error(n2(171));\n      }\n      if (1 === a2.tag) {\n        var c2 = a2.type;\n        if (C2(c2)) return mc(a2, c2, b2);\n      }\n      return b2;\n    }\n    function ai(a2) {\n      var b2 = a2._reactInternals;\n      if (void 0 === b2) {\n        if (\"function\" === typeof a2.render) throw Error(n2(188));\n        a2 = Object.keys(a2).join(\",\");\n        throw Error(n2(268, a2));\n      }\n      a2 = Ba(b2);\n      return null === a2 ? null : a2.stateNode;\n    }\n    function bi(a2, b2) {\n      a2 = a2.memoizedState;\n      if (null !== a2 && null !== a2.dehydrated) {\n        var c2 = a2.retryLane;\n        a2.retryLane = 0 !== c2 && c2 < b2 ? c2 : b2;\n      }\n    }\n    function ci(a2, b2) {\n      bi(a2, b2);\n      (a2 = a2.alternate) && bi(a2, b2);\n    }\n    function di(a2) {\n      a2 = Ba(a2);\n      return null === a2 ? null : a2.stateNode;\n    }\n    function ei() {\n      return null;\n    }\n    exports.attemptContinuousHydration = function(a2) {\n      if (13 === a2.tag) {\n        var b2 = H2();\n        Ad(a2, 134217728, b2);\n        ci(a2, 134217728);\n      }\n    };\n    exports.attemptHydrationAtCurrentPriority = function(a2) {\n      if (13 === a2.tag) {\n        var b2 = H2(), c2 = zd(a2);\n        Ad(a2, c2, b2);\n        ci(a2, c2);\n      }\n    };\n    exports.attemptSynchronousHydration = function(a2) {\n      switch (a2.tag) {\n        case 3:\n          var b2 = a2.stateNode;\n          if (b2.current.memoizedState.isDehydrated) {\n            var c2 = vc(b2.pendingLanes);\n            0 !== c2 && (Dc(b2, c2 | 1), Z2(b2, E2()), 0 === (G2 & 6) && (sh(), Xc()));\n          }\n          break;\n        case 13:\n          var d2 = H2();\n          Oh(function() {\n            return Ad(a2, 1, d2);\n          });\n          ci(a2, 1);\n      }\n    };\n    exports.batchedUpdates = function(a2, b2) {\n      var c2 = G2;\n      G2 |= 1;\n      try {\n        return a2(b2);\n      } finally {\n        G2 = c2, 0 === G2 && (sh(), Tc && Xc());\n      }\n    };\n    exports.createComponentSelector = function(a2) {\n      return { $$typeof: ah, value: a2 };\n    };\n    exports.createContainer = function(a2, b2, c2, d2, e2, f2, g2) {\n      return Zh(a2, b2, false, null, c2, d2, e2, f2, g2);\n    };\n    exports.createHasPseudoClassSelector = function(a2) {\n      return { $$typeof: bh, value: a2 };\n    };\n    exports.createHydrationContainer = function(a2, b2, c2, d2, e2, f2, g2, h2, k2) {\n      a2 = Zh(c2, d2, true, a2, e2, f2, g2, h2, k2);\n      a2.context = $h(null);\n      c2 = a2.current;\n      d2 = H2();\n      e2 = zd(c2);\n      f2 = qd(d2, e2);\n      f2.callback = void 0 !== b2 && null !== b2 ? b2 : null;\n      rd(c2, f2);\n      a2.current.lanes = e2;\n      Bc(a2, e2, d2);\n      Z2(a2, d2);\n      return a2;\n    };\n    exports.createPortal = function(a2, b2, c2) {\n      var d2 = 3 < arguments.length && void 0 !== arguments[3] ? arguments[3] : null;\n      return { $$typeof: ha, key: null == d2 ? null : \"\" + d2, children: a2, containerInfo: b2, implementation: c2 };\n    };\n    exports.createRoleSelector = function(a2) {\n      return { $$typeof: ch, value: a2 };\n    };\n    exports.createTestNameSelector = function(a2) {\n      return { $$typeof: dh, value: a2 };\n    };\n    exports.createTextSelector = function(a2) {\n      return { $$typeof: eh, value: a2 };\n    };\n    exports.deferredUpdates = function(a2) {\n      var b2 = D2, c2 = U2.transition;\n      try {\n        return U2.transition = null, D2 = 16, a2();\n      } finally {\n        D2 = b2, U2.transition = c2;\n      }\n    };\n    exports.discreteUpdates = function(a2, b2, c2, d2, e2) {\n      var f2 = D2, g2 = U2.transition;\n      try {\n        return U2.transition = null, D2 = 1, a2(b2, c2, d2, e2);\n      } finally {\n        D2 = f2, U2.transition = g2, 0 === G2 && sh();\n      }\n    };\n    exports.findAllNodes = kh;\n    exports.findBoundingRects = function(a2, b2) {\n      if (!bb) throw Error(n2(363));\n      b2 = kh(a2, b2);\n      a2 = [];\n      for (var c2 = 0; c2 < b2.length; c2++) a2.push(db(b2[c2]));\n      for (b2 = a2.length - 1; 0 < b2; b2--) {\n        c2 = a2[b2];\n        for (var d2 = c2.x, e2 = d2 + c2.width, f2 = c2.y, g2 = f2 + c2.height, h2 = b2 - 1; 0 <= h2; h2--) if (b2 !== h2) {\n          var k2 = a2[h2], l2 = k2.x, m2 = l2 + k2.width, v2 = k2.y, r2 = v2 + k2.height;\n          if (d2 >= l2 && f2 >= v2 && e2 <= m2 && g2 <= r2) {\n            a2.splice(b2, 1);\n            break;\n          } else if (!(d2 !== l2 || c2.width !== k2.width || r2 < f2 || v2 > g2)) {\n            v2 > f2 && (k2.height += v2 - f2, k2.y = f2);\n            r2 < g2 && (k2.height = g2 - v2);\n            a2.splice(b2, 1);\n            break;\n          } else if (!(f2 !== v2 || c2.height !== k2.height || m2 < d2 || l2 > e2)) {\n            l2 > d2 && (k2.width += l2 - d2, k2.x = d2);\n            m2 < e2 && (k2.width = e2 - l2);\n            a2.splice(b2, 1);\n            break;\n          }\n        }\n      }\n      return a2;\n    };\n    exports.findHostInstance = ai;\n    exports.findHostInstanceWithNoPortals = function(a2) {\n      a2 = Aa(a2);\n      a2 = null !== a2 ? Da(a2) : null;\n      return null === a2 ? null : a2.stateNode;\n    };\n    exports.findHostInstanceWithWarning = function(a2) {\n      return ai(a2);\n    };\n    exports.flushControlled = function(a2) {\n      var b2 = G2;\n      G2 |= 1;\n      var c2 = U2.transition, d2 = D2;\n      try {\n        U2.transition = null, D2 = 1, a2();\n      } finally {\n        D2 = d2, U2.transition = c2, G2 = b2, 0 === G2 && (sh(), Xc());\n      }\n    };\n    exports.flushPassiveEffects = Fh;\n    exports.flushSync = Oh;\n    exports.focusWithin = function(a2, b2) {\n      if (!bb) throw Error(n2(363));\n      a2 = gh(a2);\n      b2 = jh(a2, b2);\n      b2 = Array.from(b2);\n      for (a2 = 0; a2 < b2.length; ) {\n        var c2 = b2[a2++];\n        if (!fb(c2)) {\n          if (5 === c2.tag && hb(c2.stateNode)) return true;\n          for (c2 = c2.child; null !== c2; ) b2.push(c2), c2 = c2.sibling;\n        }\n      }\n      return false;\n    };\n    exports.getCurrentUpdatePriority = function() {\n      return D2;\n    };\n    exports.getFindAllNodesFailureDescription = function(a2, b2) {\n      if (!bb) throw Error(n2(363));\n      var c2 = 0, d2 = [];\n      a2 = [gh(a2), 0];\n      for (var e2 = 0; e2 < a2.length; ) {\n        var f2 = a2[e2++], g2 = a2[e2++], h2 = b2[g2];\n        if (5 !== f2.tag || !fb(f2)) {\n          if (hh(f2, h2) && (d2.push(ih(h2)), g2++, g2 > c2 && (c2 = g2)), g2 < b2.length) for (f2 = f2.child; null !== f2; ) a2.push(f2, g2), f2 = f2.sibling;\n        }\n      }\n      if (c2 < b2.length) {\n        for (a2 = []; c2 < b2.length; c2++) a2.push(ih(b2[c2]));\n        return \"findAllNodes was able to match part of the selector:\\n  \" + (d2.join(\" > \") + \"\\n\\nNo matching component was found for:\\n  \") + a2.join(\" > \");\n      }\n      return null;\n    };\n    exports.getPublicRootInstance = function(a2) {\n      a2 = a2.current;\n      if (!a2.child) return null;\n      switch (a2.child.tag) {\n        case 5:\n          return Fa(a2.child.stateNode);\n        default:\n          return a2.child.stateNode;\n      }\n    };\n    exports.injectIntoDevTools = function(a2) {\n      a2 = { bundleType: a2.bundleType, version: a2.version, rendererPackageName: a2.rendererPackageName, rendererConfig: a2.rendererConfig, overrideHookState: null, overrideHookStateDeletePath: null, overrideHookStateRenamePath: null, overrideProps: null, overridePropsDeletePath: null, overridePropsRenamePath: null, setErrorHandler: null, setSuspenseHandler: null, scheduleUpdate: null, currentDispatcherRef: ea.ReactCurrentDispatcher, findHostInstanceByFiber: di, findFiberByHostInstance: a2.findFiberByHostInstance || ei, findHostInstancesForRefresh: null, scheduleRefresh: null, scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, reconcilerVersion: \"18.0.0-fc46dba67-20220329\" };\n      if (\"undefined\" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) a2 = false;\n      else {\n        var b2 = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n        if (b2.isDisabled || !b2.supportsFiber) a2 = true;\n        else {\n          try {\n            Nc = b2.inject(a2), Oc = b2;\n          } catch (c2) {\n          }\n          a2 = b2.checkDCE ? true : false;\n        }\n      }\n      return a2;\n    };\n    exports.isAlreadyRendering = function() {\n      return false;\n    };\n    exports.observeVisibleRects = function(a2, b2, c2, d2) {\n      if (!bb) throw Error(n2(363));\n      a2 = kh(a2, b2);\n      var e2 = ib(a2, c2, d2).disconnect;\n      return { disconnect: function() {\n        e2();\n      } };\n    };\n    exports.registerMutableSourceForHydration = function(a2, b2) {\n      var c2 = b2._getVersion;\n      c2 = c2(b2._source);\n      null == a2.mutableSourceEagerHydrationData ? a2.mutableSourceEagerHydrationData = [b2, c2] : a2.mutableSourceEagerHydrationData.push(b2, c2);\n    };\n    exports.runWithPriority = function(a2, b2) {\n      var c2 = D2;\n      try {\n        return D2 = a2, b2();\n      } finally {\n        D2 = c2;\n      }\n    };\n    exports.shouldError = function() {\n      return null;\n    };\n    exports.shouldSuspend = function() {\n      return false;\n    };\n    exports.updateContainer = function(a2, b2, c2, d2) {\n      var e2 = b2.current, f2 = H2(), g2 = zd(e2);\n      c2 = $h(c2);\n      null === b2.context ? b2.context = c2 : b2.pendingContext = c2;\n      b2 = qd(f2, g2);\n      b2.payload = { element: a2 };\n      d2 = void 0 === d2 ? null : d2;\n      null !== d2 && (b2.callback = d2);\n      rd(e2, b2);\n      a2 = Ad(e2, g2, f2);\n      null !== a2 && sd(a2, e2, g2);\n      return g2;\n    };\n    return exports;\n  };\n  return reactReconciler_production_min;\n}\nvar reactReconciler_development = { exports: {} };\n/**\n * @license React\n * react-reconciler.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar hasRequiredReactReconciler_development;\nfunction requireReactReconciler_development() {\n  if (hasRequiredReactReconciler_development) return reactReconciler_development.exports;\n  hasRequiredReactReconciler_development = 1;\n  if (process.env.NODE_ENV !== \"production\") {\n    reactReconciler_development.exports = function $$$reconciler($$$hostConfig) {\n      var exports = {};\n      var React2 = React__default;\n      var Scheduler = requireScheduler();\n      var ReactSharedInternals = React2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n      var suppressWarning = false;\n      function setSuppressWarning(newSuppressWarning) {\n        {\n          suppressWarning = newSuppressWarning;\n        }\n      }\n      function warn(format) {\n        {\n          if (!suppressWarning) {\n            for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n              args[_key - 1] = arguments[_key];\n            }\n            printWarning(\"warn\", format, args);\n          }\n        }\n      }\n      function error2(format) {\n        {\n          if (!suppressWarning) {\n            for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n              args[_key2 - 1] = arguments[_key2];\n            }\n            printWarning(\"error\", format, args);\n          }\n        }\n      }\n      function printWarning(level, format, args) {\n        {\n          var ReactDebugCurrentFrame2 = ReactSharedInternals.ReactDebugCurrentFrame;\n          var stack = ReactDebugCurrentFrame2.getStackAddendum();\n          if (stack !== \"\") {\n            format += \"%s\";\n            args = args.concat([stack]);\n          }\n          var argsWithFormat = args.map(function(item) {\n            return String(item);\n          });\n          argsWithFormat.unshift(\"Warning: \" + format);\n          Function.prototype.apply.call(console[level], console, argsWithFormat);\n        }\n      }\n      var assign = Object.assign;\n      function get(key) {\n        return key._reactInternals;\n      }\n      function set(key, value) {\n        key._reactInternals = value;\n      }\n      var enableNewReconciler = false;\n      var enableLazyContextPropagation = false;\n      var enableLegacyHidden = false;\n      var warnAboutStringRefs = false;\n      var enableSchedulingProfiler = true;\n      var enableProfilerTimer = true;\n      var enableProfilerCommitHooks = true;\n      var FunctionComponent = 0;\n      var ClassComponent = 1;\n      var IndeterminateComponent = 2;\n      var HostRoot = 3;\n      var HostPortal = 4;\n      var HostComponent = 5;\n      var HostText = 6;\n      var Fragment2 = 7;\n      var Mode = 8;\n      var ContextConsumer = 9;\n      var ContextProvider = 10;\n      var ForwardRef = 11;\n      var Profiler = 12;\n      var SuspenseComponent = 13;\n      var MemoComponent = 14;\n      var SimpleMemoComponent = 15;\n      var LazyComponent = 16;\n      var IncompleteClassComponent = 17;\n      var DehydratedFragment = 18;\n      var SuspenseListComponent = 19;\n      var ScopeComponent = 21;\n      var OffscreenComponent = 22;\n      var LegacyHiddenComponent = 23;\n      var CacheComponent = 24;\n      var TracingMarkerComponent = 25;\n      var REACT_ELEMENT_TYPE = Symbol.for(\"react.element\");\n      var REACT_PORTAL_TYPE = Symbol.for(\"react.portal\");\n      var REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\n      var REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\");\n      var REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\");\n      var REACT_PROVIDER_TYPE = Symbol.for(\"react.provider\");\n      var REACT_CONTEXT_TYPE = Symbol.for(\"react.context\");\n      var REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\");\n      var REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\");\n      var REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\");\n      var REACT_MEMO_TYPE = Symbol.for(\"react.memo\");\n      var REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\n      var REACT_SCOPE_TYPE = Symbol.for(\"react.scope\");\n      var REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for(\"react.debug_trace_mode\");\n      var REACT_OFFSCREEN_TYPE = Symbol.for(\"react.offscreen\");\n      var REACT_LEGACY_HIDDEN_TYPE = Symbol.for(\"react.legacy_hidden\");\n      var REACT_CACHE_TYPE = Symbol.for(\"react.cache\");\n      var REACT_TRACING_MARKER_TYPE = Symbol.for(\"react.tracing_marker\");\n      var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\n      var FAUX_ITERATOR_SYMBOL = \"@@iterator\";\n      function getIteratorFn(maybeIterable) {\n        if (maybeIterable === null || typeof maybeIterable !== \"object\") {\n          return null;\n        }\n        var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n        if (typeof maybeIterator === \"function\") {\n          return maybeIterator;\n        }\n        return null;\n      }\n      function getWrappedName(outerType, innerType, wrapperName) {\n        var displayName = outerType.displayName;\n        if (displayName) {\n          return displayName;\n        }\n        var functionName = innerType.displayName || innerType.name || \"\";\n        return functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n      }\n      function getContextName(type) {\n        return type.displayName || \"Context\";\n      }\n      function getComponentNameFromType(type) {\n        if (type == null) {\n          return null;\n        }\n        {\n          if (typeof type.tag === \"number\") {\n            error2(\"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\");\n          }\n        }\n        if (typeof type === \"function\") {\n          return type.displayName || type.name || null;\n        }\n        if (typeof type === \"string\") {\n          return type;\n        }\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n            return \"Fragment\";\n          case REACT_PORTAL_TYPE:\n            return \"Portal\";\n          case REACT_PROFILER_TYPE:\n            return \"Profiler\";\n          case REACT_STRICT_MODE_TYPE:\n            return \"StrictMode\";\n          case REACT_SUSPENSE_TYPE:\n            return \"Suspense\";\n          case REACT_SUSPENSE_LIST_TYPE:\n            return \"SuspenseList\";\n        }\n        if (typeof type === \"object\") {\n          switch (type.$$typeof) {\n            case REACT_CONTEXT_TYPE:\n              var context2 = type;\n              return getContextName(context2) + \".Consumer\";\n            case REACT_PROVIDER_TYPE:\n              var provider = type;\n              return getContextName(provider._context) + \".Provider\";\n            case REACT_FORWARD_REF_TYPE:\n              return getWrappedName(type, type.render, \"ForwardRef\");\n            case REACT_MEMO_TYPE:\n              var outerName = type.displayName || null;\n              if (outerName !== null) {\n                return outerName;\n              }\n              return getComponentNameFromType(type.type) || \"Memo\";\n            case REACT_LAZY_TYPE: {\n              var lazyComponent = type;\n              var payload = lazyComponent._payload;\n              var init = lazyComponent._init;\n              try {\n                return getComponentNameFromType(init(payload));\n              } catch (x2) {\n                return null;\n              }\n            }\n          }\n        }\n        return null;\n      }\n      function getWrappedName$1(outerType, innerType, wrapperName) {\n        var functionName = innerType.displayName || innerType.name || \"\";\n        return outerType.displayName || (functionName !== \"\" ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n      }\n      function getContextName$1(type) {\n        return type.displayName || \"Context\";\n      }\n      function getComponentNameFromFiber(fiber) {\n        var tag = fiber.tag, type = fiber.type;\n        switch (tag) {\n          case CacheComponent:\n            return \"Cache\";\n          case ContextConsumer:\n            var context2 = type;\n            return getContextName$1(context2) + \".Consumer\";\n          case ContextProvider:\n            var provider = type;\n            return getContextName$1(provider._context) + \".Provider\";\n          case DehydratedFragment:\n            return \"DehydratedFragment\";\n          case ForwardRef:\n            return getWrappedName$1(type, type.render, \"ForwardRef\");\n          case Fragment2:\n            return \"Fragment\";\n          case HostComponent:\n            return type;\n          case HostPortal:\n            return \"Portal\";\n          case HostRoot:\n            return \"Root\";\n          case HostText:\n            return \"Text\";\n          case LazyComponent:\n            return getComponentNameFromType(type);\n          case Mode:\n            if (type === REACT_STRICT_MODE_TYPE) {\n              return \"StrictMode\";\n            }\n            return \"Mode\";\n          case OffscreenComponent:\n            return \"Offscreen\";\n          case Profiler:\n            return \"Profiler\";\n          case ScopeComponent:\n            return \"Scope\";\n          case SuspenseComponent:\n            return \"Suspense\";\n          case SuspenseListComponent:\n            return \"SuspenseList\";\n          case TracingMarkerComponent:\n            return \"TracingMarker\";\n          // The display name for this tags come from the user-provided type:\n          case ClassComponent:\n          case FunctionComponent:\n          case IncompleteClassComponent:\n          case IndeterminateComponent:\n          case MemoComponent:\n          case SimpleMemoComponent:\n            if (typeof type === \"function\") {\n              return type.displayName || type.name || null;\n            }\n            if (typeof type === \"string\") {\n              return type;\n            }\n            break;\n        }\n        return null;\n      }\n      var NoFlags = (\n        /*                      */\n        0\n      );\n      var PerformedWork = (\n        /*                */\n        1\n      );\n      var Placement = (\n        /*                    */\n        2\n      );\n      var Update = (\n        /*                       */\n        4\n      );\n      var PlacementAndUpdate = (\n        /*           */\n        Placement | Update\n      );\n      var ChildDeletion = (\n        /*                */\n        16\n      );\n      var ContentReset = (\n        /*                 */\n        32\n      );\n      var Callback = (\n        /*                     */\n        64\n      );\n      var DidCapture = (\n        /*                   */\n        128\n      );\n      var ForceClientRender = (\n        /*            */\n        256\n      );\n      var Ref = (\n        /*                          */\n        512\n      );\n      var Snapshot = (\n        /*                     */\n        1024\n      );\n      var Passive = (\n        /*                      */\n        2048\n      );\n      var Hydrating = (\n        /*                    */\n        4096\n      );\n      var HydratingAndUpdate = (\n        /*           */\n        Hydrating | Update\n      );\n      var Visibility = (\n        /*                   */\n        8192\n      );\n      var StoreConsistency = (\n        /*             */\n        16384\n      );\n      var HostEffectMask = (\n        /*               */\n        32767\n      );\n      var Incomplete = (\n        /*                   */\n        32768\n      );\n      var ShouldCapture = (\n        /*                */\n        65536\n      );\n      var ForceUpdateForLegacySuspense = (\n        /* */\n        131072\n      );\n      var Forked = (\n        /*                       */\n        1048576\n      );\n      var RefStatic = (\n        /*                    */\n        2097152\n      );\n      var LayoutStatic = (\n        /*                 */\n        4194304\n      );\n      var PassiveStatic = (\n        /*                */\n        8388608\n      );\n      var MountLayoutDev = (\n        /*               */\n        16777216\n      );\n      var MountPassiveDev = (\n        /*              */\n        33554432\n      );\n      var BeforeMutationMask = (\n        // TODO: Remove Update flag from before mutation phase by re-landing Visibility\n        // flag logic (see #20043)\n        Update | Snapshot | 0\n      );\n      var MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility;\n      var LayoutMask = Update | Callback | Ref | Visibility;\n      var PassiveMask = Passive | ChildDeletion;\n      var StaticMask = LayoutStatic | PassiveStatic | RefStatic;\n      var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\n      function getNearestMountedFiber(fiber) {\n        var node = fiber;\n        var nearestMounted = fiber;\n        if (!fiber.alternate) {\n          var nextNode = node;\n          do {\n            node = nextNode;\n            if ((node.flags & (Placement | Hydrating)) !== NoFlags) {\n              nearestMounted = node.return;\n            }\n            nextNode = node.return;\n          } while (nextNode);\n        } else {\n          while (node.return) {\n            node = node.return;\n          }\n        }\n        if (node.tag === HostRoot) {\n          return nearestMounted;\n        }\n        return null;\n      }\n      function isFiberMounted(fiber) {\n        return getNearestMountedFiber(fiber) === fiber;\n      }\n      function isMounted(component) {\n        {\n          var owner = ReactCurrentOwner.current;\n          if (owner !== null && owner.tag === ClassComponent) {\n            var ownerFiber = owner;\n            var instance = ownerFiber.stateNode;\n            if (!instance._warnedAboutRefsInRender) {\n              error2(\"%s is accessing isMounted inside its render() function. render() should be a pure function of props and state. It should never access something that requires stale data from the previous render, such as refs. Move this logic to componentDidMount and componentDidUpdate instead.\", getComponentNameFromFiber(ownerFiber) || \"A component\");\n            }\n            instance._warnedAboutRefsInRender = true;\n          }\n        }\n        var fiber = get(component);\n        if (!fiber) {\n          return false;\n        }\n        return getNearestMountedFiber(fiber) === fiber;\n      }\n      function assertIsMounted(fiber) {\n        if (getNearestMountedFiber(fiber) !== fiber) {\n          throw new Error(\"Unable to find node on an unmounted component.\");\n        }\n      }\n      function findCurrentFiberUsingSlowPath(fiber) {\n        var alternate = fiber.alternate;\n        if (!alternate) {\n          var nearestMounted = getNearestMountedFiber(fiber);\n          if (nearestMounted === null) {\n            throw new Error(\"Unable to find node on an unmounted component.\");\n          }\n          if (nearestMounted !== fiber) {\n            return null;\n          }\n          return fiber;\n        }\n        var a2 = fiber;\n        var b2 = alternate;\n        while (true) {\n          var parentA = a2.return;\n          if (parentA === null) {\n            break;\n          }\n          var parentB = parentA.alternate;\n          if (parentB === null) {\n            var nextParent = parentA.return;\n            if (nextParent !== null) {\n              a2 = b2 = nextParent;\n              continue;\n            }\n            break;\n          }\n          if (parentA.child === parentB.child) {\n            var child = parentA.child;\n            while (child) {\n              if (child === a2) {\n                assertIsMounted(parentA);\n                return fiber;\n              }\n              if (child === b2) {\n                assertIsMounted(parentA);\n                return alternate;\n              }\n              child = child.sibling;\n            }\n            throw new Error(\"Unable to find node on an unmounted component.\");\n          }\n          if (a2.return !== b2.return) {\n            a2 = parentA;\n            b2 = parentB;\n          } else {\n            var didFindChild = false;\n            var _child = parentA.child;\n            while (_child) {\n              if (_child === a2) {\n                didFindChild = true;\n                a2 = parentA;\n                b2 = parentB;\n                break;\n              }\n              if (_child === b2) {\n                didFindChild = true;\n                b2 = parentA;\n                a2 = parentB;\n                break;\n              }\n              _child = _child.sibling;\n            }\n            if (!didFindChild) {\n              _child = parentB.child;\n              while (_child) {\n                if (_child === a2) {\n                  didFindChild = true;\n                  a2 = parentB;\n                  b2 = parentA;\n                  break;\n                }\n                if (_child === b2) {\n                  didFindChild = true;\n                  b2 = parentB;\n                  a2 = parentA;\n                  break;\n                }\n                _child = _child.sibling;\n              }\n              if (!didFindChild) {\n                throw new Error(\"Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.\");\n              }\n            }\n          }\n          if (a2.alternate !== b2) {\n            throw new Error(\"Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n        }\n        if (a2.tag !== HostRoot) {\n          throw new Error(\"Unable to find node on an unmounted component.\");\n        }\n        if (a2.stateNode.current === a2) {\n          return fiber;\n        }\n        return alternate;\n      }\n      function findCurrentHostFiber(parent) {\n        var currentParent = findCurrentFiberUsingSlowPath(parent);\n        return currentParent !== null ? findCurrentHostFiberImpl(currentParent) : null;\n      }\n      function findCurrentHostFiberImpl(node) {\n        if (node.tag === HostComponent || node.tag === HostText) {\n          return node;\n        }\n        var child = node.child;\n        while (child !== null) {\n          var match = findCurrentHostFiberImpl(child);\n          if (match !== null) {\n            return match;\n          }\n          child = child.sibling;\n        }\n        return null;\n      }\n      function findCurrentHostFiberWithNoPortals(parent) {\n        var currentParent = findCurrentFiberUsingSlowPath(parent);\n        return currentParent !== null ? findCurrentHostFiberWithNoPortalsImpl(currentParent) : null;\n      }\n      function findCurrentHostFiberWithNoPortalsImpl(node) {\n        if (node.tag === HostComponent || node.tag === HostText) {\n          return node;\n        }\n        var child = node.child;\n        while (child !== null) {\n          if (child.tag !== HostPortal) {\n            var match = findCurrentHostFiberWithNoPortalsImpl(child);\n            if (match !== null) {\n              return match;\n            }\n          }\n          child = child.sibling;\n        }\n        return null;\n      }\n      var isArrayImpl = Array.isArray;\n      function isArray2(a2) {\n        return isArrayImpl(a2);\n      }\n      var getPublicInstance = $$$hostConfig.getPublicInstance;\n      var getRootHostContext = $$$hostConfig.getRootHostContext;\n      var getChildHostContext = $$$hostConfig.getChildHostContext;\n      var prepareForCommit = $$$hostConfig.prepareForCommit;\n      var resetAfterCommit = $$$hostConfig.resetAfterCommit;\n      var createInstance = $$$hostConfig.createInstance;\n      var appendInitialChild = $$$hostConfig.appendInitialChild;\n      var finalizeInitialChildren = $$$hostConfig.finalizeInitialChildren;\n      var prepareUpdate = $$$hostConfig.prepareUpdate;\n      var shouldSetTextContent = $$$hostConfig.shouldSetTextContent;\n      var createTextInstance = $$$hostConfig.createTextInstance;\n      var scheduleTimeout = $$$hostConfig.scheduleTimeout;\n      var cancelTimeout = $$$hostConfig.cancelTimeout;\n      var noTimeout = $$$hostConfig.noTimeout;\n      $$$hostConfig.now;\n      var isPrimaryRenderer = $$$hostConfig.isPrimaryRenderer;\n      var warnsIfNotActing = $$$hostConfig.warnsIfNotActing;\n      var supportsMutation = $$$hostConfig.supportsMutation;\n      var supportsPersistence = $$$hostConfig.supportsPersistence;\n      var supportsHydration = $$$hostConfig.supportsHydration;\n      var getInstanceFromNode = $$$hostConfig.getInstanceFromNode;\n      $$$hostConfig.beforeActiveInstanceBlur;\n      $$$hostConfig.afterActiveInstanceBlur;\n      var preparePortalMount = $$$hostConfig.preparePortalMount;\n      $$$hostConfig.preparePortalMount;\n      $$$hostConfig.getInstanceFromScope;\n      var getCurrentEventPriority = $$$hostConfig.getCurrentEventPriority;\n      var detachDeletedInstance = $$$hostConfig.detachDeletedInstance;\n      var supportsMicrotasks = $$$hostConfig.supportsMicrotasks;\n      var scheduleMicrotask = $$$hostConfig.scheduleMicrotask;\n      var supportsTestSelectors = $$$hostConfig.supportsTestSelectors;\n      var findFiberRoot = $$$hostConfig.findFiberRoot;\n      var getBoundingRect = $$$hostConfig.getBoundingRect;\n      var getTextContent = $$$hostConfig.getTextContent;\n      var isHiddenSubtree = $$$hostConfig.isHiddenSubtree;\n      var matchAccessibilityRole = $$$hostConfig.matchAccessibilityRole;\n      var setFocusIfFocusable = $$$hostConfig.setFocusIfFocusable;\n      var setupIntersectionObserver = $$$hostConfig.setupIntersectionObserver;\n      var appendChild = $$$hostConfig.appendChild;\n      var appendChildToContainer = $$$hostConfig.appendChildToContainer;\n      var commitTextUpdate = $$$hostConfig.commitTextUpdate;\n      var commitMount = $$$hostConfig.commitMount;\n      var commitUpdate = $$$hostConfig.commitUpdate;\n      var insertBefore = $$$hostConfig.insertBefore;\n      var insertInContainerBefore = $$$hostConfig.insertInContainerBefore;\n      var removeChild = $$$hostConfig.removeChild;\n      var removeChildFromContainer = $$$hostConfig.removeChildFromContainer;\n      var resetTextContent = $$$hostConfig.resetTextContent;\n      var hideInstance = $$$hostConfig.hideInstance;\n      var hideTextInstance = $$$hostConfig.hideTextInstance;\n      var unhideInstance = $$$hostConfig.unhideInstance;\n      var unhideTextInstance = $$$hostConfig.unhideTextInstance;\n      var clearContainer = $$$hostConfig.clearContainer;\n      var cloneInstance = $$$hostConfig.cloneInstance;\n      var createContainerChildSet = $$$hostConfig.createContainerChildSet;\n      var appendChildToContainerChildSet = $$$hostConfig.appendChildToContainerChildSet;\n      var finalizeContainerChildren = $$$hostConfig.finalizeContainerChildren;\n      var replaceContainerChildren = $$$hostConfig.replaceContainerChildren;\n      $$$hostConfig.getOffscreenContainerType;\n      $$$hostConfig.getOffscreenContainerProps;\n      var cloneHiddenInstance = $$$hostConfig.cloneHiddenInstance;\n      var cloneHiddenTextInstance = $$$hostConfig.cloneHiddenTextInstance;\n      var canHydrateInstance = $$$hostConfig.canHydrateInstance;\n      var canHydrateTextInstance = $$$hostConfig.canHydrateTextInstance;\n      var canHydrateSuspenseInstance = $$$hostConfig.canHydrateSuspenseInstance;\n      var isSuspenseInstancePending = $$$hostConfig.isSuspenseInstancePending;\n      var isSuspenseInstanceFallback = $$$hostConfig.isSuspenseInstanceFallback;\n      var registerSuspenseInstanceRetry = $$$hostConfig.registerSuspenseInstanceRetry;\n      var getNextHydratableSibling = $$$hostConfig.getNextHydratableSibling;\n      var getFirstHydratableChild = $$$hostConfig.getFirstHydratableChild;\n      var getFirstHydratableChildWithinContainer = $$$hostConfig.getFirstHydratableChildWithinContainer;\n      var getFirstHydratableChildWithinSuspenseInstance = $$$hostConfig.getFirstHydratableChildWithinSuspenseInstance;\n      var hydrateInstance = $$$hostConfig.hydrateInstance;\n      var hydrateTextInstance = $$$hostConfig.hydrateTextInstance;\n      var hydrateSuspenseInstance = $$$hostConfig.hydrateSuspenseInstance;\n      var getNextHydratableInstanceAfterSuspenseInstance = $$$hostConfig.getNextHydratableInstanceAfterSuspenseInstance;\n      var commitHydratedContainer = $$$hostConfig.commitHydratedContainer;\n      var commitHydratedSuspenseInstance = $$$hostConfig.commitHydratedSuspenseInstance;\n      var clearSuspenseBoundary = $$$hostConfig.clearSuspenseBoundary;\n      var clearSuspenseBoundaryFromContainer = $$$hostConfig.clearSuspenseBoundaryFromContainer;\n      var shouldDeleteUnhydratedTailInstances = $$$hostConfig.shouldDeleteUnhydratedTailInstances;\n      var didNotMatchHydratedContainerTextInstance = $$$hostConfig.didNotMatchHydratedContainerTextInstance;\n      var didNotMatchHydratedTextInstance = $$$hostConfig.didNotMatchHydratedTextInstance;\n      var didNotHydrateInstanceWithinContainer = $$$hostConfig.didNotHydrateInstanceWithinContainer;\n      var didNotHydrateInstanceWithinSuspenseInstance = $$$hostConfig.didNotHydrateInstanceWithinSuspenseInstance;\n      var didNotHydrateInstance = $$$hostConfig.didNotHydrateInstance;\n      var didNotFindHydratableInstanceWithinContainer = $$$hostConfig.didNotFindHydratableInstanceWithinContainer;\n      var didNotFindHydratableTextInstanceWithinContainer = $$$hostConfig.didNotFindHydratableTextInstanceWithinContainer;\n      var didNotFindHydratableSuspenseInstanceWithinContainer = $$$hostConfig.didNotFindHydratableSuspenseInstanceWithinContainer;\n      var didNotFindHydratableInstanceWithinSuspenseInstance = $$$hostConfig.didNotFindHydratableInstanceWithinSuspenseInstance;\n      var didNotFindHydratableTextInstanceWithinSuspenseInstance = $$$hostConfig.didNotFindHydratableTextInstanceWithinSuspenseInstance;\n      var didNotFindHydratableSuspenseInstanceWithinSuspenseInstance = $$$hostConfig.didNotFindHydratableSuspenseInstanceWithinSuspenseInstance;\n      var didNotFindHydratableInstance = $$$hostConfig.didNotFindHydratableInstance;\n      var didNotFindHydratableTextInstance = $$$hostConfig.didNotFindHydratableTextInstance;\n      var didNotFindHydratableSuspenseInstance = $$$hostConfig.didNotFindHydratableSuspenseInstance;\n      var errorHydratingContainer = $$$hostConfig.errorHydratingContainer;\n      var disabledDepth = 0;\n      var prevLog;\n      var prevInfo;\n      var prevWarn;\n      var prevError;\n      var prevGroup;\n      var prevGroupCollapsed;\n      var prevGroupEnd;\n      function disabledLog() {\n      }\n      disabledLog.__reactDisabledLog = true;\n      function disableLogs() {\n        {\n          if (disabledDepth === 0) {\n            prevLog = console.log;\n            prevInfo = console.info;\n            prevWarn = console.warn;\n            prevError = console.error;\n            prevGroup = console.group;\n            prevGroupCollapsed = console.groupCollapsed;\n            prevGroupEnd = console.groupEnd;\n            var props = {\n              configurable: true,\n              enumerable: true,\n              value: disabledLog,\n              writable: true\n            };\n            Object.defineProperties(console, {\n              info: props,\n              log: props,\n              warn: props,\n              error: props,\n              group: props,\n              groupCollapsed: props,\n              groupEnd: props\n            });\n          }\n          disabledDepth++;\n        }\n      }\n      function reenableLogs() {\n        {\n          disabledDepth--;\n          if (disabledDepth === 0) {\n            var props = {\n              configurable: true,\n              enumerable: true,\n              writable: true\n            };\n            Object.defineProperties(console, {\n              log: assign({}, props, {\n                value: prevLog\n              }),\n              info: assign({}, props, {\n                value: prevInfo\n              }),\n              warn: assign({}, props, {\n                value: prevWarn\n              }),\n              error: assign({}, props, {\n                value: prevError\n              }),\n              group: assign({}, props, {\n                value: prevGroup\n              }),\n              groupCollapsed: assign({}, props, {\n                value: prevGroupCollapsed\n              }),\n              groupEnd: assign({}, props, {\n                value: prevGroupEnd\n              })\n            });\n          }\n          if (disabledDepth < 0) {\n            error2(\"disabledDepth fell below zero. This is a bug in React. Please file an issue.\");\n          }\n        }\n      }\n      var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n      var prefix;\n      function describeBuiltInComponentFrame(name, source, ownerFn) {\n        {\n          if (prefix === void 0) {\n            try {\n              throw Error();\n            } catch (x2) {\n              var match = x2.stack.trim().match(/\\n( *(at )?)/);\n              prefix = match && match[1] || \"\";\n            }\n          }\n          return \"\\n\" + prefix + name;\n        }\n      }\n      var reentry = false;\n      var componentFrameCache;\n      {\n        var PossiblyWeakMap = typeof WeakMap === \"function\" ? WeakMap : Map;\n        componentFrameCache = new PossiblyWeakMap();\n      }\n      function describeNativeComponentFrame(fn, construct) {\n        if (!fn || reentry) {\n          return \"\";\n        }\n        {\n          var frame = componentFrameCache.get(fn);\n          if (frame !== void 0) {\n            return frame;\n          }\n        }\n        var control;\n        reentry = true;\n        var previousPrepareStackTrace = Error.prepareStackTrace;\n        Error.prepareStackTrace = void 0;\n        var previousDispatcher;\n        {\n          previousDispatcher = ReactCurrentDispatcher.current;\n          ReactCurrentDispatcher.current = null;\n          disableLogs();\n        }\n        try {\n          if (construct) {\n            var Fake = function() {\n              throw Error();\n            };\n            Object.defineProperty(Fake.prototype, \"props\", {\n              set: function() {\n                throw Error();\n              }\n            });\n            if (typeof Reflect === \"object\" && Reflect.construct) {\n              try {\n                Reflect.construct(Fake, []);\n              } catch (x2) {\n                control = x2;\n              }\n              Reflect.construct(fn, [], Fake);\n            } else {\n              try {\n                Fake.call();\n              } catch (x2) {\n                control = x2;\n              }\n              fn.call(Fake.prototype);\n            }\n          } else {\n            try {\n              throw Error();\n            } catch (x2) {\n              control = x2;\n            }\n            fn();\n          }\n        } catch (sample) {\n          if (sample && control && typeof sample.stack === \"string\") {\n            var sampleLines = sample.stack.split(\"\\n\");\n            var controlLines = control.stack.split(\"\\n\");\n            var s2 = sampleLines.length - 1;\n            var c2 = controlLines.length - 1;\n            while (s2 >= 1 && c2 >= 0 && sampleLines[s2] !== controlLines[c2]) {\n              c2--;\n            }\n            for (; s2 >= 1 && c2 >= 0; s2--, c2--) {\n              if (sampleLines[s2] !== controlLines[c2]) {\n                if (s2 !== 1 || c2 !== 1) {\n                  do {\n                    s2--;\n                    c2--;\n                    if (c2 < 0 || sampleLines[s2] !== controlLines[c2]) {\n                      var _frame = \"\\n\" + sampleLines[s2].replace(\" at new \", \" at \");\n                      if (fn.displayName && _frame.includes(\"<anonymous>\")) {\n                        _frame = _frame.replace(\"<anonymous>\", fn.displayName);\n                      }\n                      {\n                        if (typeof fn === \"function\") {\n                          componentFrameCache.set(fn, _frame);\n                        }\n                      }\n                      return _frame;\n                    }\n                  } while (s2 >= 1 && c2 >= 0);\n                }\n                break;\n              }\n            }\n          }\n        } finally {\n          reentry = false;\n          {\n            ReactCurrentDispatcher.current = previousDispatcher;\n            reenableLogs();\n          }\n          Error.prepareStackTrace = previousPrepareStackTrace;\n        }\n        var name = fn ? fn.displayName || fn.name : \"\";\n        var syntheticFrame = name ? describeBuiltInComponentFrame(name) : \"\";\n        {\n          if (typeof fn === \"function\") {\n            componentFrameCache.set(fn, syntheticFrame);\n          }\n        }\n        return syntheticFrame;\n      }\n      function describeClassComponentFrame(ctor, source, ownerFn) {\n        {\n          return describeNativeComponentFrame(ctor, true);\n        }\n      }\n      function describeFunctionComponentFrame(fn, source, ownerFn) {\n        {\n          return describeNativeComponentFrame(fn, false);\n        }\n      }\n      function shouldConstruct(Component) {\n        var prototype = Component.prototype;\n        return !!(prototype && prototype.isReactComponent);\n      }\n      function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n        if (type == null) {\n          return \"\";\n        }\n        if (typeof type === \"function\") {\n          {\n            return describeNativeComponentFrame(type, shouldConstruct(type));\n          }\n        }\n        if (typeof type === \"string\") {\n          return describeBuiltInComponentFrame(type);\n        }\n        switch (type) {\n          case REACT_SUSPENSE_TYPE:\n            return describeBuiltInComponentFrame(\"Suspense\");\n          case REACT_SUSPENSE_LIST_TYPE:\n            return describeBuiltInComponentFrame(\"SuspenseList\");\n        }\n        if (typeof type === \"object\") {\n          switch (type.$$typeof) {\n            case REACT_FORWARD_REF_TYPE:\n              return describeFunctionComponentFrame(type.render);\n            case REACT_MEMO_TYPE:\n              return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n            case REACT_LAZY_TYPE: {\n              var lazyComponent = type;\n              var payload = lazyComponent._payload;\n              var init = lazyComponent._init;\n              try {\n                return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n              } catch (x2) {\n              }\n            }\n          }\n        }\n        return \"\";\n      }\n      var hasOwnProperty = Object.prototype.hasOwnProperty;\n      var loggedTypeFailures = {};\n      var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n      function setCurrentlyValidatingElement(element) {\n        {\n          if (element) {\n            var owner = element._owner;\n            var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n            ReactDebugCurrentFrame.setExtraStackFrame(stack);\n          } else {\n            ReactDebugCurrentFrame.setExtraStackFrame(null);\n          }\n        }\n      }\n      function checkPropTypes(typeSpecs, values, location, componentName, element) {\n        {\n          var has = Function.call.bind(hasOwnProperty);\n          for (var typeSpecName in typeSpecs) {\n            if (has(typeSpecs, typeSpecName)) {\n              var error$1 = void 0;\n              try {\n                if (typeof typeSpecs[typeSpecName] !== \"function\") {\n                  var err = Error((componentName || \"React class\") + \": \" + location + \" type `\" + typeSpecName + \"` is invalid; it must be a function, usually from the `prop-types` package, but received `\" + typeof typeSpecs[typeSpecName] + \"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.\");\n                  err.name = \"Invariant Violation\";\n                  throw err;\n                }\n                error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, \"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\");\n              } catch (ex) {\n                error$1 = ex;\n              }\n              if (error$1 && !(error$1 instanceof Error)) {\n                setCurrentlyValidatingElement(element);\n                error2(\"%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).\", componentName || \"React class\", location, typeSpecName, typeof error$1);\n                setCurrentlyValidatingElement(null);\n              }\n              if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n                loggedTypeFailures[error$1.message] = true;\n                setCurrentlyValidatingElement(element);\n                error2(\"Failed %s type: %s\", location, error$1.message);\n                setCurrentlyValidatingElement(null);\n              }\n            }\n          }\n        }\n      }\n      var valueStack = [];\n      var fiberStack;\n      {\n        fiberStack = [];\n      }\n      var index = -1;\n      function createCursor(defaultValue) {\n        return {\n          current: defaultValue\n        };\n      }\n      function pop(cursor, fiber) {\n        if (index < 0) {\n          {\n            error2(\"Unexpected pop.\");\n          }\n          return;\n        }\n        {\n          if (fiber !== fiberStack[index]) {\n            error2(\"Unexpected Fiber popped.\");\n          }\n        }\n        cursor.current = valueStack[index];\n        valueStack[index] = null;\n        {\n          fiberStack[index] = null;\n        }\n        index--;\n      }\n      function push(cursor, value, fiber) {\n        index++;\n        valueStack[index] = cursor.current;\n        {\n          fiberStack[index] = fiber;\n        }\n        cursor.current = value;\n      }\n      var warnedAboutMissingGetChildContext;\n      {\n        warnedAboutMissingGetChildContext = {};\n      }\n      var emptyContextObject = {};\n      {\n        Object.freeze(emptyContextObject);\n      }\n      var contextStackCursor = createCursor(emptyContextObject);\n      var didPerformWorkStackCursor = createCursor(false);\n      var previousContext = emptyContextObject;\n      function getUnmaskedContext(workInProgress2, Component, didPushOwnContextIfProvider) {\n        {\n          if (didPushOwnContextIfProvider && isContextProvider(Component)) {\n            return previousContext;\n          }\n          return contextStackCursor.current;\n        }\n      }\n      function cacheContext(workInProgress2, unmaskedContext, maskedContext) {\n        {\n          var instance = workInProgress2.stateNode;\n          instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n          instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n        }\n      }\n      function getMaskedContext(workInProgress2, unmaskedContext) {\n        {\n          var type = workInProgress2.type;\n          var contextTypes = type.contextTypes;\n          if (!contextTypes) {\n            return emptyContextObject;\n          }\n          var instance = workInProgress2.stateNode;\n          if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n            return instance.__reactInternalMemoizedMaskedChildContext;\n          }\n          var context2 = {};\n          for (var key in contextTypes) {\n            context2[key] = unmaskedContext[key];\n          }\n          {\n            var name = getComponentNameFromFiber(workInProgress2) || \"Unknown\";\n            checkPropTypes(contextTypes, context2, \"context\", name);\n          }\n          if (instance) {\n            cacheContext(workInProgress2, unmaskedContext, context2);\n          }\n          return context2;\n        }\n      }\n      function hasContextChanged() {\n        {\n          return didPerformWorkStackCursor.current;\n        }\n      }\n      function isContextProvider(type) {\n        {\n          var childContextTypes = type.childContextTypes;\n          return childContextTypes !== null && childContextTypes !== void 0;\n        }\n      }\n      function popContext(fiber) {\n        {\n          pop(didPerformWorkStackCursor, fiber);\n          pop(contextStackCursor, fiber);\n        }\n      }\n      function popTopLevelContextObject(fiber) {\n        {\n          pop(didPerformWorkStackCursor, fiber);\n          pop(contextStackCursor, fiber);\n        }\n      }\n      function pushTopLevelContextObject(fiber, context2, didChange) {\n        {\n          if (contextStackCursor.current !== emptyContextObject) {\n            throw new Error(\"Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          push(contextStackCursor, context2, fiber);\n          push(didPerformWorkStackCursor, didChange, fiber);\n        }\n      }\n      function processChildContext(fiber, type, parentContext) {\n        {\n          var instance = fiber.stateNode;\n          var childContextTypes = type.childContextTypes;\n          if (typeof instance.getChildContext !== \"function\") {\n            {\n              var componentName = getComponentNameFromFiber(fiber) || \"Unknown\";\n              if (!warnedAboutMissingGetChildContext[componentName]) {\n                warnedAboutMissingGetChildContext[componentName] = true;\n                error2(\"%s.childContextTypes is specified but there is no getChildContext() method on the instance. You can either define getChildContext() on %s or remove childContextTypes from it.\", componentName, componentName);\n              }\n            }\n            return parentContext;\n          }\n          var childContext = instance.getChildContext();\n          for (var contextKey in childContext) {\n            if (!(contextKey in childContextTypes)) {\n              throw new Error((getComponentNameFromFiber(fiber) || \"Unknown\") + '.getChildContext(): key \"' + contextKey + '\" is not defined in childContextTypes.');\n            }\n          }\n          {\n            var name = getComponentNameFromFiber(fiber) || \"Unknown\";\n            checkPropTypes(childContextTypes, childContext, \"child context\", name);\n          }\n          return assign({}, parentContext, childContext);\n        }\n      }\n      function pushContextProvider(workInProgress2) {\n        {\n          var instance = workInProgress2.stateNode;\n          var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject;\n          previousContext = contextStackCursor.current;\n          push(contextStackCursor, memoizedMergedChildContext, workInProgress2);\n          push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress2);\n          return true;\n        }\n      }\n      function invalidateContextProvider(workInProgress2, type, didChange) {\n        {\n          var instance = workInProgress2.stateNode;\n          if (!instance) {\n            throw new Error(\"Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          if (didChange) {\n            var mergedContext = processChildContext(workInProgress2, type, previousContext);\n            instance.__reactInternalMemoizedMergedChildContext = mergedContext;\n            pop(didPerformWorkStackCursor, workInProgress2);\n            pop(contextStackCursor, workInProgress2);\n            push(contextStackCursor, mergedContext, workInProgress2);\n            push(didPerformWorkStackCursor, didChange, workInProgress2);\n          } else {\n            pop(didPerformWorkStackCursor, workInProgress2);\n            push(didPerformWorkStackCursor, didChange, workInProgress2);\n          }\n        }\n      }\n      function findCurrentUnmaskedContext(fiber) {\n        {\n          if (!isFiberMounted(fiber) || fiber.tag !== ClassComponent) {\n            throw new Error(\"Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          var node = fiber;\n          do {\n            switch (node.tag) {\n              case HostRoot:\n                return node.stateNode.context;\n              case ClassComponent: {\n                var Component = node.type;\n                if (isContextProvider(Component)) {\n                  return node.stateNode.__reactInternalMemoizedMergedChildContext;\n                }\n                break;\n              }\n            }\n            node = node.return;\n          } while (node !== null);\n          throw new Error(\"Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n      }\n      var LegacyRoot = 0;\n      var ConcurrentRoot = 1;\n      var NoMode = (\n        /*                         */\n        0\n      );\n      var ConcurrentMode = (\n        /*                 */\n        1\n      );\n      var ProfileMode = (\n        /*                    */\n        2\n      );\n      var StrictLegacyMode = (\n        /*               */\n        8\n      );\n      var StrictEffectsMode = (\n        /*              */\n        16\n      );\n      var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback;\n      var log = Math.log;\n      var LN2 = Math.LN2;\n      function clz32Fallback(x2) {\n        var asUint = x2 >>> 0;\n        if (asUint === 0) {\n          return 32;\n        }\n        return 31 - (log(asUint) / LN2 | 0) | 0;\n      }\n      var TotalLanes = 31;\n      var NoLanes = (\n        /*                        */\n        0\n      );\n      var NoLane = (\n        /*                          */\n        0\n      );\n      var SyncLane = (\n        /*                        */\n        1\n      );\n      var InputContinuousHydrationLane = (\n        /*    */\n        2\n      );\n      var InputContinuousLane = (\n        /*            */\n        4\n      );\n      var DefaultHydrationLane = (\n        /*            */\n        8\n      );\n      var DefaultLane = (\n        /*                    */\n        16\n      );\n      var TransitionHydrationLane = (\n        /*                */\n        32\n      );\n      var TransitionLanes = (\n        /*                       */\n        4194240\n      );\n      var TransitionLane1 = (\n        /*                        */\n        64\n      );\n      var TransitionLane2 = (\n        /*                        */\n        128\n      );\n      var TransitionLane3 = (\n        /*                        */\n        256\n      );\n      var TransitionLane4 = (\n        /*                        */\n        512\n      );\n      var TransitionLane5 = (\n        /*                        */\n        1024\n      );\n      var TransitionLane6 = (\n        /*                        */\n        2048\n      );\n      var TransitionLane7 = (\n        /*                        */\n        4096\n      );\n      var TransitionLane8 = (\n        /*                        */\n        8192\n      );\n      var TransitionLane9 = (\n        /*                        */\n        16384\n      );\n      var TransitionLane10 = (\n        /*                       */\n        32768\n      );\n      var TransitionLane11 = (\n        /*                       */\n        65536\n      );\n      var TransitionLane12 = (\n        /*                       */\n        131072\n      );\n      var TransitionLane13 = (\n        /*                       */\n        262144\n      );\n      var TransitionLane14 = (\n        /*                       */\n        524288\n      );\n      var TransitionLane15 = (\n        /*                       */\n        1048576\n      );\n      var TransitionLane16 = (\n        /*                       */\n        2097152\n      );\n      var RetryLanes = (\n        /*                            */\n        130023424\n      );\n      var RetryLane1 = (\n        /*                             */\n        4194304\n      );\n      var RetryLane2 = (\n        /*                             */\n        8388608\n      );\n      var RetryLane3 = (\n        /*                             */\n        16777216\n      );\n      var RetryLane4 = (\n        /*                             */\n        33554432\n      );\n      var RetryLane5 = (\n        /*                             */\n        67108864\n      );\n      var SomeRetryLane = RetryLane1;\n      var SelectiveHydrationLane = (\n        /*          */\n        134217728\n      );\n      var NonIdleLanes = (\n        /*                                 */\n        268435455\n      );\n      var IdleHydrationLane = (\n        /*               */\n        268435456\n      );\n      var IdleLane = (\n        /*                       */\n        536870912\n      );\n      var OffscreenLane = (\n        /*                   */\n        1073741824\n      );\n      function getLabelForLane(lane) {\n        {\n          if (lane & SyncLane) {\n            return \"Sync\";\n          }\n          if (lane & InputContinuousHydrationLane) {\n            return \"InputContinuousHydration\";\n          }\n          if (lane & InputContinuousLane) {\n            return \"InputContinuous\";\n          }\n          if (lane & DefaultHydrationLane) {\n            return \"DefaultHydration\";\n          }\n          if (lane & DefaultLane) {\n            return \"Default\";\n          }\n          if (lane & TransitionHydrationLane) {\n            return \"TransitionHydration\";\n          }\n          if (lane & TransitionLanes) {\n            return \"Transition\";\n          }\n          if (lane & RetryLanes) {\n            return \"Retry\";\n          }\n          if (lane & SelectiveHydrationLane) {\n            return \"SelectiveHydration\";\n          }\n          if (lane & IdleHydrationLane) {\n            return \"IdleHydration\";\n          }\n          if (lane & IdleLane) {\n            return \"Idle\";\n          }\n          if (lane & OffscreenLane) {\n            return \"Offscreen\";\n          }\n        }\n      }\n      var NoTimestamp = -1;\n      var nextTransitionLane = TransitionLane1;\n      var nextRetryLane = RetryLane1;\n      function getHighestPriorityLanes(lanes) {\n        switch (getHighestPriorityLane(lanes)) {\n          case SyncLane:\n            return SyncLane;\n          case InputContinuousHydrationLane:\n            return InputContinuousHydrationLane;\n          case InputContinuousLane:\n            return InputContinuousLane;\n          case DefaultHydrationLane:\n            return DefaultHydrationLane;\n          case DefaultLane:\n            return DefaultLane;\n          case TransitionHydrationLane:\n            return TransitionHydrationLane;\n          case TransitionLane1:\n          case TransitionLane2:\n          case TransitionLane3:\n          case TransitionLane4:\n          case TransitionLane5:\n          case TransitionLane6:\n          case TransitionLane7:\n          case TransitionLane8:\n          case TransitionLane9:\n          case TransitionLane10:\n          case TransitionLane11:\n          case TransitionLane12:\n          case TransitionLane13:\n          case TransitionLane14:\n          case TransitionLane15:\n          case TransitionLane16:\n            return lanes & TransitionLanes;\n          case RetryLane1:\n          case RetryLane2:\n          case RetryLane3:\n          case RetryLane4:\n          case RetryLane5:\n            return lanes & RetryLanes;\n          case SelectiveHydrationLane:\n            return SelectiveHydrationLane;\n          case IdleHydrationLane:\n            return IdleHydrationLane;\n          case IdleLane:\n            return IdleLane;\n          case OffscreenLane:\n            return OffscreenLane;\n          default:\n            {\n              error2(\"Should have found matching lanes. This is a bug in React.\");\n            }\n            return lanes;\n        }\n      }\n      function getNextLanes(root, wipLanes) {\n        var pendingLanes = root.pendingLanes;\n        if (pendingLanes === NoLanes) {\n          return NoLanes;\n        }\n        var nextLanes = NoLanes;\n        var suspendedLanes = root.suspendedLanes;\n        var pingedLanes = root.pingedLanes;\n        var nonIdlePendingLanes = pendingLanes & NonIdleLanes;\n        if (nonIdlePendingLanes !== NoLanes) {\n          var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;\n          if (nonIdleUnblockedLanes !== NoLanes) {\n            nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);\n          } else {\n            var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;\n            if (nonIdlePingedLanes !== NoLanes) {\n              nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);\n            }\n          }\n        } else {\n          var unblockedLanes = pendingLanes & ~suspendedLanes;\n          if (unblockedLanes !== NoLanes) {\n            nextLanes = getHighestPriorityLanes(unblockedLanes);\n          } else {\n            if (pingedLanes !== NoLanes) {\n              nextLanes = getHighestPriorityLanes(pingedLanes);\n            }\n          }\n        }\n        if (nextLanes === NoLanes) {\n          return NoLanes;\n        }\n        if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't\n        // bother waiting until the root is complete.\n        (wipLanes & suspendedLanes) === NoLanes) {\n          var nextLane = getHighestPriorityLane(nextLanes);\n          var wipLane = getHighestPriorityLane(wipLanes);\n          if (\n            // Tests whether the next lane is equal or lower priority than the wip\n            // one. This works because the bits decrease in priority as you go left.\n            nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The\n            // only difference between default updates and transition updates is that\n            // default updates do not support refresh transitions.\n            nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes\n          ) {\n            return wipLanes;\n          }\n        }\n        if ((nextLanes & InputContinuousLane) !== NoLanes) {\n          nextLanes |= pendingLanes & DefaultLane;\n        }\n        var entangledLanes = root.entangledLanes;\n        if (entangledLanes !== NoLanes) {\n          var entanglements = root.entanglements;\n          var lanes = nextLanes & entangledLanes;\n          while (lanes > 0) {\n            var index2 = pickArbitraryLaneIndex(lanes);\n            var lane = 1 << index2;\n            nextLanes |= entanglements[index2];\n            lanes &= ~lane;\n          }\n        }\n        return nextLanes;\n      }\n      function getMostRecentEventTime(root, lanes) {\n        var eventTimes = root.eventTimes;\n        var mostRecentEventTime = NoTimestamp;\n        while (lanes > 0) {\n          var index2 = pickArbitraryLaneIndex(lanes);\n          var lane = 1 << index2;\n          var eventTime = eventTimes[index2];\n          if (eventTime > mostRecentEventTime) {\n            mostRecentEventTime = eventTime;\n          }\n          lanes &= ~lane;\n        }\n        return mostRecentEventTime;\n      }\n      function computeExpirationTime(lane, currentTime) {\n        switch (lane) {\n          case SyncLane:\n          case InputContinuousHydrationLane:\n          case InputContinuousLane:\n            return currentTime + 250;\n          case DefaultHydrationLane:\n          case DefaultLane:\n          case TransitionHydrationLane:\n          case TransitionLane1:\n          case TransitionLane2:\n          case TransitionLane3:\n          case TransitionLane4:\n          case TransitionLane5:\n          case TransitionLane6:\n          case TransitionLane7:\n          case TransitionLane8:\n          case TransitionLane9:\n          case TransitionLane10:\n          case TransitionLane11:\n          case TransitionLane12:\n          case TransitionLane13:\n          case TransitionLane14:\n          case TransitionLane15:\n          case TransitionLane16:\n            return currentTime + 5e3;\n          case RetryLane1:\n          case RetryLane2:\n          case RetryLane3:\n          case RetryLane4:\n          case RetryLane5:\n            return NoTimestamp;\n          case SelectiveHydrationLane:\n          case IdleHydrationLane:\n          case IdleLane:\n          case OffscreenLane:\n            return NoTimestamp;\n          default:\n            {\n              error2(\"Should have found matching lanes. This is a bug in React.\");\n            }\n            return NoTimestamp;\n        }\n      }\n      function markStarvedLanesAsExpired(root, currentTime) {\n        var pendingLanes = root.pendingLanes;\n        var suspendedLanes = root.suspendedLanes;\n        var pingedLanes = root.pingedLanes;\n        var expirationTimes = root.expirationTimes;\n        var lanes = pendingLanes;\n        while (lanes > 0) {\n          var index2 = pickArbitraryLaneIndex(lanes);\n          var lane = 1 << index2;\n          var expirationTime = expirationTimes[index2];\n          if (expirationTime === NoTimestamp) {\n            if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {\n              expirationTimes[index2] = computeExpirationTime(lane, currentTime);\n            }\n          } else if (expirationTime <= currentTime) {\n            root.expiredLanes |= lane;\n          }\n          lanes &= ~lane;\n        }\n      }\n      function getHighestPriorityPendingLanes(root) {\n        return getHighestPriorityLanes(root.pendingLanes);\n      }\n      function getLanesToRetrySynchronouslyOnError(root) {\n        var everythingButOffscreen = root.pendingLanes & -1073741825;\n        if (everythingButOffscreen !== NoLanes) {\n          return everythingButOffscreen;\n        }\n        if (everythingButOffscreen & OffscreenLane) {\n          return OffscreenLane;\n        }\n        return NoLanes;\n      }\n      function includesSyncLane(lanes) {\n        return (lanes & SyncLane) !== NoLanes;\n      }\n      function includesNonIdleWork(lanes) {\n        return (lanes & NonIdleLanes) !== NoLanes;\n      }\n      function includesOnlyRetries(lanes) {\n        return (lanes & RetryLanes) === lanes;\n      }\n      function includesOnlyTransitions(lanes) {\n        return (lanes & TransitionLanes) === lanes;\n      }\n      function includesBlockingLane(root, lanes) {\n        var SyncDefaultLanes = InputContinuousHydrationLane | InputContinuousLane | DefaultHydrationLane | DefaultLane;\n        return (lanes & SyncDefaultLanes) !== NoLanes;\n      }\n      function includesExpiredLane(root, lanes) {\n        return (lanes & root.expiredLanes) !== NoLanes;\n      }\n      function isTransitionLane(lane) {\n        return (lane & TransitionLanes) !== 0;\n      }\n      function claimNextTransitionLane() {\n        var lane = nextTransitionLane;\n        nextTransitionLane <<= 1;\n        if ((nextTransitionLane & TransitionLanes) === 0) {\n          nextTransitionLane = TransitionLane1;\n        }\n        return lane;\n      }\n      function claimNextRetryLane() {\n        var lane = nextRetryLane;\n        nextRetryLane <<= 1;\n        if ((nextRetryLane & RetryLanes) === 0) {\n          nextRetryLane = RetryLane1;\n        }\n        return lane;\n      }\n      function getHighestPriorityLane(lanes) {\n        return lanes & -lanes;\n      }\n      function pickArbitraryLane(lanes) {\n        return getHighestPriorityLane(lanes);\n      }\n      function pickArbitraryLaneIndex(lanes) {\n        return 31 - clz32(lanes);\n      }\n      function laneToIndex(lane) {\n        return pickArbitraryLaneIndex(lane);\n      }\n      function includesSomeLane(a2, b2) {\n        return (a2 & b2) !== NoLanes;\n      }\n      function isSubsetOfLanes(set2, subset) {\n        return (set2 & subset) === subset;\n      }\n      function mergeLanes(a2, b2) {\n        return a2 | b2;\n      }\n      function removeLanes(set2, subset) {\n        return set2 & ~subset;\n      }\n      function intersectLanes(a2, b2) {\n        return a2 & b2;\n      }\n      function laneToLanes(lane) {\n        return lane;\n      }\n      function higherPriorityLane(a2, b2) {\n        return a2 !== NoLane && a2 < b2 ? a2 : b2;\n      }\n      function createLaneMap(initial) {\n        var laneMap = [];\n        for (var i2 = 0; i2 < TotalLanes; i2++) {\n          laneMap.push(initial);\n        }\n        return laneMap;\n      }\n      function markRootUpdated(root, updateLane, eventTime) {\n        root.pendingLanes |= updateLane;\n        if (updateLane !== IdleLane) {\n          root.suspendedLanes = NoLanes;\n          root.pingedLanes = NoLanes;\n        }\n        var eventTimes = root.eventTimes;\n        var index2 = laneToIndex(updateLane);\n        eventTimes[index2] = eventTime;\n      }\n      function markRootSuspended(root, suspendedLanes) {\n        root.suspendedLanes |= suspendedLanes;\n        root.pingedLanes &= ~suspendedLanes;\n        var expirationTimes = root.expirationTimes;\n        var lanes = suspendedLanes;\n        while (lanes > 0) {\n          var index2 = pickArbitraryLaneIndex(lanes);\n          var lane = 1 << index2;\n          expirationTimes[index2] = NoTimestamp;\n          lanes &= ~lane;\n        }\n      }\n      function markRootPinged(root, pingedLanes, eventTime) {\n        root.pingedLanes |= root.suspendedLanes & pingedLanes;\n      }\n      function markRootFinished(root, remainingLanes) {\n        var noLongerPendingLanes = root.pendingLanes & ~remainingLanes;\n        root.pendingLanes = remainingLanes;\n        root.suspendedLanes = 0;\n        root.pingedLanes = 0;\n        root.expiredLanes &= remainingLanes;\n        root.mutableReadLanes &= remainingLanes;\n        root.entangledLanes &= remainingLanes;\n        var entanglements = root.entanglements;\n        var eventTimes = root.eventTimes;\n        var expirationTimes = root.expirationTimes;\n        var lanes = noLongerPendingLanes;\n        while (lanes > 0) {\n          var index2 = pickArbitraryLaneIndex(lanes);\n          var lane = 1 << index2;\n          entanglements[index2] = NoLanes;\n          eventTimes[index2] = NoTimestamp;\n          expirationTimes[index2] = NoTimestamp;\n          lanes &= ~lane;\n        }\n      }\n      function markRootEntangled(root, entangledLanes) {\n        var rootEntangledLanes = root.entangledLanes |= entangledLanes;\n        var entanglements = root.entanglements;\n        var lanes = rootEntangledLanes;\n        while (lanes) {\n          var index2 = pickArbitraryLaneIndex(lanes);\n          var lane = 1 << index2;\n          if (\n            // Is this one of the newly entangled lanes?\n            lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes?\n            entanglements[index2] & entangledLanes\n          ) {\n            entanglements[index2] |= entangledLanes;\n          }\n          lanes &= ~lane;\n        }\n      }\n      function getBumpedLaneForHydration(root, renderLanes2) {\n        var renderLane = getHighestPriorityLane(renderLanes2);\n        var lane;\n        switch (renderLane) {\n          case InputContinuousLane:\n            lane = InputContinuousHydrationLane;\n            break;\n          case DefaultLane:\n            lane = DefaultHydrationLane;\n            break;\n          case TransitionLane1:\n          case TransitionLane2:\n          case TransitionLane3:\n          case TransitionLane4:\n          case TransitionLane5:\n          case TransitionLane6:\n          case TransitionLane7:\n          case TransitionLane8:\n          case TransitionLane9:\n          case TransitionLane10:\n          case TransitionLane11:\n          case TransitionLane12:\n          case TransitionLane13:\n          case TransitionLane14:\n          case TransitionLane15:\n          case TransitionLane16:\n          case RetryLane1:\n          case RetryLane2:\n          case RetryLane3:\n          case RetryLane4:\n          case RetryLane5:\n            lane = TransitionHydrationLane;\n            break;\n          case IdleLane:\n            lane = IdleHydrationLane;\n            break;\n          default:\n            lane = NoLane;\n            break;\n        }\n        if ((lane & (root.suspendedLanes | renderLanes2)) !== NoLane) {\n          return NoLane;\n        }\n        return lane;\n      }\n      function addFiberToLanesMap(root, fiber, lanes) {\n        if (!isDevToolsPresent) {\n          return;\n        }\n        var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n        while (lanes > 0) {\n          var index2 = laneToIndex(lanes);\n          var lane = 1 << index2;\n          var updaters = pendingUpdatersLaneMap[index2];\n          updaters.add(fiber);\n          lanes &= ~lane;\n        }\n      }\n      function movePendingFibersToMemoized(root, lanes) {\n        if (!isDevToolsPresent) {\n          return;\n        }\n        var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n        var memoizedUpdaters = root.memoizedUpdaters;\n        while (lanes > 0) {\n          var index2 = laneToIndex(lanes);\n          var lane = 1 << index2;\n          var updaters = pendingUpdatersLaneMap[index2];\n          if (updaters.size > 0) {\n            updaters.forEach(function(fiber) {\n              var alternate = fiber.alternate;\n              if (alternate === null || !memoizedUpdaters.has(alternate)) {\n                memoizedUpdaters.add(fiber);\n              }\n            });\n            updaters.clear();\n          }\n          lanes &= ~lane;\n        }\n      }\n      var DiscreteEventPriority = SyncLane;\n      var ContinuousEventPriority = InputContinuousLane;\n      var DefaultEventPriority = DefaultLane;\n      var IdleEventPriority = IdleLane;\n      var currentUpdatePriority = NoLane;\n      function getCurrentUpdatePriority() {\n        return currentUpdatePriority;\n      }\n      function setCurrentUpdatePriority(newPriority) {\n        currentUpdatePriority = newPriority;\n      }\n      function runWithPriority(priority, fn) {\n        var previousPriority = currentUpdatePriority;\n        try {\n          currentUpdatePriority = priority;\n          return fn();\n        } finally {\n          currentUpdatePriority = previousPriority;\n        }\n      }\n      function higherEventPriority(a2, b2) {\n        return a2 !== 0 && a2 < b2 ? a2 : b2;\n      }\n      function lowerEventPriority(a2, b2) {\n        return a2 > b2 ? a2 : b2;\n      }\n      function isHigherEventPriority(a2, b2) {\n        return a2 !== 0 && a2 < b2;\n      }\n      function lanesToEventPriority(lanes) {\n        var lane = getHighestPriorityLane(lanes);\n        if (!isHigherEventPriority(DiscreteEventPriority, lane)) {\n          return DiscreteEventPriority;\n        }\n        if (!isHigherEventPriority(ContinuousEventPriority, lane)) {\n          return ContinuousEventPriority;\n        }\n        if (includesNonIdleWork(lane)) {\n          return DefaultEventPriority;\n        }\n        return IdleEventPriority;\n      }\n      var scheduleCallback = Scheduler.unstable_scheduleCallback;\n      var cancelCallback = Scheduler.unstable_cancelCallback;\n      var shouldYield = Scheduler.unstable_shouldYield;\n      var requestPaint = Scheduler.unstable_requestPaint;\n      var now$1 = Scheduler.unstable_now;\n      var ImmediatePriority = Scheduler.unstable_ImmediatePriority;\n      var UserBlockingPriority = Scheduler.unstable_UserBlockingPriority;\n      var NormalPriority = Scheduler.unstable_NormalPriority;\n      var IdlePriority = Scheduler.unstable_IdlePriority;\n      var unstable_yieldValue = Scheduler.unstable_yieldValue;\n      var unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue;\n      var rendererID = null;\n      var injectedHook = null;\n      var injectedProfilingHooks = null;\n      var hasLoggedError = false;\n      var isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== \"undefined\";\n      function injectInternals(internals) {\n        if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === \"undefined\") {\n          return false;\n        }\n        var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n        if (hook.isDisabled) {\n          return true;\n        }\n        if (!hook.supportsFiber) {\n          {\n            error2(\"The installed version of React DevTools is too old and will not work with the current version of React. Please update React DevTools. https://reactjs.org/link/react-devtools\");\n          }\n          return true;\n        }\n        try {\n          if (enableSchedulingProfiler) {\n            internals = assign({}, internals, {\n              getLaneLabelMap,\n              injectProfilingHooks\n            });\n          }\n          rendererID = hook.inject(internals);\n          injectedHook = hook;\n        } catch (err) {\n          {\n            error2(\"React instrumentation encountered an error: %s.\", err);\n          }\n        }\n        if (hook.checkDCE) {\n          return true;\n        } else {\n          return false;\n        }\n      }\n      function onScheduleRoot(root, children) {\n        {\n          if (injectedHook && typeof injectedHook.onScheduleFiberRoot === \"function\") {\n            try {\n              injectedHook.onScheduleFiberRoot(rendererID, root, children);\n            } catch (err) {\n              if (!hasLoggedError) {\n                hasLoggedError = true;\n                error2(\"React instrumentation encountered an error: %s\", err);\n              }\n            }\n          }\n        }\n      }\n      function onCommitRoot(root, eventPriority) {\n        if (injectedHook && typeof injectedHook.onCommitFiberRoot === \"function\") {\n          try {\n            var didError = (root.current.flags & DidCapture) === DidCapture;\n            if (enableProfilerTimer) {\n              var schedulerPriority;\n              switch (eventPriority) {\n                case DiscreteEventPriority:\n                  schedulerPriority = ImmediatePriority;\n                  break;\n                case ContinuousEventPriority:\n                  schedulerPriority = UserBlockingPriority;\n                  break;\n                case DefaultEventPriority:\n                  schedulerPriority = NormalPriority;\n                  break;\n                case IdleEventPriority:\n                  schedulerPriority = IdlePriority;\n                  break;\n                default:\n                  schedulerPriority = NormalPriority;\n                  break;\n              }\n              injectedHook.onCommitFiberRoot(rendererID, root, schedulerPriority, didError);\n            }\n          } catch (err) {\n            {\n              if (!hasLoggedError) {\n                hasLoggedError = true;\n                error2(\"React instrumentation encountered an error: %s\", err);\n              }\n            }\n          }\n        }\n      }\n      function onPostCommitRoot(root) {\n        if (injectedHook && typeof injectedHook.onPostCommitFiberRoot === \"function\") {\n          try {\n            injectedHook.onPostCommitFiberRoot(rendererID, root);\n          } catch (err) {\n            {\n              if (!hasLoggedError) {\n                hasLoggedError = true;\n                error2(\"React instrumentation encountered an error: %s\", err);\n              }\n            }\n          }\n        }\n      }\n      function onCommitUnmount(fiber) {\n        if (injectedHook && typeof injectedHook.onCommitFiberUnmount === \"function\") {\n          try {\n            injectedHook.onCommitFiberUnmount(rendererID, fiber);\n          } catch (err) {\n            {\n              if (!hasLoggedError) {\n                hasLoggedError = true;\n                error2(\"React instrumentation encountered an error: %s\", err);\n              }\n            }\n          }\n        }\n      }\n      function setIsStrictModeForDevtools(newIsStrictMode) {\n        {\n          if (typeof unstable_yieldValue === \"function\") {\n            unstable_setDisableYieldValue(newIsStrictMode);\n            setSuppressWarning(newIsStrictMode);\n          }\n          if (injectedHook && typeof injectedHook.setStrictMode === \"function\") {\n            try {\n              injectedHook.setStrictMode(rendererID, newIsStrictMode);\n            } catch (err) {\n              {\n                if (!hasLoggedError) {\n                  hasLoggedError = true;\n                  error2(\"React instrumentation encountered an error: %s\", err);\n                }\n              }\n            }\n          }\n        }\n      }\n      function injectProfilingHooks(profilingHooks) {\n        injectedProfilingHooks = profilingHooks;\n      }\n      function getLaneLabelMap() {\n        {\n          var map = /* @__PURE__ */ new Map();\n          var lane = 1;\n          for (var index2 = 0; index2 < TotalLanes; index2++) {\n            var label = getLabelForLane(lane);\n            map.set(lane, label);\n            lane *= 2;\n          }\n          return map;\n        }\n      }\n      function markCommitStarted(lanes) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStarted === \"function\") {\n            injectedProfilingHooks.markCommitStarted(lanes);\n          }\n        }\n      }\n      function markCommitStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStopped === \"function\") {\n            injectedProfilingHooks.markCommitStopped();\n          }\n        }\n      }\n      function markComponentRenderStarted(fiber) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStarted === \"function\") {\n            injectedProfilingHooks.markComponentRenderStarted(fiber);\n          }\n        }\n      }\n      function markComponentRenderStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStopped === \"function\") {\n            injectedProfilingHooks.markComponentRenderStopped();\n          }\n        }\n      }\n      function markComponentPassiveEffectMountStarted(fiber) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStarted === \"function\") {\n            injectedProfilingHooks.markComponentPassiveEffectMountStarted(fiber);\n          }\n        }\n      }\n      function markComponentPassiveEffectMountStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStopped === \"function\") {\n            injectedProfilingHooks.markComponentPassiveEffectMountStopped();\n          }\n        }\n      }\n      function markComponentPassiveEffectUnmountStarted(fiber) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStarted === \"function\") {\n            injectedProfilingHooks.markComponentPassiveEffectUnmountStarted(fiber);\n          }\n        }\n      }\n      function markComponentPassiveEffectUnmountStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStopped === \"function\") {\n            injectedProfilingHooks.markComponentPassiveEffectUnmountStopped();\n          }\n        }\n      }\n      function markComponentLayoutEffectMountStarted(fiber) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStarted === \"function\") {\n            injectedProfilingHooks.markComponentLayoutEffectMountStarted(fiber);\n          }\n        }\n      }\n      function markComponentLayoutEffectMountStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStopped === \"function\") {\n            injectedProfilingHooks.markComponentLayoutEffectMountStopped();\n          }\n        }\n      }\n      function markComponentLayoutEffectUnmountStarted(fiber) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStarted === \"function\") {\n            injectedProfilingHooks.markComponentLayoutEffectUnmountStarted(fiber);\n          }\n        }\n      }\n      function markComponentLayoutEffectUnmountStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStopped === \"function\") {\n            injectedProfilingHooks.markComponentLayoutEffectUnmountStopped();\n          }\n        }\n      }\n      function markComponentErrored(fiber, thrownValue, lanes) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentErrored === \"function\") {\n            injectedProfilingHooks.markComponentErrored(fiber, thrownValue, lanes);\n          }\n        }\n      }\n      function markComponentSuspended(fiber, wakeable, lanes) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentSuspended === \"function\") {\n            injectedProfilingHooks.markComponentSuspended(fiber, wakeable, lanes);\n          }\n        }\n      }\n      function markLayoutEffectsStarted(lanes) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStarted === \"function\") {\n            injectedProfilingHooks.markLayoutEffectsStarted(lanes);\n          }\n        }\n      }\n      function markLayoutEffectsStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStopped === \"function\") {\n            injectedProfilingHooks.markLayoutEffectsStopped();\n          }\n        }\n      }\n      function markPassiveEffectsStarted(lanes) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStarted === \"function\") {\n            injectedProfilingHooks.markPassiveEffectsStarted(lanes);\n          }\n        }\n      }\n      function markPassiveEffectsStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStopped === \"function\") {\n            injectedProfilingHooks.markPassiveEffectsStopped();\n          }\n        }\n      }\n      function markRenderStarted(lanes) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStarted === \"function\") {\n            injectedProfilingHooks.markRenderStarted(lanes);\n          }\n        }\n      }\n      function markRenderYielded() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderYielded === \"function\") {\n            injectedProfilingHooks.markRenderYielded();\n          }\n        }\n      }\n      function markRenderStopped() {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStopped === \"function\") {\n            injectedProfilingHooks.markRenderStopped();\n          }\n        }\n      }\n      function markRenderScheduled(lane) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderScheduled === \"function\") {\n            injectedProfilingHooks.markRenderScheduled(lane);\n          }\n        }\n      }\n      function markForceUpdateScheduled(fiber, lane) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markForceUpdateScheduled === \"function\") {\n            injectedProfilingHooks.markForceUpdateScheduled(fiber, lane);\n          }\n        }\n      }\n      function markStateUpdateScheduled(fiber, lane) {\n        {\n          if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markStateUpdateScheduled === \"function\") {\n            injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);\n          }\n        }\n      }\n      function is2(x2, y2) {\n        return x2 === y2 && (x2 !== 0 || 1 / x2 === 1 / y2) || x2 !== x2 && y2 !== y2;\n      }\n      var objectIs = typeof Object.is === \"function\" ? Object.is : is2;\n      var syncQueue = null;\n      var includesLegacySyncCallbacks = false;\n      var isFlushingSyncQueue = false;\n      function scheduleSyncCallback(callback) {\n        if (syncQueue === null) {\n          syncQueue = [callback];\n        } else {\n          syncQueue.push(callback);\n        }\n      }\n      function scheduleLegacySyncCallback(callback) {\n        includesLegacySyncCallbacks = true;\n        scheduleSyncCallback(callback);\n      }\n      function flushSyncCallbacksOnlyInLegacyMode() {\n        if (includesLegacySyncCallbacks) {\n          flushSyncCallbacks();\n        }\n      }\n      function flushSyncCallbacks() {\n        if (!isFlushingSyncQueue && syncQueue !== null) {\n          isFlushingSyncQueue = true;\n          var i2 = 0;\n          var previousUpdatePriority = getCurrentUpdatePriority();\n          try {\n            var isSync = true;\n            var queue = syncQueue;\n            setCurrentUpdatePriority(DiscreteEventPriority);\n            for (; i2 < queue.length; i2++) {\n              var callback = queue[i2];\n              do {\n                callback = callback(isSync);\n              } while (callback !== null);\n            }\n            syncQueue = null;\n            includesLegacySyncCallbacks = false;\n          } catch (error3) {\n            if (syncQueue !== null) {\n              syncQueue = syncQueue.slice(i2 + 1);\n            }\n            scheduleCallback(ImmediatePriority, flushSyncCallbacks);\n            throw error3;\n          } finally {\n            setCurrentUpdatePriority(previousUpdatePriority);\n            isFlushingSyncQueue = false;\n          }\n        }\n        return null;\n      }\n      function isRootDehydrated(root) {\n        var currentState = root.current.memoizedState;\n        return currentState.isDehydrated;\n      }\n      var ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;\n      var NoTransition = null;\n      function requestCurrentTransition() {\n        return ReactCurrentBatchConfig.transition;\n      }\n      function shallowEqual(objA, objB) {\n        if (objectIs(objA, objB)) {\n          return true;\n        }\n        if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n          return false;\n        }\n        var keysA = Object.keys(objA);\n        var keysB = Object.keys(objB);\n        if (keysA.length !== keysB.length) {\n          return false;\n        }\n        for (var i2 = 0; i2 < keysA.length; i2++) {\n          var currentKey = keysA[i2];\n          if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) {\n            return false;\n          }\n        }\n        return true;\n      }\n      function describeFiber(fiber) {\n        fiber._debugOwner ? fiber._debugOwner.type : null;\n        fiber._debugSource;\n        switch (fiber.tag) {\n          case HostComponent:\n            return describeBuiltInComponentFrame(fiber.type);\n          case LazyComponent:\n            return describeBuiltInComponentFrame(\"Lazy\");\n          case SuspenseComponent:\n            return describeBuiltInComponentFrame(\"Suspense\");\n          case SuspenseListComponent:\n            return describeBuiltInComponentFrame(\"SuspenseList\");\n          case FunctionComponent:\n          case IndeterminateComponent:\n          case SimpleMemoComponent:\n            return describeFunctionComponentFrame(fiber.type);\n          case ForwardRef:\n            return describeFunctionComponentFrame(fiber.type.render);\n          case ClassComponent:\n            return describeClassComponentFrame(fiber.type);\n          default:\n            return \"\";\n        }\n      }\n      function getStackByFiberInDevAndProd(workInProgress2) {\n        try {\n          var info = \"\";\n          var node = workInProgress2;\n          do {\n            info += describeFiber(node);\n            node = node.return;\n          } while (node);\n          return info;\n        } catch (x2) {\n          return \"\\nError generating stack: \" + x2.message + \"\\n\" + x2.stack;\n        }\n      }\n      var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n      var current = null;\n      var isRendering = false;\n      function getCurrentFiberOwnerNameInDevOrNull() {\n        {\n          if (current === null) {\n            return null;\n          }\n          var owner = current._debugOwner;\n          if (owner !== null && typeof owner !== \"undefined\") {\n            return getComponentNameFromFiber(owner);\n          }\n        }\n        return null;\n      }\n      function getCurrentFiberStackInDev() {\n        {\n          if (current === null) {\n            return \"\";\n          }\n          return getStackByFiberInDevAndProd(current);\n        }\n      }\n      function resetCurrentFiber() {\n        {\n          ReactDebugCurrentFrame$1.getCurrentStack = null;\n          current = null;\n          isRendering = false;\n        }\n      }\n      function setCurrentFiber(fiber) {\n        {\n          ReactDebugCurrentFrame$1.getCurrentStack = getCurrentFiberStackInDev;\n          current = fiber;\n          isRendering = false;\n        }\n      }\n      function setIsRendering(rendering) {\n        {\n          isRendering = rendering;\n        }\n      }\n      var ReactStrictModeWarnings = {\n        recordUnsafeLifecycleWarnings: function(fiber, instance) {\n        },\n        flushPendingUnsafeLifecycleWarnings: function() {\n        },\n        recordLegacyContextWarning: function(fiber, instance) {\n        },\n        flushLegacyContextWarning: function() {\n        },\n        discardPendingWarnings: function() {\n        }\n      };\n      {\n        var findStrictRoot = function(fiber) {\n          var maybeStrictRoot = null;\n          var node = fiber;\n          while (node !== null) {\n            if (node.mode & StrictLegacyMode) {\n              maybeStrictRoot = node;\n            }\n            node = node.return;\n          }\n          return maybeStrictRoot;\n        };\n        var setToSortedString = function(set2) {\n          var array = [];\n          set2.forEach(function(value) {\n            array.push(value);\n          });\n          return array.sort().join(\", \");\n        };\n        var pendingComponentWillMountWarnings = [];\n        var pendingUNSAFE_ComponentWillMountWarnings = [];\n        var pendingComponentWillReceivePropsWarnings = [];\n        var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n        var pendingComponentWillUpdateWarnings = [];\n        var pendingUNSAFE_ComponentWillUpdateWarnings = [];\n        var didWarnAboutUnsafeLifecycles = /* @__PURE__ */ new Set();\n        ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function(fiber, instance) {\n          if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {\n            return;\n          }\n          if (typeof instance.componentWillMount === \"function\" && // Don't warn about react-lifecycles-compat polyfilled components.\n          instance.componentWillMount.__suppressDeprecationWarning !== true) {\n            pendingComponentWillMountWarnings.push(fiber);\n          }\n          if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillMount === \"function\") {\n            pendingUNSAFE_ComponentWillMountWarnings.push(fiber);\n          }\n          if (typeof instance.componentWillReceiveProps === \"function\" && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n            pendingComponentWillReceivePropsWarnings.push(fiber);\n          }\n          if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillReceiveProps === \"function\") {\n            pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);\n          }\n          if (typeof instance.componentWillUpdate === \"function\" && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n            pendingComponentWillUpdateWarnings.push(fiber);\n          }\n          if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillUpdate === \"function\") {\n            pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);\n          }\n        };\n        ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function() {\n          var componentWillMountUniqueNames = /* @__PURE__ */ new Set();\n          if (pendingComponentWillMountWarnings.length > 0) {\n            pendingComponentWillMountWarnings.forEach(function(fiber) {\n              componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n              didWarnAboutUnsafeLifecycles.add(fiber.type);\n            });\n            pendingComponentWillMountWarnings = [];\n          }\n          var UNSAFE_componentWillMountUniqueNames = /* @__PURE__ */ new Set();\n          if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {\n            pendingUNSAFE_ComponentWillMountWarnings.forEach(function(fiber) {\n              UNSAFE_componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n              didWarnAboutUnsafeLifecycles.add(fiber.type);\n            });\n            pendingUNSAFE_ComponentWillMountWarnings = [];\n          }\n          var componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();\n          if (pendingComponentWillReceivePropsWarnings.length > 0) {\n            pendingComponentWillReceivePropsWarnings.forEach(function(fiber) {\n              componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n              didWarnAboutUnsafeLifecycles.add(fiber.type);\n            });\n            pendingComponentWillReceivePropsWarnings = [];\n          }\n          var UNSAFE_componentWillReceivePropsUniqueNames = /* @__PURE__ */ new Set();\n          if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {\n            pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function(fiber) {\n              UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n              didWarnAboutUnsafeLifecycles.add(fiber.type);\n            });\n            pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n          }\n          var componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();\n          if (pendingComponentWillUpdateWarnings.length > 0) {\n            pendingComponentWillUpdateWarnings.forEach(function(fiber) {\n              componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n              didWarnAboutUnsafeLifecycles.add(fiber.type);\n            });\n            pendingComponentWillUpdateWarnings = [];\n          }\n          var UNSAFE_componentWillUpdateUniqueNames = /* @__PURE__ */ new Set();\n          if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {\n            pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function(fiber) {\n              UNSAFE_componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n              didWarnAboutUnsafeLifecycles.add(fiber.type);\n            });\n            pendingUNSAFE_ComponentWillUpdateWarnings = [];\n          }\n          if (UNSAFE_componentWillMountUniqueNames.size > 0) {\n            var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);\n            error2(\"Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n\\nPlease update the following components: %s\", sortedNames);\n          }\n          if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {\n            var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);\n            error2(\"Using UNSAFE_componentWillReceiveProps in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n\\nPlease update the following components: %s\", _sortedNames);\n          }\n          if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {\n            var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);\n            error2(\"Using UNSAFE_componentWillUpdate in strict mode is not recommended and may indicate bugs in your code. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n\\nPlease update the following components: %s\", _sortedNames2);\n          }\n          if (componentWillMountUniqueNames.size > 0) {\n            var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);\n            warn(\"componentWillMount has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n* Rename componentWillMount to UNSAFE_componentWillMount to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n\\nPlease update the following components: %s\", _sortedNames3);\n          }\n          if (componentWillReceivePropsUniqueNames.size > 0) {\n            var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);\n            warn(\"componentWillReceiveProps has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n* If you're updating state whenever props change, refactor your code to use memoization techniques or move it to static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n\\nPlease update the following components: %s\", _sortedNames4);\n          }\n          if (componentWillUpdateUniqueNames.size > 0) {\n            var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);\n            warn(\"componentWillUpdate has been renamed, and is not recommended for use. See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n* Move data fetching code or side effects to componentDidUpdate.\\n* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. To rename all deprecated lifecycles to their new names, you can run `npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n\\nPlease update the following components: %s\", _sortedNames5);\n          }\n        };\n        var pendingLegacyContextWarning = /* @__PURE__ */ new Map();\n        var didWarnAboutLegacyContext = /* @__PURE__ */ new Set();\n        ReactStrictModeWarnings.recordLegacyContextWarning = function(fiber, instance) {\n          var strictRoot = findStrictRoot(fiber);\n          if (strictRoot === null) {\n            error2(\"Expected to find a StrictMode component in a strict mode tree. This error is likely caused by a bug in React. Please file an issue.\");\n            return;\n          }\n          if (didWarnAboutLegacyContext.has(fiber.type)) {\n            return;\n          }\n          var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);\n          if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === \"function\") {\n            if (warningsForRoot === void 0) {\n              warningsForRoot = [];\n              pendingLegacyContextWarning.set(strictRoot, warningsForRoot);\n            }\n            warningsForRoot.push(fiber);\n          }\n        };\n        ReactStrictModeWarnings.flushLegacyContextWarning = function() {\n          pendingLegacyContextWarning.forEach(function(fiberArray, strictRoot) {\n            if (fiberArray.length === 0) {\n              return;\n            }\n            var firstFiber = fiberArray[0];\n            var uniqueNames = /* @__PURE__ */ new Set();\n            fiberArray.forEach(function(fiber) {\n              uniqueNames.add(getComponentNameFromFiber(fiber) || \"Component\");\n              didWarnAboutLegacyContext.add(fiber.type);\n            });\n            var sortedNames = setToSortedString(uniqueNames);\n            try {\n              setCurrentFiber(firstFiber);\n              error2(\"Legacy context API has been detected within a strict-mode tree.\\n\\nThe old API will be supported in all 16.x releases, but applications using it should migrate to the new version.\\n\\nPlease update the following components: %s\\n\\nLearn more about this warning here: https://reactjs.org/link/legacy-context\", sortedNames);\n            } finally {\n              resetCurrentFiber();\n            }\n          });\n        };\n        ReactStrictModeWarnings.discardPendingWarnings = function() {\n          pendingComponentWillMountWarnings = [];\n          pendingUNSAFE_ComponentWillMountWarnings = [];\n          pendingComponentWillReceivePropsWarnings = [];\n          pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n          pendingComponentWillUpdateWarnings = [];\n          pendingUNSAFE_ComponentWillUpdateWarnings = [];\n          pendingLegacyContextWarning = /* @__PURE__ */ new Map();\n        };\n      }\n      function typeName(value) {\n        {\n          var hasToStringTag = typeof Symbol === \"function\" && Symbol.toStringTag;\n          var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || \"Object\";\n          return type;\n        }\n      }\n      function willCoercionThrow(value) {\n        {\n          try {\n            testStringCoercion(value);\n            return false;\n          } catch (e2) {\n            return true;\n          }\n        }\n      }\n      function testStringCoercion(value) {\n        return \"\" + value;\n      }\n      function checkKeyStringCoercion(value) {\n        {\n          if (willCoercionThrow(value)) {\n            error2(\"The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.\", typeName(value));\n            return testStringCoercion(value);\n          }\n        }\n      }\n      function checkPropStringCoercion(value, propName) {\n        {\n          if (willCoercionThrow(value)) {\n            error2(\"The provided `%s` prop is an unsupported type %s. This value must be coerced to a string before before using it here.\", propName, typeName(value));\n            return testStringCoercion(value);\n          }\n        }\n      }\n      function resolveDefaultProps(Component, baseProps) {\n        if (Component && Component.defaultProps) {\n          var props = assign({}, baseProps);\n          var defaultProps = Component.defaultProps;\n          for (var propName in defaultProps) {\n            if (props[propName] === void 0) {\n              props[propName] = defaultProps[propName];\n            }\n          }\n          return props;\n        }\n        return baseProps;\n      }\n      var valueCursor = createCursor(null);\n      var rendererSigil;\n      {\n        rendererSigil = {};\n      }\n      var currentlyRenderingFiber = null;\n      var lastContextDependency = null;\n      var lastFullyObservedContext = null;\n      var isDisallowedContextReadInDEV = false;\n      function resetContextDependencies() {\n        currentlyRenderingFiber = null;\n        lastContextDependency = null;\n        lastFullyObservedContext = null;\n        {\n          isDisallowedContextReadInDEV = false;\n        }\n      }\n      function enterDisallowedContextReadInDEV() {\n        {\n          isDisallowedContextReadInDEV = true;\n        }\n      }\n      function exitDisallowedContextReadInDEV() {\n        {\n          isDisallowedContextReadInDEV = false;\n        }\n      }\n      function pushProvider(providerFiber, context2, nextValue) {\n        if (isPrimaryRenderer) {\n          push(valueCursor, context2._currentValue, providerFiber);\n          context2._currentValue = nextValue;\n          {\n            if (context2._currentRenderer !== void 0 && context2._currentRenderer !== null && context2._currentRenderer !== rendererSigil) {\n              error2(\"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.\");\n            }\n            context2._currentRenderer = rendererSigil;\n          }\n        } else {\n          push(valueCursor, context2._currentValue2, providerFiber);\n          context2._currentValue2 = nextValue;\n          {\n            if (context2._currentRenderer2 !== void 0 && context2._currentRenderer2 !== null && context2._currentRenderer2 !== rendererSigil) {\n              error2(\"Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.\");\n            }\n            context2._currentRenderer2 = rendererSigil;\n          }\n        }\n      }\n      function popProvider(context2, providerFiber) {\n        var currentValue = valueCursor.current;\n        pop(valueCursor, providerFiber);\n        if (isPrimaryRenderer) {\n          {\n            context2._currentValue = currentValue;\n          }\n        } else {\n          {\n            context2._currentValue2 = currentValue;\n          }\n        }\n      }\n      function scheduleContextWorkOnParentPath(parent, renderLanes2, propagationRoot) {\n        var node = parent;\n        while (node !== null) {\n          var alternate = node.alternate;\n          if (!isSubsetOfLanes(node.childLanes, renderLanes2)) {\n            node.childLanes = mergeLanes(node.childLanes, renderLanes2);\n            if (alternate !== null) {\n              alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes2);\n            }\n          } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes2)) {\n            alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes2);\n          }\n          if (node === propagationRoot) {\n            break;\n          }\n          node = node.return;\n        }\n        {\n          if (node !== propagationRoot) {\n            error2(\"Expected to find the propagation root when scheduling context work. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n        }\n      }\n      function propagateContextChange(workInProgress2, context2, renderLanes2) {\n        {\n          propagateContextChange_eager(workInProgress2, context2, renderLanes2);\n        }\n      }\n      function propagateContextChange_eager(workInProgress2, context2, renderLanes2) {\n        var fiber = workInProgress2.child;\n        if (fiber !== null) {\n          fiber.return = workInProgress2;\n        }\n        while (fiber !== null) {\n          var nextFiber = void 0;\n          var list = fiber.dependencies;\n          if (list !== null) {\n            nextFiber = fiber.child;\n            var dependency = list.firstContext;\n            while (dependency !== null) {\n              if (dependency.context === context2) {\n                if (fiber.tag === ClassComponent) {\n                  var lane = pickArbitraryLane(renderLanes2);\n                  var update = createUpdate(NoTimestamp, lane);\n                  update.tag = ForceUpdate;\n                  var updateQueue = fiber.updateQueue;\n                  if (updateQueue === null) ;\n                  else {\n                    var sharedQueue = updateQueue.shared;\n                    var pending = sharedQueue.pending;\n                    if (pending === null) {\n                      update.next = update;\n                    } else {\n                      update.next = pending.next;\n                      pending.next = update;\n                    }\n                    sharedQueue.pending = update;\n                  }\n                }\n                fiber.lanes = mergeLanes(fiber.lanes, renderLanes2);\n                var alternate = fiber.alternate;\n                if (alternate !== null) {\n                  alternate.lanes = mergeLanes(alternate.lanes, renderLanes2);\n                }\n                scheduleContextWorkOnParentPath(fiber.return, renderLanes2, workInProgress2);\n                list.lanes = mergeLanes(list.lanes, renderLanes2);\n                break;\n              }\n              dependency = dependency.next;\n            }\n          } else if (fiber.tag === ContextProvider) {\n            nextFiber = fiber.type === workInProgress2.type ? null : fiber.child;\n          } else if (fiber.tag === DehydratedFragment) {\n            var parentSuspense = fiber.return;\n            if (parentSuspense === null) {\n              throw new Error(\"We just came from a parent so we must have had a parent. This is a bug in React.\");\n            }\n            parentSuspense.lanes = mergeLanes(parentSuspense.lanes, renderLanes2);\n            var _alternate = parentSuspense.alternate;\n            if (_alternate !== null) {\n              _alternate.lanes = mergeLanes(_alternate.lanes, renderLanes2);\n            }\n            scheduleContextWorkOnParentPath(parentSuspense, renderLanes2, workInProgress2);\n            nextFiber = fiber.sibling;\n          } else {\n            nextFiber = fiber.child;\n          }\n          if (nextFiber !== null) {\n            nextFiber.return = fiber;\n          } else {\n            nextFiber = fiber;\n            while (nextFiber !== null) {\n              if (nextFiber === workInProgress2) {\n                nextFiber = null;\n                break;\n              }\n              var sibling = nextFiber.sibling;\n              if (sibling !== null) {\n                sibling.return = nextFiber.return;\n                nextFiber = sibling;\n                break;\n              }\n              nextFiber = nextFiber.return;\n            }\n          }\n          fiber = nextFiber;\n        }\n      }\n      function prepareToReadContext(workInProgress2, renderLanes2) {\n        currentlyRenderingFiber = workInProgress2;\n        lastContextDependency = null;\n        lastFullyObservedContext = null;\n        var dependencies = workInProgress2.dependencies;\n        if (dependencies !== null) {\n          {\n            var firstContext = dependencies.firstContext;\n            if (firstContext !== null) {\n              if (includesSomeLane(dependencies.lanes, renderLanes2)) {\n                markWorkInProgressReceivedUpdate();\n              }\n              dependencies.firstContext = null;\n            }\n          }\n        }\n      }\n      function readContext(context2) {\n        {\n          if (isDisallowedContextReadInDEV) {\n            error2(\"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\");\n          }\n        }\n        var value = isPrimaryRenderer ? context2._currentValue : context2._currentValue2;\n        if (lastFullyObservedContext === context2) ;\n        else {\n          var contextItem = {\n            context: context2,\n            memoizedValue: value,\n            next: null\n          };\n          if (lastContextDependency === null) {\n            if (currentlyRenderingFiber === null) {\n              throw new Error(\"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\");\n            }\n            lastContextDependency = contextItem;\n            currentlyRenderingFiber.dependencies = {\n              lanes: NoLanes,\n              firstContext: contextItem\n            };\n          } else {\n            lastContextDependency = lastContextDependency.next = contextItem;\n          }\n        }\n        return value;\n      }\n      var interleavedQueues = null;\n      function pushInterleavedQueue(queue) {\n        if (interleavedQueues === null) {\n          interleavedQueues = [queue];\n        } else {\n          interleavedQueues.push(queue);\n        }\n      }\n      function enqueueInterleavedUpdates() {\n        if (interleavedQueues !== null) {\n          for (var i2 = 0; i2 < interleavedQueues.length; i2++) {\n            var queue = interleavedQueues[i2];\n            var lastInterleavedUpdate = queue.interleaved;\n            if (lastInterleavedUpdate !== null) {\n              queue.interleaved = null;\n              var firstInterleavedUpdate = lastInterleavedUpdate.next;\n              var lastPendingUpdate = queue.pending;\n              if (lastPendingUpdate !== null) {\n                var firstPendingUpdate = lastPendingUpdate.next;\n                lastPendingUpdate.next = firstInterleavedUpdate;\n                lastInterleavedUpdate.next = firstPendingUpdate;\n              }\n              queue.pending = lastInterleavedUpdate;\n            }\n          }\n          interleavedQueues = null;\n        }\n      }\n      var UpdateState = 0;\n      var ReplaceState = 1;\n      var ForceUpdate = 2;\n      var CaptureUpdate = 3;\n      var hasForceUpdate = false;\n      var didWarnUpdateInsideUpdate;\n      var currentlyProcessingQueue;\n      {\n        didWarnUpdateInsideUpdate = false;\n        currentlyProcessingQueue = null;\n      }\n      function initializeUpdateQueue(fiber) {\n        var queue = {\n          baseState: fiber.memoizedState,\n          firstBaseUpdate: null,\n          lastBaseUpdate: null,\n          shared: {\n            pending: null,\n            interleaved: null,\n            lanes: NoLanes\n          },\n          effects: null\n        };\n        fiber.updateQueue = queue;\n      }\n      function cloneUpdateQueue(current2, workInProgress2) {\n        var queue = workInProgress2.updateQueue;\n        var currentQueue = current2.updateQueue;\n        if (queue === currentQueue) {\n          var clone = {\n            baseState: currentQueue.baseState,\n            firstBaseUpdate: currentQueue.firstBaseUpdate,\n            lastBaseUpdate: currentQueue.lastBaseUpdate,\n            shared: currentQueue.shared,\n            effects: currentQueue.effects\n          };\n          workInProgress2.updateQueue = clone;\n        }\n      }\n      function createUpdate(eventTime, lane) {\n        var update = {\n          eventTime,\n          lane,\n          tag: UpdateState,\n          payload: null,\n          callback: null,\n          next: null\n        };\n        return update;\n      }\n      function enqueueUpdate(fiber, update, lane) {\n        var updateQueue = fiber.updateQueue;\n        if (updateQueue === null) {\n          return;\n        }\n        var sharedQueue = updateQueue.shared;\n        if (isInterleavedUpdate(fiber)) {\n          var interleaved = sharedQueue.interleaved;\n          if (interleaved === null) {\n            update.next = update;\n            pushInterleavedQueue(sharedQueue);\n          } else {\n            update.next = interleaved.next;\n            interleaved.next = update;\n          }\n          sharedQueue.interleaved = update;\n        } else {\n          var pending = sharedQueue.pending;\n          if (pending === null) {\n            update.next = update;\n          } else {\n            update.next = pending.next;\n            pending.next = update;\n          }\n          sharedQueue.pending = update;\n        }\n        {\n          if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {\n            error2(\"An update (setState, replaceState, or forceUpdate) was scheduled from inside an update function. Update functions should be pure, with zero side-effects. Consider using componentDidUpdate or a callback.\");\n            didWarnUpdateInsideUpdate = true;\n          }\n        }\n      }\n      function entangleTransitions(root, fiber, lane) {\n        var updateQueue = fiber.updateQueue;\n        if (updateQueue === null) {\n          return;\n        }\n        var sharedQueue = updateQueue.shared;\n        if (isTransitionLane(lane)) {\n          var queueLanes = sharedQueue.lanes;\n          queueLanes = intersectLanes(queueLanes, root.pendingLanes);\n          var newQueueLanes = mergeLanes(queueLanes, lane);\n          sharedQueue.lanes = newQueueLanes;\n          markRootEntangled(root, newQueueLanes);\n        }\n      }\n      function enqueueCapturedUpdate(workInProgress2, capturedUpdate) {\n        var queue = workInProgress2.updateQueue;\n        var current2 = workInProgress2.alternate;\n        if (current2 !== null) {\n          var currentQueue = current2.updateQueue;\n          if (queue === currentQueue) {\n            var newFirst = null;\n            var newLast = null;\n            var firstBaseUpdate = queue.firstBaseUpdate;\n            if (firstBaseUpdate !== null) {\n              var update = firstBaseUpdate;\n              do {\n                var clone = {\n                  eventTime: update.eventTime,\n                  lane: update.lane,\n                  tag: update.tag,\n                  payload: update.payload,\n                  callback: update.callback,\n                  next: null\n                };\n                if (newLast === null) {\n                  newFirst = newLast = clone;\n                } else {\n                  newLast.next = clone;\n                  newLast = clone;\n                }\n                update = update.next;\n              } while (update !== null);\n              if (newLast === null) {\n                newFirst = newLast = capturedUpdate;\n              } else {\n                newLast.next = capturedUpdate;\n                newLast = capturedUpdate;\n              }\n            } else {\n              newFirst = newLast = capturedUpdate;\n            }\n            queue = {\n              baseState: currentQueue.baseState,\n              firstBaseUpdate: newFirst,\n              lastBaseUpdate: newLast,\n              shared: currentQueue.shared,\n              effects: currentQueue.effects\n            };\n            workInProgress2.updateQueue = queue;\n            return;\n          }\n        }\n        var lastBaseUpdate = queue.lastBaseUpdate;\n        if (lastBaseUpdate === null) {\n          queue.firstBaseUpdate = capturedUpdate;\n        } else {\n          lastBaseUpdate.next = capturedUpdate;\n        }\n        queue.lastBaseUpdate = capturedUpdate;\n      }\n      function getStateFromUpdate(workInProgress2, queue, update, prevState, nextProps, instance) {\n        switch (update.tag) {\n          case ReplaceState: {\n            var payload = update.payload;\n            if (typeof payload === \"function\") {\n              {\n                enterDisallowedContextReadInDEV();\n              }\n              var nextState = payload.call(instance, prevState, nextProps);\n              {\n                if (workInProgress2.mode & StrictLegacyMode) {\n                  setIsStrictModeForDevtools(true);\n                  try {\n                    payload.call(instance, prevState, nextProps);\n                  } finally {\n                    setIsStrictModeForDevtools(false);\n                  }\n                }\n                exitDisallowedContextReadInDEV();\n              }\n              return nextState;\n            }\n            return payload;\n          }\n          case CaptureUpdate: {\n            workInProgress2.flags = workInProgress2.flags & -65537 | DidCapture;\n          }\n          // Intentional fallthrough\n          case UpdateState: {\n            var _payload = update.payload;\n            var partialState;\n            if (typeof _payload === \"function\") {\n              {\n                enterDisallowedContextReadInDEV();\n              }\n              partialState = _payload.call(instance, prevState, nextProps);\n              {\n                if (workInProgress2.mode & StrictLegacyMode) {\n                  setIsStrictModeForDevtools(true);\n                  try {\n                    _payload.call(instance, prevState, nextProps);\n                  } finally {\n                    setIsStrictModeForDevtools(false);\n                  }\n                }\n                exitDisallowedContextReadInDEV();\n              }\n            } else {\n              partialState = _payload;\n            }\n            if (partialState === null || partialState === void 0) {\n              return prevState;\n            }\n            return assign({}, prevState, partialState);\n          }\n          case ForceUpdate: {\n            hasForceUpdate = true;\n            return prevState;\n          }\n        }\n        return prevState;\n      }\n      function processUpdateQueue(workInProgress2, props, instance, renderLanes2) {\n        var queue = workInProgress2.updateQueue;\n        hasForceUpdate = false;\n        {\n          currentlyProcessingQueue = queue.shared;\n        }\n        var firstBaseUpdate = queue.firstBaseUpdate;\n        var lastBaseUpdate = queue.lastBaseUpdate;\n        var pendingQueue = queue.shared.pending;\n        if (pendingQueue !== null) {\n          queue.shared.pending = null;\n          var lastPendingUpdate = pendingQueue;\n          var firstPendingUpdate = lastPendingUpdate.next;\n          lastPendingUpdate.next = null;\n          if (lastBaseUpdate === null) {\n            firstBaseUpdate = firstPendingUpdate;\n          } else {\n            lastBaseUpdate.next = firstPendingUpdate;\n          }\n          lastBaseUpdate = lastPendingUpdate;\n          var current2 = workInProgress2.alternate;\n          if (current2 !== null) {\n            var currentQueue = current2.updateQueue;\n            var currentLastBaseUpdate = currentQueue.lastBaseUpdate;\n            if (currentLastBaseUpdate !== lastBaseUpdate) {\n              if (currentLastBaseUpdate === null) {\n                currentQueue.firstBaseUpdate = firstPendingUpdate;\n              } else {\n                currentLastBaseUpdate.next = firstPendingUpdate;\n              }\n              currentQueue.lastBaseUpdate = lastPendingUpdate;\n            }\n          }\n        }\n        if (firstBaseUpdate !== null) {\n          var newState = queue.baseState;\n          var newLanes = NoLanes;\n          var newBaseState = null;\n          var newFirstBaseUpdate = null;\n          var newLastBaseUpdate = null;\n          var update = firstBaseUpdate;\n          do {\n            var updateLane = update.lane;\n            var updateEventTime = update.eventTime;\n            if (!isSubsetOfLanes(renderLanes2, updateLane)) {\n              var clone = {\n                eventTime: updateEventTime,\n                lane: updateLane,\n                tag: update.tag,\n                payload: update.payload,\n                callback: update.callback,\n                next: null\n              };\n              if (newLastBaseUpdate === null) {\n                newFirstBaseUpdate = newLastBaseUpdate = clone;\n                newBaseState = newState;\n              } else {\n                newLastBaseUpdate = newLastBaseUpdate.next = clone;\n              }\n              newLanes = mergeLanes(newLanes, updateLane);\n            } else {\n              if (newLastBaseUpdate !== null) {\n                var _clone = {\n                  eventTime: updateEventTime,\n                  // This update is going to be committed so we never want uncommit\n                  // it. Using NoLane works because 0 is a subset of all bitmasks, so\n                  // this will never be skipped by the check above.\n                  lane: NoLane,\n                  tag: update.tag,\n                  payload: update.payload,\n                  callback: update.callback,\n                  next: null\n                };\n                newLastBaseUpdate = newLastBaseUpdate.next = _clone;\n              }\n              newState = getStateFromUpdate(workInProgress2, queue, update, newState, props, instance);\n              var callback = update.callback;\n              if (callback !== null && // If the update was already committed, we should not queue its\n              // callback again.\n              update.lane !== NoLane) {\n                workInProgress2.flags |= Callback;\n                var effects = queue.effects;\n                if (effects === null) {\n                  queue.effects = [update];\n                } else {\n                  effects.push(update);\n                }\n              }\n            }\n            update = update.next;\n            if (update === null) {\n              pendingQueue = queue.shared.pending;\n              if (pendingQueue === null) {\n                break;\n              } else {\n                var _lastPendingUpdate = pendingQueue;\n                var _firstPendingUpdate = _lastPendingUpdate.next;\n                _lastPendingUpdate.next = null;\n                update = _firstPendingUpdate;\n                queue.lastBaseUpdate = _lastPendingUpdate;\n                queue.shared.pending = null;\n              }\n            }\n          } while (true);\n          if (newLastBaseUpdate === null) {\n            newBaseState = newState;\n          }\n          queue.baseState = newBaseState;\n          queue.firstBaseUpdate = newFirstBaseUpdate;\n          queue.lastBaseUpdate = newLastBaseUpdate;\n          var lastInterleaved = queue.shared.interleaved;\n          if (lastInterleaved !== null) {\n            var interleaved = lastInterleaved;\n            do {\n              newLanes = mergeLanes(newLanes, interleaved.lane);\n              interleaved = interleaved.next;\n            } while (interleaved !== lastInterleaved);\n          } else if (firstBaseUpdate === null) {\n            queue.shared.lanes = NoLanes;\n          }\n          markSkippedUpdateLanes(newLanes);\n          workInProgress2.lanes = newLanes;\n          workInProgress2.memoizedState = newState;\n        }\n        {\n          currentlyProcessingQueue = null;\n        }\n      }\n      function callCallback(callback, context2) {\n        if (typeof callback !== \"function\") {\n          throw new Error(\"Invalid argument passed as callback. Expected a function. Instead \" + (\"received: \" + callback));\n        }\n        callback.call(context2);\n      }\n      function resetHasForceUpdateBeforeProcessing() {\n        hasForceUpdate = false;\n      }\n      function checkHasForceUpdateAfterProcessing() {\n        return hasForceUpdate;\n      }\n      function commitUpdateQueue(finishedWork, finishedQueue, instance) {\n        var effects = finishedQueue.effects;\n        finishedQueue.effects = null;\n        if (effects !== null) {\n          for (var i2 = 0; i2 < effects.length; i2++) {\n            var effect = effects[i2];\n            var callback = effect.callback;\n            if (callback !== null) {\n              effect.callback = null;\n              callCallback(callback, instance);\n            }\n          }\n        }\n      }\n      var fakeInternalInstance = {};\n      var emptyRefsObject = new React2.Component().refs;\n      var didWarnAboutStateAssignmentForComponent;\n      var didWarnAboutUninitializedState;\n      var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\n      var didWarnAboutLegacyLifecyclesAndDerivedState;\n      var didWarnAboutUndefinedDerivedState;\n      var warnOnUndefinedDerivedState;\n      var warnOnInvalidCallback;\n      var didWarnAboutDirectlyAssigningPropsToState;\n      var didWarnAboutContextTypeAndContextTypes;\n      var didWarnAboutInvalidateContextType;\n      {\n        didWarnAboutStateAssignmentForComponent = /* @__PURE__ */ new Set();\n        didWarnAboutUninitializedState = /* @__PURE__ */ new Set();\n        didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = /* @__PURE__ */ new Set();\n        didWarnAboutLegacyLifecyclesAndDerivedState = /* @__PURE__ */ new Set();\n        didWarnAboutDirectlyAssigningPropsToState = /* @__PURE__ */ new Set();\n        didWarnAboutUndefinedDerivedState = /* @__PURE__ */ new Set();\n        didWarnAboutContextTypeAndContextTypes = /* @__PURE__ */ new Set();\n        didWarnAboutInvalidateContextType = /* @__PURE__ */ new Set();\n        var didWarnOnInvalidCallback = /* @__PURE__ */ new Set();\n        warnOnInvalidCallback = function(callback, callerName) {\n          if (callback === null || typeof callback === \"function\") {\n            return;\n          }\n          var key = callerName + \"_\" + callback;\n          if (!didWarnOnInvalidCallback.has(key)) {\n            didWarnOnInvalidCallback.add(key);\n            error2(\"%s(...): Expected the last optional `callback` argument to be a function. Instead received: %s.\", callerName, callback);\n          }\n        };\n        warnOnUndefinedDerivedState = function(type, partialState) {\n          if (partialState === void 0) {\n            var componentName = getComponentNameFromType(type) || \"Component\";\n            if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n              didWarnAboutUndefinedDerivedState.add(componentName);\n              error2(\"%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. You have returned undefined.\", componentName);\n            }\n          }\n        };\n        Object.defineProperty(fakeInternalInstance, \"_processChildContext\", {\n          enumerable: false,\n          value: function() {\n            throw new Error(\"_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).\");\n          }\n        });\n        Object.freeze(fakeInternalInstance);\n      }\n      function applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, nextProps) {\n        var prevState = workInProgress2.memoizedState;\n        var partialState = getDerivedStateFromProps(nextProps, prevState);\n        {\n          if (workInProgress2.mode & StrictLegacyMode) {\n            setIsStrictModeForDevtools(true);\n            try {\n              partialState = getDerivedStateFromProps(nextProps, prevState);\n            } finally {\n              setIsStrictModeForDevtools(false);\n            }\n          }\n          warnOnUndefinedDerivedState(ctor, partialState);\n        }\n        var memoizedState = partialState === null || partialState === void 0 ? prevState : assign({}, prevState, partialState);\n        workInProgress2.memoizedState = memoizedState;\n        if (workInProgress2.lanes === NoLanes) {\n          var updateQueue = workInProgress2.updateQueue;\n          updateQueue.baseState = memoizedState;\n        }\n      }\n      var classComponentUpdater = {\n        isMounted,\n        enqueueSetState: function(inst, payload, callback) {\n          var fiber = get(inst);\n          var eventTime = requestEventTime();\n          var lane = requestUpdateLane(fiber);\n          var update = createUpdate(eventTime, lane);\n          update.payload = payload;\n          if (callback !== void 0 && callback !== null) {\n            {\n              warnOnInvalidCallback(callback, \"setState\");\n            }\n            update.callback = callback;\n          }\n          enqueueUpdate(fiber, update);\n          var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n          if (root !== null) {\n            entangleTransitions(root, fiber, lane);\n          }\n          {\n            markStateUpdateScheduled(fiber, lane);\n          }\n        },\n        enqueueReplaceState: function(inst, payload, callback) {\n          var fiber = get(inst);\n          var eventTime = requestEventTime();\n          var lane = requestUpdateLane(fiber);\n          var update = createUpdate(eventTime, lane);\n          update.tag = ReplaceState;\n          update.payload = payload;\n          if (callback !== void 0 && callback !== null) {\n            {\n              warnOnInvalidCallback(callback, \"replaceState\");\n            }\n            update.callback = callback;\n          }\n          enqueueUpdate(fiber, update);\n          var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n          if (root !== null) {\n            entangleTransitions(root, fiber, lane);\n          }\n          {\n            markStateUpdateScheduled(fiber, lane);\n          }\n        },\n        enqueueForceUpdate: function(inst, callback) {\n          var fiber = get(inst);\n          var eventTime = requestEventTime();\n          var lane = requestUpdateLane(fiber);\n          var update = createUpdate(eventTime, lane);\n          update.tag = ForceUpdate;\n          if (callback !== void 0 && callback !== null) {\n            {\n              warnOnInvalidCallback(callback, \"forceUpdate\");\n            }\n            update.callback = callback;\n          }\n          enqueueUpdate(fiber, update);\n          var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n          if (root !== null) {\n            entangleTransitions(root, fiber, lane);\n          }\n          {\n            markForceUpdateScheduled(fiber, lane);\n          }\n        }\n      };\n      function checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) {\n        var instance = workInProgress2.stateNode;\n        if (typeof instance.shouldComponentUpdate === \"function\") {\n          var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n          {\n            if (workInProgress2.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n              try {\n                shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n            if (shouldUpdate === void 0) {\n              error2(\"%s.shouldComponentUpdate(): Returned undefined instead of a boolean value. Make sure to return true or false.\", getComponentNameFromType(ctor) || \"Component\");\n            }\n          }\n          return shouldUpdate;\n        }\n        if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n          return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n        }\n        return true;\n      }\n      function checkClassInstance(workInProgress2, ctor, newProps) {\n        var instance = workInProgress2.stateNode;\n        {\n          var name = getComponentNameFromType(ctor) || \"Component\";\n          var renderPresent = instance.render;\n          if (!renderPresent) {\n            if (ctor.prototype && typeof ctor.prototype.render === \"function\") {\n              error2(\"%s(...): No `render` method found on the returned component instance: did you accidentally return an object from the constructor?\", name);\n            } else {\n              error2(\"%s(...): No `render` method found on the returned component instance: you may have forgotten to define `render`.\", name);\n            }\n          }\n          if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n            error2(\"getInitialState was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Did you mean to define a state property instead?\", name);\n          }\n          if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n            error2(\"getDefaultProps was defined on %s, a plain JavaScript class. This is only supported for classes created using React.createClass. Use a static property to define defaultProps instead.\", name);\n          }\n          if (instance.propTypes) {\n            error2(\"propTypes was defined as an instance property on %s. Use a static property to define propTypes instead.\", name);\n          }\n          if (instance.contextType) {\n            error2(\"contextType was defined as an instance property on %s. Use a static property to define contextType instead.\", name);\n          }\n          {\n            if (instance.contextTypes) {\n              error2(\"contextTypes was defined as an instance property on %s. Use a static property to define contextTypes instead.\", name);\n            }\n            if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n              didWarnAboutContextTypeAndContextTypes.add(ctor);\n              error2(\"%s declares both contextTypes and contextType static properties. The legacy contextTypes property will be ignored.\", name);\n            }\n          }\n          if (typeof instance.componentShouldUpdate === \"function\") {\n            error2(\"%s has a method called componentShouldUpdate(). Did you mean shouldComponentUpdate()? The name is phrased as a question because the function is expected to return a value.\", name);\n          }\n          if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== \"undefined\") {\n            error2(\"%s has a method called shouldComponentUpdate(). shouldComponentUpdate should not be used when extending React.PureComponent. Please extend React.Component if shouldComponentUpdate is used.\", getComponentNameFromType(ctor) || \"A pure component\");\n          }\n          if (typeof instance.componentDidUnmount === \"function\") {\n            error2(\"%s has a method called componentDidUnmount(). But there is no such lifecycle method. Did you mean componentWillUnmount()?\", name);\n          }\n          if (typeof instance.componentDidReceiveProps === \"function\") {\n            error2(\"%s has a method called componentDidReceiveProps(). But there is no such lifecycle method. If you meant to update the state in response to changing props, use componentWillReceiveProps(). If you meant to fetch data or run side-effects or mutations after React has updated the UI, use componentDidUpdate().\", name);\n          }\n          if (typeof instance.componentWillRecieveProps === \"function\") {\n            error2(\"%s has a method called componentWillRecieveProps(). Did you mean componentWillReceiveProps()?\", name);\n          }\n          if (typeof instance.UNSAFE_componentWillRecieveProps === \"function\") {\n            error2(\"%s has a method called UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?\", name);\n          }\n          var hasMutatedProps = instance.props !== newProps;\n          if (instance.props !== void 0 && hasMutatedProps) {\n            error2(\"%s(...): When calling super() in `%s`, make sure to pass up the same props that your component's constructor was passed.\", name, name);\n          }\n          if (instance.defaultProps) {\n            error2(\"Setting defaultProps as an instance property on %s is not supported and will be ignored. Instead, define defaultProps as a static property on %s.\", name, name);\n          }\n          if (typeof instance.getSnapshotBeforeUpdate === \"function\" && typeof instance.componentDidUpdate !== \"function\" && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n            didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n            error2(\"%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). This component defines getSnapshotBeforeUpdate() only.\", getComponentNameFromType(ctor));\n          }\n          if (typeof instance.getDerivedStateFromProps === \"function\") {\n            error2(\"%s: getDerivedStateFromProps() is defined as an instance method and will be ignored. Instead, declare it as a static method.\", name);\n          }\n          if (typeof instance.getDerivedStateFromError === \"function\") {\n            error2(\"%s: getDerivedStateFromError() is defined as an instance method and will be ignored. Instead, declare it as a static method.\", name);\n          }\n          if (typeof ctor.getSnapshotBeforeUpdate === \"function\") {\n            error2(\"%s: getSnapshotBeforeUpdate() is defined as a static method and will be ignored. Instead, declare it as an instance method.\", name);\n          }\n          var _state = instance.state;\n          if (_state && (typeof _state !== \"object\" || isArray2(_state))) {\n            error2(\"%s.state: must be set to an object or null\", name);\n          }\n          if (typeof instance.getChildContext === \"function\" && typeof ctor.childContextTypes !== \"object\") {\n            error2(\"%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().\", name);\n          }\n        }\n      }\n      function adoptClassInstance(workInProgress2, instance) {\n        instance.updater = classComponentUpdater;\n        workInProgress2.stateNode = instance;\n        set(instance, workInProgress2);\n        {\n          instance._reactInternalInstance = fakeInternalInstance;\n        }\n      }\n      function constructClassInstance(workInProgress2, ctor, props) {\n        var isLegacyContextConsumer = false;\n        var unmaskedContext = emptyContextObject;\n        var context2 = emptyContextObject;\n        var contextType = ctor.contextType;\n        {\n          if (\"contextType\" in ctor) {\n            var isValid = (\n              // Allow null for conditional declaration\n              contextType === null || contextType !== void 0 && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === void 0\n            );\n            if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n              didWarnAboutInvalidateContextType.add(ctor);\n              var addendum = \"\";\n              if (contextType === void 0) {\n                addendum = \" However, it is set to undefined. This can be caused by a typo or by mixing up named and default imports. This can also happen due to a circular dependency, so try moving the createContext() call to a separate file.\";\n              } else if (typeof contextType !== \"object\") {\n                addendum = \" However, it is set to a \" + typeof contextType + \".\";\n              } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n                addendum = \" Did you accidentally pass the Context.Provider instead?\";\n              } else if (contextType._context !== void 0) {\n                addendum = \" Did you accidentally pass the Context.Consumer instead?\";\n              } else {\n                addendum = \" However, it is set to an object with keys {\" + Object.keys(contextType).join(\", \") + \"}.\";\n              }\n              error2(\"%s defines an invalid contextType. contextType should point to the Context object returned by React.createContext().%s\", getComponentNameFromType(ctor) || \"Component\", addendum);\n            }\n          }\n        }\n        if (typeof contextType === \"object\" && contextType !== null) {\n          context2 = readContext(contextType);\n        } else {\n          unmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n          var contextTypes = ctor.contextTypes;\n          isLegacyContextConsumer = contextTypes !== null && contextTypes !== void 0;\n          context2 = isLegacyContextConsumer ? getMaskedContext(workInProgress2, unmaskedContext) : emptyContextObject;\n        }\n        var instance = new ctor(props, context2);\n        {\n          if (workInProgress2.mode & StrictLegacyMode) {\n            setIsStrictModeForDevtools(true);\n            try {\n              instance = new ctor(props, context2);\n            } finally {\n              setIsStrictModeForDevtools(false);\n            }\n          }\n        }\n        var state = workInProgress2.memoizedState = instance.state !== null && instance.state !== void 0 ? instance.state : null;\n        adoptClassInstance(workInProgress2, instance);\n        {\n          if (typeof ctor.getDerivedStateFromProps === \"function\" && state === null) {\n            var componentName = getComponentNameFromType(ctor) || \"Component\";\n            if (!didWarnAboutUninitializedState.has(componentName)) {\n              didWarnAboutUninitializedState.add(componentName);\n              error2(\"`%s` uses `getDerivedStateFromProps` but its initial state is %s. This is not recommended. Instead, define the initial state by assigning an object to `this.state` in the constructor of `%s`. This ensures that `getDerivedStateFromProps` arguments have a consistent shape.\", componentName, instance.state === null ? \"null\" : \"undefined\", componentName);\n            }\n          }\n          if (typeof ctor.getDerivedStateFromProps === \"function\" || typeof instance.getSnapshotBeforeUpdate === \"function\") {\n            var foundWillMountName = null;\n            var foundWillReceivePropsName = null;\n            var foundWillUpdateName = null;\n            if (typeof instance.componentWillMount === \"function\" && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n              foundWillMountName = \"componentWillMount\";\n            } else if (typeof instance.UNSAFE_componentWillMount === \"function\") {\n              foundWillMountName = \"UNSAFE_componentWillMount\";\n            }\n            if (typeof instance.componentWillReceiveProps === \"function\" && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n              foundWillReceivePropsName = \"componentWillReceiveProps\";\n            } else if (typeof instance.UNSAFE_componentWillReceiveProps === \"function\") {\n              foundWillReceivePropsName = \"UNSAFE_componentWillReceiveProps\";\n            }\n            if (typeof instance.componentWillUpdate === \"function\" && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n              foundWillUpdateName = \"componentWillUpdate\";\n            } else if (typeof instance.UNSAFE_componentWillUpdate === \"function\") {\n              foundWillUpdateName = \"UNSAFE_componentWillUpdate\";\n            }\n            if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n              var _componentName = getComponentNameFromType(ctor) || \"Component\";\n              var newApiName = typeof ctor.getDerivedStateFromProps === \"function\" ? \"getDerivedStateFromProps()\" : \"getSnapshotBeforeUpdate()\";\n              if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n                didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n                error2(\"Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\nhttps://reactjs.org/link/unsafe-component-lifecycles\", _componentName, newApiName, foundWillMountName !== null ? \"\\n  \" + foundWillMountName : \"\", foundWillReceivePropsName !== null ? \"\\n  \" + foundWillReceivePropsName : \"\", foundWillUpdateName !== null ? \"\\n  \" + foundWillUpdateName : \"\");\n              }\n            }\n          }\n        }\n        if (isLegacyContextConsumer) {\n          cacheContext(workInProgress2, unmaskedContext, context2);\n        }\n        return instance;\n      }\n      function callComponentWillMount(workInProgress2, instance) {\n        var oldState = instance.state;\n        if (typeof instance.componentWillMount === \"function\") {\n          instance.componentWillMount();\n        }\n        if (typeof instance.UNSAFE_componentWillMount === \"function\") {\n          instance.UNSAFE_componentWillMount();\n        }\n        if (oldState !== instance.state) {\n          {\n            error2(\"%s.componentWillMount(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.\", getComponentNameFromFiber(workInProgress2) || \"Component\");\n          }\n          classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n        }\n      }\n      function callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext) {\n        var oldState = instance.state;\n        if (typeof instance.componentWillReceiveProps === \"function\") {\n          instance.componentWillReceiveProps(newProps, nextContext);\n        }\n        if (typeof instance.UNSAFE_componentWillReceiveProps === \"function\") {\n          instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n        }\n        if (instance.state !== oldState) {\n          {\n            var componentName = getComponentNameFromFiber(workInProgress2) || \"Component\";\n            if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {\n              didWarnAboutStateAssignmentForComponent.add(componentName);\n              error2(\"%s.componentWillReceiveProps(): Assigning directly to this.state is deprecated (except inside a component's constructor). Use setState instead.\", componentName);\n            }\n          }\n          classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n        }\n      }\n      function mountClassInstance(workInProgress2, ctor, newProps, renderLanes2) {\n        {\n          checkClassInstance(workInProgress2, ctor, newProps);\n        }\n        var instance = workInProgress2.stateNode;\n        instance.props = newProps;\n        instance.state = workInProgress2.memoizedState;\n        instance.refs = emptyRefsObject;\n        initializeUpdateQueue(workInProgress2);\n        var contextType = ctor.contextType;\n        if (typeof contextType === \"object\" && contextType !== null) {\n          instance.context = readContext(contextType);\n        } else {\n          var unmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n          instance.context = getMaskedContext(workInProgress2, unmaskedContext);\n        }\n        {\n          if (instance.state === newProps) {\n            var componentName = getComponentNameFromType(ctor) || \"Component\";\n            if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n              didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n              error2(\"%s: It is not recommended to assign props directly to state because updates to props won't be reflected in state. In most cases, it is better to use props directly.\", componentName);\n            }\n          }\n          if (workInProgress2.mode & StrictLegacyMode) {\n            ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress2, instance);\n          }\n          {\n            ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress2, instance);\n          }\n        }\n        instance.state = workInProgress2.memoizedState;\n        var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n        if (typeof getDerivedStateFromProps === \"function\") {\n          applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);\n          instance.state = workInProgress2.memoizedState;\n        }\n        if (typeof ctor.getDerivedStateFromProps !== \"function\" && typeof instance.getSnapshotBeforeUpdate !== \"function\" && (typeof instance.UNSAFE_componentWillMount === \"function\" || typeof instance.componentWillMount === \"function\")) {\n          callComponentWillMount(workInProgress2, instance);\n          processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);\n          instance.state = workInProgress2.memoizedState;\n        }\n        if (typeof instance.componentDidMount === \"function\") {\n          var fiberFlags = Update;\n          {\n            fiberFlags |= LayoutStatic;\n          }\n          if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n            fiberFlags |= MountLayoutDev;\n          }\n          workInProgress2.flags |= fiberFlags;\n        }\n      }\n      function resumeMountClassInstance(workInProgress2, ctor, newProps, renderLanes2) {\n        var instance = workInProgress2.stateNode;\n        var oldProps = workInProgress2.memoizedProps;\n        instance.props = oldProps;\n        var oldContext = instance.context;\n        var contextType = ctor.contextType;\n        var nextContext = emptyContextObject;\n        if (typeof contextType === \"object\" && contextType !== null) {\n          nextContext = readContext(contextType);\n        } else {\n          var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n          nextContext = getMaskedContext(workInProgress2, nextLegacyUnmaskedContext);\n        }\n        var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n        var hasNewLifecycles = typeof getDerivedStateFromProps === \"function\" || typeof instance.getSnapshotBeforeUpdate === \"function\";\n        if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === \"function\" || typeof instance.componentWillReceiveProps === \"function\")) {\n          if (oldProps !== newProps || oldContext !== nextContext) {\n            callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext);\n          }\n        }\n        resetHasForceUpdateBeforeProcessing();\n        var oldState = workInProgress2.memoizedState;\n        var newState = instance.state = oldState;\n        processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);\n        newState = workInProgress2.memoizedState;\n        if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n          if (typeof instance.componentDidMount === \"function\") {\n            var fiberFlags = Update;\n            {\n              fiberFlags |= LayoutStatic;\n            }\n            if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n              fiberFlags |= MountLayoutDev;\n            }\n            workInProgress2.flags |= fiberFlags;\n          }\n          return false;\n        }\n        if (typeof getDerivedStateFromProps === \"function\") {\n          applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);\n          newState = workInProgress2.memoizedState;\n        }\n        var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext);\n        if (shouldUpdate) {\n          if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === \"function\" || typeof instance.componentWillMount === \"function\")) {\n            if (typeof instance.componentWillMount === \"function\") {\n              instance.componentWillMount();\n            }\n            if (typeof instance.UNSAFE_componentWillMount === \"function\") {\n              instance.UNSAFE_componentWillMount();\n            }\n          }\n          if (typeof instance.componentDidMount === \"function\") {\n            var _fiberFlags = Update;\n            {\n              _fiberFlags |= LayoutStatic;\n            }\n            if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n              _fiberFlags |= MountLayoutDev;\n            }\n            workInProgress2.flags |= _fiberFlags;\n          }\n        } else {\n          if (typeof instance.componentDidMount === \"function\") {\n            var _fiberFlags2 = Update;\n            {\n              _fiberFlags2 |= LayoutStatic;\n            }\n            if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n              _fiberFlags2 |= MountLayoutDev;\n            }\n            workInProgress2.flags |= _fiberFlags2;\n          }\n          workInProgress2.memoizedProps = newProps;\n          workInProgress2.memoizedState = newState;\n        }\n        instance.props = newProps;\n        instance.state = newState;\n        instance.context = nextContext;\n        return shouldUpdate;\n      }\n      function updateClassInstance(current2, workInProgress2, ctor, newProps, renderLanes2) {\n        var instance = workInProgress2.stateNode;\n        cloneUpdateQueue(current2, workInProgress2);\n        var unresolvedOldProps = workInProgress2.memoizedProps;\n        var oldProps = workInProgress2.type === workInProgress2.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress2.type, unresolvedOldProps);\n        instance.props = oldProps;\n        var unresolvedNewProps = workInProgress2.pendingProps;\n        var oldContext = instance.context;\n        var contextType = ctor.contextType;\n        var nextContext = emptyContextObject;\n        if (typeof contextType === \"object\" && contextType !== null) {\n          nextContext = readContext(contextType);\n        } else {\n          var nextUnmaskedContext = getUnmaskedContext(workInProgress2, ctor, true);\n          nextContext = getMaskedContext(workInProgress2, nextUnmaskedContext);\n        }\n        var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n        var hasNewLifecycles = typeof getDerivedStateFromProps === \"function\" || typeof instance.getSnapshotBeforeUpdate === \"function\";\n        if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === \"function\" || typeof instance.componentWillReceiveProps === \"function\")) {\n          if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {\n            callComponentWillReceiveProps(workInProgress2, instance, newProps, nextContext);\n          }\n        }\n        resetHasForceUpdateBeforeProcessing();\n        var oldState = workInProgress2.memoizedState;\n        var newState = instance.state = oldState;\n        processUpdateQueue(workInProgress2, newProps, instance, renderLanes2);\n        newState = workInProgress2.memoizedState;\n        if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing() && true) {\n          if (typeof instance.componentDidUpdate === \"function\") {\n            if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n              workInProgress2.flags |= Update;\n            }\n          }\n          if (typeof instance.getSnapshotBeforeUpdate === \"function\") {\n            if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n              workInProgress2.flags |= Snapshot;\n            }\n          }\n          return false;\n        }\n        if (typeof getDerivedStateFromProps === \"function\") {\n          applyDerivedStateFromProps(workInProgress2, ctor, getDerivedStateFromProps, newProps);\n          newState = workInProgress2.memoizedState;\n        }\n        var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress2, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice,\n        // both before and after `shouldComponentUpdate` has been called. Not ideal,\n        // but I'm loath to refactor this function. This only happens for memoized\n        // components so it's not that common.\n        enableLazyContextPropagation;\n        if (shouldUpdate) {\n          if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === \"function\" || typeof instance.componentWillUpdate === \"function\")) {\n            if (typeof instance.componentWillUpdate === \"function\") {\n              instance.componentWillUpdate(newProps, newState, nextContext);\n            }\n            if (typeof instance.UNSAFE_componentWillUpdate === \"function\") {\n              instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);\n            }\n          }\n          if (typeof instance.componentDidUpdate === \"function\") {\n            workInProgress2.flags |= Update;\n          }\n          if (typeof instance.getSnapshotBeforeUpdate === \"function\") {\n            workInProgress2.flags |= Snapshot;\n          }\n        } else {\n          if (typeof instance.componentDidUpdate === \"function\") {\n            if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n              workInProgress2.flags |= Update;\n            }\n          }\n          if (typeof instance.getSnapshotBeforeUpdate === \"function\") {\n            if (unresolvedOldProps !== current2.memoizedProps || oldState !== current2.memoizedState) {\n              workInProgress2.flags |= Snapshot;\n            }\n          }\n          workInProgress2.memoizedProps = newProps;\n          workInProgress2.memoizedState = newState;\n        }\n        instance.props = newProps;\n        instance.state = newState;\n        instance.context = nextContext;\n        return shouldUpdate;\n      }\n      var forkStack = [];\n      var forkStackIndex = 0;\n      var treeForkProvider = null;\n      var treeForkCount = 0;\n      var idStack = [];\n      var idStackIndex = 0;\n      var treeContextProvider = null;\n      var treeContextId = 1;\n      var treeContextOverflow = \"\";\n      function isForkedChild(workInProgress2) {\n        warnIfNotHydrating();\n        return (workInProgress2.flags & Forked) !== NoFlags;\n      }\n      function getForksAtLevel(workInProgress2) {\n        warnIfNotHydrating();\n        return treeForkCount;\n      }\n      function getTreeId() {\n        var overflow = treeContextOverflow;\n        var idWithLeadingBit = treeContextId;\n        var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n        return id.toString(32) + overflow;\n      }\n      function pushTreeFork(workInProgress2, totalChildren) {\n        warnIfNotHydrating();\n        forkStack[forkStackIndex++] = treeForkCount;\n        forkStack[forkStackIndex++] = treeForkProvider;\n        treeForkProvider = workInProgress2;\n        treeForkCount = totalChildren;\n      }\n      function pushTreeId(workInProgress2, totalChildren, index2) {\n        warnIfNotHydrating();\n        idStack[idStackIndex++] = treeContextId;\n        idStack[idStackIndex++] = treeContextOverflow;\n        idStack[idStackIndex++] = treeContextProvider;\n        treeContextProvider = workInProgress2;\n        var baseIdWithLeadingBit = treeContextId;\n        var baseOverflow = treeContextOverflow;\n        var baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n        var baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n        var slot = index2 + 1;\n        var length = getBitLength(totalChildren) + baseLength;\n        if (length > 30) {\n          var numberOfOverflowBits = baseLength - baseLength % 5;\n          var newOverflowBits = (1 << numberOfOverflowBits) - 1;\n          var newOverflow = (baseId & newOverflowBits).toString(32);\n          var restOfBaseId = baseId >> numberOfOverflowBits;\n          var restOfBaseLength = baseLength - numberOfOverflowBits;\n          var restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n          var restOfNewBits = slot << restOfBaseLength;\n          var id = restOfNewBits | restOfBaseId;\n          var overflow = newOverflow + baseOverflow;\n          treeContextId = 1 << restOfLength | id;\n          treeContextOverflow = overflow;\n        } else {\n          var newBits = slot << baseLength;\n          var _id2 = newBits | baseId;\n          var _overflow = baseOverflow;\n          treeContextId = 1 << length | _id2;\n          treeContextOverflow = _overflow;\n        }\n      }\n      function pushMaterializedTreeId(workInProgress2) {\n        warnIfNotHydrating();\n        var returnFiber = workInProgress2.return;\n        if (returnFiber !== null) {\n          var numberOfForks = 1;\n          var slotIndex = 0;\n          pushTreeFork(workInProgress2, numberOfForks);\n          pushTreeId(workInProgress2, numberOfForks, slotIndex);\n        }\n      }\n      function getBitLength(number) {\n        return 32 - clz32(number);\n      }\n      function getLeadingBit(id) {\n        return 1 << getBitLength(id) - 1;\n      }\n      function popTreeContext(workInProgress2) {\n        while (workInProgress2 === treeForkProvider) {\n          treeForkProvider = forkStack[--forkStackIndex];\n          forkStack[forkStackIndex] = null;\n          treeForkCount = forkStack[--forkStackIndex];\n          forkStack[forkStackIndex] = null;\n        }\n        while (workInProgress2 === treeContextProvider) {\n          treeContextProvider = idStack[--idStackIndex];\n          idStack[idStackIndex] = null;\n          treeContextOverflow = idStack[--idStackIndex];\n          idStack[idStackIndex] = null;\n          treeContextId = idStack[--idStackIndex];\n          idStack[idStackIndex] = null;\n        }\n      }\n      function getSuspendedTreeContext() {\n        warnIfNotHydrating();\n        if (treeContextProvider !== null) {\n          return {\n            id: treeContextId,\n            overflow: treeContextOverflow\n          };\n        } else {\n          return null;\n        }\n      }\n      function restoreSuspendedTreeContext(workInProgress2, suspendedContext) {\n        warnIfNotHydrating();\n        idStack[idStackIndex++] = treeContextId;\n        idStack[idStackIndex++] = treeContextOverflow;\n        idStack[idStackIndex++] = treeContextProvider;\n        treeContextId = suspendedContext.id;\n        treeContextOverflow = suspendedContext.overflow;\n        treeContextProvider = workInProgress2;\n      }\n      function warnIfNotHydrating() {\n        {\n          if (!getIsHydrating()) {\n            error2(\"Expected to be hydrating. This is a bug in React. Please file an issue.\");\n          }\n        }\n      }\n      var hydrationParentFiber = null;\n      var nextHydratableInstance = null;\n      var isHydrating = false;\n      var didSuspend = false;\n      var hydrationErrors = null;\n      function warnIfHydrating() {\n        {\n          if (isHydrating) {\n            error2(\"We should not be hydrating here. This is a bug in React. Please file a bug.\");\n          }\n        }\n      }\n      function markDidSuspendWhileHydratingDEV() {\n        {\n          didSuspend = true;\n        }\n      }\n      function enterHydrationState(fiber) {\n        if (!supportsHydration) {\n          return false;\n        }\n        var parentInstance = fiber.stateNode.containerInfo;\n        nextHydratableInstance = getFirstHydratableChildWithinContainer(parentInstance);\n        hydrationParentFiber = fiber;\n        isHydrating = true;\n        hydrationErrors = null;\n        didSuspend = false;\n        return true;\n      }\n      function reenterHydrationStateFromDehydratedSuspenseInstance(fiber, suspenseInstance, treeContext) {\n        if (!supportsHydration) {\n          return false;\n        }\n        nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(suspenseInstance);\n        hydrationParentFiber = fiber;\n        isHydrating = true;\n        hydrationErrors = null;\n        didSuspend = false;\n        if (treeContext !== null) {\n          restoreSuspendedTreeContext(fiber, treeContext);\n        }\n        return true;\n      }\n      function warnUnhydratedInstance(returnFiber, instance) {\n        {\n          switch (returnFiber.tag) {\n            case HostRoot:\n              didNotHydrateInstanceWithinContainer(returnFiber.stateNode.containerInfo, instance);\n              break;\n            case HostComponent:\n              didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance);\n              break;\n            case SuspenseComponent:\n              var suspenseState = returnFiber.memoizedState;\n              if (suspenseState.dehydrated !== null) didNotHydrateInstanceWithinSuspenseInstance(suspenseState.dehydrated, instance);\n              break;\n          }\n        }\n      }\n      function deleteHydratableInstance(returnFiber, instance) {\n        warnUnhydratedInstance(returnFiber, instance);\n        var childToDelete = createFiberFromHostInstanceForDeletion();\n        childToDelete.stateNode = instance;\n        childToDelete.return = returnFiber;\n        var deletions = returnFiber.deletions;\n        if (deletions === null) {\n          returnFiber.deletions = [childToDelete];\n          returnFiber.flags |= ChildDeletion;\n        } else {\n          deletions.push(childToDelete);\n        }\n      }\n      function warnNonhydratedInstance(returnFiber, fiber) {\n        {\n          if (didSuspend) {\n            return;\n          }\n          switch (returnFiber.tag) {\n            case HostRoot: {\n              var parentContainer = returnFiber.stateNode.containerInfo;\n              switch (fiber.tag) {\n                case HostComponent:\n                  var type = fiber.type;\n                  var props = fiber.pendingProps;\n                  didNotFindHydratableInstanceWithinContainer(parentContainer, type, props);\n                  break;\n                case HostText:\n                  var text = fiber.pendingProps;\n                  didNotFindHydratableTextInstanceWithinContainer(parentContainer, text);\n                  break;\n                case SuspenseComponent:\n                  didNotFindHydratableSuspenseInstanceWithinContainer(parentContainer);\n                  break;\n              }\n              break;\n            }\n            case HostComponent: {\n              var parentType = returnFiber.type;\n              var parentProps = returnFiber.memoizedProps;\n              var parentInstance = returnFiber.stateNode;\n              switch (fiber.tag) {\n                case HostComponent:\n                  var _type = fiber.type;\n                  var _props = fiber.pendingProps;\n                  didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type, _props);\n                  break;\n                case HostText:\n                  var _text = fiber.pendingProps;\n                  didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text);\n                  break;\n                case SuspenseComponent:\n                  didNotFindHydratableSuspenseInstance(parentType, parentProps, parentInstance);\n                  break;\n              }\n              break;\n            }\n            case SuspenseComponent: {\n              var suspenseState = returnFiber.memoizedState;\n              var _parentInstance = suspenseState.dehydrated;\n              if (_parentInstance !== null) switch (fiber.tag) {\n                case HostComponent:\n                  var _type2 = fiber.type;\n                  var _props2 = fiber.pendingProps;\n                  didNotFindHydratableInstanceWithinSuspenseInstance(_parentInstance, _type2, _props2);\n                  break;\n                case HostText:\n                  var _text2 = fiber.pendingProps;\n                  didNotFindHydratableTextInstanceWithinSuspenseInstance(_parentInstance, _text2);\n                  break;\n                case SuspenseComponent:\n                  didNotFindHydratableSuspenseInstanceWithinSuspenseInstance(_parentInstance);\n                  break;\n              }\n              break;\n            }\n            default:\n              return;\n          }\n        }\n      }\n      function insertNonHydratedInstance(returnFiber, fiber) {\n        fiber.flags = fiber.flags & -4097 | Placement;\n        warnNonhydratedInstance(returnFiber, fiber);\n      }\n      function tryHydrate(fiber, nextInstance) {\n        switch (fiber.tag) {\n          case HostComponent: {\n            var type = fiber.type;\n            var props = fiber.pendingProps;\n            var instance = canHydrateInstance(nextInstance, type, props);\n            if (instance !== null) {\n              fiber.stateNode = instance;\n              hydrationParentFiber = fiber;\n              nextHydratableInstance = getFirstHydratableChild(instance);\n              return true;\n            }\n            return false;\n          }\n          case HostText: {\n            var text = fiber.pendingProps;\n            var textInstance = canHydrateTextInstance(nextInstance, text);\n            if (textInstance !== null) {\n              fiber.stateNode = textInstance;\n              hydrationParentFiber = fiber;\n              nextHydratableInstance = null;\n              return true;\n            }\n            return false;\n          }\n          case SuspenseComponent: {\n            {\n              var suspenseInstance = canHydrateSuspenseInstance(nextInstance);\n              if (suspenseInstance !== null) {\n                var suspenseState = {\n                  dehydrated: suspenseInstance,\n                  treeContext: getSuspendedTreeContext(),\n                  retryLane: OffscreenLane\n                };\n                fiber.memoizedState = suspenseState;\n                var dehydratedFragment = createFiberFromDehydratedFragment(suspenseInstance);\n                dehydratedFragment.return = fiber;\n                fiber.child = dehydratedFragment;\n                hydrationParentFiber = fiber;\n                nextHydratableInstance = null;\n                return true;\n              }\n            }\n            return false;\n          }\n          default:\n            return false;\n        }\n      }\n      function shouldClientRenderOnMismatch(fiber) {\n        return (fiber.mode & ConcurrentMode) !== NoMode && (fiber.flags & DidCapture) === NoFlags;\n      }\n      function throwOnHydrationMismatch(fiber) {\n        throw new Error(\"Hydration failed because the initial UI does not match what was rendered on the server.\");\n      }\n      function tryToClaimNextHydratableInstance(fiber) {\n        if (!isHydrating) {\n          return;\n        }\n        var nextInstance = nextHydratableInstance;\n        if (!nextInstance) {\n          if (shouldClientRenderOnMismatch(fiber)) {\n            warnNonhydratedInstance(hydrationParentFiber, fiber);\n            throwOnHydrationMismatch();\n          }\n          insertNonHydratedInstance(hydrationParentFiber, fiber);\n          isHydrating = false;\n          hydrationParentFiber = fiber;\n          return;\n        }\n        var firstAttemptedInstance = nextInstance;\n        if (!tryHydrate(fiber, nextInstance)) {\n          if (shouldClientRenderOnMismatch(fiber)) {\n            warnNonhydratedInstance(hydrationParentFiber, fiber);\n            throwOnHydrationMismatch();\n          }\n          nextInstance = getNextHydratableSibling(firstAttemptedInstance);\n          var prevHydrationParentFiber = hydrationParentFiber;\n          if (!nextInstance || !tryHydrate(fiber, nextInstance)) {\n            insertNonHydratedInstance(hydrationParentFiber, fiber);\n            isHydrating = false;\n            hydrationParentFiber = fiber;\n            return;\n          }\n          deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n        }\n      }\n      function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n        if (!supportsHydration) {\n          throw new Error(\"Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        var instance = fiber.stateNode;\n        var shouldWarnIfMismatchDev = !didSuspend;\n        var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber, shouldWarnIfMismatchDev);\n        fiber.updateQueue = updatePayload;\n        if (updatePayload !== null) {\n          return true;\n        }\n        return false;\n      }\n      function prepareToHydrateHostTextInstance(fiber) {\n        if (!supportsHydration) {\n          throw new Error(\"Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        var textInstance = fiber.stateNode;\n        var textContent = fiber.memoizedProps;\n        var shouldWarnIfMismatchDev = !didSuspend;\n        var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber, shouldWarnIfMismatchDev);\n        if (shouldUpdate) {\n          var returnFiber = hydrationParentFiber;\n          if (returnFiber !== null) {\n            var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n            switch (returnFiber.tag) {\n              case HostRoot: {\n                var parentContainer = returnFiber.stateNode.containerInfo;\n                didNotMatchHydratedContainerTextInstance(\n                  parentContainer,\n                  textInstance,\n                  textContent,\n                  // TODO: Delete this argument when we remove the legacy root API.\n                  isConcurrentMode\n                );\n                break;\n              }\n              case HostComponent: {\n                var parentType = returnFiber.type;\n                var parentProps = returnFiber.memoizedProps;\n                var parentInstance = returnFiber.stateNode;\n                didNotMatchHydratedTextInstance(\n                  parentType,\n                  parentProps,\n                  parentInstance,\n                  textInstance,\n                  textContent,\n                  // TODO: Delete this argument when we remove the legacy root API.\n                  isConcurrentMode\n                );\n                break;\n              }\n            }\n          }\n        }\n        return shouldUpdate;\n      }\n      function prepareToHydrateHostSuspenseInstance(fiber) {\n        if (!supportsHydration) {\n          throw new Error(\"Expected prepareToHydrateHostSuspenseInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        var suspenseState = fiber.memoizedState;\n        var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n        if (!suspenseInstance) {\n          throw new Error(\"Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        hydrateSuspenseInstance(suspenseInstance, fiber);\n      }\n      function skipPastDehydratedSuspenseInstance(fiber) {\n        if (!supportsHydration) {\n          throw new Error(\"Expected skipPastDehydratedSuspenseInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        var suspenseState = fiber.memoizedState;\n        var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n        if (!suspenseInstance) {\n          throw new Error(\"Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);\n      }\n      function popToNextHostParent(fiber) {\n        var parent = fiber.return;\n        while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {\n          parent = parent.return;\n        }\n        hydrationParentFiber = parent;\n      }\n      function popHydrationState(fiber) {\n        if (!supportsHydration) {\n          return false;\n        }\n        if (fiber !== hydrationParentFiber) {\n          return false;\n        }\n        if (!isHydrating) {\n          popToNextHostParent(fiber);\n          isHydrating = true;\n          return false;\n        }\n        if (fiber.tag !== HostRoot && (fiber.tag !== HostComponent || shouldDeleteUnhydratedTailInstances(fiber.type) && !shouldSetTextContent(fiber.type, fiber.memoizedProps))) {\n          var nextInstance = nextHydratableInstance;\n          if (nextInstance) {\n            if (shouldClientRenderOnMismatch(fiber)) {\n              warnIfUnhydratedTailNodes(fiber);\n              throwOnHydrationMismatch();\n            } else {\n              while (nextInstance) {\n                deleteHydratableInstance(fiber, nextInstance);\n                nextInstance = getNextHydratableSibling(nextInstance);\n              }\n            }\n          }\n        }\n        popToNextHostParent(fiber);\n        if (fiber.tag === SuspenseComponent) {\n          nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);\n        } else {\n          nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n        }\n        return true;\n      }\n      function hasUnhydratedTailNodes() {\n        return isHydrating && nextHydratableInstance !== null;\n      }\n      function warnIfUnhydratedTailNodes(fiber) {\n        var nextInstance = nextHydratableInstance;\n        while (nextInstance) {\n          warnUnhydratedInstance(fiber, nextInstance);\n          nextInstance = getNextHydratableSibling(nextInstance);\n        }\n      }\n      function resetHydrationState() {\n        if (!supportsHydration) {\n          return;\n        }\n        hydrationParentFiber = null;\n        nextHydratableInstance = null;\n        isHydrating = false;\n        didSuspend = false;\n      }\n      function upgradeHydrationErrorsToRecoverable() {\n        if (hydrationErrors !== null) {\n          queueRecoverableErrors(hydrationErrors);\n          hydrationErrors = null;\n        }\n      }\n      function getIsHydrating() {\n        return isHydrating;\n      }\n      function queueHydrationError(error3) {\n        if (hydrationErrors === null) {\n          hydrationErrors = [error3];\n        } else {\n          hydrationErrors.push(error3);\n        }\n      }\n      var didWarnAboutMaps;\n      var didWarnAboutGenerators;\n      var didWarnAboutStringRefs;\n      var ownerHasKeyUseWarning;\n      var ownerHasFunctionTypeWarning;\n      var warnForMissingKey = function(child, returnFiber) {\n      };\n      {\n        didWarnAboutMaps = false;\n        didWarnAboutGenerators = false;\n        didWarnAboutStringRefs = {};\n        ownerHasKeyUseWarning = {};\n        ownerHasFunctionTypeWarning = {};\n        warnForMissingKey = function(child, returnFiber) {\n          if (child === null || typeof child !== \"object\") {\n            return;\n          }\n          if (!child._store || child._store.validated || child.key != null) {\n            return;\n          }\n          if (typeof child._store !== \"object\") {\n            throw new Error(\"React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          child._store.validated = true;\n          var componentName = getComponentNameFromFiber(returnFiber) || \"Component\";\n          if (ownerHasKeyUseWarning[componentName]) {\n            return;\n          }\n          ownerHasKeyUseWarning[componentName] = true;\n          error2('Each child in a list should have a unique \"key\" prop. See https://reactjs.org/link/warning-keys for more information.');\n        };\n      }\n      function coerceRef(returnFiber, current2, element) {\n        var mixedRef = element.ref;\n        if (mixedRef !== null && typeof mixedRef !== \"function\" && typeof mixedRef !== \"object\") {\n          {\n            if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs\n            // because these cannot be automatically converted to an arrow function\n            // using a codemod. Therefore, we don't have to warn about string refs again.\n            !(element._owner && element._self && element._owner.stateNode !== element._self)) {\n              var componentName = getComponentNameFromFiber(returnFiber) || \"Component\";\n              if (!didWarnAboutStringRefs[componentName]) {\n                {\n                  error2('A string ref, \"%s\", has been found within a strict mode tree. String refs are a source of potential bugs and should be avoided. We recommend using useRef() or createRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref', mixedRef);\n                }\n                didWarnAboutStringRefs[componentName] = true;\n              }\n            }\n          }\n          if (element._owner) {\n            var owner = element._owner;\n            var inst;\n            if (owner) {\n              var ownerFiber = owner;\n              if (ownerFiber.tag !== ClassComponent) {\n                throw new Error(\"Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref\");\n              }\n              inst = ownerFiber.stateNode;\n            }\n            if (!inst) {\n              throw new Error(\"Missing owner for string ref \" + mixedRef + \". This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            var resolvedInst = inst;\n            {\n              checkPropStringCoercion(mixedRef, \"ref\");\n            }\n            var stringRef = \"\" + mixedRef;\n            if (current2 !== null && current2.ref !== null && typeof current2.ref === \"function\" && current2.ref._stringRef === stringRef) {\n              return current2.ref;\n            }\n            var ref = function(value) {\n              var refs = resolvedInst.refs;\n              if (refs === emptyRefsObject) {\n                refs = resolvedInst.refs = {};\n              }\n              if (value === null) {\n                delete refs[stringRef];\n              } else {\n                refs[stringRef] = value;\n              }\n            };\n            ref._stringRef = stringRef;\n            return ref;\n          } else {\n            if (typeof mixedRef !== \"string\") {\n              throw new Error(\"Expected ref to be a function, a string, an object returned by React.createRef(), or null.\");\n            }\n            if (!element._owner) {\n              throw new Error(\"Element ref was specified as a string (\" + mixedRef + \") but no owner was set. This could happen for one of the following reasons:\\n1. You may be adding a ref to a function component\\n2. You may be adding a ref to a component that was not created inside a component's render method\\n3. You have multiple copies of React loaded\\nSee https://reactjs.org/link/refs-must-have-owner for more information.\");\n            }\n          }\n        }\n        return mixedRef;\n      }\n      function throwOnInvalidObjectType(returnFiber, newChild) {\n        var childString = Object.prototype.toString.call(newChild);\n        throw new Error(\"Objects are not valid as a React child (found: \" + (childString === \"[object Object]\" ? \"object with keys {\" + Object.keys(newChild).join(\", \") + \"}\" : childString) + \"). If you meant to render a collection of children, use an array instead.\");\n      }\n      function warnOnFunctionType(returnFiber) {\n        {\n          var componentName = getComponentNameFromFiber(returnFiber) || \"Component\";\n          if (ownerHasFunctionTypeWarning[componentName]) {\n            return;\n          }\n          ownerHasFunctionTypeWarning[componentName] = true;\n          error2(\"Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it.\");\n        }\n      }\n      function resolveLazy(lazyType) {\n        var payload = lazyType._payload;\n        var init = lazyType._init;\n        return init(payload);\n      }\n      function ChildReconciler(shouldTrackSideEffects) {\n        function deleteChild(returnFiber, childToDelete) {\n          if (!shouldTrackSideEffects) {\n            return;\n          }\n          var deletions = returnFiber.deletions;\n          if (deletions === null) {\n            returnFiber.deletions = [childToDelete];\n            returnFiber.flags |= ChildDeletion;\n          } else {\n            deletions.push(childToDelete);\n          }\n        }\n        function deleteRemainingChildren(returnFiber, currentFirstChild) {\n          if (!shouldTrackSideEffects) {\n            return null;\n          }\n          var childToDelete = currentFirstChild;\n          while (childToDelete !== null) {\n            deleteChild(returnFiber, childToDelete);\n            childToDelete = childToDelete.sibling;\n          }\n          return null;\n        }\n        function mapRemainingChildren(returnFiber, currentFirstChild) {\n          var existingChildren = /* @__PURE__ */ new Map();\n          var existingChild = currentFirstChild;\n          while (existingChild !== null) {\n            if (existingChild.key !== null) {\n              existingChildren.set(existingChild.key, existingChild);\n            } else {\n              existingChildren.set(existingChild.index, existingChild);\n            }\n            existingChild = existingChild.sibling;\n          }\n          return existingChildren;\n        }\n        function useFiber2(fiber, pendingProps) {\n          var clone = createWorkInProgress(fiber, pendingProps);\n          clone.index = 0;\n          clone.sibling = null;\n          return clone;\n        }\n        function placeChild(newFiber, lastPlacedIndex, newIndex) {\n          newFiber.index = newIndex;\n          if (!shouldTrackSideEffects) {\n            newFiber.flags |= Forked;\n            return lastPlacedIndex;\n          }\n          var current2 = newFiber.alternate;\n          if (current2 !== null) {\n            var oldIndex = current2.index;\n            if (oldIndex < lastPlacedIndex) {\n              newFiber.flags |= Placement;\n              return lastPlacedIndex;\n            } else {\n              return oldIndex;\n            }\n          } else {\n            newFiber.flags |= Placement;\n            return lastPlacedIndex;\n          }\n        }\n        function placeSingleChild(newFiber) {\n          if (shouldTrackSideEffects && newFiber.alternate === null) {\n            newFiber.flags |= Placement;\n          }\n          return newFiber;\n        }\n        function updateTextNode(returnFiber, current2, textContent, lanes) {\n          if (current2 === null || current2.tag !== HostText) {\n            var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n            created.return = returnFiber;\n            return created;\n          } else {\n            var existing = useFiber2(current2, textContent);\n            existing.return = returnFiber;\n            return existing;\n          }\n        }\n        function updateElement(returnFiber, current2, element, lanes) {\n          var elementType = element.type;\n          if (elementType === REACT_FRAGMENT_TYPE) {\n            return updateFragment2(returnFiber, current2, element.props.children, lanes, element.key);\n          }\n          if (current2 !== null) {\n            if (current2.elementType === elementType || // Keep this check inline so it only runs on the false path:\n            isCompatibleFamilyForHotReloading(current2, element) || // Lazy types should reconcile their resolved type.\n            // We need to do this after the Hot Reloading check above,\n            // because hot reloading has different semantics than prod because\n            // it doesn't resuspend. So we can't let the call below suspend.\n            typeof elementType === \"object\" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current2.type) {\n              var existing = useFiber2(current2, element.props);\n              existing.ref = coerceRef(returnFiber, current2, element);\n              existing.return = returnFiber;\n              {\n                existing._debugSource = element._source;\n                existing._debugOwner = element._owner;\n              }\n              return existing;\n            }\n          }\n          var created = createFiberFromElement(element, returnFiber.mode, lanes);\n          created.ref = coerceRef(returnFiber, current2, element);\n          created.return = returnFiber;\n          return created;\n        }\n        function updatePortal(returnFiber, current2, portal, lanes) {\n          if (current2 === null || current2.tag !== HostPortal || current2.stateNode.containerInfo !== portal.containerInfo || current2.stateNode.implementation !== portal.implementation) {\n            var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n            created.return = returnFiber;\n            return created;\n          } else {\n            var existing = useFiber2(current2, portal.children || []);\n            existing.return = returnFiber;\n            return existing;\n          }\n        }\n        function updateFragment2(returnFiber, current2, fragment2, lanes, key) {\n          if (current2 === null || current2.tag !== Fragment2) {\n            var created = createFiberFromFragment(fragment2, returnFiber.mode, lanes, key);\n            created.return = returnFiber;\n            return created;\n          } else {\n            var existing = useFiber2(current2, fragment2);\n            existing.return = returnFiber;\n            return existing;\n          }\n        }\n        function createChild(returnFiber, newChild, lanes) {\n          if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n            var created = createFiberFromText(\"\" + newChild, returnFiber.mode, lanes);\n            created.return = returnFiber;\n            return created;\n          }\n          if (typeof newChild === \"object\" && newChild !== null) {\n            switch (newChild.$$typeof) {\n              case REACT_ELEMENT_TYPE: {\n                var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);\n                _created.ref = coerceRef(returnFiber, null, newChild);\n                _created.return = returnFiber;\n                return _created;\n              }\n              case REACT_PORTAL_TYPE: {\n                var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n                _created2.return = returnFiber;\n                return _created2;\n              }\n              case REACT_LAZY_TYPE: {\n                {\n                  var payload = newChild._payload;\n                  var init = newChild._init;\n                  return createChild(returnFiber, init(payload), lanes);\n                }\n              }\n            }\n            if (isArray2(newChild) || getIteratorFn(newChild)) {\n              var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);\n              _created3.return = returnFiber;\n              return _created3;\n            }\n            throwOnInvalidObjectType(returnFiber, newChild);\n          }\n          {\n            if (typeof newChild === \"function\") {\n              warnOnFunctionType(returnFiber);\n            }\n          }\n          return null;\n        }\n        function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n          var key = oldFiber !== null ? oldFiber.key : null;\n          if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n            if (key !== null) {\n              return null;\n            }\n            return updateTextNode(returnFiber, oldFiber, \"\" + newChild, lanes);\n          }\n          if (typeof newChild === \"object\" && newChild !== null) {\n            switch (newChild.$$typeof) {\n              case REACT_ELEMENT_TYPE: {\n                if (newChild.key === key) {\n                  return updateElement(returnFiber, oldFiber, newChild, lanes);\n                } else {\n                  return null;\n                }\n              }\n              case REACT_PORTAL_TYPE: {\n                if (newChild.key === key) {\n                  return updatePortal(returnFiber, oldFiber, newChild, lanes);\n                } else {\n                  return null;\n                }\n              }\n              case REACT_LAZY_TYPE: {\n                {\n                  var payload = newChild._payload;\n                  var init = newChild._init;\n                  return updateSlot(returnFiber, oldFiber, init(payload), lanes);\n                }\n              }\n            }\n            if (isArray2(newChild) || getIteratorFn(newChild)) {\n              if (key !== null) {\n                return null;\n              }\n              return updateFragment2(returnFiber, oldFiber, newChild, lanes, null);\n            }\n            throwOnInvalidObjectType(returnFiber, newChild);\n          }\n          {\n            if (typeof newChild === \"function\") {\n              warnOnFunctionType(returnFiber);\n            }\n          }\n          return null;\n        }\n        function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {\n          if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n            var matchedFiber = existingChildren.get(newIdx) || null;\n            return updateTextNode(returnFiber, matchedFiber, \"\" + newChild, lanes);\n          }\n          if (typeof newChild === \"object\" && newChild !== null) {\n            switch (newChild.$$typeof) {\n              case REACT_ELEMENT_TYPE: {\n                var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n                return updateElement(returnFiber, _matchedFiber, newChild, lanes);\n              }\n              case REACT_PORTAL_TYPE: {\n                var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n                return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);\n              }\n              case REACT_LAZY_TYPE: {\n                var payload = newChild._payload;\n                var init = newChild._init;\n                return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);\n              }\n            }\n            if (isArray2(newChild) || getIteratorFn(newChild)) {\n              var _matchedFiber3 = existingChildren.get(newIdx) || null;\n              return updateFragment2(returnFiber, _matchedFiber3, newChild, lanes, null);\n            }\n            throwOnInvalidObjectType(returnFiber, newChild);\n          }\n          {\n            if (typeof newChild === \"function\") {\n              warnOnFunctionType(returnFiber);\n            }\n          }\n          return null;\n        }\n        function warnOnInvalidKey(child, knownKeys, returnFiber) {\n          {\n            if (typeof child !== \"object\" || child === null) {\n              return knownKeys;\n            }\n            switch (child.$$typeof) {\n              case REACT_ELEMENT_TYPE:\n              case REACT_PORTAL_TYPE:\n                warnForMissingKey(child, returnFiber);\n                var key = child.key;\n                if (typeof key !== \"string\") {\n                  break;\n                }\n                if (knownKeys === null) {\n                  knownKeys = /* @__PURE__ */ new Set();\n                  knownKeys.add(key);\n                  break;\n                }\n                if (!knownKeys.has(key)) {\n                  knownKeys.add(key);\n                  break;\n                }\n                error2(\"Encountered two children with the same key, `%s`. Keys should be unique so that components maintain their identity across updates. Non-unique keys may cause children to be duplicated and/or omitted — the behavior is unsupported and could change in a future version.\", key);\n                break;\n              case REACT_LAZY_TYPE: {\n                var payload = child._payload;\n                var init = child._init;\n                warnOnInvalidKey(init(payload), knownKeys, returnFiber);\n                break;\n              }\n            }\n          }\n          return knownKeys;\n        }\n        function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {\n          {\n            var knownKeys = null;\n            for (var i2 = 0; i2 < newChildren.length; i2++) {\n              var child = newChildren[i2];\n              knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n            }\n          }\n          var resultingFirstChild = null;\n          var previousNewFiber = null;\n          var oldFiber = currentFirstChild;\n          var lastPlacedIndex = 0;\n          var newIdx = 0;\n          var nextOldFiber = null;\n          for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n            if (oldFiber.index > newIdx) {\n              nextOldFiber = oldFiber;\n              oldFiber = null;\n            } else {\n              nextOldFiber = oldFiber.sibling;\n            }\n            var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);\n            if (newFiber === null) {\n              if (oldFiber === null) {\n                oldFiber = nextOldFiber;\n              }\n              break;\n            }\n            if (shouldTrackSideEffects) {\n              if (oldFiber && newFiber.alternate === null) {\n                deleteChild(returnFiber, oldFiber);\n              }\n            }\n            lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n            if (previousNewFiber === null) {\n              resultingFirstChild = newFiber;\n            } else {\n              previousNewFiber.sibling = newFiber;\n            }\n            previousNewFiber = newFiber;\n            oldFiber = nextOldFiber;\n          }\n          if (newIdx === newChildren.length) {\n            deleteRemainingChildren(returnFiber, oldFiber);\n            if (getIsHydrating()) {\n              var numberOfForks = newIdx;\n              pushTreeFork(returnFiber, numberOfForks);\n            }\n            return resultingFirstChild;\n          }\n          if (oldFiber === null) {\n            for (; newIdx < newChildren.length; newIdx++) {\n              var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);\n              if (_newFiber === null) {\n                continue;\n              }\n              lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n              if (previousNewFiber === null) {\n                resultingFirstChild = _newFiber;\n              } else {\n                previousNewFiber.sibling = _newFiber;\n              }\n              previousNewFiber = _newFiber;\n            }\n            if (getIsHydrating()) {\n              var _numberOfForks = newIdx;\n              pushTreeFork(returnFiber, _numberOfForks);\n            }\n            return resultingFirstChild;\n          }\n          var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n          for (; newIdx < newChildren.length; newIdx++) {\n            var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);\n            if (_newFiber2 !== null) {\n              if (shouldTrackSideEffects) {\n                if (_newFiber2.alternate !== null) {\n                  existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);\n                }\n              }\n              lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n              if (previousNewFiber === null) {\n                resultingFirstChild = _newFiber2;\n              } else {\n                previousNewFiber.sibling = _newFiber2;\n              }\n              previousNewFiber = _newFiber2;\n            }\n          }\n          if (shouldTrackSideEffects) {\n            existingChildren.forEach(function(child2) {\n              return deleteChild(returnFiber, child2);\n            });\n          }\n          if (getIsHydrating()) {\n            var _numberOfForks2 = newIdx;\n            pushTreeFork(returnFiber, _numberOfForks2);\n          }\n          return resultingFirstChild;\n        }\n        function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {\n          var iteratorFn = getIteratorFn(newChildrenIterable);\n          if (typeof iteratorFn !== \"function\") {\n            throw new Error(\"An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n          {\n            if (typeof Symbol === \"function\" && // $FlowFixMe Flow doesn't know about toStringTag\n            newChildrenIterable[Symbol.toStringTag] === \"Generator\") {\n              if (!didWarnAboutGenerators) {\n                error2(\"Using Generators as children is unsupported and will likely yield unexpected results because enumerating a generator mutates it. You may convert it to an array with `Array.from()` or the `[...spread]` operator before rendering. Keep in mind you might need to polyfill these features for older browsers.\");\n              }\n              didWarnAboutGenerators = true;\n            }\n            if (newChildrenIterable.entries === iteratorFn) {\n              if (!didWarnAboutMaps) {\n                error2(\"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\");\n              }\n              didWarnAboutMaps = true;\n            }\n            var _newChildren = iteratorFn.call(newChildrenIterable);\n            if (_newChildren) {\n              var knownKeys = null;\n              var _step = _newChildren.next();\n              for (; !_step.done; _step = _newChildren.next()) {\n                var child = _step.value;\n                knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n              }\n            }\n          }\n          var newChildren = iteratorFn.call(newChildrenIterable);\n          if (newChildren == null) {\n            throw new Error(\"An iterable object provided no iterator.\");\n          }\n          var resultingFirstChild = null;\n          var previousNewFiber = null;\n          var oldFiber = currentFirstChild;\n          var lastPlacedIndex = 0;\n          var newIdx = 0;\n          var nextOldFiber = null;\n          var step = newChildren.next();\n          for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n            if (oldFiber.index > newIdx) {\n              nextOldFiber = oldFiber;\n              oldFiber = null;\n            } else {\n              nextOldFiber = oldFiber.sibling;\n            }\n            var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n            if (newFiber === null) {\n              if (oldFiber === null) {\n                oldFiber = nextOldFiber;\n              }\n              break;\n            }\n            if (shouldTrackSideEffects) {\n              if (oldFiber && newFiber.alternate === null) {\n                deleteChild(returnFiber, oldFiber);\n              }\n            }\n            lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n            if (previousNewFiber === null) {\n              resultingFirstChild = newFiber;\n            } else {\n              previousNewFiber.sibling = newFiber;\n            }\n            previousNewFiber = newFiber;\n            oldFiber = nextOldFiber;\n          }\n          if (step.done) {\n            deleteRemainingChildren(returnFiber, oldFiber);\n            if (getIsHydrating()) {\n              var numberOfForks = newIdx;\n              pushTreeFork(returnFiber, numberOfForks);\n            }\n            return resultingFirstChild;\n          }\n          if (oldFiber === null) {\n            for (; !step.done; newIdx++, step = newChildren.next()) {\n              var _newFiber3 = createChild(returnFiber, step.value, lanes);\n              if (_newFiber3 === null) {\n                continue;\n              }\n              lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n              if (previousNewFiber === null) {\n                resultingFirstChild = _newFiber3;\n              } else {\n                previousNewFiber.sibling = _newFiber3;\n              }\n              previousNewFiber = _newFiber3;\n            }\n            if (getIsHydrating()) {\n              var _numberOfForks3 = newIdx;\n              pushTreeFork(returnFiber, _numberOfForks3);\n            }\n            return resultingFirstChild;\n          }\n          var existingChildren = mapRemainingChildren(returnFiber, oldFiber);\n          for (; !step.done; newIdx++, step = newChildren.next()) {\n            var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);\n            if (_newFiber4 !== null) {\n              if (shouldTrackSideEffects) {\n                if (_newFiber4.alternate !== null) {\n                  existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);\n                }\n              }\n              lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n              if (previousNewFiber === null) {\n                resultingFirstChild = _newFiber4;\n              } else {\n                previousNewFiber.sibling = _newFiber4;\n              }\n              previousNewFiber = _newFiber4;\n            }\n          }\n          if (shouldTrackSideEffects) {\n            existingChildren.forEach(function(child2) {\n              return deleteChild(returnFiber, child2);\n            });\n          }\n          if (getIsHydrating()) {\n            var _numberOfForks4 = newIdx;\n            pushTreeFork(returnFiber, _numberOfForks4);\n          }\n          return resultingFirstChild;\n        }\n        function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {\n          if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n            deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n            var existing = useFiber2(currentFirstChild, textContent);\n            existing.return = returnFiber;\n            return existing;\n          }\n          deleteRemainingChildren(returnFiber, currentFirstChild);\n          var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n          created.return = returnFiber;\n          return created;\n        }\n        function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {\n          var key = element.key;\n          var child = currentFirstChild;\n          while (child !== null) {\n            if (child.key === key) {\n              var elementType = element.type;\n              if (elementType === REACT_FRAGMENT_TYPE) {\n                if (child.tag === Fragment2) {\n                  deleteRemainingChildren(returnFiber, child.sibling);\n                  var existing = useFiber2(child, element.props.children);\n                  existing.return = returnFiber;\n                  {\n                    existing._debugSource = element._source;\n                    existing._debugOwner = element._owner;\n                  }\n                  return existing;\n                }\n              } else {\n                if (child.elementType === elementType || // Keep this check inline so it only runs on the false path:\n                isCompatibleFamilyForHotReloading(child, element) || // Lazy types should reconcile their resolved type.\n                // We need to do this after the Hot Reloading check above,\n                // because hot reloading has different semantics than prod because\n                // it doesn't resuspend. So we can't let the call below suspend.\n                typeof elementType === \"object\" && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) {\n                  deleteRemainingChildren(returnFiber, child.sibling);\n                  var _existing = useFiber2(child, element.props);\n                  _existing.ref = coerceRef(returnFiber, child, element);\n                  _existing.return = returnFiber;\n                  {\n                    _existing._debugSource = element._source;\n                    _existing._debugOwner = element._owner;\n                  }\n                  return _existing;\n                }\n              }\n              deleteRemainingChildren(returnFiber, child);\n              break;\n            } else {\n              deleteChild(returnFiber, child);\n            }\n            child = child.sibling;\n          }\n          if (element.type === REACT_FRAGMENT_TYPE) {\n            var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);\n            created.return = returnFiber;\n            return created;\n          } else {\n            var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);\n            _created4.ref = coerceRef(returnFiber, currentFirstChild, element);\n            _created4.return = returnFiber;\n            return _created4;\n          }\n        }\n        function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {\n          var key = portal.key;\n          var child = currentFirstChild;\n          while (child !== null) {\n            if (child.key === key) {\n              if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n                deleteRemainingChildren(returnFiber, child.sibling);\n                var existing = useFiber2(child, portal.children || []);\n                existing.return = returnFiber;\n                return existing;\n              } else {\n                deleteRemainingChildren(returnFiber, child);\n                break;\n              }\n            } else {\n              deleteChild(returnFiber, child);\n            }\n            child = child.sibling;\n          }\n          var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n          created.return = returnFiber;\n          return created;\n        }\n        function reconcileChildFibers2(returnFiber, currentFirstChild, newChild, lanes) {\n          var isUnkeyedTopLevelFragment = typeof newChild === \"object\" && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;\n          if (isUnkeyedTopLevelFragment) {\n            newChild = newChild.props.children;\n          }\n          if (typeof newChild === \"object\" && newChild !== null) {\n            switch (newChild.$$typeof) {\n              case REACT_ELEMENT_TYPE:\n                return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));\n              case REACT_PORTAL_TYPE:\n                return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));\n              case REACT_LAZY_TYPE: {\n                var payload = newChild._payload;\n                var init = newChild._init;\n                return reconcileChildFibers2(returnFiber, currentFirstChild, init(payload), lanes);\n              }\n            }\n            if (isArray2(newChild)) {\n              return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);\n            }\n            if (getIteratorFn(newChild)) {\n              return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);\n            }\n            throwOnInvalidObjectType(returnFiber, newChild);\n          }\n          if (typeof newChild === \"string\" && newChild !== \"\" || typeof newChild === \"number\") {\n            return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, \"\" + newChild, lanes));\n          }\n          {\n            if (typeof newChild === \"function\") {\n              warnOnFunctionType(returnFiber);\n            }\n          }\n          return deleteRemainingChildren(returnFiber, currentFirstChild);\n        }\n        return reconcileChildFibers2;\n      }\n      var reconcileChildFibers = ChildReconciler(true);\n      var mountChildFibers = ChildReconciler(false);\n      function cloneChildFibers(current2, workInProgress2) {\n        if (current2 !== null && workInProgress2.child !== current2.child) {\n          throw new Error(\"Resuming work not yet implemented.\");\n        }\n        if (workInProgress2.child === null) {\n          return;\n        }\n        var currentChild = workInProgress2.child;\n        var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);\n        workInProgress2.child = newChild;\n        newChild.return = workInProgress2;\n        while (currentChild.sibling !== null) {\n          currentChild = currentChild.sibling;\n          newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);\n          newChild.return = workInProgress2;\n        }\n        newChild.sibling = null;\n      }\n      function resetChildFibers(workInProgress2, lanes) {\n        var child = workInProgress2.child;\n        while (child !== null) {\n          resetWorkInProgress(child, lanes);\n          child = child.sibling;\n        }\n      }\n      var NO_CONTEXT = {};\n      var contextStackCursor$1 = createCursor(NO_CONTEXT);\n      var contextFiberStackCursor = createCursor(NO_CONTEXT);\n      var rootInstanceStackCursor = createCursor(NO_CONTEXT);\n      function requiredContext(c2) {\n        if (c2 === NO_CONTEXT) {\n          throw new Error(\"Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        return c2;\n      }\n      function getRootHostContainer() {\n        var rootInstance = requiredContext(rootInstanceStackCursor.current);\n        return rootInstance;\n      }\n      function pushHostContainer(fiber, nextRootInstance) {\n        push(rootInstanceStackCursor, nextRootInstance, fiber);\n        push(contextFiberStackCursor, fiber, fiber);\n        push(contextStackCursor$1, NO_CONTEXT, fiber);\n        var nextRootContext = getRootHostContext(nextRootInstance);\n        pop(contextStackCursor$1, fiber);\n        push(contextStackCursor$1, nextRootContext, fiber);\n      }\n      function popHostContainer(fiber) {\n        pop(contextStackCursor$1, fiber);\n        pop(contextFiberStackCursor, fiber);\n        pop(rootInstanceStackCursor, fiber);\n      }\n      function getHostContext() {\n        var context2 = requiredContext(contextStackCursor$1.current);\n        return context2;\n      }\n      function pushHostContext(fiber) {\n        var rootInstance = requiredContext(rootInstanceStackCursor.current);\n        var context2 = requiredContext(contextStackCursor$1.current);\n        var nextContext = getChildHostContext(context2, fiber.type, rootInstance);\n        if (context2 === nextContext) {\n          return;\n        }\n        push(contextFiberStackCursor, fiber, fiber);\n        push(contextStackCursor$1, nextContext, fiber);\n      }\n      function popHostContext(fiber) {\n        if (contextFiberStackCursor.current !== fiber) {\n          return;\n        }\n        pop(contextStackCursor$1, fiber);\n        pop(contextFiberStackCursor, fiber);\n      }\n      var DefaultSuspenseContext = 0;\n      var SubtreeSuspenseContextMask = 1;\n      var InvisibleParentSuspenseContext = 1;\n      var ForceSuspenseFallback = 2;\n      var suspenseStackCursor = createCursor(DefaultSuspenseContext);\n      function hasSuspenseContext(parentContext, flag) {\n        return (parentContext & flag) !== 0;\n      }\n      function setDefaultShallowSuspenseContext(parentContext) {\n        return parentContext & SubtreeSuspenseContextMask;\n      }\n      function setShallowSuspenseContext(parentContext, shallowContext) {\n        return parentContext & SubtreeSuspenseContextMask | shallowContext;\n      }\n      function addSubtreeSuspenseContext(parentContext, subtreeContext) {\n        return parentContext | subtreeContext;\n      }\n      function pushSuspenseContext(fiber, newContext) {\n        push(suspenseStackCursor, newContext, fiber);\n      }\n      function popSuspenseContext(fiber) {\n        pop(suspenseStackCursor, fiber);\n      }\n      function shouldCaptureSuspense(workInProgress2, hasInvisibleParent) {\n        var nextState = workInProgress2.memoizedState;\n        if (nextState !== null) {\n          if (nextState.dehydrated !== null) {\n            return true;\n          }\n          return false;\n        }\n        workInProgress2.memoizedProps;\n        {\n          return true;\n        }\n      }\n      function findFirstSuspended(row) {\n        var node = row;\n        while (node !== null) {\n          if (node.tag === SuspenseComponent) {\n            var state = node.memoizedState;\n            if (state !== null) {\n              var dehydrated = state.dehydrated;\n              if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {\n                return node;\n              }\n            }\n          } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't\n          // keep track of whether it suspended or not.\n          node.memoizedProps.revealOrder !== void 0) {\n            var didSuspend2 = (node.flags & DidCapture) !== NoFlags;\n            if (didSuspend2) {\n              return node;\n            }\n          } else if (node.child !== null) {\n            node.child.return = node;\n            node = node.child;\n            continue;\n          }\n          if (node === row) {\n            return null;\n          }\n          while (node.sibling === null) {\n            if (node.return === null || node.return === row) {\n              return null;\n            }\n            node = node.return;\n          }\n          node.sibling.return = node.return;\n          node = node.sibling;\n        }\n        return null;\n      }\n      var NoFlags$1 = (\n        /*   */\n        0\n      );\n      var HasEffect = (\n        /* */\n        1\n      );\n      var Insertion = (\n        /*  */\n        2\n      );\n      var Layout = (\n        /*    */\n        4\n      );\n      var Passive$1 = (\n        /*   */\n        8\n      );\n      var workInProgressSources = [];\n      function resetWorkInProgressVersions() {\n        for (var i2 = 0; i2 < workInProgressSources.length; i2++) {\n          var mutableSource = workInProgressSources[i2];\n          if (isPrimaryRenderer) {\n            mutableSource._workInProgressVersionPrimary = null;\n          } else {\n            mutableSource._workInProgressVersionSecondary = null;\n          }\n        }\n        workInProgressSources.length = 0;\n      }\n      function registerMutableSourceForHydration(root, mutableSource) {\n        var getVersion = mutableSource._getVersion;\n        var version2 = getVersion(mutableSource._source);\n        if (root.mutableSourceEagerHydrationData == null) {\n          root.mutableSourceEagerHydrationData = [mutableSource, version2];\n        } else {\n          root.mutableSourceEagerHydrationData.push(mutableSource, version2);\n        }\n      }\n      var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;\n      var didWarnAboutMismatchedHooksForComponent;\n      var didWarnUncachedGetSnapshot;\n      {\n        didWarnAboutMismatchedHooksForComponent = /* @__PURE__ */ new Set();\n      }\n      var renderLanes = NoLanes;\n      var currentlyRenderingFiber$1 = null;\n      var currentHook = null;\n      var workInProgressHook = null;\n      var didScheduleRenderPhaseUpdate = false;\n      var didScheduleRenderPhaseUpdateDuringThisPass = false;\n      var localIdCounter = 0;\n      var globalClientIdCounter = 0;\n      var RE_RENDER_LIMIT = 25;\n      var currentHookNameInDev = null;\n      var hookTypesDev = null;\n      var hookTypesUpdateIndexDev = -1;\n      var ignorePreviousDependencies = false;\n      function mountHookTypesDev() {\n        {\n          var hookName = currentHookNameInDev;\n          if (hookTypesDev === null) {\n            hookTypesDev = [hookName];\n          } else {\n            hookTypesDev.push(hookName);\n          }\n        }\n      }\n      function updateHookTypesDev() {\n        {\n          var hookName = currentHookNameInDev;\n          if (hookTypesDev !== null) {\n            hookTypesUpdateIndexDev++;\n            if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {\n              warnOnHookMismatchInDev(hookName);\n            }\n          }\n        }\n      }\n      function checkDepsAreArrayDev(deps) {\n        {\n          if (deps !== void 0 && deps !== null && !isArray2(deps)) {\n            error2(\"%s received a final argument that is not an array (instead, received `%s`). When specified, the final argument must be an array.\", currentHookNameInDev, typeof deps);\n          }\n        }\n      }\n      function warnOnHookMismatchInDev(currentHookName) {\n        {\n          var componentName = getComponentNameFromFiber(currentlyRenderingFiber$1);\n          if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {\n            didWarnAboutMismatchedHooksForComponent.add(componentName);\n            if (hookTypesDev !== null) {\n              var table = \"\";\n              var secondColumnStart = 30;\n              for (var i2 = 0; i2 <= hookTypesUpdateIndexDev; i2++) {\n                var oldHookName = hookTypesDev[i2];\n                var newHookName = i2 === hookTypesUpdateIndexDev ? currentHookName : oldHookName;\n                var row = i2 + 1 + \". \" + oldHookName;\n                while (row.length < secondColumnStart) {\n                  row += \" \";\n                }\n                row += newHookName + \"\\n\";\n                table += row;\n              }\n              error2(\"React has detected a change in the order of Hooks called by %s. This will lead to bugs and errors if not fixed. For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\\n\\n   Previous render            Next render\\n   ------------------------------------------------------\\n%s   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n\", componentName, table);\n            }\n          }\n        }\n      }\n      function throwInvalidHookError() {\n        throw new Error(\"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.\");\n      }\n      function areHookInputsEqual(nextDeps, prevDeps) {\n        {\n          if (ignorePreviousDependencies) {\n            return false;\n          }\n        }\n        if (prevDeps === null) {\n          {\n            error2(\"%s received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.\", currentHookNameInDev);\n          }\n          return false;\n        }\n        {\n          if (nextDeps.length !== prevDeps.length) {\n            error2(\"The final argument passed to %s changed size between renders. The order and size of this array must remain constant.\\n\\nPrevious: %s\\nIncoming: %s\", currentHookNameInDev, \"[\" + prevDeps.join(\", \") + \"]\", \"[\" + nextDeps.join(\", \") + \"]\");\n          }\n        }\n        for (var i2 = 0; i2 < prevDeps.length && i2 < nextDeps.length; i2++) {\n          if (objectIs(nextDeps[i2], prevDeps[i2])) {\n            continue;\n          }\n          return false;\n        }\n        return true;\n      }\n      function renderWithHooks(current2, workInProgress2, Component, props, secondArg, nextRenderLanes) {\n        renderLanes = nextRenderLanes;\n        currentlyRenderingFiber$1 = workInProgress2;\n        {\n          hookTypesDev = current2 !== null ? current2._debugHookTypes : null;\n          hookTypesUpdateIndexDev = -1;\n          ignorePreviousDependencies = current2 !== null && current2.type !== workInProgress2.type;\n        }\n        workInProgress2.memoizedState = null;\n        workInProgress2.updateQueue = null;\n        workInProgress2.lanes = NoLanes;\n        {\n          if (current2 !== null && current2.memoizedState !== null) {\n            ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;\n          } else if (hookTypesDev !== null) {\n            ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;\n          } else {\n            ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;\n          }\n        }\n        var children = Component(props, secondArg);\n        if (didScheduleRenderPhaseUpdateDuringThisPass) {\n          var numberOfReRenders = 0;\n          do {\n            didScheduleRenderPhaseUpdateDuringThisPass = false;\n            localIdCounter = 0;\n            if (numberOfReRenders >= RE_RENDER_LIMIT) {\n              throw new Error(\"Too many re-renders. React limits the number of renders to prevent an infinite loop.\");\n            }\n            numberOfReRenders += 1;\n            {\n              ignorePreviousDependencies = false;\n            }\n            currentHook = null;\n            workInProgressHook = null;\n            workInProgress2.updateQueue = null;\n            {\n              hookTypesUpdateIndexDev = -1;\n            }\n            ReactCurrentDispatcher$1.current = HooksDispatcherOnRerenderInDEV;\n            children = Component(props, secondArg);\n          } while (didScheduleRenderPhaseUpdateDuringThisPass);\n        }\n        ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n        {\n          workInProgress2._debugHookTypes = hookTypesDev;\n        }\n        var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;\n        renderLanes = NoLanes;\n        currentlyRenderingFiber$1 = null;\n        currentHook = null;\n        workInProgressHook = null;\n        {\n          currentHookNameInDev = null;\n          hookTypesDev = null;\n          hookTypesUpdateIndexDev = -1;\n          if (current2 !== null && (current2.flags & StaticMask) !== (workInProgress2.flags & StaticMask) && // Disable this warning in legacy mode, because legacy Suspense is weird\n          // and creates false positives. To make this work in legacy mode, we'd\n          // need to mark fibers that commit in an incomplete state, somehow. For\n          // now I'll disable the warning that most of the bugs that would trigger\n          // it are either exclusive to concurrent mode or exist in both.\n          (current2.mode & ConcurrentMode) !== NoMode) {\n            error2(\"Internal React error: Expected static flag was missing. Please notify the React team.\");\n          }\n        }\n        didScheduleRenderPhaseUpdate = false;\n        if (didRenderTooFewHooks) {\n          throw new Error(\"Rendered fewer hooks than expected. This may be caused by an accidental early return statement.\");\n        }\n        return children;\n      }\n      function checkDidRenderIdHook() {\n        var didRenderIdHook = localIdCounter !== 0;\n        localIdCounter = 0;\n        return didRenderIdHook;\n      }\n      function bailoutHooks(current2, workInProgress2, lanes) {\n        workInProgress2.updateQueue = current2.updateQueue;\n        if ((workInProgress2.mode & StrictEffectsMode) !== NoMode) {\n          workInProgress2.flags &= -50333701;\n        } else {\n          workInProgress2.flags &= -2053;\n        }\n        current2.lanes = removeLanes(current2.lanes, lanes);\n      }\n      function resetHooksAfterThrow() {\n        ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n        if (didScheduleRenderPhaseUpdate) {\n          var hook = currentlyRenderingFiber$1.memoizedState;\n          while (hook !== null) {\n            var queue = hook.queue;\n            if (queue !== null) {\n              queue.pending = null;\n            }\n            hook = hook.next;\n          }\n          didScheduleRenderPhaseUpdate = false;\n        }\n        renderLanes = NoLanes;\n        currentlyRenderingFiber$1 = null;\n        currentHook = null;\n        workInProgressHook = null;\n        {\n          hookTypesDev = null;\n          hookTypesUpdateIndexDev = -1;\n          currentHookNameInDev = null;\n          isUpdatingOpaqueValueInRenderPhase = false;\n        }\n        didScheduleRenderPhaseUpdateDuringThisPass = false;\n        localIdCounter = 0;\n      }\n      function mountWorkInProgressHook() {\n        var hook = {\n          memoizedState: null,\n          baseState: null,\n          baseQueue: null,\n          queue: null,\n          next: null\n        };\n        if (workInProgressHook === null) {\n          currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;\n        } else {\n          workInProgressHook = workInProgressHook.next = hook;\n        }\n        return workInProgressHook;\n      }\n      function updateWorkInProgressHook() {\n        var nextCurrentHook;\n        if (currentHook === null) {\n          var current2 = currentlyRenderingFiber$1.alternate;\n          if (current2 !== null) {\n            nextCurrentHook = current2.memoizedState;\n          } else {\n            nextCurrentHook = null;\n          }\n        } else {\n          nextCurrentHook = currentHook.next;\n        }\n        var nextWorkInProgressHook;\n        if (workInProgressHook === null) {\n          nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;\n        } else {\n          nextWorkInProgressHook = workInProgressHook.next;\n        }\n        if (nextWorkInProgressHook !== null) {\n          workInProgressHook = nextWorkInProgressHook;\n          nextWorkInProgressHook = workInProgressHook.next;\n          currentHook = nextCurrentHook;\n        } else {\n          if (nextCurrentHook === null) {\n            throw new Error(\"Rendered more hooks than during the previous render.\");\n          }\n          currentHook = nextCurrentHook;\n          var newHook = {\n            memoizedState: currentHook.memoizedState,\n            baseState: currentHook.baseState,\n            baseQueue: currentHook.baseQueue,\n            queue: currentHook.queue,\n            next: null\n          };\n          if (workInProgressHook === null) {\n            currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;\n          } else {\n            workInProgressHook = workInProgressHook.next = newHook;\n          }\n        }\n        return workInProgressHook;\n      }\n      function createFunctionComponentUpdateQueue() {\n        return {\n          lastEffect: null,\n          stores: null\n        };\n      }\n      function basicStateReducer(state, action) {\n        return typeof action === \"function\" ? action(state) : action;\n      }\n      function mountReducer(reducer, initialArg, init) {\n        var hook = mountWorkInProgressHook();\n        var initialState;\n        if (init !== void 0) {\n          initialState = init(initialArg);\n        } else {\n          initialState = initialArg;\n        }\n        hook.memoizedState = hook.baseState = initialState;\n        var queue = {\n          pending: null,\n          interleaved: null,\n          lanes: NoLanes,\n          dispatch: null,\n          lastRenderedReducer: reducer,\n          lastRenderedState: initialState\n        };\n        hook.queue = queue;\n        var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);\n        return [hook.memoizedState, dispatch];\n      }\n      function updateReducer(reducer, initialArg, init) {\n        var hook = updateWorkInProgressHook();\n        var queue = hook.queue;\n        if (queue === null) {\n          throw new Error(\"Should have a queue. This is likely a bug in React. Please file an issue.\");\n        }\n        queue.lastRenderedReducer = reducer;\n        var current2 = currentHook;\n        var baseQueue = current2.baseQueue;\n        var pendingQueue = queue.pending;\n        if (pendingQueue !== null) {\n          if (baseQueue !== null) {\n            var baseFirst = baseQueue.next;\n            var pendingFirst = pendingQueue.next;\n            baseQueue.next = pendingFirst;\n            pendingQueue.next = baseFirst;\n          }\n          {\n            if (current2.baseQueue !== baseQueue) {\n              error2(\"Internal error: Expected work-in-progress queue to be a clone. This is a bug in React.\");\n            }\n          }\n          current2.baseQueue = baseQueue = pendingQueue;\n          queue.pending = null;\n        }\n        if (baseQueue !== null) {\n          var first = baseQueue.next;\n          var newState = current2.baseState;\n          var newBaseState = null;\n          var newBaseQueueFirst = null;\n          var newBaseQueueLast = null;\n          var update = first;\n          do {\n            var updateLane = update.lane;\n            if (!isSubsetOfLanes(renderLanes, updateLane)) {\n              var clone = {\n                lane: updateLane,\n                action: update.action,\n                hasEagerState: update.hasEagerState,\n                eagerState: update.eagerState,\n                next: null\n              };\n              if (newBaseQueueLast === null) {\n                newBaseQueueFirst = newBaseQueueLast = clone;\n                newBaseState = newState;\n              } else {\n                newBaseQueueLast = newBaseQueueLast.next = clone;\n              }\n              currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);\n              markSkippedUpdateLanes(updateLane);\n            } else {\n              if (newBaseQueueLast !== null) {\n                var _clone = {\n                  // This update is going to be committed so we never want uncommit\n                  // it. Using NoLane works because 0 is a subset of all bitmasks, so\n                  // this will never be skipped by the check above.\n                  lane: NoLane,\n                  action: update.action,\n                  hasEagerState: update.hasEagerState,\n                  eagerState: update.eagerState,\n                  next: null\n                };\n                newBaseQueueLast = newBaseQueueLast.next = _clone;\n              }\n              if (update.hasEagerState) {\n                newState = update.eagerState;\n              } else {\n                var action = update.action;\n                newState = reducer(newState, action);\n              }\n            }\n            update = update.next;\n          } while (update !== null && update !== first);\n          if (newBaseQueueLast === null) {\n            newBaseState = newState;\n          } else {\n            newBaseQueueLast.next = newBaseQueueFirst;\n          }\n          if (!objectIs(newState, hook.memoizedState)) {\n            markWorkInProgressReceivedUpdate();\n          }\n          hook.memoizedState = newState;\n          hook.baseState = newBaseState;\n          hook.baseQueue = newBaseQueueLast;\n          queue.lastRenderedState = newState;\n        }\n        var lastInterleaved = queue.interleaved;\n        if (lastInterleaved !== null) {\n          var interleaved = lastInterleaved;\n          do {\n            var interleavedLane = interleaved.lane;\n            currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, interleavedLane);\n            markSkippedUpdateLanes(interleavedLane);\n            interleaved = interleaved.next;\n          } while (interleaved !== lastInterleaved);\n        } else if (baseQueue === null) {\n          queue.lanes = NoLanes;\n        }\n        var dispatch = queue.dispatch;\n        return [hook.memoizedState, dispatch];\n      }\n      function rerenderReducer(reducer, initialArg, init) {\n        var hook = updateWorkInProgressHook();\n        var queue = hook.queue;\n        if (queue === null) {\n          throw new Error(\"Should have a queue. This is likely a bug in React. Please file an issue.\");\n        }\n        queue.lastRenderedReducer = reducer;\n        var dispatch = queue.dispatch;\n        var lastRenderPhaseUpdate = queue.pending;\n        var newState = hook.memoizedState;\n        if (lastRenderPhaseUpdate !== null) {\n          queue.pending = null;\n          var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n          var update = firstRenderPhaseUpdate;\n          do {\n            var action = update.action;\n            newState = reducer(newState, action);\n            update = update.next;\n          } while (update !== firstRenderPhaseUpdate);\n          if (!objectIs(newState, hook.memoizedState)) {\n            markWorkInProgressReceivedUpdate();\n          }\n          hook.memoizedState = newState;\n          if (hook.baseQueue === null) {\n            hook.baseState = newState;\n          }\n          queue.lastRenderedState = newState;\n        }\n        return [newState, dispatch];\n      }\n      function mountMutableSource(source, getSnapshot, subscribe) {\n        {\n          return void 0;\n        }\n      }\n      function updateMutableSource(source, getSnapshot, subscribe) {\n        {\n          return void 0;\n        }\n      }\n      function mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n        var fiber = currentlyRenderingFiber$1;\n        var hook = mountWorkInProgressHook();\n        var nextSnapshot;\n        var isHydrating2 = getIsHydrating();\n        if (isHydrating2) {\n          if (getServerSnapshot === void 0) {\n            throw new Error(\"Missing getServerSnapshot, which is required for server-rendered content. Will revert to client rendering.\");\n          }\n          nextSnapshot = getServerSnapshot();\n          {\n            if (!didWarnUncachedGetSnapshot) {\n              if (nextSnapshot !== getServerSnapshot()) {\n                error2(\"The result of getServerSnapshot should be cached to avoid an infinite loop\");\n                didWarnUncachedGetSnapshot = true;\n              }\n            }\n          }\n        } else {\n          nextSnapshot = getSnapshot();\n          {\n            if (!didWarnUncachedGetSnapshot) {\n              var cachedSnapshot = getSnapshot();\n              if (!objectIs(nextSnapshot, cachedSnapshot)) {\n                error2(\"The result of getSnapshot should be cached to avoid an infinite loop\");\n                didWarnUncachedGetSnapshot = true;\n              }\n            }\n          }\n          var root = getWorkInProgressRoot();\n          if (root === null) {\n            throw new Error(\"Expected a work-in-progress root. This is a bug in React. Please file an issue.\");\n          }\n          if (!includesBlockingLane(root, renderLanes)) {\n            pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n          }\n        }\n        hook.memoizedState = nextSnapshot;\n        var inst = {\n          value: nextSnapshot,\n          getSnapshot\n        };\n        hook.queue = inst;\n        mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]);\n        fiber.flags |= Passive;\n        pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null);\n        return nextSnapshot;\n      }\n      function updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n        var fiber = currentlyRenderingFiber$1;\n        var hook = updateWorkInProgressHook();\n        var nextSnapshot = getSnapshot();\n        {\n          if (!didWarnUncachedGetSnapshot) {\n            var cachedSnapshot = getSnapshot();\n            if (!objectIs(nextSnapshot, cachedSnapshot)) {\n              error2(\"The result of getSnapshot should be cached to avoid an infinite loop\");\n              didWarnUncachedGetSnapshot = true;\n            }\n          }\n        }\n        var prevSnapshot = hook.memoizedState;\n        var snapshotChanged = !objectIs(prevSnapshot, nextSnapshot);\n        if (snapshotChanged) {\n          hook.memoizedState = nextSnapshot;\n          markWorkInProgressReceivedUpdate();\n        }\n        var inst = hook.queue;\n        updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]);\n        if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the susbcribe function changed. We can save some memory by\n        // checking whether we scheduled a subscription effect above.\n        workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) {\n          fiber.flags |= Passive;\n          pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), void 0, null);\n          var root = getWorkInProgressRoot();\n          if (root === null) {\n            throw new Error(\"Expected a work-in-progress root. This is a bug in React. Please file an issue.\");\n          }\n          if (!includesBlockingLane(root, renderLanes)) {\n            pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n          }\n        }\n        return nextSnapshot;\n      }\n      function pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n        fiber.flags |= StoreConsistency;\n        var check = {\n          getSnapshot,\n          value: renderedSnapshot\n        };\n        var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n        if (componentUpdateQueue === null) {\n          componentUpdateQueue = createFunctionComponentUpdateQueue();\n          currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n          componentUpdateQueue.stores = [check];\n        } else {\n          var stores = componentUpdateQueue.stores;\n          if (stores === null) {\n            componentUpdateQueue.stores = [check];\n          } else {\n            stores.push(check);\n          }\n        }\n      }\n      function updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n        inst.value = nextSnapshot;\n        inst.getSnapshot = getSnapshot;\n        if (checkIfSnapshotChanged(inst)) {\n          forceStoreRerender(fiber);\n        }\n      }\n      function subscribeToStore(fiber, inst, subscribe) {\n        var handleStoreChange = function() {\n          if (checkIfSnapshotChanged(inst)) {\n            forceStoreRerender(fiber);\n          }\n        };\n        return subscribe(handleStoreChange);\n      }\n      function checkIfSnapshotChanged(inst) {\n        var latestGetSnapshot = inst.getSnapshot;\n        var prevValue = inst.value;\n        try {\n          var nextValue = latestGetSnapshot();\n          return !objectIs(prevValue, nextValue);\n        } catch (error3) {\n          return true;\n        }\n      }\n      function forceStoreRerender(fiber) {\n        scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n      }\n      function mountState(initialState) {\n        var hook = mountWorkInProgressHook();\n        if (typeof initialState === \"function\") {\n          initialState = initialState();\n        }\n        hook.memoizedState = hook.baseState = initialState;\n        var queue = {\n          pending: null,\n          interleaved: null,\n          lanes: NoLanes,\n          dispatch: null,\n          lastRenderedReducer: basicStateReducer,\n          lastRenderedState: initialState\n        };\n        hook.queue = queue;\n        var dispatch = queue.dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n        return [hook.memoizedState, dispatch];\n      }\n      function updateState(initialState) {\n        return updateReducer(basicStateReducer);\n      }\n      function rerenderState(initialState) {\n        return rerenderReducer(basicStateReducer);\n      }\n      function pushEffect(tag, create2, destroy, deps) {\n        var effect = {\n          tag,\n          create: create2,\n          destroy,\n          deps,\n          // Circular\n          next: null\n        };\n        var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n        if (componentUpdateQueue === null) {\n          componentUpdateQueue = createFunctionComponentUpdateQueue();\n          currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n          componentUpdateQueue.lastEffect = effect.next = effect;\n        } else {\n          var lastEffect = componentUpdateQueue.lastEffect;\n          if (lastEffect === null) {\n            componentUpdateQueue.lastEffect = effect.next = effect;\n          } else {\n            var firstEffect = lastEffect.next;\n            lastEffect.next = effect;\n            effect.next = firstEffect;\n            componentUpdateQueue.lastEffect = effect;\n          }\n        }\n        return effect;\n      }\n      function mountRef(initialValue) {\n        var hook = mountWorkInProgressHook();\n        {\n          var _ref2 = {\n            current: initialValue\n          };\n          hook.memoizedState = _ref2;\n          return _ref2;\n        }\n      }\n      function updateRef(initialValue) {\n        var hook = updateWorkInProgressHook();\n        return hook.memoizedState;\n      }\n      function mountEffectImpl(fiberFlags, hookFlags, create2, deps) {\n        var hook = mountWorkInProgressHook();\n        var nextDeps = deps === void 0 ? null : deps;\n        currentlyRenderingFiber$1.flags |= fiberFlags;\n        hook.memoizedState = pushEffect(HasEffect | hookFlags, create2, void 0, nextDeps);\n      }\n      function updateEffectImpl(fiberFlags, hookFlags, create2, deps) {\n        var hook = updateWorkInProgressHook();\n        var nextDeps = deps === void 0 ? null : deps;\n        var destroy = void 0;\n        if (currentHook !== null) {\n          var prevEffect = currentHook.memoizedState;\n          destroy = prevEffect.destroy;\n          if (nextDeps !== null) {\n            var prevDeps = prevEffect.deps;\n            if (areHookInputsEqual(nextDeps, prevDeps)) {\n              hook.memoizedState = pushEffect(hookFlags, create2, destroy, nextDeps);\n              return;\n            }\n          }\n        }\n        currentlyRenderingFiber$1.flags |= fiberFlags;\n        hook.memoizedState = pushEffect(HasEffect | hookFlags, create2, destroy, nextDeps);\n      }\n      function mountEffect(create2, deps) {\n        if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n          return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create2, deps);\n        } else {\n          return mountEffectImpl(Passive | PassiveStatic, Passive$1, create2, deps);\n        }\n      }\n      function updateEffect(create2, deps) {\n        return updateEffectImpl(Passive, Passive$1, create2, deps);\n      }\n      function mountInsertionEffect(create2, deps) {\n        return mountEffectImpl(Update, Insertion, create2, deps);\n      }\n      function updateInsertionEffect(create2, deps) {\n        return updateEffectImpl(Update, Insertion, create2, deps);\n      }\n      function mountLayoutEffect(create2, deps) {\n        var fiberFlags = Update;\n        {\n          fiberFlags |= LayoutStatic;\n        }\n        if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n          fiberFlags |= MountLayoutDev;\n        }\n        return mountEffectImpl(fiberFlags, Layout, create2, deps);\n      }\n      function updateLayoutEffect(create2, deps) {\n        return updateEffectImpl(Update, Layout, create2, deps);\n      }\n      function imperativeHandleEffect(create2, ref) {\n        if (typeof ref === \"function\") {\n          var refCallback = ref;\n          var _inst = create2();\n          refCallback(_inst);\n          return function() {\n            refCallback(null);\n          };\n        } else if (ref !== null && ref !== void 0) {\n          var refObject = ref;\n          {\n            if (!refObject.hasOwnProperty(\"current\")) {\n              error2(\"Expected useImperativeHandle() first argument to either be a ref callback or React.createRef() object. Instead received: %s.\", \"an object with keys {\" + Object.keys(refObject).join(\", \") + \"}\");\n            }\n          }\n          var _inst2 = create2();\n          refObject.current = _inst2;\n          return function() {\n            refObject.current = null;\n          };\n        }\n      }\n      function mountImperativeHandle(ref, create2, deps) {\n        {\n          if (typeof create2 !== \"function\") {\n            error2(\"Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.\", create2 !== null ? typeof create2 : \"null\");\n          }\n        }\n        var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null;\n        var fiberFlags = Update;\n        {\n          fiberFlags |= LayoutStatic;\n        }\n        if ((currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n          fiberFlags |= MountLayoutDev;\n        }\n        return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create2, ref), effectDeps);\n      }\n      function updateImperativeHandle(ref, create2, deps) {\n        {\n          if (typeof create2 !== \"function\") {\n            error2(\"Expected useImperativeHandle() second argument to be a function that creates a handle. Instead received: %s.\", create2 !== null ? typeof create2 : \"null\");\n          }\n        }\n        var effectDeps = deps !== null && deps !== void 0 ? deps.concat([ref]) : null;\n        return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create2, ref), effectDeps);\n      }\n      function mountDebugValue(value, formatterFn) {\n      }\n      var updateDebugValue = mountDebugValue;\n      function mountCallback(callback, deps) {\n        var hook = mountWorkInProgressHook();\n        var nextDeps = deps === void 0 ? null : deps;\n        hook.memoizedState = [callback, nextDeps];\n        return callback;\n      }\n      function updateCallback(callback, deps) {\n        var hook = updateWorkInProgressHook();\n        var nextDeps = deps === void 0 ? null : deps;\n        var prevState = hook.memoizedState;\n        if (prevState !== null) {\n          if (nextDeps !== null) {\n            var prevDeps = prevState[1];\n            if (areHookInputsEqual(nextDeps, prevDeps)) {\n              return prevState[0];\n            }\n          }\n        }\n        hook.memoizedState = [callback, nextDeps];\n        return callback;\n      }\n      function mountMemo(nextCreate, deps) {\n        var hook = mountWorkInProgressHook();\n        var nextDeps = deps === void 0 ? null : deps;\n        var nextValue = nextCreate();\n        hook.memoizedState = [nextValue, nextDeps];\n        return nextValue;\n      }\n      function updateMemo(nextCreate, deps) {\n        var hook = updateWorkInProgressHook();\n        var nextDeps = deps === void 0 ? null : deps;\n        var prevState = hook.memoizedState;\n        if (prevState !== null) {\n          if (nextDeps !== null) {\n            var prevDeps = prevState[1];\n            if (areHookInputsEqual(nextDeps, prevDeps)) {\n              return prevState[0];\n            }\n          }\n        }\n        var nextValue = nextCreate();\n        hook.memoizedState = [nextValue, nextDeps];\n        return nextValue;\n      }\n      function mountDeferredValue(value) {\n        var _mountState = mountState(value), prevValue = _mountState[0], setValue = _mountState[1];\n        mountEffect(function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = {};\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        }, [value]);\n        return prevValue;\n      }\n      function updateDeferredValue(value) {\n        var _updateState = updateState(), prevValue = _updateState[0], setValue = _updateState[1];\n        updateEffect(function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = {};\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        }, [value]);\n        return prevValue;\n      }\n      function rerenderDeferredValue(value) {\n        var _rerenderState = rerenderState(), prevValue = _rerenderState[0], setValue = _rerenderState[1];\n        updateEffect(function() {\n          var prevTransition = ReactCurrentBatchConfig$1.transition;\n          ReactCurrentBatchConfig$1.transition = {};\n          try {\n            setValue(value);\n          } finally {\n            ReactCurrentBatchConfig$1.transition = prevTransition;\n          }\n        }, [value]);\n        return prevValue;\n      }\n      function startTransition(setPending, callback, options) {\n        var previousPriority = getCurrentUpdatePriority();\n        setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority));\n        setPending(true);\n        var prevTransition = ReactCurrentBatchConfig$1.transition;\n        ReactCurrentBatchConfig$1.transition = {};\n        var currentTransition = ReactCurrentBatchConfig$1.transition;\n        {\n          ReactCurrentBatchConfig$1.transition._updatedFibers = /* @__PURE__ */ new Set();\n        }\n        try {\n          setPending(false);\n          callback();\n        } finally {\n          setCurrentUpdatePriority(previousPriority);\n          ReactCurrentBatchConfig$1.transition = prevTransition;\n          {\n            if (prevTransition === null && currentTransition._updatedFibers) {\n              var updatedFibersCount = currentTransition._updatedFibers.size;\n              if (updatedFibersCount > 10) {\n                warn(\"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\");\n              }\n              currentTransition._updatedFibers.clear();\n            }\n          }\n        }\n      }\n      function mountTransition() {\n        var _mountState2 = mountState(false), isPending = _mountState2[0], setPending = _mountState2[1];\n        var start = startTransition.bind(null, setPending);\n        var hook = mountWorkInProgressHook();\n        hook.memoizedState = start;\n        return [isPending, start];\n      }\n      function updateTransition() {\n        var _updateState2 = updateState(), isPending = _updateState2[0];\n        var hook = updateWorkInProgressHook();\n        var start = hook.memoizedState;\n        return [isPending, start];\n      }\n      function rerenderTransition() {\n        var _rerenderState2 = rerenderState(), isPending = _rerenderState2[0];\n        var hook = updateWorkInProgressHook();\n        var start = hook.memoizedState;\n        return [isPending, start];\n      }\n      var isUpdatingOpaqueValueInRenderPhase = false;\n      function getIsUpdatingOpaqueValueInRenderPhaseInDEV() {\n        {\n          return isUpdatingOpaqueValueInRenderPhase;\n        }\n      }\n      function mountId() {\n        var hook = mountWorkInProgressHook();\n        var root = getWorkInProgressRoot();\n        var identifierPrefix = root.identifierPrefix;\n        var id;\n        if (getIsHydrating()) {\n          var treeId = getTreeId();\n          id = \":\" + identifierPrefix + \"R\" + treeId;\n          var localId = localIdCounter++;\n          if (localId > 0) {\n            id += \"H\" + localId.toString(32);\n          }\n          id += \":\";\n        } else {\n          var globalClientId = globalClientIdCounter++;\n          id = \":\" + identifierPrefix + \"r\" + globalClientId.toString(32) + \":\";\n        }\n        hook.memoizedState = id;\n        return id;\n      }\n      function updateId() {\n        var hook = updateWorkInProgressHook();\n        var id = hook.memoizedState;\n        return id;\n      }\n      function dispatchReducerAction(fiber, queue, action) {\n        {\n          if (typeof arguments[3] === \"function\") {\n            error2(\"State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().\");\n          }\n        }\n        var lane = requestUpdateLane(fiber);\n        var update = {\n          lane,\n          action,\n          hasEagerState: false,\n          eagerState: null,\n          next: null\n        };\n        if (isRenderPhaseUpdate(fiber)) {\n          enqueueRenderPhaseUpdate(queue, update);\n        } else {\n          enqueueUpdate$1(fiber, queue, update);\n          var eventTime = requestEventTime();\n          var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n          if (root !== null) {\n            entangleTransitionUpdate(root, queue, lane);\n          }\n        }\n        markUpdateInDevTools(fiber, lane);\n      }\n      function dispatchSetState(fiber, queue, action) {\n        {\n          if (typeof arguments[3] === \"function\") {\n            error2(\"State updates from the useState() and useReducer() Hooks don't support the second callback argument. To execute a side effect after rendering, declare it in the component body with useEffect().\");\n          }\n        }\n        var lane = requestUpdateLane(fiber);\n        var update = {\n          lane,\n          action,\n          hasEagerState: false,\n          eagerState: null,\n          next: null\n        };\n        if (isRenderPhaseUpdate(fiber)) {\n          enqueueRenderPhaseUpdate(queue, update);\n        } else {\n          enqueueUpdate$1(fiber, queue, update);\n          var alternate = fiber.alternate;\n          if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {\n            var lastRenderedReducer = queue.lastRenderedReducer;\n            if (lastRenderedReducer !== null) {\n              var prevDispatcher;\n              {\n                prevDispatcher = ReactCurrentDispatcher$1.current;\n                ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n              }\n              try {\n                var currentState = queue.lastRenderedState;\n                var eagerState = lastRenderedReducer(currentState, action);\n                update.hasEagerState = true;\n                update.eagerState = eagerState;\n                if (objectIs(eagerState, currentState)) {\n                  return;\n                }\n              } catch (error3) {\n              } finally {\n                {\n                  ReactCurrentDispatcher$1.current = prevDispatcher;\n                }\n              }\n            }\n          }\n          var eventTime = requestEventTime();\n          var root = scheduleUpdateOnFiber(fiber, lane, eventTime);\n          if (root !== null) {\n            entangleTransitionUpdate(root, queue, lane);\n          }\n        }\n        markUpdateInDevTools(fiber, lane);\n      }\n      function isRenderPhaseUpdate(fiber) {\n        var alternate = fiber.alternate;\n        return fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1;\n      }\n      function enqueueRenderPhaseUpdate(queue, update) {\n        didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;\n        var pending = queue.pending;\n        if (pending === null) {\n          update.next = update;\n        } else {\n          update.next = pending.next;\n          pending.next = update;\n        }\n        queue.pending = update;\n      }\n      function enqueueUpdate$1(fiber, queue, update, lane) {\n        if (isInterleavedUpdate(fiber)) {\n          var interleaved = queue.interleaved;\n          if (interleaved === null) {\n            update.next = update;\n            pushInterleavedQueue(queue);\n          } else {\n            update.next = interleaved.next;\n            interleaved.next = update;\n          }\n          queue.interleaved = update;\n        } else {\n          var pending = queue.pending;\n          if (pending === null) {\n            update.next = update;\n          } else {\n            update.next = pending.next;\n            pending.next = update;\n          }\n          queue.pending = update;\n        }\n      }\n      function entangleTransitionUpdate(root, queue, lane) {\n        if (isTransitionLane(lane)) {\n          var queueLanes = queue.lanes;\n          queueLanes = intersectLanes(queueLanes, root.pendingLanes);\n          var newQueueLanes = mergeLanes(queueLanes, lane);\n          queue.lanes = newQueueLanes;\n          markRootEntangled(root, newQueueLanes);\n        }\n      }\n      function markUpdateInDevTools(fiber, lane, action) {\n        {\n          markStateUpdateScheduled(fiber, lane);\n        }\n      }\n      var ContextOnlyDispatcher = {\n        readContext,\n        useCallback: throwInvalidHookError,\n        useContext: throwInvalidHookError,\n        useEffect: throwInvalidHookError,\n        useImperativeHandle: throwInvalidHookError,\n        useInsertionEffect: throwInvalidHookError,\n        useLayoutEffect: throwInvalidHookError,\n        useMemo: throwInvalidHookError,\n        useReducer: throwInvalidHookError,\n        useRef: throwInvalidHookError,\n        useState: throwInvalidHookError,\n        useDebugValue: throwInvalidHookError,\n        useDeferredValue: throwInvalidHookError,\n        useTransition: throwInvalidHookError,\n        useMutableSource: throwInvalidHookError,\n        useSyncExternalStore: throwInvalidHookError,\n        useId: throwInvalidHookError,\n        unstable_isNewReconciler: enableNewReconciler\n      };\n      var HooksDispatcherOnMountInDEV = null;\n      var HooksDispatcherOnMountWithHookTypesInDEV = null;\n      var HooksDispatcherOnUpdateInDEV = null;\n      var HooksDispatcherOnRerenderInDEV = null;\n      var InvalidNestedHooksDispatcherOnMountInDEV = null;\n      var InvalidNestedHooksDispatcherOnUpdateInDEV = null;\n      var InvalidNestedHooksDispatcherOnRerenderInDEV = null;\n      {\n        var warnInvalidContextAccess = function() {\n          error2(\"Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo().\");\n        };\n        var warnInvalidHookAccess = function() {\n          error2(\"Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. You can only call Hooks at the top level of your React function. For more information, see https://reactjs.org/link/rules-of-hooks\");\n        };\n        HooksDispatcherOnMountInDEV = {\n          readContext: function(context2) {\n            return readContext(context2);\n          },\n          useCallback: function(callback, deps) {\n            currentHookNameInDev = \"useCallback\";\n            mountHookTypesDev();\n            checkDepsAreArrayDev(deps);\n            return mountCallback(callback, deps);\n          },\n          useContext: function(context2) {\n            currentHookNameInDev = \"useContext\";\n            mountHookTypesDev();\n            return readContext(context2);\n          },\n          useEffect: function(create2, deps) {\n            currentHookNameInDev = \"useEffect\";\n            mountHookTypesDev();\n            checkDepsAreArrayDev(deps);\n            return mountEffect(create2, deps);\n          },\n          useImperativeHandle: function(ref, create2, deps) {\n            currentHookNameInDev = \"useImperativeHandle\";\n            mountHookTypesDev();\n            checkDepsAreArrayDev(deps);\n            return mountImperativeHandle(ref, create2, deps);\n          },\n          useInsertionEffect: function(create2, deps) {\n            currentHookNameInDev = \"useInsertionEffect\";\n            mountHookTypesDev();\n            checkDepsAreArrayDev(deps);\n            return mountInsertionEffect(create2, deps);\n          },\n          useLayoutEffect: function(create2, deps) {\n            currentHookNameInDev = \"useLayoutEffect\";\n            mountHookTypesDev();\n            checkDepsAreArrayDev(deps);\n            return mountLayoutEffect(create2, deps);\n          },\n          useMemo: function(create2, deps) {\n            currentHookNameInDev = \"useMemo\";\n            mountHookTypesDev();\n            checkDepsAreArrayDev(deps);\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountMemo(create2, deps);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useReducer: function(reducer, initialArg, init) {\n            currentHookNameInDev = \"useReducer\";\n            mountHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountReducer(reducer, initialArg, init);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useRef: function(initialValue) {\n            currentHookNameInDev = \"useRef\";\n            mountHookTypesDev();\n            return mountRef(initialValue);\n          },\n          useState: function(initialState) {\n            currentHookNameInDev = \"useState\";\n            mountHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountState(initialState);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useDebugValue: function(value, formatterFn) {\n            currentHookNameInDev = \"useDebugValue\";\n            mountHookTypesDev();\n            return mountDebugValue();\n          },\n          useDeferredValue: function(value) {\n            currentHookNameInDev = \"useDeferredValue\";\n            mountHookTypesDev();\n            return mountDeferredValue(value);\n          },\n          useTransition: function() {\n            currentHookNameInDev = \"useTransition\";\n            mountHookTypesDev();\n            return mountTransition();\n          },\n          useMutableSource: function(source, getSnapshot, subscribe) {\n            currentHookNameInDev = \"useMutableSource\";\n            mountHookTypesDev();\n            return mountMutableSource();\n          },\n          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n            currentHookNameInDev = \"useSyncExternalStore\";\n            mountHookTypesDev();\n            return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n          },\n          useId: function() {\n            currentHookNameInDev = \"useId\";\n            mountHookTypesDev();\n            return mountId();\n          },\n          unstable_isNewReconciler: enableNewReconciler\n        };\n        HooksDispatcherOnMountWithHookTypesInDEV = {\n          readContext: function(context2) {\n            return readContext(context2);\n          },\n          useCallback: function(callback, deps) {\n            currentHookNameInDev = \"useCallback\";\n            updateHookTypesDev();\n            return mountCallback(callback, deps);\n          },\n          useContext: function(context2) {\n            currentHookNameInDev = \"useContext\";\n            updateHookTypesDev();\n            return readContext(context2);\n          },\n          useEffect: function(create2, deps) {\n            currentHookNameInDev = \"useEffect\";\n            updateHookTypesDev();\n            return mountEffect(create2, deps);\n          },\n          useImperativeHandle: function(ref, create2, deps) {\n            currentHookNameInDev = \"useImperativeHandle\";\n            updateHookTypesDev();\n            return mountImperativeHandle(ref, create2, deps);\n          },\n          useInsertionEffect: function(create2, deps) {\n            currentHookNameInDev = \"useInsertionEffect\";\n            updateHookTypesDev();\n            return mountInsertionEffect(create2, deps);\n          },\n          useLayoutEffect: function(create2, deps) {\n            currentHookNameInDev = \"useLayoutEffect\";\n            updateHookTypesDev();\n            return mountLayoutEffect(create2, deps);\n          },\n          useMemo: function(create2, deps) {\n            currentHookNameInDev = \"useMemo\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountMemo(create2, deps);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useReducer: function(reducer, initialArg, init) {\n            currentHookNameInDev = \"useReducer\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountReducer(reducer, initialArg, init);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useRef: function(initialValue) {\n            currentHookNameInDev = \"useRef\";\n            updateHookTypesDev();\n            return mountRef(initialValue);\n          },\n          useState: function(initialState) {\n            currentHookNameInDev = \"useState\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountState(initialState);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useDebugValue: function(value, formatterFn) {\n            currentHookNameInDev = \"useDebugValue\";\n            updateHookTypesDev();\n            return mountDebugValue();\n          },\n          useDeferredValue: function(value) {\n            currentHookNameInDev = \"useDeferredValue\";\n            updateHookTypesDev();\n            return mountDeferredValue(value);\n          },\n          useTransition: function() {\n            currentHookNameInDev = \"useTransition\";\n            updateHookTypesDev();\n            return mountTransition();\n          },\n          useMutableSource: function(source, getSnapshot, subscribe) {\n            currentHookNameInDev = \"useMutableSource\";\n            updateHookTypesDev();\n            return mountMutableSource();\n          },\n          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n            currentHookNameInDev = \"useSyncExternalStore\";\n            updateHookTypesDev();\n            return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n          },\n          useId: function() {\n            currentHookNameInDev = \"useId\";\n            updateHookTypesDev();\n            return mountId();\n          },\n          unstable_isNewReconciler: enableNewReconciler\n        };\n        HooksDispatcherOnUpdateInDEV = {\n          readContext: function(context2) {\n            return readContext(context2);\n          },\n          useCallback: function(callback, deps) {\n            currentHookNameInDev = \"useCallback\";\n            updateHookTypesDev();\n            return updateCallback(callback, deps);\n          },\n          useContext: function(context2) {\n            currentHookNameInDev = \"useContext\";\n            updateHookTypesDev();\n            return readContext(context2);\n          },\n          useEffect: function(create2, deps) {\n            currentHookNameInDev = \"useEffect\";\n            updateHookTypesDev();\n            return updateEffect(create2, deps);\n          },\n          useImperativeHandle: function(ref, create2, deps) {\n            currentHookNameInDev = \"useImperativeHandle\";\n            updateHookTypesDev();\n            return updateImperativeHandle(ref, create2, deps);\n          },\n          useInsertionEffect: function(create2, deps) {\n            currentHookNameInDev = \"useInsertionEffect\";\n            updateHookTypesDev();\n            return updateInsertionEffect(create2, deps);\n          },\n          useLayoutEffect: function(create2, deps) {\n            currentHookNameInDev = \"useLayoutEffect\";\n            updateHookTypesDev();\n            return updateLayoutEffect(create2, deps);\n          },\n          useMemo: function(create2, deps) {\n            currentHookNameInDev = \"useMemo\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return updateMemo(create2, deps);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useReducer: function(reducer, initialArg, init) {\n            currentHookNameInDev = \"useReducer\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return updateReducer(reducer, initialArg, init);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useRef: function(initialValue) {\n            currentHookNameInDev = \"useRef\";\n            updateHookTypesDev();\n            return updateRef();\n          },\n          useState: function(initialState) {\n            currentHookNameInDev = \"useState\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return updateState(initialState);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useDebugValue: function(value, formatterFn) {\n            currentHookNameInDev = \"useDebugValue\";\n            updateHookTypesDev();\n            return updateDebugValue();\n          },\n          useDeferredValue: function(value) {\n            currentHookNameInDev = \"useDeferredValue\";\n            updateHookTypesDev();\n            return updateDeferredValue(value);\n          },\n          useTransition: function() {\n            currentHookNameInDev = \"useTransition\";\n            updateHookTypesDev();\n            return updateTransition();\n          },\n          useMutableSource: function(source, getSnapshot, subscribe) {\n            currentHookNameInDev = \"useMutableSource\";\n            updateHookTypesDev();\n            return updateMutableSource();\n          },\n          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n            currentHookNameInDev = \"useSyncExternalStore\";\n            updateHookTypesDev();\n            return updateSyncExternalStore(subscribe, getSnapshot);\n          },\n          useId: function() {\n            currentHookNameInDev = \"useId\";\n            updateHookTypesDev();\n            return updateId();\n          },\n          unstable_isNewReconciler: enableNewReconciler\n        };\n        HooksDispatcherOnRerenderInDEV = {\n          readContext: function(context2) {\n            return readContext(context2);\n          },\n          useCallback: function(callback, deps) {\n            currentHookNameInDev = \"useCallback\";\n            updateHookTypesDev();\n            return updateCallback(callback, deps);\n          },\n          useContext: function(context2) {\n            currentHookNameInDev = \"useContext\";\n            updateHookTypesDev();\n            return readContext(context2);\n          },\n          useEffect: function(create2, deps) {\n            currentHookNameInDev = \"useEffect\";\n            updateHookTypesDev();\n            return updateEffect(create2, deps);\n          },\n          useImperativeHandle: function(ref, create2, deps) {\n            currentHookNameInDev = \"useImperativeHandle\";\n            updateHookTypesDev();\n            return updateImperativeHandle(ref, create2, deps);\n          },\n          useInsertionEffect: function(create2, deps) {\n            currentHookNameInDev = \"useInsertionEffect\";\n            updateHookTypesDev();\n            return updateInsertionEffect(create2, deps);\n          },\n          useLayoutEffect: function(create2, deps) {\n            currentHookNameInDev = \"useLayoutEffect\";\n            updateHookTypesDev();\n            return updateLayoutEffect(create2, deps);\n          },\n          useMemo: function(create2, deps) {\n            currentHookNameInDev = \"useMemo\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n            try {\n              return updateMemo(create2, deps);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useReducer: function(reducer, initialArg, init) {\n            currentHookNameInDev = \"useReducer\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n            try {\n              return rerenderReducer(reducer, initialArg, init);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useRef: function(initialValue) {\n            currentHookNameInDev = \"useRef\";\n            updateHookTypesDev();\n            return updateRef();\n          },\n          useState: function(initialState) {\n            currentHookNameInDev = \"useState\";\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n            try {\n              return rerenderState(initialState);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useDebugValue: function(value, formatterFn) {\n            currentHookNameInDev = \"useDebugValue\";\n            updateHookTypesDev();\n            return updateDebugValue();\n          },\n          useDeferredValue: function(value) {\n            currentHookNameInDev = \"useDeferredValue\";\n            updateHookTypesDev();\n            return rerenderDeferredValue(value);\n          },\n          useTransition: function() {\n            currentHookNameInDev = \"useTransition\";\n            updateHookTypesDev();\n            return rerenderTransition();\n          },\n          useMutableSource: function(source, getSnapshot, subscribe) {\n            currentHookNameInDev = \"useMutableSource\";\n            updateHookTypesDev();\n            return updateMutableSource();\n          },\n          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n            currentHookNameInDev = \"useSyncExternalStore\";\n            updateHookTypesDev();\n            return updateSyncExternalStore(subscribe, getSnapshot);\n          },\n          useId: function() {\n            currentHookNameInDev = \"useId\";\n            updateHookTypesDev();\n            return updateId();\n          },\n          unstable_isNewReconciler: enableNewReconciler\n        };\n        InvalidNestedHooksDispatcherOnMountInDEV = {\n          readContext: function(context2) {\n            warnInvalidContextAccess();\n            return readContext(context2);\n          },\n          useCallback: function(callback, deps) {\n            currentHookNameInDev = \"useCallback\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountCallback(callback, deps);\n          },\n          useContext: function(context2) {\n            currentHookNameInDev = \"useContext\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return readContext(context2);\n          },\n          useEffect: function(create2, deps) {\n            currentHookNameInDev = \"useEffect\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountEffect(create2, deps);\n          },\n          useImperativeHandle: function(ref, create2, deps) {\n            currentHookNameInDev = \"useImperativeHandle\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountImperativeHandle(ref, create2, deps);\n          },\n          useInsertionEffect: function(create2, deps) {\n            currentHookNameInDev = \"useInsertionEffect\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountInsertionEffect(create2, deps);\n          },\n          useLayoutEffect: function(create2, deps) {\n            currentHookNameInDev = \"useLayoutEffect\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountLayoutEffect(create2, deps);\n          },\n          useMemo: function(create2, deps) {\n            currentHookNameInDev = \"useMemo\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountMemo(create2, deps);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useReducer: function(reducer, initialArg, init) {\n            currentHookNameInDev = \"useReducer\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountReducer(reducer, initialArg, init);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useRef: function(initialValue) {\n            currentHookNameInDev = \"useRef\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountRef(initialValue);\n          },\n          useState: function(initialState) {\n            currentHookNameInDev = \"useState\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n            try {\n              return mountState(initialState);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useDebugValue: function(value, formatterFn) {\n            currentHookNameInDev = \"useDebugValue\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountDebugValue();\n          },\n          useDeferredValue: function(value) {\n            currentHookNameInDev = \"useDeferredValue\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountDeferredValue(value);\n          },\n          useTransition: function() {\n            currentHookNameInDev = \"useTransition\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountTransition();\n          },\n          useMutableSource: function(source, getSnapshot, subscribe) {\n            currentHookNameInDev = \"useMutableSource\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountMutableSource();\n          },\n          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n            currentHookNameInDev = \"useSyncExternalStore\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n          },\n          useId: function() {\n            currentHookNameInDev = \"useId\";\n            warnInvalidHookAccess();\n            mountHookTypesDev();\n            return mountId();\n          },\n          unstable_isNewReconciler: enableNewReconciler\n        };\n        InvalidNestedHooksDispatcherOnUpdateInDEV = {\n          readContext: function(context2) {\n            warnInvalidContextAccess();\n            return readContext(context2);\n          },\n          useCallback: function(callback, deps) {\n            currentHookNameInDev = \"useCallback\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateCallback(callback, deps);\n          },\n          useContext: function(context2) {\n            currentHookNameInDev = \"useContext\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return readContext(context2);\n          },\n          useEffect: function(create2, deps) {\n            currentHookNameInDev = \"useEffect\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateEffect(create2, deps);\n          },\n          useImperativeHandle: function(ref, create2, deps) {\n            currentHookNameInDev = \"useImperativeHandle\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateImperativeHandle(ref, create2, deps);\n          },\n          useInsertionEffect: function(create2, deps) {\n            currentHookNameInDev = \"useInsertionEffect\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateInsertionEffect(create2, deps);\n          },\n          useLayoutEffect: function(create2, deps) {\n            currentHookNameInDev = \"useLayoutEffect\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateLayoutEffect(create2, deps);\n          },\n          useMemo: function(create2, deps) {\n            currentHookNameInDev = \"useMemo\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return updateMemo(create2, deps);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useReducer: function(reducer, initialArg, init) {\n            currentHookNameInDev = \"useReducer\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return updateReducer(reducer, initialArg, init);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useRef: function(initialValue) {\n            currentHookNameInDev = \"useRef\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateRef();\n          },\n          useState: function(initialState) {\n            currentHookNameInDev = \"useState\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return updateState(initialState);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useDebugValue: function(value, formatterFn) {\n            currentHookNameInDev = \"useDebugValue\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateDebugValue();\n          },\n          useDeferredValue: function(value) {\n            currentHookNameInDev = \"useDeferredValue\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateDeferredValue(value);\n          },\n          useTransition: function() {\n            currentHookNameInDev = \"useTransition\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateTransition();\n          },\n          useMutableSource: function(source, getSnapshot, subscribe) {\n            currentHookNameInDev = \"useMutableSource\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateMutableSource();\n          },\n          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n            currentHookNameInDev = \"useSyncExternalStore\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateSyncExternalStore(subscribe, getSnapshot);\n          },\n          useId: function() {\n            currentHookNameInDev = \"useId\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateId();\n          },\n          unstable_isNewReconciler: enableNewReconciler\n        };\n        InvalidNestedHooksDispatcherOnRerenderInDEV = {\n          readContext: function(context2) {\n            warnInvalidContextAccess();\n            return readContext(context2);\n          },\n          useCallback: function(callback, deps) {\n            currentHookNameInDev = \"useCallback\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateCallback(callback, deps);\n          },\n          useContext: function(context2) {\n            currentHookNameInDev = \"useContext\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return readContext(context2);\n          },\n          useEffect: function(create2, deps) {\n            currentHookNameInDev = \"useEffect\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateEffect(create2, deps);\n          },\n          useImperativeHandle: function(ref, create2, deps) {\n            currentHookNameInDev = \"useImperativeHandle\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateImperativeHandle(ref, create2, deps);\n          },\n          useInsertionEffect: function(create2, deps) {\n            currentHookNameInDev = \"useInsertionEffect\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateInsertionEffect(create2, deps);\n          },\n          useLayoutEffect: function(create2, deps) {\n            currentHookNameInDev = \"useLayoutEffect\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateLayoutEffect(create2, deps);\n          },\n          useMemo: function(create2, deps) {\n            currentHookNameInDev = \"useMemo\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return updateMemo(create2, deps);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useReducer: function(reducer, initialArg, init) {\n            currentHookNameInDev = \"useReducer\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return rerenderReducer(reducer, initialArg, init);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useRef: function(initialValue) {\n            currentHookNameInDev = \"useRef\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateRef();\n          },\n          useState: function(initialState) {\n            currentHookNameInDev = \"useState\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            var prevDispatcher = ReactCurrentDispatcher$1.current;\n            ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n            try {\n              return rerenderState(initialState);\n            } finally {\n              ReactCurrentDispatcher$1.current = prevDispatcher;\n            }\n          },\n          useDebugValue: function(value, formatterFn) {\n            currentHookNameInDev = \"useDebugValue\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateDebugValue();\n          },\n          useDeferredValue: function(value) {\n            currentHookNameInDev = \"useDeferredValue\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return rerenderDeferredValue(value);\n          },\n          useTransition: function() {\n            currentHookNameInDev = \"useTransition\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return rerenderTransition();\n          },\n          useMutableSource: function(source, getSnapshot, subscribe) {\n            currentHookNameInDev = \"useMutableSource\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateMutableSource();\n          },\n          useSyncExternalStore: function(subscribe, getSnapshot, getServerSnapshot) {\n            currentHookNameInDev = \"useSyncExternalStore\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateSyncExternalStore(subscribe, getSnapshot);\n          },\n          useId: function() {\n            currentHookNameInDev = \"useId\";\n            warnInvalidHookAccess();\n            updateHookTypesDev();\n            return updateId();\n          },\n          unstable_isNewReconciler: enableNewReconciler\n        };\n      }\n      var now$2 = Scheduler.unstable_now;\n      var commitTime = 0;\n      var layoutEffectStartTime = -1;\n      var profilerStartTime = -1;\n      var passiveEffectStartTime = -1;\n      var currentUpdateIsNested = false;\n      var nestedUpdateScheduled = false;\n      function isCurrentUpdateNested() {\n        return currentUpdateIsNested;\n      }\n      function markNestedUpdateScheduled() {\n        {\n          nestedUpdateScheduled = true;\n        }\n      }\n      function resetNestedUpdateFlag() {\n        {\n          currentUpdateIsNested = false;\n          nestedUpdateScheduled = false;\n        }\n      }\n      function syncNestedUpdateFlag() {\n        {\n          currentUpdateIsNested = nestedUpdateScheduled;\n          nestedUpdateScheduled = false;\n        }\n      }\n      function getCommitTime() {\n        return commitTime;\n      }\n      function recordCommitTime() {\n        commitTime = now$2();\n      }\n      function startProfilerTimer(fiber) {\n        profilerStartTime = now$2();\n        if (fiber.actualStartTime < 0) {\n          fiber.actualStartTime = now$2();\n        }\n      }\n      function stopProfilerTimerIfRunning(fiber) {\n        profilerStartTime = -1;\n      }\n      function stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {\n        if (profilerStartTime >= 0) {\n          var elapsedTime = now$2() - profilerStartTime;\n          fiber.actualDuration += elapsedTime;\n          if (overrideBaseTime) {\n            fiber.selfBaseDuration = elapsedTime;\n          }\n          profilerStartTime = -1;\n        }\n      }\n      function recordLayoutEffectDuration(fiber) {\n        if (layoutEffectStartTime >= 0) {\n          var elapsedTime = now$2() - layoutEffectStartTime;\n          layoutEffectStartTime = -1;\n          var parentFiber = fiber.return;\n          while (parentFiber !== null) {\n            switch (parentFiber.tag) {\n              case HostRoot:\n                var root = parentFiber.stateNode;\n                root.effectDuration += elapsedTime;\n                return;\n              case Profiler:\n                var parentStateNode = parentFiber.stateNode;\n                parentStateNode.effectDuration += elapsedTime;\n                return;\n            }\n            parentFiber = parentFiber.return;\n          }\n        }\n      }\n      function recordPassiveEffectDuration(fiber) {\n        if (passiveEffectStartTime >= 0) {\n          var elapsedTime = now$2() - passiveEffectStartTime;\n          passiveEffectStartTime = -1;\n          var parentFiber = fiber.return;\n          while (parentFiber !== null) {\n            switch (parentFiber.tag) {\n              case HostRoot:\n                var root = parentFiber.stateNode;\n                if (root !== null) {\n                  root.passiveEffectDuration += elapsedTime;\n                }\n                return;\n              case Profiler:\n                var parentStateNode = parentFiber.stateNode;\n                if (parentStateNode !== null) {\n                  parentStateNode.passiveEffectDuration += elapsedTime;\n                }\n                return;\n            }\n            parentFiber = parentFiber.return;\n          }\n        }\n      }\n      function startLayoutEffectTimer() {\n        layoutEffectStartTime = now$2();\n      }\n      function startPassiveEffectTimer() {\n        passiveEffectStartTime = now$2();\n      }\n      function transferActualDuration(fiber) {\n        var child = fiber.child;\n        while (child) {\n          fiber.actualDuration += child.actualDuration;\n          child = child.sibling;\n        }\n      }\n      function createCapturedValue(value, source) {\n        return {\n          value,\n          source,\n          stack: getStackByFiberInDevAndProd(source)\n        };\n      }\n      function showErrorDialog(boundary, errorInfo) {\n        return true;\n      }\n      function logCapturedError(boundary, errorInfo) {\n        try {\n          var logError = showErrorDialog(boundary, errorInfo);\n          if (logError === false) {\n            return;\n          }\n          var error3 = errorInfo.value;\n          if (true) {\n            var source = errorInfo.source;\n            var stack = errorInfo.stack;\n            var componentStack = stack !== null ? stack : \"\";\n            if (error3 != null && error3._suppressLogging) {\n              if (boundary.tag === ClassComponent) {\n                return;\n              }\n              console[\"error\"](error3);\n            }\n            var componentName = source ? getComponentNameFromFiber(source) : null;\n            var componentNameMessage = componentName ? \"The above error occurred in the <\" + componentName + \"> component:\" : \"The above error occurred in one of your React components:\";\n            var errorBoundaryMessage;\n            if (boundary.tag === HostRoot) {\n              errorBoundaryMessage = \"Consider adding an error boundary to your tree to customize error handling behavior.\\nVisit https://reactjs.org/link/error-boundaries to learn more about error boundaries.\";\n            } else {\n              var errorBoundaryName = getComponentNameFromFiber(boundary) || \"Anonymous\";\n              errorBoundaryMessage = \"React will try to recreate this component tree from scratch \" + (\"using the error boundary you provided, \" + errorBoundaryName + \".\");\n            }\n            var combinedMessage = componentNameMessage + \"\\n\" + componentStack + \"\\n\\n\" + (\"\" + errorBoundaryMessage);\n            console[\"error\"](combinedMessage);\n          }\n        } catch (e2) {\n          setTimeout(function() {\n            throw e2;\n          });\n        }\n      }\n      var PossiblyWeakMap$1 = typeof WeakMap === \"function\" ? WeakMap : Map;\n      function createRootErrorUpdate(fiber, errorInfo, lane) {\n        var update = createUpdate(NoTimestamp, lane);\n        update.tag = CaptureUpdate;\n        update.payload = {\n          element: null\n        };\n        var error3 = errorInfo.value;\n        update.callback = function() {\n          onUncaughtError(error3);\n          logCapturedError(fiber, errorInfo);\n        };\n        return update;\n      }\n      function createClassErrorUpdate(fiber, errorInfo, lane) {\n        var update = createUpdate(NoTimestamp, lane);\n        update.tag = CaptureUpdate;\n        var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n        if (typeof getDerivedStateFromError === \"function\") {\n          var error$1 = errorInfo.value;\n          update.payload = function() {\n            return getDerivedStateFromError(error$1);\n          };\n          update.callback = function() {\n            {\n              markFailedErrorBoundaryForHotReloading(fiber);\n            }\n            logCapturedError(fiber, errorInfo);\n          };\n        }\n        var inst = fiber.stateNode;\n        if (inst !== null && typeof inst.componentDidCatch === \"function\") {\n          update.callback = function callback() {\n            {\n              markFailedErrorBoundaryForHotReloading(fiber);\n            }\n            logCapturedError(fiber, errorInfo);\n            if (typeof getDerivedStateFromError !== \"function\") {\n              markLegacyErrorBoundaryAsFailed(this);\n            }\n            var error$12 = errorInfo.value;\n            var stack = errorInfo.stack;\n            this.componentDidCatch(error$12, {\n              componentStack: stack !== null ? stack : \"\"\n            });\n            {\n              if (typeof getDerivedStateFromError !== \"function\") {\n                if (!includesSomeLane(fiber.lanes, SyncLane)) {\n                  error2(\"%s: Error boundaries should implement getDerivedStateFromError(). In that method, return a state update to display an error message or fallback UI.\", getComponentNameFromFiber(fiber) || \"Unknown\");\n                }\n              }\n            }\n          };\n        }\n        return update;\n      }\n      function attachPingListener(root, wakeable, lanes) {\n        var pingCache = root.pingCache;\n        var threadIDs;\n        if (pingCache === null) {\n          pingCache = root.pingCache = new PossiblyWeakMap$1();\n          threadIDs = /* @__PURE__ */ new Set();\n          pingCache.set(wakeable, threadIDs);\n        } else {\n          threadIDs = pingCache.get(wakeable);\n          if (threadIDs === void 0) {\n            threadIDs = /* @__PURE__ */ new Set();\n            pingCache.set(wakeable, threadIDs);\n          }\n        }\n        if (!threadIDs.has(lanes)) {\n          threadIDs.add(lanes);\n          var ping = pingSuspendedRoot.bind(null, root, wakeable, lanes);\n          {\n            if (isDevToolsPresent) {\n              restorePendingUpdaters(root, lanes);\n            }\n          }\n          wakeable.then(ping, ping);\n        }\n      }\n      function attachRetryListener(suspenseBoundary, root, wakeable, lanes) {\n        var wakeables = suspenseBoundary.updateQueue;\n        if (wakeables === null) {\n          var updateQueue = /* @__PURE__ */ new Set();\n          updateQueue.add(wakeable);\n          suspenseBoundary.updateQueue = updateQueue;\n        } else {\n          wakeables.add(wakeable);\n        }\n      }\n      function resetSuspendedComponent(sourceFiber, rootRenderLanes) {\n        var tag = sourceFiber.tag;\n        if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) {\n          var currentSource = sourceFiber.alternate;\n          if (currentSource) {\n            sourceFiber.updateQueue = currentSource.updateQueue;\n            sourceFiber.memoizedState = currentSource.memoizedState;\n            sourceFiber.lanes = currentSource.lanes;\n          } else {\n            sourceFiber.updateQueue = null;\n            sourceFiber.memoizedState = null;\n          }\n        }\n      }\n      function getNearestSuspenseBoundaryToCapture(returnFiber) {\n        var node = returnFiber;\n        do {\n          if (node.tag === SuspenseComponent && shouldCaptureSuspense(node)) {\n            return node;\n          }\n          node = node.return;\n        } while (node !== null);\n        return null;\n      }\n      function markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes) {\n        if ((suspenseBoundary.mode & ConcurrentMode) === NoMode) {\n          if (suspenseBoundary === returnFiber) {\n            suspenseBoundary.flags |= ShouldCapture;\n          } else {\n            suspenseBoundary.flags |= DidCapture;\n            sourceFiber.flags |= ForceUpdateForLegacySuspense;\n            sourceFiber.flags &= -52805;\n            if (sourceFiber.tag === ClassComponent) {\n              var currentSourceFiber = sourceFiber.alternate;\n              if (currentSourceFiber === null) {\n                sourceFiber.tag = IncompleteClassComponent;\n              } else {\n                var update = createUpdate(NoTimestamp, SyncLane);\n                update.tag = ForceUpdate;\n                enqueueUpdate(sourceFiber, update);\n              }\n            }\n            sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane);\n          }\n          return suspenseBoundary;\n        }\n        suspenseBoundary.flags |= ShouldCapture;\n        suspenseBoundary.lanes = rootRenderLanes;\n        return suspenseBoundary;\n      }\n      function throwException(root, returnFiber, sourceFiber, value, rootRenderLanes) {\n        sourceFiber.flags |= Incomplete;\n        {\n          if (isDevToolsPresent) {\n            restorePendingUpdaters(root, rootRenderLanes);\n          }\n        }\n        if (value !== null && typeof value === \"object\" && typeof value.then === \"function\") {\n          var wakeable = value;\n          resetSuspendedComponent(sourceFiber);\n          var suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);\n          if (suspenseBoundary !== null) {\n            suspenseBoundary.flags &= -257;\n            markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes);\n            if (suspenseBoundary.mode & ConcurrentMode) {\n              attachPingListener(root, wakeable, rootRenderLanes);\n            }\n            attachRetryListener(suspenseBoundary, root, wakeable);\n            return;\n          } else {\n            if (!includesSyncLane(rootRenderLanes)) {\n              attachPingListener(root, wakeable, rootRenderLanes);\n              renderDidSuspendDelayIfPossible();\n              return;\n            }\n            var uncaughtSuspenseError = new Error(\"A component suspended while responding to synchronous input. This will cause the UI to be replaced with a loading indicator. To fix, updates that suspend should be wrapped with startTransition.\");\n            value = uncaughtSuspenseError;\n          }\n        } else {\n          if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n            markDidSuspendWhileHydratingDEV();\n            var _suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);\n            if (_suspenseBoundary !== null) {\n              if ((_suspenseBoundary.flags & ShouldCapture) === NoFlags) {\n                _suspenseBoundary.flags |= ForceClientRender;\n              }\n              markSuspenseBoundaryShouldCapture(_suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes);\n              queueHydrationError(value);\n              return;\n            }\n          }\n        }\n        renderDidError(value);\n        value = createCapturedValue(value, sourceFiber);\n        var workInProgress2 = returnFiber;\n        do {\n          switch (workInProgress2.tag) {\n            case HostRoot: {\n              var _errorInfo = value;\n              workInProgress2.flags |= ShouldCapture;\n              var lane = pickArbitraryLane(rootRenderLanes);\n              workInProgress2.lanes = mergeLanes(workInProgress2.lanes, lane);\n              var update = createRootErrorUpdate(workInProgress2, _errorInfo, lane);\n              enqueueCapturedUpdate(workInProgress2, update);\n              return;\n            }\n            case ClassComponent:\n              var errorInfo = value;\n              var ctor = workInProgress2.type;\n              var instance = workInProgress2.stateNode;\n              if ((workInProgress2.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === \"function\" || instance !== null && typeof instance.componentDidCatch === \"function\" && !isAlreadyFailedLegacyErrorBoundary(instance))) {\n                workInProgress2.flags |= ShouldCapture;\n                var _lane = pickArbitraryLane(rootRenderLanes);\n                workInProgress2.lanes = mergeLanes(workInProgress2.lanes, _lane);\n                var _update = createClassErrorUpdate(workInProgress2, errorInfo, _lane);\n                enqueueCapturedUpdate(workInProgress2, _update);\n                return;\n              }\n              break;\n          }\n          workInProgress2 = workInProgress2.return;\n        } while (workInProgress2 !== null);\n      }\n      function getSuspendedCache() {\n        {\n          return null;\n        }\n      }\n      function markUpdate(workInProgress2) {\n        workInProgress2.flags |= Update;\n      }\n      function markRef(workInProgress2) {\n        workInProgress2.flags |= Ref;\n        {\n          workInProgress2.flags |= RefStatic;\n        }\n      }\n      function hadNoMutationsEffects(current2, completedWork) {\n        var didBailout = current2 !== null && current2.child === completedWork.child;\n        if (didBailout) {\n          return true;\n        }\n        if ((completedWork.flags & ChildDeletion) !== NoFlags) {\n          return false;\n        }\n        var child = completedWork.child;\n        while (child !== null) {\n          if ((child.flags & MutationMask) !== NoFlags || (child.subtreeFlags & MutationMask) !== NoFlags) {\n            return false;\n          }\n          child = child.sibling;\n        }\n        return true;\n      }\n      var appendAllChildren;\n      var updateHostContainer;\n      var updateHostComponent;\n      var updateHostText;\n      if (supportsMutation) {\n        appendAllChildren = function(parent, workInProgress2, needsVisibilityToggle, isHidden) {\n          var node = workInProgress2.child;\n          while (node !== null) {\n            if (node.tag === HostComponent || node.tag === HostText) {\n              appendInitialChild(parent, node.stateNode);\n            } else if (node.tag === HostPortal) ;\n            else if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n            if (node === workInProgress2) {\n              return;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === workInProgress2) {\n                return;\n              }\n              node = node.return;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n        };\n        updateHostContainer = function(current2, workInProgress2) {\n        };\n        updateHostComponent = function(current2, workInProgress2, type, newProps, rootContainerInstance) {\n          var oldProps = current2.memoizedProps;\n          if (oldProps === newProps) {\n            return;\n          }\n          var instance = workInProgress2.stateNode;\n          var currentHostContext = getHostContext();\n          var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext);\n          workInProgress2.updateQueue = updatePayload;\n          if (updatePayload) {\n            markUpdate(workInProgress2);\n          }\n        };\n        updateHostText = function(current2, workInProgress2, oldText, newText) {\n          if (oldText !== newText) {\n            markUpdate(workInProgress2);\n          }\n        };\n      } else if (supportsPersistence) {\n        appendAllChildren = function(parent, workInProgress2, needsVisibilityToggle, isHidden) {\n          var node = workInProgress2.child;\n          while (node !== null) {\n            if (node.tag === HostComponent) {\n              var instance = node.stateNode;\n              if (needsVisibilityToggle && isHidden) {\n                var props = node.memoizedProps;\n                var type = node.type;\n                instance = cloneHiddenInstance(instance, type, props, node);\n              }\n              appendInitialChild(parent, instance);\n            } else if (node.tag === HostText) {\n              var _instance = node.stateNode;\n              if (needsVisibilityToggle && isHidden) {\n                var text = node.memoizedProps;\n                _instance = cloneHiddenTextInstance(_instance, text, node);\n              }\n              appendInitialChild(parent, _instance);\n            } else if (node.tag === HostPortal) ;\n            else if (node.tag === OffscreenComponent && node.memoizedState !== null) {\n              var child = node.child;\n              if (child !== null) {\n                child.return = node;\n              }\n              {\n                appendAllChildren(parent, node, true, true);\n              }\n            } else if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n            node = node;\n            if (node === workInProgress2) {\n              return;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === workInProgress2) {\n                return;\n              }\n              node = node.return;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n        };\n        var appendAllChildrenToContainer = function(containerChildSet, workInProgress2, needsVisibilityToggle, isHidden) {\n          var node = workInProgress2.child;\n          while (node !== null) {\n            if (node.tag === HostComponent) {\n              var instance = node.stateNode;\n              if (needsVisibilityToggle && isHidden) {\n                var props = node.memoizedProps;\n                var type = node.type;\n                instance = cloneHiddenInstance(instance, type, props, node);\n              }\n              appendChildToContainerChildSet(containerChildSet, instance);\n            } else if (node.tag === HostText) {\n              var _instance2 = node.stateNode;\n              if (needsVisibilityToggle && isHidden) {\n                var text = node.memoizedProps;\n                _instance2 = cloneHiddenTextInstance(_instance2, text, node);\n              }\n              appendChildToContainerChildSet(containerChildSet, _instance2);\n            } else if (node.tag === HostPortal) ;\n            else if (node.tag === OffscreenComponent && node.memoizedState !== null) {\n              var child = node.child;\n              if (child !== null) {\n                child.return = node;\n              }\n              {\n                appendAllChildrenToContainer(containerChildSet, node, true, true);\n              }\n            } else if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n            node = node;\n            if (node === workInProgress2) {\n              return;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === workInProgress2) {\n                return;\n              }\n              node = node.return;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n        };\n        updateHostContainer = function(current2, workInProgress2) {\n          var portalOrRoot = workInProgress2.stateNode;\n          var childrenUnchanged = hadNoMutationsEffects(current2, workInProgress2);\n          if (childrenUnchanged) ;\n          else {\n            var container = portalOrRoot.containerInfo;\n            var newChildSet = createContainerChildSet(container);\n            appendAllChildrenToContainer(newChildSet, workInProgress2, false, false);\n            portalOrRoot.pendingChildren = newChildSet;\n            markUpdate(workInProgress2);\n            finalizeContainerChildren(container, newChildSet);\n          }\n        };\n        updateHostComponent = function(current2, workInProgress2, type, newProps, rootContainerInstance) {\n          var currentInstance = current2.stateNode;\n          var oldProps = current2.memoizedProps;\n          var childrenUnchanged = hadNoMutationsEffects(current2, workInProgress2);\n          if (childrenUnchanged && oldProps === newProps) {\n            workInProgress2.stateNode = currentInstance;\n            return;\n          }\n          var recyclableInstance = workInProgress2.stateNode;\n          var currentHostContext = getHostContext();\n          var updatePayload = null;\n          if (oldProps !== newProps) {\n            updatePayload = prepareUpdate(recyclableInstance, type, oldProps, newProps, rootContainerInstance, currentHostContext);\n          }\n          if (childrenUnchanged && updatePayload === null) {\n            workInProgress2.stateNode = currentInstance;\n            return;\n          }\n          var newInstance = cloneInstance(currentInstance, updatePayload, type, oldProps, newProps, workInProgress2, childrenUnchanged, recyclableInstance);\n          if (finalizeInitialChildren(newInstance, type, newProps, rootContainerInstance, currentHostContext)) {\n            markUpdate(workInProgress2);\n          }\n          workInProgress2.stateNode = newInstance;\n          if (childrenUnchanged) {\n            markUpdate(workInProgress2);\n          } else {\n            appendAllChildren(newInstance, workInProgress2, false, false);\n          }\n        };\n        updateHostText = function(current2, workInProgress2, oldText, newText) {\n          if (oldText !== newText) {\n            var rootContainerInstance = getRootHostContainer();\n            var currentHostContext = getHostContext();\n            workInProgress2.stateNode = createTextInstance(newText, rootContainerInstance, currentHostContext, workInProgress2);\n            markUpdate(workInProgress2);\n          } else {\n            workInProgress2.stateNode = current2.stateNode;\n          }\n        };\n      } else {\n        updateHostContainer = function(current2, workInProgress2) {\n        };\n        updateHostComponent = function(current2, workInProgress2, type, newProps, rootContainerInstance) {\n        };\n        updateHostText = function(current2, workInProgress2, oldText, newText) {\n        };\n      }\n      function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n        if (getIsHydrating()) {\n          return;\n        }\n        switch (renderState.tailMode) {\n          case \"hidden\": {\n            var tailNode = renderState.tail;\n            var lastTailNode = null;\n            while (tailNode !== null) {\n              if (tailNode.alternate !== null) {\n                lastTailNode = tailNode;\n              }\n              tailNode = tailNode.sibling;\n            }\n            if (lastTailNode === null) {\n              renderState.tail = null;\n            } else {\n              lastTailNode.sibling = null;\n            }\n            break;\n          }\n          case \"collapsed\": {\n            var _tailNode = renderState.tail;\n            var _lastTailNode = null;\n            while (_tailNode !== null) {\n              if (_tailNode.alternate !== null) {\n                _lastTailNode = _tailNode;\n              }\n              _tailNode = _tailNode.sibling;\n            }\n            if (_lastTailNode === null) {\n              if (!hasRenderedATailFallback && renderState.tail !== null) {\n                renderState.tail.sibling = null;\n              } else {\n                renderState.tail = null;\n              }\n            } else {\n              _lastTailNode.sibling = null;\n            }\n            break;\n          }\n        }\n      }\n      function bubbleProperties(completedWork) {\n        var didBailout = completedWork.alternate !== null && completedWork.alternate.child === completedWork.child;\n        var newChildLanes = NoLanes;\n        var subtreeFlags = NoFlags;\n        if (!didBailout) {\n          if ((completedWork.mode & ProfileMode) !== NoMode) {\n            var actualDuration = completedWork.actualDuration;\n            var treeBaseDuration = completedWork.selfBaseDuration;\n            var child = completedWork.child;\n            while (child !== null) {\n              newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));\n              subtreeFlags |= child.subtreeFlags;\n              subtreeFlags |= child.flags;\n              actualDuration += child.actualDuration;\n              treeBaseDuration += child.treeBaseDuration;\n              child = child.sibling;\n            }\n            completedWork.actualDuration = actualDuration;\n            completedWork.treeBaseDuration = treeBaseDuration;\n          } else {\n            var _child = completedWork.child;\n            while (_child !== null) {\n              newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));\n              subtreeFlags |= _child.subtreeFlags;\n              subtreeFlags |= _child.flags;\n              _child.return = completedWork;\n              _child = _child.sibling;\n            }\n          }\n          completedWork.subtreeFlags |= subtreeFlags;\n        } else {\n          if ((completedWork.mode & ProfileMode) !== NoMode) {\n            var _treeBaseDuration = completedWork.selfBaseDuration;\n            var _child2 = completedWork.child;\n            while (_child2 !== null) {\n              newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child2.lanes, _child2.childLanes));\n              subtreeFlags |= _child2.subtreeFlags & StaticMask;\n              subtreeFlags |= _child2.flags & StaticMask;\n              _treeBaseDuration += _child2.treeBaseDuration;\n              _child2 = _child2.sibling;\n            }\n            completedWork.treeBaseDuration = _treeBaseDuration;\n          } else {\n            var _child3 = completedWork.child;\n            while (_child3 !== null) {\n              newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child3.lanes, _child3.childLanes));\n              subtreeFlags |= _child3.subtreeFlags & StaticMask;\n              subtreeFlags |= _child3.flags & StaticMask;\n              _child3.return = completedWork;\n              _child3 = _child3.sibling;\n            }\n          }\n          completedWork.subtreeFlags |= subtreeFlags;\n        }\n        completedWork.childLanes = newChildLanes;\n        return didBailout;\n      }\n      function completeWork(current2, workInProgress2, renderLanes2) {\n        var newProps = workInProgress2.pendingProps;\n        popTreeContext(workInProgress2);\n        switch (workInProgress2.tag) {\n          case IndeterminateComponent:\n          case LazyComponent:\n          case SimpleMemoComponent:\n          case FunctionComponent:\n          case ForwardRef:\n          case Fragment2:\n          case Mode:\n          case Profiler:\n          case ContextConsumer:\n          case MemoComponent:\n            bubbleProperties(workInProgress2);\n            return null;\n          case ClassComponent: {\n            var Component = workInProgress2.type;\n            if (isContextProvider(Component)) {\n              popContext(workInProgress2);\n            }\n            bubbleProperties(workInProgress2);\n            return null;\n          }\n          case HostRoot: {\n            var fiberRoot = workInProgress2.stateNode;\n            popHostContainer(workInProgress2);\n            popTopLevelContextObject(workInProgress2);\n            resetWorkInProgressVersions();\n            if (fiberRoot.pendingContext) {\n              fiberRoot.context = fiberRoot.pendingContext;\n              fiberRoot.pendingContext = null;\n            }\n            if (current2 === null || current2.child === null) {\n              var wasHydrated = popHydrationState(workInProgress2);\n              if (wasHydrated) {\n                markUpdate(workInProgress2);\n              } else {\n                if (current2 !== null) {\n                  var prevState = current2.memoizedState;\n                  if (\n                    // Check if this is a client root\n                    !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error)\n                    (workInProgress2.flags & ForceClientRender) !== NoFlags\n                  ) {\n                    workInProgress2.flags |= Snapshot;\n                    upgradeHydrationErrorsToRecoverable();\n                  }\n                }\n              }\n            }\n            updateHostContainer(current2, workInProgress2);\n            bubbleProperties(workInProgress2);\n            return null;\n          }\n          case HostComponent: {\n            popHostContext(workInProgress2);\n            var rootContainerInstance = getRootHostContainer();\n            var type = workInProgress2.type;\n            if (current2 !== null && workInProgress2.stateNode != null) {\n              updateHostComponent(current2, workInProgress2, type, newProps, rootContainerInstance);\n              if (current2.ref !== workInProgress2.ref) {\n                markRef(workInProgress2);\n              }\n            } else {\n              if (!newProps) {\n                if (workInProgress2.stateNode === null) {\n                  throw new Error(\"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\");\n                }\n                bubbleProperties(workInProgress2);\n                return null;\n              }\n              var currentHostContext = getHostContext();\n              var _wasHydrated = popHydrationState(workInProgress2);\n              if (_wasHydrated) {\n                if (prepareToHydrateHostInstance(workInProgress2, rootContainerInstance, currentHostContext)) {\n                  markUpdate(workInProgress2);\n                }\n              } else {\n                var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress2);\n                appendAllChildren(instance, workInProgress2, false, false);\n                workInProgress2.stateNode = instance;\n                if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance, currentHostContext)) {\n                  markUpdate(workInProgress2);\n                }\n              }\n              if (workInProgress2.ref !== null) {\n                markRef(workInProgress2);\n              }\n            }\n            bubbleProperties(workInProgress2);\n            return null;\n          }\n          case HostText: {\n            var newText = newProps;\n            if (current2 && workInProgress2.stateNode != null) {\n              var oldText = current2.memoizedProps;\n              updateHostText(current2, workInProgress2, oldText, newText);\n            } else {\n              if (typeof newText !== \"string\") {\n                if (workInProgress2.stateNode === null) {\n                  throw new Error(\"We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.\");\n                }\n              }\n              var _rootContainerInstance = getRootHostContainer();\n              var _currentHostContext = getHostContext();\n              var _wasHydrated2 = popHydrationState(workInProgress2);\n              if (_wasHydrated2) {\n                if (prepareToHydrateHostTextInstance(workInProgress2)) {\n                  markUpdate(workInProgress2);\n                }\n              } else {\n                workInProgress2.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress2);\n              }\n            }\n            bubbleProperties(workInProgress2);\n            return null;\n          }\n          case SuspenseComponent: {\n            popSuspenseContext(workInProgress2);\n            var nextState = workInProgress2.memoizedState;\n            {\n              if (hasUnhydratedTailNodes() && (workInProgress2.mode & ConcurrentMode) !== NoMode && (workInProgress2.flags & DidCapture) === NoFlags) {\n                warnIfUnhydratedTailNodes(workInProgress2);\n                resetHydrationState();\n                workInProgress2.flags |= ForceClientRender | Incomplete | ShouldCapture;\n                return workInProgress2;\n              }\n              if (nextState !== null && nextState.dehydrated !== null) {\n                var _wasHydrated3 = popHydrationState(workInProgress2);\n                if (current2 === null) {\n                  if (!_wasHydrated3) {\n                    throw new Error(\"A dehydrated suspense component was completed without a hydrated node. This is probably a bug in React.\");\n                  }\n                  prepareToHydrateHostSuspenseInstance(workInProgress2);\n                  bubbleProperties(workInProgress2);\n                  {\n                    if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                      var isTimedOutSuspense = nextState !== null;\n                      if (isTimedOutSuspense) {\n                        var primaryChildFragment = workInProgress2.child;\n                        if (primaryChildFragment !== null) {\n                          workInProgress2.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n                        }\n                      }\n                    }\n                  }\n                  return null;\n                } else {\n                  resetHydrationState();\n                  if ((workInProgress2.flags & DidCapture) === NoFlags) {\n                    workInProgress2.memoizedState = null;\n                  }\n                  workInProgress2.flags |= Update;\n                  bubbleProperties(workInProgress2);\n                  {\n                    if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                      var _isTimedOutSuspense = nextState !== null;\n                      if (_isTimedOutSuspense) {\n                        var _primaryChildFragment = workInProgress2.child;\n                        if (_primaryChildFragment !== null) {\n                          workInProgress2.treeBaseDuration -= _primaryChildFragment.treeBaseDuration;\n                        }\n                      }\n                    }\n                  }\n                  return null;\n                }\n              }\n              upgradeHydrationErrorsToRecoverable();\n            }\n            if ((workInProgress2.flags & DidCapture) !== NoFlags) {\n              workInProgress2.lanes = renderLanes2;\n              if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                transferActualDuration(workInProgress2);\n              }\n              return workInProgress2;\n            }\n            var nextDidTimeout = nextState !== null;\n            var prevDidTimeout = false;\n            if (current2 === null) {\n              popHydrationState(workInProgress2);\n            } else {\n              var _prevState = current2.memoizedState;\n              prevDidTimeout = _prevState !== null;\n            }\n            if (nextDidTimeout && !prevDidTimeout) {\n              var _offscreenFiber = workInProgress2.child;\n              _offscreenFiber.flags |= Visibility;\n              if ((workInProgress2.mode & ConcurrentMode) !== NoMode) {\n                var hasInvisibleChildContext = current2 === null && (workInProgress2.memoizedProps.unstable_avoidThisFallback !== true || true);\n                if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {\n                  renderDidSuspend();\n                } else {\n                  renderDidSuspendDelayIfPossible();\n                }\n              }\n            }\n            var wakeables = workInProgress2.updateQueue;\n            if (wakeables !== null) {\n              workInProgress2.flags |= Update;\n            }\n            bubbleProperties(workInProgress2);\n            {\n              if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                if (nextDidTimeout) {\n                  var _primaryChildFragment2 = workInProgress2.child;\n                  if (_primaryChildFragment2 !== null) {\n                    workInProgress2.treeBaseDuration -= _primaryChildFragment2.treeBaseDuration;\n                  }\n                }\n              }\n            }\n            return null;\n          }\n          case HostPortal:\n            popHostContainer(workInProgress2);\n            updateHostContainer(current2, workInProgress2);\n            if (current2 === null) {\n              preparePortalMount(workInProgress2.stateNode.containerInfo);\n            }\n            bubbleProperties(workInProgress2);\n            return null;\n          case ContextProvider:\n            var context2 = workInProgress2.type._context;\n            popProvider(context2, workInProgress2);\n            bubbleProperties(workInProgress2);\n            return null;\n          case IncompleteClassComponent: {\n            var _Component = workInProgress2.type;\n            if (isContextProvider(_Component)) {\n              popContext(workInProgress2);\n            }\n            bubbleProperties(workInProgress2);\n            return null;\n          }\n          case SuspenseListComponent: {\n            popSuspenseContext(workInProgress2);\n            var renderState = workInProgress2.memoizedState;\n            if (renderState === null) {\n              bubbleProperties(workInProgress2);\n              return null;\n            }\n            var didSuspendAlready = (workInProgress2.flags & DidCapture) !== NoFlags;\n            var renderedTail = renderState.rendering;\n            if (renderedTail === null) {\n              if (!didSuspendAlready) {\n                var cannotBeSuspended = renderHasNotSuspendedYet() && (current2 === null || (current2.flags & DidCapture) === NoFlags);\n                if (!cannotBeSuspended) {\n                  var row = workInProgress2.child;\n                  while (row !== null) {\n                    var suspended = findFirstSuspended(row);\n                    if (suspended !== null) {\n                      didSuspendAlready = true;\n                      workInProgress2.flags |= DidCapture;\n                      cutOffTailIfNeeded(renderState, false);\n                      var newThenables = suspended.updateQueue;\n                      if (newThenables !== null) {\n                        workInProgress2.updateQueue = newThenables;\n                        workInProgress2.flags |= Update;\n                      }\n                      workInProgress2.subtreeFlags = NoFlags;\n                      resetChildFibers(workInProgress2, renderLanes2);\n                      pushSuspenseContext(workInProgress2, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback));\n                      return workInProgress2.child;\n                    }\n                    row = row.sibling;\n                  }\n                }\n                if (renderState.tail !== null && now$1() > getRenderTargetTime()) {\n                  workInProgress2.flags |= DidCapture;\n                  didSuspendAlready = true;\n                  cutOffTailIfNeeded(renderState, false);\n                  workInProgress2.lanes = SomeRetryLane;\n                }\n              } else {\n                cutOffTailIfNeeded(renderState, false);\n              }\n            } else {\n              if (!didSuspendAlready) {\n                var _suspended = findFirstSuspended(renderedTail);\n                if (_suspended !== null) {\n                  workInProgress2.flags |= DidCapture;\n                  didSuspendAlready = true;\n                  var _newThenables = _suspended.updateQueue;\n                  if (_newThenables !== null) {\n                    workInProgress2.updateQueue = _newThenables;\n                    workInProgress2.flags |= Update;\n                  }\n                  cutOffTailIfNeeded(renderState, true);\n                  if (renderState.tail === null && renderState.tailMode === \"hidden\" && !renderedTail.alternate && !getIsHydrating()) {\n                    bubbleProperties(workInProgress2);\n                    return null;\n                  }\n                } else if (\n                  // The time it took to render last row is greater than the remaining\n                  // time we have to render. So rendering one more row would likely\n                  // exceed it.\n                  now$1() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes2 !== OffscreenLane\n                ) {\n                  workInProgress2.flags |= DidCapture;\n                  didSuspendAlready = true;\n                  cutOffTailIfNeeded(renderState, false);\n                  workInProgress2.lanes = SomeRetryLane;\n                }\n              }\n              if (renderState.isBackwards) {\n                renderedTail.sibling = workInProgress2.child;\n                workInProgress2.child = renderedTail;\n              } else {\n                var previousSibling = renderState.last;\n                if (previousSibling !== null) {\n                  previousSibling.sibling = renderedTail;\n                } else {\n                  workInProgress2.child = renderedTail;\n                }\n                renderState.last = renderedTail;\n              }\n            }\n            if (renderState.tail !== null) {\n              var next = renderState.tail;\n              renderState.rendering = next;\n              renderState.tail = next.sibling;\n              renderState.renderingStartTime = now$1();\n              next.sibling = null;\n              var suspenseContext = suspenseStackCursor.current;\n              if (didSuspendAlready) {\n                suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n              } else {\n                suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n              }\n              pushSuspenseContext(workInProgress2, suspenseContext);\n              return next;\n            }\n            bubbleProperties(workInProgress2);\n            return null;\n          }\n          case ScopeComponent: {\n            break;\n          }\n          case OffscreenComponent:\n          case LegacyHiddenComponent: {\n            popRenderLanes(workInProgress2);\n            var _nextState = workInProgress2.memoizedState;\n            var nextIsHidden = _nextState !== null;\n            if (current2 !== null) {\n              var _prevState2 = current2.memoizedState;\n              var prevIsHidden = _prevState2 !== null;\n              if (prevIsHidden !== nextIsHidden && // LegacyHidden doesn't do any hiding — it only pre-renders.\n              true) {\n                workInProgress2.flags |= Visibility;\n              }\n            }\n            if (!nextIsHidden || (workInProgress2.mode & ConcurrentMode) === NoMode) {\n              bubbleProperties(workInProgress2);\n            } else {\n              if (includesSomeLane(subtreeRenderLanes, OffscreenLane)) {\n                bubbleProperties(workInProgress2);\n                if (supportsMutation) {\n                  if (workInProgress2.subtreeFlags & (Placement | Update)) {\n                    workInProgress2.flags |= Visibility;\n                  }\n                }\n              }\n            }\n            return null;\n          }\n          case CacheComponent: {\n            return null;\n          }\n          case TracingMarkerComponent: {\n            return null;\n          }\n        }\n        throw new Error(\"Unknown unit of work tag (\" + workInProgress2.tag + \"). This error is likely caused by a bug in React. Please file an issue.\");\n      }\n      var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\n      var didReceiveUpdate = false;\n      var didWarnAboutBadClass;\n      var didWarnAboutModulePatternComponent;\n      var didWarnAboutContextTypeOnFunctionComponent;\n      var didWarnAboutGetDerivedStateOnFunctionComponent;\n      var didWarnAboutFunctionRefs;\n      var didWarnAboutReassigningProps;\n      var didWarnAboutRevealOrder;\n      var didWarnAboutTailOptions;\n      {\n        didWarnAboutBadClass = {};\n        didWarnAboutModulePatternComponent = {};\n        didWarnAboutContextTypeOnFunctionComponent = {};\n        didWarnAboutGetDerivedStateOnFunctionComponent = {};\n        didWarnAboutFunctionRefs = {};\n        didWarnAboutReassigningProps = false;\n        didWarnAboutRevealOrder = {};\n        didWarnAboutTailOptions = {};\n      }\n      function reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2) {\n        if (current2 === null) {\n          workInProgress2.child = mountChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n        } else {\n          workInProgress2.child = reconcileChildFibers(workInProgress2, current2.child, nextChildren, renderLanes2);\n        }\n      }\n      function forceUnmountCurrentAndReconcile(current2, workInProgress2, nextChildren, renderLanes2) {\n        workInProgress2.child = reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);\n        workInProgress2.child = reconcileChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n      }\n      function updateForwardRef(current2, workInProgress2, Component, nextProps, renderLanes2) {\n        {\n          if (workInProgress2.type !== workInProgress2.elementType) {\n            var innerPropTypes = Component.propTypes;\n            if (innerPropTypes) {\n              checkPropTypes(\n                innerPropTypes,\n                nextProps,\n                // Resolved props\n                \"prop\",\n                getComponentNameFromType(Component)\n              );\n            }\n          }\n        }\n        var render = Component.render;\n        var ref = workInProgress2.ref;\n        var nextChildren;\n        var hasId;\n        prepareToReadContext(workInProgress2, renderLanes2);\n        {\n          markComponentRenderStarted(workInProgress2);\n        }\n        {\n          ReactCurrentOwner$1.current = workInProgress2;\n          setIsRendering(true);\n          nextChildren = renderWithHooks(current2, workInProgress2, render, nextProps, ref, renderLanes2);\n          hasId = checkDidRenderIdHook();\n          if (workInProgress2.mode & StrictLegacyMode) {\n            setIsStrictModeForDevtools(true);\n            try {\n              nextChildren = renderWithHooks(current2, workInProgress2, render, nextProps, ref, renderLanes2);\n              hasId = checkDidRenderIdHook();\n            } finally {\n              setIsStrictModeForDevtools(false);\n            }\n          }\n          setIsRendering(false);\n        }\n        {\n          markComponentRenderStopped();\n        }\n        if (current2 !== null && !didReceiveUpdate) {\n          bailoutHooks(current2, workInProgress2, renderLanes2);\n          return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n        }\n        if (getIsHydrating() && hasId) {\n          pushMaterializedTreeId(workInProgress2);\n        }\n        workInProgress2.flags |= PerformedWork;\n        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function updateMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n        if (current2 === null) {\n          var type = Component.type;\n          if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.\n          Component.defaultProps === void 0) {\n            var resolvedType = type;\n            {\n              resolvedType = resolveFunctionForHotReloading(type);\n            }\n            workInProgress2.tag = SimpleMemoComponent;\n            workInProgress2.type = resolvedType;\n            {\n              validateFunctionComponentInDev(workInProgress2, type);\n            }\n            return updateSimpleMemoComponent(current2, workInProgress2, resolvedType, nextProps, renderLanes2);\n          }\n          {\n            var innerPropTypes = type.propTypes;\n            if (innerPropTypes) {\n              checkPropTypes(\n                innerPropTypes,\n                nextProps,\n                // Resolved props\n                \"prop\",\n                getComponentNameFromType(type)\n              );\n            }\n          }\n          var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress2, workInProgress2.mode, renderLanes2);\n          child.ref = workInProgress2.ref;\n          child.return = workInProgress2;\n          workInProgress2.child = child;\n          return child;\n        }\n        {\n          var _type = Component.type;\n          var _innerPropTypes = _type.propTypes;\n          if (_innerPropTypes) {\n            checkPropTypes(\n              _innerPropTypes,\n              nextProps,\n              // Resolved props\n              \"prop\",\n              getComponentNameFromType(_type)\n            );\n          }\n        }\n        var currentChild = current2.child;\n        var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2);\n        if (!hasScheduledUpdateOrContext) {\n          var prevProps = currentChild.memoizedProps;\n          var compare = Component.compare;\n          compare = compare !== null ? compare : shallowEqual;\n          if (compare(prevProps, nextProps) && current2.ref === workInProgress2.ref) {\n            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n          }\n        }\n        workInProgress2.flags |= PerformedWork;\n        var newChild = createWorkInProgress(currentChild, nextProps);\n        newChild.ref = workInProgress2.ref;\n        newChild.return = workInProgress2;\n        workInProgress2.child = newChild;\n        return newChild;\n      }\n      function updateSimpleMemoComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n        {\n          if (workInProgress2.type !== workInProgress2.elementType) {\n            var outerMemoType = workInProgress2.elementType;\n            if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {\n              var lazyComponent = outerMemoType;\n              var payload = lazyComponent._payload;\n              var init = lazyComponent._init;\n              try {\n                outerMemoType = init(payload);\n              } catch (x2) {\n                outerMemoType = null;\n              }\n              var outerPropTypes = outerMemoType && outerMemoType.propTypes;\n              if (outerPropTypes) {\n                checkPropTypes(\n                  outerPropTypes,\n                  nextProps,\n                  // Resolved (SimpleMemoComponent has no defaultProps)\n                  \"prop\",\n                  getComponentNameFromType(outerMemoType)\n                );\n              }\n            }\n          }\n        }\n        if (current2 !== null) {\n          var prevProps = current2.memoizedProps;\n          if (shallowEqual(prevProps, nextProps) && current2.ref === workInProgress2.ref && // Prevent bailout if the implementation changed due to hot reload.\n          workInProgress2.type === current2.type) {\n            didReceiveUpdate = false;\n            if (!checkScheduledUpdateOrContext(current2, renderLanes2)) {\n              workInProgress2.lanes = current2.lanes;\n              return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n            } else if ((current2.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n              didReceiveUpdate = true;\n            }\n          }\n        }\n        return updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2);\n      }\n      function updateOffscreenComponent(current2, workInProgress2, renderLanes2) {\n        var nextProps = workInProgress2.pendingProps;\n        var nextChildren = nextProps.children;\n        var prevState = current2 !== null ? current2.memoizedState : null;\n        if (nextProps.mode === \"hidden\" || enableLegacyHidden) {\n          if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n            var nextState = {\n              baseLanes: NoLanes,\n              cachePool: null\n            };\n            workInProgress2.memoizedState = nextState;\n            pushRenderLanes(workInProgress2, renderLanes2);\n          } else if (!includesSomeLane(renderLanes2, OffscreenLane)) {\n            var spawnedCachePool = null;\n            var nextBaseLanes;\n            if (prevState !== null) {\n              var prevBaseLanes = prevState.baseLanes;\n              nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes2);\n            } else {\n              nextBaseLanes = renderLanes2;\n            }\n            workInProgress2.lanes = workInProgress2.childLanes = laneToLanes(OffscreenLane);\n            var _nextState = {\n              baseLanes: nextBaseLanes,\n              cachePool: spawnedCachePool\n            };\n            workInProgress2.memoizedState = _nextState;\n            workInProgress2.updateQueue = null;\n            pushRenderLanes(workInProgress2, nextBaseLanes);\n            return null;\n          } else {\n            var _nextState2 = {\n              baseLanes: NoLanes,\n              cachePool: null\n            };\n            workInProgress2.memoizedState = _nextState2;\n            var subtreeRenderLanes2 = prevState !== null ? prevState.baseLanes : renderLanes2;\n            pushRenderLanes(workInProgress2, subtreeRenderLanes2);\n          }\n        } else {\n          var _subtreeRenderLanes;\n          if (prevState !== null) {\n            _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes2);\n            workInProgress2.memoizedState = null;\n          } else {\n            _subtreeRenderLanes = renderLanes2;\n          }\n          pushRenderLanes(workInProgress2, _subtreeRenderLanes);\n        }\n        {\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n          return workInProgress2.child;\n        }\n      }\n      function updateFragment(current2, workInProgress2, renderLanes2) {\n        var nextChildren = workInProgress2.pendingProps;\n        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function updateMode(current2, workInProgress2, renderLanes2) {\n        var nextChildren = workInProgress2.pendingProps.children;\n        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function updateProfiler(current2, workInProgress2, renderLanes2) {\n        {\n          workInProgress2.flags |= Update;\n          {\n            var stateNode = workInProgress2.stateNode;\n            stateNode.effectDuration = 0;\n            stateNode.passiveEffectDuration = 0;\n          }\n        }\n        var nextProps = workInProgress2.pendingProps;\n        var nextChildren = nextProps.children;\n        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function markRef$1(current2, workInProgress2) {\n        var ref = workInProgress2.ref;\n        if (current2 === null && ref !== null || current2 !== null && current2.ref !== ref) {\n          workInProgress2.flags |= Ref;\n          {\n            workInProgress2.flags |= RefStatic;\n          }\n        }\n      }\n      function updateFunctionComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n        {\n          if (workInProgress2.type !== workInProgress2.elementType) {\n            var innerPropTypes = Component.propTypes;\n            if (innerPropTypes) {\n              checkPropTypes(\n                innerPropTypes,\n                nextProps,\n                // Resolved props\n                \"prop\",\n                getComponentNameFromType(Component)\n              );\n            }\n          }\n        }\n        var context2;\n        {\n          var unmaskedContext = getUnmaskedContext(workInProgress2, Component, true);\n          context2 = getMaskedContext(workInProgress2, unmaskedContext);\n        }\n        var nextChildren;\n        var hasId;\n        prepareToReadContext(workInProgress2, renderLanes2);\n        {\n          markComponentRenderStarted(workInProgress2);\n        }\n        {\n          ReactCurrentOwner$1.current = workInProgress2;\n          setIsRendering(true);\n          nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context2, renderLanes2);\n          hasId = checkDidRenderIdHook();\n          if (workInProgress2.mode & StrictLegacyMode) {\n            setIsStrictModeForDevtools(true);\n            try {\n              nextChildren = renderWithHooks(current2, workInProgress2, Component, nextProps, context2, renderLanes2);\n              hasId = checkDidRenderIdHook();\n            } finally {\n              setIsStrictModeForDevtools(false);\n            }\n          }\n          setIsRendering(false);\n        }\n        {\n          markComponentRenderStopped();\n        }\n        if (current2 !== null && !didReceiveUpdate) {\n          bailoutHooks(current2, workInProgress2, renderLanes2);\n          return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n        }\n        if (getIsHydrating() && hasId) {\n          pushMaterializedTreeId(workInProgress2);\n        }\n        workInProgress2.flags |= PerformedWork;\n        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function updateClassComponent(current2, workInProgress2, Component, nextProps, renderLanes2) {\n        {\n          switch (shouldError(workInProgress2)) {\n            case false: {\n              var _instance = workInProgress2.stateNode;\n              var ctor = workInProgress2.type;\n              var tempInstance = new ctor(workInProgress2.memoizedProps, _instance.context);\n              var state = tempInstance.state;\n              _instance.updater.enqueueSetState(_instance, state, null);\n              break;\n            }\n            case true: {\n              workInProgress2.flags |= DidCapture;\n              workInProgress2.flags |= ShouldCapture;\n              var error$1 = new Error(\"Simulated error coming from DevTools\");\n              var lane = pickArbitraryLane(renderLanes2);\n              workInProgress2.lanes = mergeLanes(workInProgress2.lanes, lane);\n              var update = createClassErrorUpdate(workInProgress2, createCapturedValue(error$1, workInProgress2), lane);\n              enqueueCapturedUpdate(workInProgress2, update);\n              break;\n            }\n          }\n          if (workInProgress2.type !== workInProgress2.elementType) {\n            var innerPropTypes = Component.propTypes;\n            if (innerPropTypes) {\n              checkPropTypes(\n                innerPropTypes,\n                nextProps,\n                // Resolved props\n                \"prop\",\n                getComponentNameFromType(Component)\n              );\n            }\n          }\n        }\n        var hasContext;\n        if (isContextProvider(Component)) {\n          hasContext = true;\n          pushContextProvider(workInProgress2);\n        } else {\n          hasContext = false;\n        }\n        prepareToReadContext(workInProgress2, renderLanes2);\n        var instance = workInProgress2.stateNode;\n        var shouldUpdate;\n        if (instance === null) {\n          if (current2 !== null) {\n            current2.alternate = null;\n            workInProgress2.alternate = null;\n            workInProgress2.flags |= Placement;\n          }\n          constructClassInstance(workInProgress2, Component, nextProps);\n          mountClassInstance(workInProgress2, Component, nextProps, renderLanes2);\n          shouldUpdate = true;\n        } else if (current2 === null) {\n          shouldUpdate = resumeMountClassInstance(workInProgress2, Component, nextProps, renderLanes2);\n        } else {\n          shouldUpdate = updateClassInstance(current2, workInProgress2, Component, nextProps, renderLanes2);\n        }\n        var nextUnitOfWork = finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2);\n        {\n          var inst = workInProgress2.stateNode;\n          if (shouldUpdate && inst.props !== nextProps) {\n            if (!didWarnAboutReassigningProps) {\n              error2(\"It looks like %s is reassigning its own `this.props` while rendering. This is not supported and can lead to confusing bugs.\", getComponentNameFromFiber(workInProgress2) || \"a component\");\n            }\n            didWarnAboutReassigningProps = true;\n          }\n        }\n        return nextUnitOfWork;\n      }\n      function finishClassComponent(current2, workInProgress2, Component, shouldUpdate, hasContext, renderLanes2) {\n        markRef$1(current2, workInProgress2);\n        var didCaptureError = (workInProgress2.flags & DidCapture) !== NoFlags;\n        if (!shouldUpdate && !didCaptureError) {\n          if (hasContext) {\n            invalidateContextProvider(workInProgress2, Component, false);\n          }\n          return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n        }\n        var instance = workInProgress2.stateNode;\n        ReactCurrentOwner$1.current = workInProgress2;\n        var nextChildren;\n        if (didCaptureError && typeof Component.getDerivedStateFromError !== \"function\") {\n          nextChildren = null;\n          {\n            stopProfilerTimerIfRunning();\n          }\n        } else {\n          {\n            markComponentRenderStarted(workInProgress2);\n          }\n          {\n            setIsRendering(true);\n            nextChildren = instance.render();\n            if (workInProgress2.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n              try {\n                instance.render();\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n            setIsRendering(false);\n          }\n          {\n            markComponentRenderStopped();\n          }\n        }\n        workInProgress2.flags |= PerformedWork;\n        if (current2 !== null && didCaptureError) {\n          forceUnmountCurrentAndReconcile(current2, workInProgress2, nextChildren, renderLanes2);\n        } else {\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        }\n        workInProgress2.memoizedState = instance.state;\n        if (hasContext) {\n          invalidateContextProvider(workInProgress2, Component, true);\n        }\n        return workInProgress2.child;\n      }\n      function pushHostRootContext(workInProgress2) {\n        var root = workInProgress2.stateNode;\n        if (root.pendingContext) {\n          pushTopLevelContextObject(workInProgress2, root.pendingContext, root.pendingContext !== root.context);\n        } else if (root.context) {\n          pushTopLevelContextObject(workInProgress2, root.context, false);\n        }\n        pushHostContainer(workInProgress2, root.containerInfo);\n      }\n      function updateHostRoot(current2, workInProgress2, renderLanes2) {\n        pushHostRootContext(workInProgress2);\n        if (current2 === null) {\n          throw new Error(\"Should have a current fiber. This is a bug in React.\");\n        }\n        var nextProps = workInProgress2.pendingProps;\n        var prevState = workInProgress2.memoizedState;\n        var prevChildren = prevState.element;\n        cloneUpdateQueue(current2, workInProgress2);\n        processUpdateQueue(workInProgress2, nextProps, null, renderLanes2);\n        var nextState = workInProgress2.memoizedState;\n        workInProgress2.stateNode;\n        var nextChildren = nextState.element;\n        if (supportsHydration && prevState.isDehydrated) {\n          var overrideState = {\n            element: nextChildren,\n            isDehydrated: false,\n            cache: nextState.cache,\n            transitions: nextState.transitions\n          };\n          var updateQueue = workInProgress2.updateQueue;\n          updateQueue.baseState = overrideState;\n          workInProgress2.memoizedState = overrideState;\n          if (workInProgress2.flags & ForceClientRender) {\n            var recoverableError = new Error(\"There was an error while hydrating. Because the error happened outside of a Suspense boundary, the entire root will switch to client rendering.\");\n            return mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, recoverableError);\n          } else if (nextChildren !== prevChildren) {\n            var _recoverableError = new Error(\"This root received an early update, before anything was able hydrate. Switched the entire root to client rendering.\");\n            return mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, _recoverableError);\n          } else {\n            enterHydrationState(workInProgress2);\n            var child = mountChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n            workInProgress2.child = child;\n            var node = child;\n            while (node) {\n              node.flags = node.flags & -3 | Hydrating;\n              node = node.sibling;\n            }\n          }\n        } else {\n          resetHydrationState();\n          if (nextChildren === prevChildren) {\n            return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n          }\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        }\n        return workInProgress2.child;\n      }\n      function mountHostRootWithoutHydrating(current2, workInProgress2, nextChildren, renderLanes2, recoverableError) {\n        resetHydrationState();\n        queueHydrationError(recoverableError);\n        workInProgress2.flags |= ForceClientRender;\n        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function updateHostComponent$1(current2, workInProgress2, renderLanes2) {\n        pushHostContext(workInProgress2);\n        if (current2 === null) {\n          tryToClaimNextHydratableInstance(workInProgress2);\n        }\n        var type = workInProgress2.type;\n        var nextProps = workInProgress2.pendingProps;\n        var prevProps = current2 !== null ? current2.memoizedProps : null;\n        var nextChildren = nextProps.children;\n        var isDirectTextChild = shouldSetTextContent(type, nextProps);\n        if (isDirectTextChild) {\n          nextChildren = null;\n        } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {\n          workInProgress2.flags |= ContentReset;\n        }\n        markRef$1(current2, workInProgress2);\n        reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function updateHostText$1(current2, workInProgress2) {\n        if (current2 === null) {\n          tryToClaimNextHydratableInstance(workInProgress2);\n        }\n        return null;\n      }\n      function mountLazyComponent(_current, workInProgress2, elementType, renderLanes2) {\n        if (_current !== null) {\n          _current.alternate = null;\n          workInProgress2.alternate = null;\n          workInProgress2.flags |= Placement;\n        }\n        var props = workInProgress2.pendingProps;\n        var lazyComponent = elementType;\n        var payload = lazyComponent._payload;\n        var init = lazyComponent._init;\n        var Component = init(payload);\n        workInProgress2.type = Component;\n        var resolvedTag = workInProgress2.tag = resolveLazyComponentTag(Component);\n        var resolvedProps = resolveDefaultProps(Component, props);\n        var child;\n        switch (resolvedTag) {\n          case FunctionComponent: {\n            {\n              validateFunctionComponentInDev(workInProgress2, Component);\n              workInProgress2.type = Component = resolveFunctionForHotReloading(Component);\n            }\n            child = updateFunctionComponent(null, workInProgress2, Component, resolvedProps, renderLanes2);\n            return child;\n          }\n          case ClassComponent: {\n            {\n              workInProgress2.type = Component = resolveClassForHotReloading(Component);\n            }\n            child = updateClassComponent(null, workInProgress2, Component, resolvedProps, renderLanes2);\n            return child;\n          }\n          case ForwardRef: {\n            {\n              workInProgress2.type = Component = resolveForwardRefForHotReloading(Component);\n            }\n            child = updateForwardRef(null, workInProgress2, Component, resolvedProps, renderLanes2);\n            return child;\n          }\n          case MemoComponent: {\n            {\n              if (workInProgress2.type !== workInProgress2.elementType) {\n                var outerPropTypes = Component.propTypes;\n                if (outerPropTypes) {\n                  checkPropTypes(\n                    outerPropTypes,\n                    resolvedProps,\n                    // Resolved for outer only\n                    \"prop\",\n                    getComponentNameFromType(Component)\n                  );\n                }\n              }\n            }\n            child = updateMemoComponent(\n              null,\n              workInProgress2,\n              Component,\n              resolveDefaultProps(Component.type, resolvedProps),\n              // The inner type can have defaults too\n              renderLanes2\n            );\n            return child;\n          }\n        }\n        var hint = \"\";\n        {\n          if (Component !== null && typeof Component === \"object\" && Component.$$typeof === REACT_LAZY_TYPE) {\n            hint = \" Did you wrap a component in React.lazy() more than once?\";\n          }\n        }\n        throw new Error(\"Element type is invalid. Received a promise that resolves to: \" + Component + \". \" + (\"Lazy element type must resolve to a class or function.\" + hint));\n      }\n      function mountIncompleteClassComponent(_current, workInProgress2, Component, nextProps, renderLanes2) {\n        if (_current !== null) {\n          _current.alternate = null;\n          workInProgress2.alternate = null;\n          workInProgress2.flags |= Placement;\n        }\n        workInProgress2.tag = ClassComponent;\n        var hasContext;\n        if (isContextProvider(Component)) {\n          hasContext = true;\n          pushContextProvider(workInProgress2);\n        } else {\n          hasContext = false;\n        }\n        prepareToReadContext(workInProgress2, renderLanes2);\n        constructClassInstance(workInProgress2, Component, nextProps);\n        mountClassInstance(workInProgress2, Component, nextProps, renderLanes2);\n        return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2);\n      }\n      function mountIndeterminateComponent(_current, workInProgress2, Component, renderLanes2) {\n        if (_current !== null) {\n          _current.alternate = null;\n          workInProgress2.alternate = null;\n          workInProgress2.flags |= Placement;\n        }\n        var props = workInProgress2.pendingProps;\n        var context2;\n        {\n          var unmaskedContext = getUnmaskedContext(workInProgress2, Component, false);\n          context2 = getMaskedContext(workInProgress2, unmaskedContext);\n        }\n        prepareToReadContext(workInProgress2, renderLanes2);\n        var value;\n        var hasId;\n        {\n          markComponentRenderStarted(workInProgress2);\n        }\n        {\n          if (Component.prototype && typeof Component.prototype.render === \"function\") {\n            var componentName = getComponentNameFromType(Component) || \"Unknown\";\n            if (!didWarnAboutBadClass[componentName]) {\n              error2(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. This is likely to cause errors. Change %s to extend React.Component instead.\", componentName, componentName);\n              didWarnAboutBadClass[componentName] = true;\n            }\n          }\n          if (workInProgress2.mode & StrictLegacyMode) {\n            ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress2, null);\n          }\n          setIsRendering(true);\n          ReactCurrentOwner$1.current = workInProgress2;\n          value = renderWithHooks(null, workInProgress2, Component, props, context2, renderLanes2);\n          hasId = checkDidRenderIdHook();\n          setIsRendering(false);\n        }\n        {\n          markComponentRenderStopped();\n        }\n        workInProgress2.flags |= PerformedWork;\n        {\n          if (typeof value === \"object\" && value !== null && typeof value.render === \"function\" && value.$$typeof === void 0) {\n            var _componentName = getComponentNameFromType(Component) || \"Unknown\";\n            if (!didWarnAboutModulePatternComponent[_componentName]) {\n              error2(\"The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.\", _componentName, _componentName, _componentName);\n              didWarnAboutModulePatternComponent[_componentName] = true;\n            }\n          }\n        }\n        if (\n          // Run these checks in production only if the flag is off.\n          // Eventually we'll delete this branch altogether.\n          typeof value === \"object\" && value !== null && typeof value.render === \"function\" && value.$$typeof === void 0\n        ) {\n          {\n            var _componentName2 = getComponentNameFromType(Component) || \"Unknown\";\n            if (!didWarnAboutModulePatternComponent[_componentName2]) {\n              error2(\"The <%s /> component appears to be a function component that returns a class instance. Change %s to a class that extends React.Component instead. If you can't use a class try assigning the prototype on the function as a workaround. `%s.prototype = React.Component.prototype`. Don't use an arrow function since it cannot be called with `new` by React.\", _componentName2, _componentName2, _componentName2);\n              didWarnAboutModulePatternComponent[_componentName2] = true;\n            }\n          }\n          workInProgress2.tag = ClassComponent;\n          workInProgress2.memoizedState = null;\n          workInProgress2.updateQueue = null;\n          var hasContext = false;\n          if (isContextProvider(Component)) {\n            hasContext = true;\n            pushContextProvider(workInProgress2);\n          } else {\n            hasContext = false;\n          }\n          workInProgress2.memoizedState = value.state !== null && value.state !== void 0 ? value.state : null;\n          initializeUpdateQueue(workInProgress2);\n          adoptClassInstance(workInProgress2, value);\n          mountClassInstance(workInProgress2, Component, props, renderLanes2);\n          return finishClassComponent(null, workInProgress2, Component, true, hasContext, renderLanes2);\n        } else {\n          workInProgress2.tag = FunctionComponent;\n          {\n            if (workInProgress2.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n              try {\n                value = renderWithHooks(null, workInProgress2, Component, props, context2, renderLanes2);\n                hasId = checkDidRenderIdHook();\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n          }\n          if (getIsHydrating() && hasId) {\n            pushMaterializedTreeId(workInProgress2);\n          }\n          reconcileChildren(null, workInProgress2, value, renderLanes2);\n          {\n            validateFunctionComponentInDev(workInProgress2, Component);\n          }\n          return workInProgress2.child;\n        }\n      }\n      function validateFunctionComponentInDev(workInProgress2, Component) {\n        {\n          if (Component) {\n            if (Component.childContextTypes) {\n              error2(\"%s(...): childContextTypes cannot be defined on a function component.\", Component.displayName || Component.name || \"Component\");\n            }\n          }\n          if (workInProgress2.ref !== null) {\n            var info = \"\";\n            var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n            if (ownerName) {\n              info += \"\\n\\nCheck the render method of `\" + ownerName + \"`.\";\n            }\n            var warningKey = ownerName || \"\";\n            var debugSource = workInProgress2._debugSource;\n            if (debugSource) {\n              warningKey = debugSource.fileName + \":\" + debugSource.lineNumber;\n            }\n            if (!didWarnAboutFunctionRefs[warningKey]) {\n              didWarnAboutFunctionRefs[warningKey] = true;\n              error2(\"Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?%s\", info);\n            }\n          }\n          if (typeof Component.getDerivedStateFromProps === \"function\") {\n            var _componentName3 = getComponentNameFromType(Component) || \"Unknown\";\n            if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n              error2(\"%s: Function components do not support getDerivedStateFromProps.\", _componentName3);\n              didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n            }\n          }\n          if (typeof Component.contextType === \"object\" && Component.contextType !== null) {\n            var _componentName4 = getComponentNameFromType(Component) || \"Unknown\";\n            if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n              error2(\"%s: Function components do not support contextType.\", _componentName4);\n              didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n            }\n          }\n        }\n      }\n      var SUSPENDED_MARKER = {\n        dehydrated: null,\n        treeContext: null,\n        retryLane: NoLane\n      };\n      function mountSuspenseOffscreenState(renderLanes2) {\n        return {\n          baseLanes: renderLanes2,\n          cachePool: getSuspendedCache()\n        };\n      }\n      function updateSuspenseOffscreenState(prevOffscreenState, renderLanes2) {\n        var cachePool = null;\n        return {\n          baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes2),\n          cachePool\n        };\n      }\n      function shouldRemainOnFallback(suspenseContext, current2, workInProgress2, renderLanes2) {\n        if (current2 !== null) {\n          var suspenseState = current2.memoizedState;\n          if (suspenseState === null) {\n            return false;\n          }\n        }\n        return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n      }\n      function getRemainingWorkInPrimaryTree(current2, renderLanes2) {\n        return removeLanes(current2.childLanes, renderLanes2);\n      }\n      function updateSuspenseComponent(current2, workInProgress2, renderLanes2) {\n        var nextProps = workInProgress2.pendingProps;\n        {\n          if (shouldSuspend(workInProgress2)) {\n            workInProgress2.flags |= DidCapture;\n          }\n        }\n        var suspenseContext = suspenseStackCursor.current;\n        var showFallback = false;\n        var didSuspend2 = (workInProgress2.flags & DidCapture) !== NoFlags;\n        if (didSuspend2 || shouldRemainOnFallback(suspenseContext, current2)) {\n          showFallback = true;\n          workInProgress2.flags &= -129;\n        } else {\n          if (current2 === null || current2.memoizedState !== null) {\n            {\n              suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);\n            }\n          }\n        }\n        suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n        pushSuspenseContext(workInProgress2, suspenseContext);\n        if (current2 === null) {\n          tryToClaimNextHydratableInstance(workInProgress2);\n          {\n            var suspenseState = workInProgress2.memoizedState;\n            if (suspenseState !== null) {\n              var dehydrated = suspenseState.dehydrated;\n              if (dehydrated !== null) {\n                return mountDehydratedSuspenseComponent(workInProgress2, dehydrated);\n              }\n            }\n          }\n          var nextPrimaryChildren = nextProps.children;\n          var nextFallbackChildren = nextProps.fallback;\n          if (showFallback) {\n            var fallbackFragment = mountSuspenseFallbackChildren(workInProgress2, nextPrimaryChildren, nextFallbackChildren, renderLanes2);\n            var primaryChildFragment = workInProgress2.child;\n            primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes2);\n            workInProgress2.memoizedState = SUSPENDED_MARKER;\n            return fallbackFragment;\n          } else {\n            return mountSuspensePrimaryChildren(workInProgress2, nextPrimaryChildren);\n          }\n        } else {\n          var prevState = current2.memoizedState;\n          if (prevState !== null) {\n            {\n              var _dehydrated = prevState.dehydrated;\n              if (_dehydrated !== null) {\n                if (!didSuspend2) {\n                  return updateDehydratedSuspenseComponent(current2, workInProgress2, _dehydrated, prevState, renderLanes2);\n                } else if (workInProgress2.flags & ForceClientRender) {\n                  workInProgress2.flags &= -257;\n                  return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, new Error(\"There was an error while hydrating this Suspense boundary. Switched to client rendering.\"));\n                } else if (workInProgress2.memoizedState !== null) {\n                  workInProgress2.child = current2.child;\n                  workInProgress2.flags |= DidCapture;\n                  return null;\n                } else {\n                  var _nextPrimaryChildren = nextProps.children;\n                  var _nextFallbackChildren = nextProps.fallback;\n                  var fallbackChildFragment = mountSuspenseFallbackAfterRetryWithoutHydrating(current2, workInProgress2, _nextPrimaryChildren, _nextFallbackChildren, renderLanes2);\n                  var _primaryChildFragment2 = workInProgress2.child;\n                  _primaryChildFragment2.memoizedState = mountSuspenseOffscreenState(renderLanes2);\n                  workInProgress2.memoizedState = SUSPENDED_MARKER;\n                  return fallbackChildFragment;\n                }\n              }\n            }\n            if (showFallback) {\n              var _nextFallbackChildren2 = nextProps.fallback;\n              var _nextPrimaryChildren2 = nextProps.children;\n              var _fallbackChildFragment = updateSuspenseFallbackChildren(current2, workInProgress2, _nextPrimaryChildren2, _nextFallbackChildren2, renderLanes2);\n              var _primaryChildFragment3 = workInProgress2.child;\n              var prevOffscreenState = current2.child.memoizedState;\n              _primaryChildFragment3.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes2) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes2);\n              _primaryChildFragment3.childLanes = getRemainingWorkInPrimaryTree(current2, renderLanes2);\n              workInProgress2.memoizedState = SUSPENDED_MARKER;\n              return _fallbackChildFragment;\n            } else {\n              var _nextPrimaryChildren3 = nextProps.children;\n              var _primaryChildFragment4 = updateSuspensePrimaryChildren(current2, workInProgress2, _nextPrimaryChildren3, renderLanes2);\n              workInProgress2.memoizedState = null;\n              return _primaryChildFragment4;\n            }\n          } else {\n            if (showFallback) {\n              var _nextFallbackChildren3 = nextProps.fallback;\n              var _nextPrimaryChildren4 = nextProps.children;\n              var _fallbackChildFragment2 = updateSuspenseFallbackChildren(current2, workInProgress2, _nextPrimaryChildren4, _nextFallbackChildren3, renderLanes2);\n              var _primaryChildFragment5 = workInProgress2.child;\n              var _prevOffscreenState = current2.child.memoizedState;\n              _primaryChildFragment5.memoizedState = _prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes2) : updateSuspenseOffscreenState(_prevOffscreenState, renderLanes2);\n              _primaryChildFragment5.childLanes = getRemainingWorkInPrimaryTree(current2, renderLanes2);\n              workInProgress2.memoizedState = SUSPENDED_MARKER;\n              return _fallbackChildFragment2;\n            } else {\n              var _nextPrimaryChildren5 = nextProps.children;\n              var _primaryChildFragment6 = updateSuspensePrimaryChildren(current2, workInProgress2, _nextPrimaryChildren5, renderLanes2);\n              workInProgress2.memoizedState = null;\n              return _primaryChildFragment6;\n            }\n          }\n        }\n      }\n      function mountSuspensePrimaryChildren(workInProgress2, primaryChildren, renderLanes2) {\n        var mode = workInProgress2.mode;\n        var primaryChildProps = {\n          mode: \"visible\",\n          children: primaryChildren\n        };\n        var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n        primaryChildFragment.return = workInProgress2;\n        workInProgress2.child = primaryChildFragment;\n        return primaryChildFragment;\n      }\n      function mountSuspenseFallbackChildren(workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {\n        var mode = workInProgress2.mode;\n        var progressedPrimaryFragment = workInProgress2.child;\n        var primaryChildProps = {\n          mode: \"hidden\",\n          children: primaryChildren\n        };\n        var primaryChildFragment;\n        var fallbackChildFragment;\n        if ((mode & ConcurrentMode) === NoMode && progressedPrimaryFragment !== null) {\n          primaryChildFragment = progressedPrimaryFragment;\n          primaryChildFragment.childLanes = NoLanes;\n          primaryChildFragment.pendingProps = primaryChildProps;\n          if (workInProgress2.mode & ProfileMode) {\n            primaryChildFragment.actualDuration = 0;\n            primaryChildFragment.actualStartTime = -1;\n            primaryChildFragment.selfBaseDuration = 0;\n            primaryChildFragment.treeBaseDuration = 0;\n          }\n          fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);\n        } else {\n          primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n          fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);\n        }\n        primaryChildFragment.return = workInProgress2;\n        fallbackChildFragment.return = workInProgress2;\n        primaryChildFragment.sibling = fallbackChildFragment;\n        workInProgress2.child = primaryChildFragment;\n        return fallbackChildFragment;\n      }\n      function mountWorkInProgressOffscreenFiber(offscreenProps, mode, renderLanes2) {\n        return createFiberFromOffscreen(offscreenProps, mode, NoLanes, null);\n      }\n      function updateWorkInProgressOffscreenFiber(current2, offscreenProps) {\n        return createWorkInProgress(current2, offscreenProps);\n      }\n      function updateSuspensePrimaryChildren(current2, workInProgress2, primaryChildren, renderLanes2) {\n        var currentPrimaryChildFragment = current2.child;\n        var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n        var primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {\n          mode: \"visible\",\n          children: primaryChildren\n        });\n        if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n          primaryChildFragment.lanes = renderLanes2;\n        }\n        primaryChildFragment.return = workInProgress2;\n        primaryChildFragment.sibling = null;\n        if (currentFallbackChildFragment !== null) {\n          var deletions = workInProgress2.deletions;\n          if (deletions === null) {\n            workInProgress2.deletions = [currentFallbackChildFragment];\n            workInProgress2.flags |= ChildDeletion;\n          } else {\n            deletions.push(currentFallbackChildFragment);\n          }\n        }\n        workInProgress2.child = primaryChildFragment;\n        return primaryChildFragment;\n      }\n      function updateSuspenseFallbackChildren(current2, workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {\n        var mode = workInProgress2.mode;\n        var currentPrimaryChildFragment = current2.child;\n        var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n        var primaryChildProps = {\n          mode: \"hidden\",\n          children: primaryChildren\n        };\n        var primaryChildFragment;\n        if (\n          // In legacy mode, we commit the primary tree as if it successfully\n          // completed, even though it's in an inconsistent state.\n          (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was\n          // already cloned. In legacy mode, the only case where this isn't true is\n          // when DevTools forces us to display a fallback; we skip the first render\n          // pass entirely and go straight to rendering the fallback. (In Concurrent\n          // Mode, SuspenseList can also trigger this scenario, but this is a legacy-\n          // only codepath.)\n          workInProgress2.child !== currentPrimaryChildFragment\n        ) {\n          var progressedPrimaryFragment = workInProgress2.child;\n          primaryChildFragment = progressedPrimaryFragment;\n          primaryChildFragment.childLanes = NoLanes;\n          primaryChildFragment.pendingProps = primaryChildProps;\n          if (workInProgress2.mode & ProfileMode) {\n            primaryChildFragment.actualDuration = 0;\n            primaryChildFragment.actualStartTime = -1;\n            primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;\n            primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;\n          }\n          workInProgress2.deletions = null;\n        } else {\n          primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps);\n          primaryChildFragment.subtreeFlags = currentPrimaryChildFragment.subtreeFlags & StaticMask;\n        }\n        var fallbackChildFragment;\n        if (currentFallbackChildFragment !== null) {\n          fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);\n        } else {\n          fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes2, null);\n          fallbackChildFragment.flags |= Placement;\n        }\n        fallbackChildFragment.return = workInProgress2;\n        primaryChildFragment.return = workInProgress2;\n        primaryChildFragment.sibling = fallbackChildFragment;\n        workInProgress2.child = primaryChildFragment;\n        return fallbackChildFragment;\n      }\n      function retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, recoverableError) {\n        if (recoverableError !== null) {\n          queueHydrationError(recoverableError);\n        }\n        reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);\n        var nextProps = workInProgress2.pendingProps;\n        var primaryChildren = nextProps.children;\n        var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress2, primaryChildren);\n        primaryChildFragment.flags |= Placement;\n        workInProgress2.memoizedState = null;\n        return primaryChildFragment;\n      }\n      function mountSuspenseFallbackAfterRetryWithoutHydrating(current2, workInProgress2, primaryChildren, fallbackChildren, renderLanes2) {\n        var fiberMode = workInProgress2.mode;\n        var primaryChildProps = {\n          mode: \"visible\",\n          children: primaryChildren\n        };\n        var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, fiberMode);\n        var fallbackChildFragment = createFiberFromFragment(fallbackChildren, fiberMode, renderLanes2, null);\n        fallbackChildFragment.flags |= Placement;\n        primaryChildFragment.return = workInProgress2;\n        fallbackChildFragment.return = workInProgress2;\n        primaryChildFragment.sibling = fallbackChildFragment;\n        workInProgress2.child = primaryChildFragment;\n        if ((workInProgress2.mode & ConcurrentMode) !== NoMode) {\n          reconcileChildFibers(workInProgress2, current2.child, null, renderLanes2);\n        }\n        return fallbackChildFragment;\n      }\n      function mountDehydratedSuspenseComponent(workInProgress2, suspenseInstance, renderLanes2) {\n        if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n          {\n            error2(\"Cannot hydrate Suspense in legacy mode. Switch from ReactDOM.hydrate(element, container) to ReactDOMClient.hydrateRoot(container, <App />).render(element) or remove the Suspense components from the server rendered components.\");\n          }\n          workInProgress2.lanes = laneToLanes(SyncLane);\n        } else if (isSuspenseInstanceFallback(suspenseInstance)) {\n          workInProgress2.lanes = laneToLanes(DefaultHydrationLane);\n        } else {\n          workInProgress2.lanes = laneToLanes(OffscreenLane);\n        }\n        return null;\n      }\n      function updateDehydratedSuspenseComponent(current2, workInProgress2, suspenseInstance, suspenseState, renderLanes2) {\n        warnIfHydrating();\n        if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n          return retrySuspenseComponentWithoutHydrating(\n            current2,\n            workInProgress2,\n            renderLanes2,\n            // TODO: When we delete legacy mode, we should make this error argument\n            // required — every concurrent mode path that causes hydration to\n            // de-opt to client rendering should have an error message.\n            null\n          );\n        }\n        if (isSuspenseInstanceFallback(suspenseInstance)) {\n          return retrySuspenseComponentWithoutHydrating(\n            current2,\n            workInProgress2,\n            renderLanes2,\n            // TODO: The server should serialize the error message so we can log it\n            // here on the client. Or, in production, a hash/id that corresponds to\n            // the error.\n            new Error(\"The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering.\")\n          );\n        }\n        var hasContextChanged2 = includesSomeLane(renderLanes2, current2.childLanes);\n        if (didReceiveUpdate || hasContextChanged2) {\n          var root = getWorkInProgressRoot();\n          if (root !== null) {\n            var attemptHydrationAtLane = getBumpedLaneForHydration(root, renderLanes2);\n            if (attemptHydrationAtLane !== NoLane && attemptHydrationAtLane !== suspenseState.retryLane) {\n              suspenseState.retryLane = attemptHydrationAtLane;\n              var eventTime = NoTimestamp;\n              scheduleUpdateOnFiber(current2, attemptHydrationAtLane, eventTime);\n            }\n          }\n          renderDidSuspendDelayIfPossible();\n          return retrySuspenseComponentWithoutHydrating(current2, workInProgress2, renderLanes2, new Error(\"This Suspense boundary received an update before it finished hydrating. This caused the boundary to switch to client rendering. The usual way to fix this is to wrap the original update in startTransition.\"));\n        } else if (isSuspenseInstancePending(suspenseInstance)) {\n          workInProgress2.flags |= DidCapture;\n          workInProgress2.child = current2.child;\n          var retry = retryDehydratedSuspenseBoundary.bind(null, current2);\n          registerSuspenseInstanceRetry(suspenseInstance, retry);\n          return null;\n        } else {\n          reenterHydrationStateFromDehydratedSuspenseInstance(workInProgress2, suspenseInstance, suspenseState.treeContext);\n          var nextProps = workInProgress2.pendingProps;\n          var primaryChildren = nextProps.children;\n          var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress2, primaryChildren);\n          primaryChildFragment.flags |= Hydrating;\n          return primaryChildFragment;\n        }\n      }\n      function scheduleSuspenseWorkOnFiber(fiber, renderLanes2, propagationRoot) {\n        fiber.lanes = mergeLanes(fiber.lanes, renderLanes2);\n        var alternate = fiber.alternate;\n        if (alternate !== null) {\n          alternate.lanes = mergeLanes(alternate.lanes, renderLanes2);\n        }\n        scheduleContextWorkOnParentPath(fiber.return, renderLanes2, propagationRoot);\n      }\n      function propagateSuspenseContextChange(workInProgress2, firstChild, renderLanes2) {\n        var node = firstChild;\n        while (node !== null) {\n          if (node.tag === SuspenseComponent) {\n            var state = node.memoizedState;\n            if (state !== null) {\n              scheduleSuspenseWorkOnFiber(node, renderLanes2, workInProgress2);\n            }\n          } else if (node.tag === SuspenseListComponent) {\n            scheduleSuspenseWorkOnFiber(node, renderLanes2, workInProgress2);\n          } else if (node.child !== null) {\n            node.child.return = node;\n            node = node.child;\n            continue;\n          }\n          if (node === workInProgress2) {\n            return;\n          }\n          while (node.sibling === null) {\n            if (node.return === null || node.return === workInProgress2) {\n              return;\n            }\n            node = node.return;\n          }\n          node.sibling.return = node.return;\n          node = node.sibling;\n        }\n      }\n      function findLastContentRow(firstChild) {\n        var row = firstChild;\n        var lastContentRow = null;\n        while (row !== null) {\n          var currentRow = row.alternate;\n          if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n            lastContentRow = row;\n          }\n          row = row.sibling;\n        }\n        return lastContentRow;\n      }\n      function validateRevealOrder(revealOrder) {\n        {\n          if (revealOrder !== void 0 && revealOrder !== \"forwards\" && revealOrder !== \"backwards\" && revealOrder !== \"together\" && !didWarnAboutRevealOrder[revealOrder]) {\n            didWarnAboutRevealOrder[revealOrder] = true;\n            if (typeof revealOrder === \"string\") {\n              switch (revealOrder.toLowerCase()) {\n                case \"together\":\n                case \"forwards\":\n                case \"backwards\": {\n                  error2('\"%s\" is not a valid value for revealOrder on <SuspenseList />. Use lowercase \"%s\" instead.', revealOrder, revealOrder.toLowerCase());\n                  break;\n                }\n                case \"forward\":\n                case \"backward\": {\n                  error2('\"%s\" is not a valid value for revealOrder on <SuspenseList />. React uses the -s suffix in the spelling. Use \"%ss\" instead.', revealOrder, revealOrder.toLowerCase());\n                  break;\n                }\n                default:\n                  error2('\"%s\" is not a supported revealOrder on <SuspenseList />. Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n                  break;\n              }\n            } else {\n              error2('%s is not a supported value for revealOrder on <SuspenseList />. Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n            }\n          }\n        }\n      }\n      function validateTailOptions(tailMode, revealOrder) {\n        {\n          if (tailMode !== void 0 && !didWarnAboutTailOptions[tailMode]) {\n            if (tailMode !== \"collapsed\" && tailMode !== \"hidden\") {\n              didWarnAboutTailOptions[tailMode] = true;\n              error2('\"%s\" is not a supported value for tail on <SuspenseList />. Did you mean \"collapsed\" or \"hidden\"?', tailMode);\n            } else if (revealOrder !== \"forwards\" && revealOrder !== \"backwards\") {\n              didWarnAboutTailOptions[tailMode] = true;\n              error2('<SuspenseList tail=\"%s\" /> is only valid if revealOrder is \"forwards\" or \"backwards\". Did you mean to specify revealOrder=\"forwards\"?', tailMode);\n            }\n          }\n        }\n      }\n      function validateSuspenseListNestedChild(childSlot, index2) {\n        {\n          var isAnArray = isArray2(childSlot);\n          var isIterable = !isAnArray && typeof getIteratorFn(childSlot) === \"function\";\n          if (isAnArray || isIterable) {\n            var type = isAnArray ? \"array\" : \"iterable\";\n            error2(\"A nested %s was passed to row #%s in <SuspenseList />. Wrap it in an additional SuspenseList to configure its revealOrder: <SuspenseList revealOrder=...> ... <SuspenseList revealOrder=...>{%s}</SuspenseList> ... </SuspenseList>\", type, index2, type);\n            return false;\n          }\n        }\n        return true;\n      }\n      function validateSuspenseListChildren(children, revealOrder) {\n        {\n          if ((revealOrder === \"forwards\" || revealOrder === \"backwards\") && children !== void 0 && children !== null && children !== false) {\n            if (isArray2(children)) {\n              for (var i2 = 0; i2 < children.length; i2++) {\n                if (!validateSuspenseListNestedChild(children[i2], i2)) {\n                  return;\n                }\n              }\n            } else {\n              var iteratorFn = getIteratorFn(children);\n              if (typeof iteratorFn === \"function\") {\n                var childrenIterator = iteratorFn.call(children);\n                if (childrenIterator) {\n                  var step = childrenIterator.next();\n                  var _i = 0;\n                  for (; !step.done; step = childrenIterator.next()) {\n                    if (!validateSuspenseListNestedChild(step.value, _i)) {\n                      return;\n                    }\n                    _i++;\n                  }\n                }\n              } else {\n                error2('A single row was passed to a <SuspenseList revealOrder=\"%s\" />. This is not useful since it needs multiple rows. Did you mean to pass multiple children or an array?', revealOrder);\n              }\n            }\n          }\n        }\n      }\n      function initSuspenseListRenderState(workInProgress2, isBackwards, tail, lastContentRow, tailMode) {\n        var renderState = workInProgress2.memoizedState;\n        if (renderState === null) {\n          workInProgress2.memoizedState = {\n            isBackwards,\n            rendering: null,\n            renderingStartTime: 0,\n            last: lastContentRow,\n            tail,\n            tailMode\n          };\n        } else {\n          renderState.isBackwards = isBackwards;\n          renderState.rendering = null;\n          renderState.renderingStartTime = 0;\n          renderState.last = lastContentRow;\n          renderState.tail = tail;\n          renderState.tailMode = tailMode;\n        }\n      }\n      function updateSuspenseListComponent(current2, workInProgress2, renderLanes2) {\n        var nextProps = workInProgress2.pendingProps;\n        var revealOrder = nextProps.revealOrder;\n        var tailMode = nextProps.tail;\n        var newChildren = nextProps.children;\n        validateRevealOrder(revealOrder);\n        validateTailOptions(tailMode, revealOrder);\n        validateSuspenseListChildren(newChildren, revealOrder);\n        reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);\n        var suspenseContext = suspenseStackCursor.current;\n        var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n        if (shouldForceFallback) {\n          suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n          workInProgress2.flags |= DidCapture;\n        } else {\n          var didSuspendBefore = current2 !== null && (current2.flags & DidCapture) !== NoFlags;\n          if (didSuspendBefore) {\n            propagateSuspenseContextChange(workInProgress2, workInProgress2.child, renderLanes2);\n          }\n          suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n        }\n        pushSuspenseContext(workInProgress2, suspenseContext);\n        if ((workInProgress2.mode & ConcurrentMode) === NoMode) {\n          workInProgress2.memoizedState = null;\n        } else {\n          switch (revealOrder) {\n            case \"forwards\": {\n              var lastContentRow = findLastContentRow(workInProgress2.child);\n              var tail;\n              if (lastContentRow === null) {\n                tail = workInProgress2.child;\n                workInProgress2.child = null;\n              } else {\n                tail = lastContentRow.sibling;\n                lastContentRow.sibling = null;\n              }\n              initSuspenseListRenderState(\n                workInProgress2,\n                false,\n                // isBackwards\n                tail,\n                lastContentRow,\n                tailMode\n              );\n              break;\n            }\n            case \"backwards\": {\n              var _tail = null;\n              var row = workInProgress2.child;\n              workInProgress2.child = null;\n              while (row !== null) {\n                var currentRow = row.alternate;\n                if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n                  workInProgress2.child = row;\n                  break;\n                }\n                var nextRow = row.sibling;\n                row.sibling = _tail;\n                _tail = row;\n                row = nextRow;\n              }\n              initSuspenseListRenderState(\n                workInProgress2,\n                true,\n                // isBackwards\n                _tail,\n                null,\n                // last\n                tailMode\n              );\n              break;\n            }\n            case \"together\": {\n              initSuspenseListRenderState(\n                workInProgress2,\n                false,\n                // isBackwards\n                null,\n                // tail\n                null,\n                // last\n                void 0\n              );\n              break;\n            }\n            default: {\n              workInProgress2.memoizedState = null;\n            }\n          }\n        }\n        return workInProgress2.child;\n      }\n      function updatePortalComponent(current2, workInProgress2, renderLanes2) {\n        pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);\n        var nextChildren = workInProgress2.pendingProps;\n        if (current2 === null) {\n          workInProgress2.child = reconcileChildFibers(workInProgress2, null, nextChildren, renderLanes2);\n        } else {\n          reconcileChildren(current2, workInProgress2, nextChildren, renderLanes2);\n        }\n        return workInProgress2.child;\n      }\n      var hasWarnedAboutUsingNoValuePropOnContextProvider = false;\n      function updateContextProvider(current2, workInProgress2, renderLanes2) {\n        var providerType = workInProgress2.type;\n        var context2 = providerType._context;\n        var newProps = workInProgress2.pendingProps;\n        var oldProps = workInProgress2.memoizedProps;\n        var newValue = newProps.value;\n        {\n          if (!(\"value\" in newProps)) {\n            if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {\n              hasWarnedAboutUsingNoValuePropOnContextProvider = true;\n              error2(\"The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?\");\n            }\n          }\n          var providerPropTypes = workInProgress2.type.propTypes;\n          if (providerPropTypes) {\n            checkPropTypes(providerPropTypes, newProps, \"prop\", \"Context.Provider\");\n          }\n        }\n        pushProvider(workInProgress2, context2, newValue);\n        {\n          if (oldProps !== null) {\n            var oldValue = oldProps.value;\n            if (objectIs(oldValue, newValue)) {\n              if (oldProps.children === newProps.children && !hasContextChanged()) {\n                return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n              }\n            } else {\n              propagateContextChange(workInProgress2, context2, renderLanes2);\n            }\n          }\n        }\n        var newChildren = newProps.children;\n        reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      var hasWarnedAboutUsingContextAsConsumer = false;\n      function updateContextConsumer(current2, workInProgress2, renderLanes2) {\n        var context2 = workInProgress2.type;\n        {\n          if (context2._context === void 0) {\n            if (context2 !== context2.Consumer) {\n              if (!hasWarnedAboutUsingContextAsConsumer) {\n                hasWarnedAboutUsingContextAsConsumer = true;\n                error2(\"Rendering <Context> directly is not supported and will be removed in a future major release. Did you mean to render <Context.Consumer> instead?\");\n              }\n            }\n          } else {\n            context2 = context2._context;\n          }\n        }\n        var newProps = workInProgress2.pendingProps;\n        var render = newProps.children;\n        {\n          if (typeof render !== \"function\") {\n            error2(\"A context consumer was rendered with multiple children, or a child that isn't a function. A context consumer expects a single child that is a function. If you did pass a function, make sure there is no trailing or leading whitespace around it.\");\n          }\n        }\n        prepareToReadContext(workInProgress2, renderLanes2);\n        var newValue = readContext(context2);\n        {\n          markComponentRenderStarted(workInProgress2);\n        }\n        var newChildren;\n        {\n          ReactCurrentOwner$1.current = workInProgress2;\n          setIsRendering(true);\n          newChildren = render(newValue);\n          setIsRendering(false);\n        }\n        {\n          markComponentRenderStopped();\n        }\n        workInProgress2.flags |= PerformedWork;\n        reconcileChildren(current2, workInProgress2, newChildren, renderLanes2);\n        return workInProgress2.child;\n      }\n      function markWorkInProgressReceivedUpdate() {\n        didReceiveUpdate = true;\n      }\n      function bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2) {\n        if (current2 !== null) {\n          workInProgress2.dependencies = current2.dependencies;\n        }\n        {\n          stopProfilerTimerIfRunning();\n        }\n        markSkippedUpdateLanes(workInProgress2.lanes);\n        if (!includesSomeLane(renderLanes2, workInProgress2.childLanes)) {\n          {\n            return null;\n          }\n        }\n        cloneChildFibers(current2, workInProgress2);\n        return workInProgress2.child;\n      }\n      function remountFiber(current2, oldWorkInProgress, newWorkInProgress) {\n        {\n          var returnFiber = oldWorkInProgress.return;\n          if (returnFiber === null) {\n            throw new Error(\"Cannot swap the root fiber.\");\n          }\n          current2.alternate = null;\n          oldWorkInProgress.alternate = null;\n          newWorkInProgress.index = oldWorkInProgress.index;\n          newWorkInProgress.sibling = oldWorkInProgress.sibling;\n          newWorkInProgress.return = oldWorkInProgress.return;\n          newWorkInProgress.ref = oldWorkInProgress.ref;\n          if (oldWorkInProgress === returnFiber.child) {\n            returnFiber.child = newWorkInProgress;\n          } else {\n            var prevSibling = returnFiber.child;\n            if (prevSibling === null) {\n              throw new Error(\"Expected parent to have a child.\");\n            }\n            while (prevSibling.sibling !== oldWorkInProgress) {\n              prevSibling = prevSibling.sibling;\n              if (prevSibling === null) {\n                throw new Error(\"Expected to find the previous sibling.\");\n              }\n            }\n            prevSibling.sibling = newWorkInProgress;\n          }\n          var deletions = returnFiber.deletions;\n          if (deletions === null) {\n            returnFiber.deletions = [current2];\n            returnFiber.flags |= ChildDeletion;\n          } else {\n            deletions.push(current2);\n          }\n          newWorkInProgress.flags |= Placement;\n          return newWorkInProgress;\n        }\n      }\n      function checkScheduledUpdateOrContext(current2, renderLanes2) {\n        var updateLanes = current2.lanes;\n        if (includesSomeLane(updateLanes, renderLanes2)) {\n          return true;\n        }\n        return false;\n      }\n      function attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2) {\n        switch (workInProgress2.tag) {\n          case HostRoot:\n            pushHostRootContext(workInProgress2);\n            workInProgress2.stateNode;\n            resetHydrationState();\n            break;\n          case HostComponent:\n            pushHostContext(workInProgress2);\n            break;\n          case ClassComponent: {\n            var Component = workInProgress2.type;\n            if (isContextProvider(Component)) {\n              pushContextProvider(workInProgress2);\n            }\n            break;\n          }\n          case HostPortal:\n            pushHostContainer(workInProgress2, workInProgress2.stateNode.containerInfo);\n            break;\n          case ContextProvider: {\n            var newValue = workInProgress2.memoizedProps.value;\n            var context2 = workInProgress2.type._context;\n            pushProvider(workInProgress2, context2, newValue);\n            break;\n          }\n          case Profiler:\n            {\n              var hasChildWork = includesSomeLane(renderLanes2, workInProgress2.childLanes);\n              if (hasChildWork) {\n                workInProgress2.flags |= Update;\n              }\n              {\n                var stateNode = workInProgress2.stateNode;\n                stateNode.effectDuration = 0;\n                stateNode.passiveEffectDuration = 0;\n              }\n            }\n            break;\n          case SuspenseComponent: {\n            var state = workInProgress2.memoizedState;\n            if (state !== null) {\n              {\n                if (state.dehydrated !== null) {\n                  pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n                  workInProgress2.flags |= DidCapture;\n                  return null;\n                }\n              }\n              var primaryChildFragment = workInProgress2.child;\n              var primaryChildLanes = primaryChildFragment.childLanes;\n              if (includesSomeLane(renderLanes2, primaryChildLanes)) {\n                return updateSuspenseComponent(current2, workInProgress2, renderLanes2);\n              } else {\n                pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n                var child = bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n                if (child !== null) {\n                  return child.sibling;\n                } else {\n                  return null;\n                }\n              }\n            } else {\n              pushSuspenseContext(workInProgress2, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n            }\n            break;\n          }\n          case SuspenseListComponent: {\n            var didSuspendBefore = (current2.flags & DidCapture) !== NoFlags;\n            var _hasChildWork = includesSomeLane(renderLanes2, workInProgress2.childLanes);\n            if (didSuspendBefore) {\n              if (_hasChildWork) {\n                return updateSuspenseListComponent(current2, workInProgress2, renderLanes2);\n              }\n              workInProgress2.flags |= DidCapture;\n            }\n            var renderState = workInProgress2.memoizedState;\n            if (renderState !== null) {\n              renderState.rendering = null;\n              renderState.tail = null;\n              renderState.lastEffect = null;\n            }\n            pushSuspenseContext(workInProgress2, suspenseStackCursor.current);\n            if (_hasChildWork) {\n              break;\n            } else {\n              return null;\n            }\n          }\n          case OffscreenComponent:\n          case LegacyHiddenComponent: {\n            workInProgress2.lanes = NoLanes;\n            return updateOffscreenComponent(current2, workInProgress2, renderLanes2);\n          }\n        }\n        return bailoutOnAlreadyFinishedWork(current2, workInProgress2, renderLanes2);\n      }\n      function beginWork(current2, workInProgress2, renderLanes2) {\n        {\n          if (workInProgress2._debugNeedsRemount && current2 !== null) {\n            return remountFiber(current2, workInProgress2, createFiberFromTypeAndProps(workInProgress2.type, workInProgress2.key, workInProgress2.pendingProps, workInProgress2._debugOwner || null, workInProgress2.mode, workInProgress2.lanes));\n          }\n        }\n        if (current2 !== null) {\n          var oldProps = current2.memoizedProps;\n          var newProps = workInProgress2.pendingProps;\n          if (oldProps !== newProps || hasContextChanged() || // Force a re-render if the implementation changed due to hot reload:\n          workInProgress2.type !== current2.type) {\n            didReceiveUpdate = true;\n          } else {\n            var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current2, renderLanes2);\n            if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there\n            // may not be work scheduled on `current`, so we check for this flag.\n            (workInProgress2.flags & DidCapture) === NoFlags) {\n              didReceiveUpdate = false;\n              return attemptEarlyBailoutIfNoScheduledUpdate(current2, workInProgress2, renderLanes2);\n            }\n            if ((current2.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n              didReceiveUpdate = true;\n            } else {\n              didReceiveUpdate = false;\n            }\n          }\n        } else {\n          didReceiveUpdate = false;\n          if (getIsHydrating() && isForkedChild(workInProgress2)) {\n            var slotIndex = workInProgress2.index;\n            var numberOfForks = getForksAtLevel();\n            pushTreeId(workInProgress2, numberOfForks, slotIndex);\n          }\n        }\n        workInProgress2.lanes = NoLanes;\n        switch (workInProgress2.tag) {\n          case IndeterminateComponent: {\n            return mountIndeterminateComponent(current2, workInProgress2, workInProgress2.type, renderLanes2);\n          }\n          case LazyComponent: {\n            var elementType = workInProgress2.elementType;\n            return mountLazyComponent(current2, workInProgress2, elementType, renderLanes2);\n          }\n          case FunctionComponent: {\n            var Component = workInProgress2.type;\n            var unresolvedProps = workInProgress2.pendingProps;\n            var resolvedProps = workInProgress2.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n            return updateFunctionComponent(current2, workInProgress2, Component, resolvedProps, renderLanes2);\n          }\n          case ClassComponent: {\n            var _Component = workInProgress2.type;\n            var _unresolvedProps = workInProgress2.pendingProps;\n            var _resolvedProps = workInProgress2.elementType === _Component ? _unresolvedProps : resolveDefaultProps(_Component, _unresolvedProps);\n            return updateClassComponent(current2, workInProgress2, _Component, _resolvedProps, renderLanes2);\n          }\n          case HostRoot:\n            return updateHostRoot(current2, workInProgress2, renderLanes2);\n          case HostComponent:\n            return updateHostComponent$1(current2, workInProgress2, renderLanes2);\n          case HostText:\n            return updateHostText$1(current2, workInProgress2);\n          case SuspenseComponent:\n            return updateSuspenseComponent(current2, workInProgress2, renderLanes2);\n          case HostPortal:\n            return updatePortalComponent(current2, workInProgress2, renderLanes2);\n          case ForwardRef: {\n            var type = workInProgress2.type;\n            var _unresolvedProps2 = workInProgress2.pendingProps;\n            var _resolvedProps2 = workInProgress2.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);\n            return updateForwardRef(current2, workInProgress2, type, _resolvedProps2, renderLanes2);\n          }\n          case Fragment2:\n            return updateFragment(current2, workInProgress2, renderLanes2);\n          case Mode:\n            return updateMode(current2, workInProgress2, renderLanes2);\n          case Profiler:\n            return updateProfiler(current2, workInProgress2, renderLanes2);\n          case ContextProvider:\n            return updateContextProvider(current2, workInProgress2, renderLanes2);\n          case ContextConsumer:\n            return updateContextConsumer(current2, workInProgress2, renderLanes2);\n          case MemoComponent: {\n            var _type2 = workInProgress2.type;\n            var _unresolvedProps3 = workInProgress2.pendingProps;\n            var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);\n            {\n              if (workInProgress2.type !== workInProgress2.elementType) {\n                var outerPropTypes = _type2.propTypes;\n                if (outerPropTypes) {\n                  checkPropTypes(\n                    outerPropTypes,\n                    _resolvedProps3,\n                    // Resolved for outer only\n                    \"prop\",\n                    getComponentNameFromType(_type2)\n                  );\n                }\n              }\n            }\n            _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);\n            return updateMemoComponent(current2, workInProgress2, _type2, _resolvedProps3, renderLanes2);\n          }\n          case SimpleMemoComponent: {\n            return updateSimpleMemoComponent(current2, workInProgress2, workInProgress2.type, workInProgress2.pendingProps, renderLanes2);\n          }\n          case IncompleteClassComponent: {\n            var _Component2 = workInProgress2.type;\n            var _unresolvedProps4 = workInProgress2.pendingProps;\n            var _resolvedProps4 = workInProgress2.elementType === _Component2 ? _unresolvedProps4 : resolveDefaultProps(_Component2, _unresolvedProps4);\n            return mountIncompleteClassComponent(current2, workInProgress2, _Component2, _resolvedProps4, renderLanes2);\n          }\n          case SuspenseListComponent: {\n            return updateSuspenseListComponent(current2, workInProgress2, renderLanes2);\n          }\n          case ScopeComponent: {\n            break;\n          }\n          case OffscreenComponent: {\n            return updateOffscreenComponent(current2, workInProgress2, renderLanes2);\n          }\n        }\n        throw new Error(\"Unknown unit of work tag (\" + workInProgress2.tag + \"). This error is likely caused by a bug in React. Please file an issue.\");\n      }\n      function unwindWork(current2, workInProgress2, renderLanes2) {\n        popTreeContext(workInProgress2);\n        switch (workInProgress2.tag) {\n          case ClassComponent: {\n            var Component = workInProgress2.type;\n            if (isContextProvider(Component)) {\n              popContext(workInProgress2);\n            }\n            var flags = workInProgress2.flags;\n            if (flags & ShouldCapture) {\n              workInProgress2.flags = flags & -65537 | DidCapture;\n              if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                transferActualDuration(workInProgress2);\n              }\n              return workInProgress2;\n            }\n            return null;\n          }\n          case HostRoot: {\n            popHostContainer(workInProgress2);\n            popTopLevelContextObject(workInProgress2);\n            resetWorkInProgressVersions();\n            var _flags = workInProgress2.flags;\n            if ((_flags & ShouldCapture) !== NoFlags && (_flags & DidCapture) === NoFlags) {\n              workInProgress2.flags = _flags & -65537 | DidCapture;\n              return workInProgress2;\n            }\n            return null;\n          }\n          case HostComponent: {\n            popHostContext(workInProgress2);\n            return null;\n          }\n          case SuspenseComponent: {\n            popSuspenseContext(workInProgress2);\n            {\n              var suspenseState = workInProgress2.memoizedState;\n              if (suspenseState !== null && suspenseState.dehydrated !== null) {\n                if (workInProgress2.alternate === null) {\n                  throw new Error(\"Threw in newly mounted dehydrated component. This is likely a bug in React. Please file an issue.\");\n                }\n                resetHydrationState();\n              }\n            }\n            var _flags2 = workInProgress2.flags;\n            if (_flags2 & ShouldCapture) {\n              workInProgress2.flags = _flags2 & -65537 | DidCapture;\n              if ((workInProgress2.mode & ProfileMode) !== NoMode) {\n                transferActualDuration(workInProgress2);\n              }\n              return workInProgress2;\n            }\n            return null;\n          }\n          case SuspenseListComponent: {\n            popSuspenseContext(workInProgress2);\n            return null;\n          }\n          case HostPortal:\n            popHostContainer(workInProgress2);\n            return null;\n          case ContextProvider:\n            var context2 = workInProgress2.type._context;\n            popProvider(context2, workInProgress2);\n            return null;\n          case OffscreenComponent:\n          case LegacyHiddenComponent:\n            popRenderLanes(workInProgress2);\n            return null;\n          case CacheComponent:\n            return null;\n          default:\n            return null;\n        }\n      }\n      function unwindInterruptedWork(current2, interruptedWork, renderLanes2) {\n        popTreeContext(interruptedWork);\n        switch (interruptedWork.tag) {\n          case ClassComponent: {\n            var childContextTypes = interruptedWork.type.childContextTypes;\n            if (childContextTypes !== null && childContextTypes !== void 0) {\n              popContext(interruptedWork);\n            }\n            break;\n          }\n          case HostRoot: {\n            popHostContainer(interruptedWork);\n            popTopLevelContextObject(interruptedWork);\n            resetWorkInProgressVersions();\n            break;\n          }\n          case HostComponent: {\n            popHostContext(interruptedWork);\n            break;\n          }\n          case HostPortal:\n            popHostContainer(interruptedWork);\n            break;\n          case SuspenseComponent:\n            popSuspenseContext(interruptedWork);\n            break;\n          case SuspenseListComponent:\n            popSuspenseContext(interruptedWork);\n            break;\n          case ContextProvider:\n            var context2 = interruptedWork.type._context;\n            popProvider(context2, interruptedWork);\n            break;\n          case OffscreenComponent:\n          case LegacyHiddenComponent:\n            popRenderLanes(interruptedWork);\n            break;\n        }\n      }\n      function invokeGuardedCallbackProd(name, func, context2, a2, b2, c2, d2, e2, f2) {\n        var funcArgs = Array.prototype.slice.call(arguments, 3);\n        try {\n          func.apply(context2, funcArgs);\n        } catch (error3) {\n          this.onError(error3);\n        }\n      }\n      var invokeGuardedCallbackImpl = invokeGuardedCallbackProd;\n      {\n        if (typeof window !== \"undefined\" && typeof window.dispatchEvent === \"function\" && typeof document !== \"undefined\" && typeof document.createEvent === \"function\") {\n          var fakeNode = document.createElement(\"react\");\n          invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context2, a2, b2, c2, d2, e2, f2) {\n            if (typeof document === \"undefined\" || document === null) {\n              throw new Error(\"The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous.\");\n            }\n            var evt = document.createEvent(\"Event\");\n            var didCall = false;\n            var didError = true;\n            var windowEvent = window.event;\n            var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, \"event\");\n            function restoreAfterDispatch() {\n              fakeNode.removeEventListener(evtType, callCallback2, false);\n              if (typeof window.event !== \"undefined\" && window.hasOwnProperty(\"event\")) {\n                window.event = windowEvent;\n              }\n            }\n            var funcArgs = Array.prototype.slice.call(arguments, 3);\n            function callCallback2() {\n              didCall = true;\n              restoreAfterDispatch();\n              func.apply(context2, funcArgs);\n              didError = false;\n            }\n            var error3;\n            var didSetError = false;\n            var isCrossOriginError = false;\n            function handleWindowError(event) {\n              error3 = event.error;\n              didSetError = true;\n              if (error3 === null && event.colno === 0 && event.lineno === 0) {\n                isCrossOriginError = true;\n              }\n              if (event.defaultPrevented) {\n                if (error3 != null && typeof error3 === \"object\") {\n                  try {\n                    error3._suppressLogging = true;\n                  } catch (inner) {\n                  }\n                }\n              }\n            }\n            var evtType = \"react-\" + (name ? name : \"invokeguardedcallback\");\n            window.addEventListener(\"error\", handleWindowError);\n            fakeNode.addEventListener(evtType, callCallback2, false);\n            evt.initEvent(evtType, false, false);\n            fakeNode.dispatchEvent(evt);\n            if (windowEventDescriptor) {\n              Object.defineProperty(window, \"event\", windowEventDescriptor);\n            }\n            if (didCall && didError) {\n              if (!didSetError) {\n                error3 = new Error(`An error was thrown inside one of your components, but React doesn't know what it was. This is likely due to browser flakiness. React does its best to preserve the \"Pause on exceptions\" behavior of the DevTools, which requires some DEV-mode only tricks. It's possible that these don't work in your browser. Try triggering the error in production mode, or switching to a modern browser. If you suspect that this is actually an issue with React, please file an issue.`);\n              } else if (isCrossOriginError) {\n                error3 = new Error(\"A cross-origin error was thrown. React doesn't have access to the actual error object in development. See https://reactjs.org/link/crossorigin-error for more information.\");\n              }\n              this.onError(error3);\n            }\n            window.removeEventListener(\"error\", handleWindowError);\n            if (!didCall) {\n              restoreAfterDispatch();\n              return invokeGuardedCallbackProd.apply(this, arguments);\n            }\n          };\n        }\n      }\n      var invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;\n      var hasError = false;\n      var caughtError = null;\n      var reporter = {\n        onError: function(error3) {\n          hasError = true;\n          caughtError = error3;\n        }\n      };\n      function invokeGuardedCallback(name, func, context2, a2, b2, c2, d2, e2, f2) {\n        hasError = false;\n        caughtError = null;\n        invokeGuardedCallbackImpl$1.apply(reporter, arguments);\n      }\n      function hasCaughtError() {\n        return hasError;\n      }\n      function clearCaughtError() {\n        if (hasError) {\n          var error3 = caughtError;\n          hasError = false;\n          caughtError = null;\n          return error3;\n        } else {\n          throw new Error(\"clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n      }\n      var didWarnAboutUndefinedSnapshotBeforeUpdate = null;\n      {\n        didWarnAboutUndefinedSnapshotBeforeUpdate = /* @__PURE__ */ new Set();\n      }\n      var offscreenSubtreeIsHidden = false;\n      var offscreenSubtreeWasHidden = false;\n      var PossiblyWeakSet = typeof WeakSet === \"function\" ? WeakSet : Set;\n      var nextEffect = null;\n      var inProgressLanes = null;\n      var inProgressRoot = null;\n      function reportUncaughtErrorInDEV(error3) {\n        {\n          invokeGuardedCallback(null, function() {\n            throw error3;\n          });\n          clearCaughtError();\n        }\n      }\n      var callComponentWillUnmountWithTimer = function(current2, instance) {\n        instance.props = current2.memoizedProps;\n        instance.state = current2.memoizedState;\n        if (current2.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            instance.componentWillUnmount();\n          } finally {\n            recordLayoutEffectDuration(current2);\n          }\n        } else {\n          instance.componentWillUnmount();\n        }\n      };\n      function safelyCallCommitHookLayoutEffectListMount(current2, nearestMountedAncestor) {\n        try {\n          commitHookEffectListMount(Layout, current2);\n        } catch (error3) {\n          reportUncaughtErrorInDEV(error3);\n          captureCommitPhaseError(current2, nearestMountedAncestor, error3);\n        }\n      }\n      function safelyCallComponentWillUnmount(current2, nearestMountedAncestor, instance) {\n        try {\n          callComponentWillUnmountWithTimer(current2, instance);\n        } catch (error3) {\n          reportUncaughtErrorInDEV(error3);\n          captureCommitPhaseError(current2, nearestMountedAncestor, error3);\n        }\n      }\n      function safelyCallComponentDidMount(current2, nearestMountedAncestor, instance) {\n        try {\n          instance.componentDidMount();\n        } catch (error3) {\n          reportUncaughtErrorInDEV(error3);\n          captureCommitPhaseError(current2, nearestMountedAncestor, error3);\n        }\n      }\n      function safelyAttachRef(current2, nearestMountedAncestor) {\n        try {\n          commitAttachRef(current2);\n        } catch (error3) {\n          reportUncaughtErrorInDEV(error3);\n          captureCommitPhaseError(current2, nearestMountedAncestor, error3);\n        }\n      }\n      function safelyDetachRef(current2, nearestMountedAncestor) {\n        var ref = current2.ref;\n        if (ref !== null) {\n          if (typeof ref === \"function\") {\n            var retVal;\n            try {\n              if (enableProfilerTimer && enableProfilerCommitHooks && current2.mode & ProfileMode) {\n                try {\n                  startLayoutEffectTimer();\n                  retVal = ref(null);\n                } finally {\n                  recordLayoutEffectDuration(current2);\n                }\n              } else {\n                retVal = ref(null);\n              }\n            } catch (error3) {\n              reportUncaughtErrorInDEV(error3);\n              captureCommitPhaseError(current2, nearestMountedAncestor, error3);\n            }\n            {\n              if (typeof retVal === \"function\") {\n                error2(\"Unexpected return value from a callback ref in %s. A callback ref should not return a function.\", getComponentNameFromFiber(current2));\n              }\n            }\n          } else {\n            ref.current = null;\n          }\n        }\n      }\n      function safelyCallDestroy(current2, nearestMountedAncestor, destroy) {\n        try {\n          destroy();\n        } catch (error3) {\n          reportUncaughtErrorInDEV(error3);\n          captureCommitPhaseError(current2, nearestMountedAncestor, error3);\n        }\n      }\n      var shouldFireAfterActiveInstanceBlur = false;\n      function commitBeforeMutationEffects(root, firstChild) {\n        prepareForCommit(root.containerInfo);\n        nextEffect = firstChild;\n        commitBeforeMutationEffects_begin();\n        var shouldFire = shouldFireAfterActiveInstanceBlur;\n        shouldFireAfterActiveInstanceBlur = false;\n        return shouldFire;\n      }\n      function commitBeforeMutationEffects_begin() {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var child = fiber.child;\n          if ((fiber.subtreeFlags & BeforeMutationMask) !== NoFlags && child !== null) {\n            ensureCorrectReturnPointer(child, fiber);\n            nextEffect = child;\n          } else {\n            commitBeforeMutationEffects_complete();\n          }\n        }\n      }\n      function commitBeforeMutationEffects_complete() {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          setCurrentFiber(fiber);\n          try {\n            commitBeforeMutationEffectsOnFiber(fiber);\n          } catch (error3) {\n            reportUncaughtErrorInDEV(error3);\n            captureCommitPhaseError(fiber, fiber.return, error3);\n          }\n          resetCurrentFiber();\n          var sibling = fiber.sibling;\n          if (sibling !== null) {\n            ensureCorrectReturnPointer(sibling, fiber.return);\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = fiber.return;\n        }\n      }\n      function commitBeforeMutationEffectsOnFiber(finishedWork) {\n        var current2 = finishedWork.alternate;\n        var flags = finishedWork.flags;\n        if ((flags & Snapshot) !== NoFlags) {\n          setCurrentFiber(finishedWork);\n          switch (finishedWork.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              break;\n            }\n            case ClassComponent: {\n              if (current2 !== null) {\n                var prevProps = current2.memoizedProps;\n                var prevState = current2.memoizedState;\n                var instance = finishedWork.stateNode;\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error2(\"Expected %s props to match memoized props before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                    }\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error2(\"Expected %s state to match memoized state before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                    }\n                  }\n                }\n                var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);\n                {\n                  var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;\n                  if (snapshot === void 0 && !didWarnSet.has(finishedWork.type)) {\n                    didWarnSet.add(finishedWork.type);\n                    error2(\"%s.getSnapshotBeforeUpdate(): A snapshot value (or null) must be returned. You have returned undefined.\", getComponentNameFromFiber(finishedWork));\n                  }\n                }\n                instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n              }\n              break;\n            }\n            case HostRoot: {\n              if (supportsMutation) {\n                var root = finishedWork.stateNode;\n                clearContainer(root.containerInfo);\n              }\n              break;\n            }\n            case HostComponent:\n            case HostText:\n            case HostPortal:\n            case IncompleteClassComponent:\n              break;\n            default: {\n              throw new Error(\"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n          }\n          resetCurrentFiber();\n        }\n      }\n      function commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {\n        var updateQueue = finishedWork.updateQueue;\n        var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n        if (lastEffect !== null) {\n          var firstEffect = lastEffect.next;\n          var effect = firstEffect;\n          do {\n            if ((effect.tag & flags) === flags) {\n              var destroy = effect.destroy;\n              effect.destroy = void 0;\n              if (destroy !== void 0) {\n                {\n                  if ((flags & Passive$1) !== NoFlags$1) {\n                    markComponentPassiveEffectUnmountStarted(finishedWork);\n                  } else if ((flags & Layout) !== NoFlags$1) {\n                    markComponentLayoutEffectUnmountStarted(finishedWork);\n                  }\n                }\n                safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);\n                {\n                  if ((flags & Passive$1) !== NoFlags$1) {\n                    markComponentPassiveEffectUnmountStopped();\n                  } else if ((flags & Layout) !== NoFlags$1) {\n                    markComponentLayoutEffectUnmountStopped();\n                  }\n                }\n              }\n            }\n            effect = effect.next;\n          } while (effect !== firstEffect);\n        }\n      }\n      function commitHookEffectListMount(flags, finishedWork) {\n        var updateQueue = finishedWork.updateQueue;\n        var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n        if (lastEffect !== null) {\n          var firstEffect = lastEffect.next;\n          var effect = firstEffect;\n          do {\n            if ((effect.tag & flags) === flags) {\n              {\n                if ((flags & Passive$1) !== NoFlags$1) {\n                  markComponentPassiveEffectMountStarted(finishedWork);\n                } else if ((flags & Layout) !== NoFlags$1) {\n                  markComponentLayoutEffectMountStarted(finishedWork);\n                }\n              }\n              var create2 = effect.create;\n              effect.destroy = create2();\n              {\n                if ((flags & Passive$1) !== NoFlags$1) {\n                  markComponentPassiveEffectMountStopped();\n                } else if ((flags & Layout) !== NoFlags$1) {\n                  markComponentLayoutEffectMountStopped();\n                }\n              }\n              {\n                var destroy = effect.destroy;\n                if (destroy !== void 0 && typeof destroy !== \"function\") {\n                  var hookName = void 0;\n                  if ((effect.tag & Layout) !== NoFlags) {\n                    hookName = \"useLayoutEffect\";\n                  } else if ((effect.tag & Insertion) !== NoFlags) {\n                    hookName = \"useInsertionEffect\";\n                  } else {\n                    hookName = \"useEffect\";\n                  }\n                  var addendum = void 0;\n                  if (destroy === null) {\n                    addendum = \" You returned null. If your effect does not require clean up, return undefined (or nothing).\";\n                  } else if (typeof destroy.then === \"function\") {\n                    addendum = \"\\n\\nIt looks like you wrote \" + hookName + \"(async () => ...) or returned a Promise. Instead, write the async function inside your effect and call it immediately:\\n\\n\" + hookName + \"(() => {\\n  async function fetchData() {\\n    // You can await here\\n    const response = await MyAPI.getData(someId);\\n    // ...\\n  }\\n  fetchData();\\n}, [someId]); // Or [] if effect doesn't need props or state\\n\\nLearn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching\";\n                  } else {\n                    addendum = \" You returned: \" + destroy;\n                  }\n                  error2(\"%s must not return anything besides a function, which is used for clean-up.%s\", hookName, addendum);\n                }\n              }\n            }\n            effect = effect.next;\n          } while (effect !== firstEffect);\n        }\n      }\n      function commitPassiveEffectDurations(finishedRoot, finishedWork) {\n        {\n          if ((finishedWork.flags & Update) !== NoFlags) {\n            switch (finishedWork.tag) {\n              case Profiler: {\n                var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration;\n                var _finishedWork$memoize = finishedWork.memoizedProps, id = _finishedWork$memoize.id, onPostCommit = _finishedWork$memoize.onPostCommit;\n                var commitTime2 = getCommitTime();\n                var phase = finishedWork.alternate === null ? \"mount\" : \"update\";\n                {\n                  if (isCurrentUpdateNested()) {\n                    phase = \"nested-update\";\n                  }\n                }\n                if (typeof onPostCommit === \"function\") {\n                  onPostCommit(id, phase, passiveEffectDuration, commitTime2);\n                }\n                var parentFiber = finishedWork.return;\n                outer: while (parentFiber !== null) {\n                  switch (parentFiber.tag) {\n                    case HostRoot:\n                      var root = parentFiber.stateNode;\n                      root.passiveEffectDuration += passiveEffectDuration;\n                      break outer;\n                    case Profiler:\n                      var parentStateNode = parentFiber.stateNode;\n                      parentStateNode.passiveEffectDuration += passiveEffectDuration;\n                      break outer;\n                  }\n                  parentFiber = parentFiber.return;\n                }\n                break;\n              }\n            }\n          }\n        }\n      }\n      function commitLayoutEffectOnFiber(finishedRoot, current2, finishedWork, committedLanes) {\n        if ((finishedWork.flags & LayoutMask) !== NoFlags) {\n          switch (finishedWork.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              if (!offscreenSubtreeWasHidden) {\n                if (finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    commitHookEffectListMount(Layout | HasEffect, finishedWork);\n                  } finally {\n                    recordLayoutEffectDuration(finishedWork);\n                  }\n                } else {\n                  commitHookEffectListMount(Layout | HasEffect, finishedWork);\n                }\n              }\n              break;\n            }\n            case ClassComponent: {\n              var instance = finishedWork.stateNode;\n              if (finishedWork.flags & Update) {\n                if (!offscreenSubtreeWasHidden) {\n                  if (current2 === null) {\n                    {\n                      if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                        if (instance.props !== finishedWork.memoizedProps) {\n                          error2(\"Expected %s props to match memoized props before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                        }\n                        if (instance.state !== finishedWork.memoizedState) {\n                          error2(\"Expected %s state to match memoized state before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                        }\n                      }\n                    }\n                    if (finishedWork.mode & ProfileMode) {\n                      try {\n                        startLayoutEffectTimer();\n                        instance.componentDidMount();\n                      } finally {\n                        recordLayoutEffectDuration(finishedWork);\n                      }\n                    } else {\n                      instance.componentDidMount();\n                    }\n                  } else {\n                    var prevProps = finishedWork.elementType === finishedWork.type ? current2.memoizedProps : resolveDefaultProps(finishedWork.type, current2.memoizedProps);\n                    var prevState = current2.memoizedState;\n                    {\n                      if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                        if (instance.props !== finishedWork.memoizedProps) {\n                          error2(\"Expected %s props to match memoized props before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                        }\n                        if (instance.state !== finishedWork.memoizedState) {\n                          error2(\"Expected %s state to match memoized state before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                        }\n                      }\n                    }\n                    if (finishedWork.mode & ProfileMode) {\n                      try {\n                        startLayoutEffectTimer();\n                        instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                      } finally {\n                        recordLayoutEffectDuration(finishedWork);\n                      }\n                    } else {\n                      instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                    }\n                  }\n                }\n              }\n              var updateQueue = finishedWork.updateQueue;\n              if (updateQueue !== null) {\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error2(\"Expected %s props to match memoized props before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                    }\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error2(\"Expected %s state to match memoized state before processing the update queue. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.\", getComponentNameFromFiber(finishedWork) || \"instance\");\n                    }\n                  }\n                }\n                commitUpdateQueue(finishedWork, updateQueue, instance);\n              }\n              break;\n            }\n            case HostRoot: {\n              var _updateQueue = finishedWork.updateQueue;\n              if (_updateQueue !== null) {\n                var _instance = null;\n                if (finishedWork.child !== null) {\n                  switch (finishedWork.child.tag) {\n                    case HostComponent:\n                      _instance = getPublicInstance(finishedWork.child.stateNode);\n                      break;\n                    case ClassComponent:\n                      _instance = finishedWork.child.stateNode;\n                      break;\n                  }\n                }\n                commitUpdateQueue(finishedWork, _updateQueue, _instance);\n              }\n              break;\n            }\n            case HostComponent: {\n              var _instance2 = finishedWork.stateNode;\n              if (current2 === null && finishedWork.flags & Update) {\n                var type = finishedWork.type;\n                var props = finishedWork.memoizedProps;\n                commitMount(_instance2, type, props, finishedWork);\n              }\n              break;\n            }\n            case HostText: {\n              break;\n            }\n            case HostPortal: {\n              break;\n            }\n            case Profiler: {\n              {\n                var _finishedWork$memoize2 = finishedWork.memoizedProps, onCommit = _finishedWork$memoize2.onCommit, onRender = _finishedWork$memoize2.onRender;\n                var effectDuration = finishedWork.stateNode.effectDuration;\n                var commitTime2 = getCommitTime();\n                var phase = current2 === null ? \"mount\" : \"update\";\n                {\n                  if (isCurrentUpdateNested()) {\n                    phase = \"nested-update\";\n                  }\n                }\n                if (typeof onRender === \"function\") {\n                  onRender(finishedWork.memoizedProps.id, phase, finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime2);\n                }\n                {\n                  if (typeof onCommit === \"function\") {\n                    onCommit(finishedWork.memoizedProps.id, phase, effectDuration, commitTime2);\n                  }\n                  enqueuePendingPassiveProfilerEffect(finishedWork);\n                  var parentFiber = finishedWork.return;\n                  outer: while (parentFiber !== null) {\n                    switch (parentFiber.tag) {\n                      case HostRoot:\n                        var root = parentFiber.stateNode;\n                        root.effectDuration += effectDuration;\n                        break outer;\n                      case Profiler:\n                        var parentStateNode = parentFiber.stateNode;\n                        parentStateNode.effectDuration += effectDuration;\n                        break outer;\n                    }\n                    parentFiber = parentFiber.return;\n                  }\n                }\n              }\n              break;\n            }\n            case SuspenseComponent: {\n              commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n              break;\n            }\n            case SuspenseListComponent:\n            case IncompleteClassComponent:\n            case ScopeComponent:\n            case OffscreenComponent:\n            case LegacyHiddenComponent: {\n              break;\n            }\n            default:\n              throw new Error(\"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\");\n          }\n        }\n        if (!offscreenSubtreeWasHidden) {\n          {\n            if (finishedWork.flags & Ref) {\n              commitAttachRef(finishedWork);\n            }\n          }\n        }\n      }\n      function reappearLayoutEffectsOnFiber(node) {\n        switch (node.tag) {\n          case FunctionComponent:\n          case ForwardRef:\n          case SimpleMemoComponent: {\n            if (node.mode & ProfileMode) {\n              try {\n                startLayoutEffectTimer();\n                safelyCallCommitHookLayoutEffectListMount(node, node.return);\n              } finally {\n                recordLayoutEffectDuration(node);\n              }\n            } else {\n              safelyCallCommitHookLayoutEffectListMount(node, node.return);\n            }\n            break;\n          }\n          case ClassComponent: {\n            var instance = node.stateNode;\n            if (typeof instance.componentDidMount === \"function\") {\n              safelyCallComponentDidMount(node, node.return, instance);\n            }\n            safelyAttachRef(node, node.return);\n            break;\n          }\n          case HostComponent: {\n            safelyAttachRef(node, node.return);\n            break;\n          }\n        }\n      }\n      function hideOrUnhideAllChildren(finishedWork, isHidden) {\n        var hostSubtreeRoot = null;\n        if (supportsMutation) {\n          var node = finishedWork;\n          while (true) {\n            if (node.tag === HostComponent) {\n              if (hostSubtreeRoot === null) {\n                hostSubtreeRoot = node;\n                var instance = node.stateNode;\n                if (isHidden) {\n                  hideInstance(instance);\n                } else {\n                  unhideInstance(node.stateNode, node.memoizedProps);\n                }\n              }\n            } else if (node.tag === HostText) {\n              if (hostSubtreeRoot === null) {\n                var _instance3 = node.stateNode;\n                if (isHidden) {\n                  hideTextInstance(_instance3);\n                } else {\n                  unhideTextInstance(_instance3, node.memoizedProps);\n                }\n              }\n            } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ;\n            else if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n            if (node === finishedWork) {\n              return;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === finishedWork) {\n                return;\n              }\n              if (hostSubtreeRoot === node) {\n                hostSubtreeRoot = null;\n              }\n              node = node.return;\n            }\n            if (hostSubtreeRoot === node) {\n              hostSubtreeRoot = null;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n        }\n      }\n      function commitAttachRef(finishedWork) {\n        var ref = finishedWork.ref;\n        if (ref !== null) {\n          var instance = finishedWork.stateNode;\n          var instanceToUse;\n          switch (finishedWork.tag) {\n            case HostComponent:\n              instanceToUse = getPublicInstance(instance);\n              break;\n            default:\n              instanceToUse = instance;\n          }\n          if (typeof ref === \"function\") {\n            var retVal;\n            if (finishedWork.mode & ProfileMode) {\n              try {\n                startLayoutEffectTimer();\n                retVal = ref(instanceToUse);\n              } finally {\n                recordLayoutEffectDuration(finishedWork);\n              }\n            } else {\n              retVal = ref(instanceToUse);\n            }\n            {\n              if (typeof retVal === \"function\") {\n                error2(\"Unexpected return value from a callback ref in %s. A callback ref should not return a function.\", getComponentNameFromFiber(finishedWork));\n              }\n            }\n          } else {\n            {\n              if (!ref.hasOwnProperty(\"current\")) {\n                error2(\"Unexpected ref object provided for %s. Use either a ref-setter function or React.createRef().\", getComponentNameFromFiber(finishedWork));\n              }\n            }\n            ref.current = instanceToUse;\n          }\n        }\n      }\n      function commitDetachRef(current2) {\n        var currentRef = current2.ref;\n        if (currentRef !== null) {\n          if (typeof currentRef === \"function\") {\n            if (current2.mode & ProfileMode) {\n              try {\n                startLayoutEffectTimer();\n                currentRef(null);\n              } finally {\n                recordLayoutEffectDuration(current2);\n              }\n            } else {\n              currentRef(null);\n            }\n          } else {\n            currentRef.current = null;\n          }\n        }\n      }\n      function commitUnmount(finishedRoot, current2, nearestMountedAncestor) {\n        onCommitUnmount(current2);\n        switch (current2.tag) {\n          case FunctionComponent:\n          case ForwardRef:\n          case MemoComponent:\n          case SimpleMemoComponent: {\n            var updateQueue = current2.updateQueue;\n            if (updateQueue !== null) {\n              var lastEffect = updateQueue.lastEffect;\n              if (lastEffect !== null) {\n                var firstEffect = lastEffect.next;\n                var effect = firstEffect;\n                do {\n                  var _effect = effect, destroy = _effect.destroy, tag = _effect.tag;\n                  if (destroy !== void 0) {\n                    if ((tag & Insertion) !== NoFlags$1) {\n                      safelyCallDestroy(current2, nearestMountedAncestor, destroy);\n                    } else if ((tag & Layout) !== NoFlags$1) {\n                      {\n                        markComponentLayoutEffectUnmountStarted(current2);\n                      }\n                      if (current2.mode & ProfileMode) {\n                        startLayoutEffectTimer();\n                        safelyCallDestroy(current2, nearestMountedAncestor, destroy);\n                        recordLayoutEffectDuration(current2);\n                      } else {\n                        safelyCallDestroy(current2, nearestMountedAncestor, destroy);\n                      }\n                      {\n                        markComponentLayoutEffectUnmountStopped();\n                      }\n                    }\n                  }\n                  effect = effect.next;\n                } while (effect !== firstEffect);\n              }\n            }\n            return;\n          }\n          case ClassComponent: {\n            safelyDetachRef(current2, nearestMountedAncestor);\n            var instance = current2.stateNode;\n            if (typeof instance.componentWillUnmount === \"function\") {\n              safelyCallComponentWillUnmount(current2, nearestMountedAncestor, instance);\n            }\n            return;\n          }\n          case HostComponent: {\n            safelyDetachRef(current2, nearestMountedAncestor);\n            return;\n          }\n          case HostPortal: {\n            if (supportsMutation) {\n              unmountHostComponents(finishedRoot, current2, nearestMountedAncestor);\n            } else if (supportsPersistence) {\n              emptyPortalContainer(current2);\n            }\n            return;\n          }\n          case DehydratedFragment: {\n            return;\n          }\n          case ScopeComponent: {\n            return;\n          }\n        }\n      }\n      function commitNestedUnmounts(finishedRoot, root, nearestMountedAncestor) {\n        var node = root;\n        while (true) {\n          commitUnmount(finishedRoot, node, nearestMountedAncestor);\n          if (node.child !== null && // If we use mutation we drill down into portals using commitUnmount above.\n          // If we don't use mutation we drill down into portals here instead.\n          (!supportsMutation || node.tag !== HostPortal)) {\n            node.child.return = node;\n            node = node.child;\n            continue;\n          }\n          if (node === root) {\n            return;\n          }\n          while (node.sibling === null) {\n            if (node.return === null || node.return === root) {\n              return;\n            }\n            node = node.return;\n          }\n          node.sibling.return = node.return;\n          node = node.sibling;\n        }\n      }\n      function detachFiberMutation(fiber) {\n        var alternate = fiber.alternate;\n        if (alternate !== null) {\n          alternate.return = null;\n        }\n        fiber.return = null;\n      }\n      function detachFiberAfterEffects(fiber) {\n        var alternate = fiber.alternate;\n        if (alternate !== null) {\n          fiber.alternate = null;\n          detachFiberAfterEffects(alternate);\n        }\n        {\n          fiber.child = null;\n          fiber.deletions = null;\n          fiber.sibling = null;\n          if (fiber.tag === HostComponent) {\n            var hostInstance = fiber.stateNode;\n            if (hostInstance !== null) {\n              detachDeletedInstance(hostInstance);\n            }\n          }\n          fiber.stateNode = null;\n          {\n            fiber._debugOwner = null;\n          }\n          {\n            fiber.return = null;\n            fiber.dependencies = null;\n            fiber.memoizedProps = null;\n            fiber.memoizedState = null;\n            fiber.pendingProps = null;\n            fiber.stateNode = null;\n            fiber.updateQueue = null;\n          }\n        }\n      }\n      function emptyPortalContainer(current2) {\n        if (!supportsPersistence) {\n          return;\n        }\n        var portal = current2.stateNode;\n        var containerInfo = portal.containerInfo;\n        var emptyChildSet = createContainerChildSet(containerInfo);\n        replaceContainerChildren(containerInfo, emptyChildSet);\n      }\n      function commitContainer(finishedWork) {\n        if (!supportsPersistence) {\n          return;\n        }\n        switch (finishedWork.tag) {\n          case ClassComponent:\n          case HostComponent:\n          case HostText: {\n            return;\n          }\n          case HostRoot:\n          case HostPortal: {\n            var portalOrRoot = finishedWork.stateNode;\n            var containerInfo = portalOrRoot.containerInfo, pendingChildren = portalOrRoot.pendingChildren;\n            replaceContainerChildren(containerInfo, pendingChildren);\n            return;\n          }\n        }\n        throw new Error(\"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\");\n      }\n      function getHostParentFiber(fiber) {\n        var parent = fiber.return;\n        while (parent !== null) {\n          if (isHostParent(parent)) {\n            return parent;\n          }\n          parent = parent.return;\n        }\n        throw new Error(\"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\");\n      }\n      function isHostParent(fiber) {\n        return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;\n      }\n      function getHostSibling(fiber) {\n        var node = fiber;\n        siblings: while (true) {\n          while (node.sibling === null) {\n            if (node.return === null || isHostParent(node.return)) {\n              return null;\n            }\n            node = node.return;\n          }\n          node.sibling.return = node.return;\n          node = node.sibling;\n          while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {\n            if (node.flags & Placement) {\n              continue siblings;\n            }\n            if (node.child === null || node.tag === HostPortal) {\n              continue siblings;\n            } else {\n              node.child.return = node;\n              node = node.child;\n            }\n          }\n          if (!(node.flags & Placement)) {\n            return node.stateNode;\n          }\n        }\n      }\n      function commitPlacement(finishedWork) {\n        if (!supportsMutation) {\n          return;\n        }\n        var parentFiber = getHostParentFiber(finishedWork);\n        switch (parentFiber.tag) {\n          case HostComponent: {\n            var parent = parentFiber.stateNode;\n            if (parentFiber.flags & ContentReset) {\n              resetTextContent(parent);\n              parentFiber.flags &= -33;\n            }\n            var before = getHostSibling(finishedWork);\n            insertOrAppendPlacementNode(finishedWork, before, parent);\n            break;\n          }\n          case HostRoot:\n          case HostPortal: {\n            var _parent = parentFiber.stateNode.containerInfo;\n            var _before = getHostSibling(finishedWork);\n            insertOrAppendPlacementNodeIntoContainer(finishedWork, _before, _parent);\n            break;\n          }\n          // eslint-disable-next-line-no-fallthrough\n          default:\n            throw new Error(\"Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n      }\n      function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n        var tag = node.tag;\n        var isHost = tag === HostComponent || tag === HostText;\n        if (isHost) {\n          var stateNode = node.stateNode;\n          if (before) {\n            insertInContainerBefore(parent, stateNode, before);\n          } else {\n            appendChildToContainer(parent, stateNode);\n          }\n        } else if (tag === HostPortal) ;\n        else {\n          var child = node.child;\n          if (child !== null) {\n            insertOrAppendPlacementNodeIntoContainer(child, before, parent);\n            var sibling = child.sibling;\n            while (sibling !== null) {\n              insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);\n              sibling = sibling.sibling;\n            }\n          }\n        }\n      }\n      function insertOrAppendPlacementNode(node, before, parent) {\n        var tag = node.tag;\n        var isHost = tag === HostComponent || tag === HostText;\n        if (isHost) {\n          var stateNode = node.stateNode;\n          if (before) {\n            insertBefore(parent, stateNode, before);\n          } else {\n            appendChild(parent, stateNode);\n          }\n        } else if (tag === HostPortal) ;\n        else {\n          var child = node.child;\n          if (child !== null) {\n            insertOrAppendPlacementNode(child, before, parent);\n            var sibling = child.sibling;\n            while (sibling !== null) {\n              insertOrAppendPlacementNode(sibling, before, parent);\n              sibling = sibling.sibling;\n            }\n          }\n        }\n      }\n      function unmountHostComponents(finishedRoot, current2, nearestMountedAncestor) {\n        var node = current2;\n        var currentParentIsValid = false;\n        var currentParent;\n        var currentParentIsContainer;\n        while (true) {\n          if (!currentParentIsValid) {\n            var parent = node.return;\n            findParent: while (true) {\n              if (parent === null) {\n                throw new Error(\"Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.\");\n              }\n              var parentStateNode = parent.stateNode;\n              switch (parent.tag) {\n                case HostComponent:\n                  currentParent = parentStateNode;\n                  currentParentIsContainer = false;\n                  break findParent;\n                case HostRoot:\n                  currentParent = parentStateNode.containerInfo;\n                  currentParentIsContainer = true;\n                  break findParent;\n                case HostPortal:\n                  currentParent = parentStateNode.containerInfo;\n                  currentParentIsContainer = true;\n                  break findParent;\n              }\n              parent = parent.return;\n            }\n            currentParentIsValid = true;\n          }\n          if (node.tag === HostComponent || node.tag === HostText) {\n            commitNestedUnmounts(finishedRoot, node, nearestMountedAncestor);\n            if (currentParentIsContainer) {\n              removeChildFromContainer(currentParent, node.stateNode);\n            } else {\n              removeChild(currentParent, node.stateNode);\n            }\n          } else if (node.tag === DehydratedFragment) {\n            if (currentParentIsContainer) {\n              clearSuspenseBoundaryFromContainer(currentParent, node.stateNode);\n            } else {\n              clearSuspenseBoundary(currentParent, node.stateNode);\n            }\n          } else if (node.tag === HostPortal) {\n            if (node.child !== null) {\n              currentParent = node.stateNode.containerInfo;\n              currentParentIsContainer = true;\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n          } else {\n            commitUnmount(finishedRoot, node, nearestMountedAncestor);\n            if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n          }\n          if (node === current2) {\n            return;\n          }\n          while (node.sibling === null) {\n            if (node.return === null || node.return === current2) {\n              return;\n            }\n            node = node.return;\n            if (node.tag === HostPortal) {\n              currentParentIsValid = false;\n            }\n          }\n          node.sibling.return = node.return;\n          node = node.sibling;\n        }\n      }\n      function commitDeletion(finishedRoot, current2, nearestMountedAncestor) {\n        if (supportsMutation) {\n          unmountHostComponents(finishedRoot, current2, nearestMountedAncestor);\n        } else {\n          commitNestedUnmounts(finishedRoot, current2, nearestMountedAncestor);\n        }\n        detachFiberMutation(current2);\n      }\n      function commitWork(current2, finishedWork) {\n        if (!supportsMutation) {\n          switch (finishedWork.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case MemoComponent:\n            case SimpleMemoComponent: {\n              commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n              commitHookEffectListMount(Insertion | HasEffect, finishedWork);\n              if (finishedWork.mode & ProfileMode) {\n                try {\n                  startLayoutEffectTimer();\n                  commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n                } finally {\n                  recordLayoutEffectDuration(finishedWork);\n                }\n              } else {\n                commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n              }\n              return;\n            }\n            case Profiler: {\n              return;\n            }\n            case SuspenseComponent: {\n              commitSuspenseCallback(finishedWork);\n              attachSuspenseRetryListeners(finishedWork);\n              return;\n            }\n            case SuspenseListComponent: {\n              attachSuspenseRetryListeners(finishedWork);\n              return;\n            }\n            case HostRoot: {\n              if (supportsHydration) {\n                if (current2 !== null) {\n                  var prevRootState = current2.memoizedState;\n                  if (prevRootState.isDehydrated) {\n                    var root = finishedWork.stateNode;\n                    commitHydratedContainer(root.containerInfo);\n                  }\n                }\n              }\n              break;\n            }\n            case OffscreenComponent:\n            case LegacyHiddenComponent: {\n              return;\n            }\n          }\n          commitContainer(finishedWork);\n          return;\n        }\n        switch (finishedWork.tag) {\n          case FunctionComponent:\n          case ForwardRef:\n          case MemoComponent:\n          case SimpleMemoComponent: {\n            commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n            commitHookEffectListMount(Insertion | HasEffect, finishedWork);\n            if (finishedWork.mode & ProfileMode) {\n              try {\n                startLayoutEffectTimer();\n                commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n              } finally {\n                recordLayoutEffectDuration(finishedWork);\n              }\n            } else {\n              commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n            }\n            return;\n          }\n          case ClassComponent: {\n            return;\n          }\n          case HostComponent: {\n            var instance = finishedWork.stateNode;\n            if (instance != null) {\n              var newProps = finishedWork.memoizedProps;\n              var oldProps = current2 !== null ? current2.memoizedProps : newProps;\n              var type = finishedWork.type;\n              var updatePayload = finishedWork.updateQueue;\n              finishedWork.updateQueue = null;\n              if (updatePayload !== null) {\n                commitUpdate(instance, updatePayload, type, oldProps, newProps, finishedWork);\n              }\n            }\n            return;\n          }\n          case HostText: {\n            if (finishedWork.stateNode === null) {\n              throw new Error(\"This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n            var textInstance = finishedWork.stateNode;\n            var newText = finishedWork.memoizedProps;\n            var oldText = current2 !== null ? current2.memoizedProps : newText;\n            commitTextUpdate(textInstance, oldText, newText);\n            return;\n          }\n          case HostRoot: {\n            if (supportsHydration) {\n              if (current2 !== null) {\n                var _prevRootState = current2.memoizedState;\n                if (_prevRootState.isDehydrated) {\n                  var _root = finishedWork.stateNode;\n                  commitHydratedContainer(_root.containerInfo);\n                }\n              }\n            }\n            return;\n          }\n          case Profiler: {\n            return;\n          }\n          case SuspenseComponent: {\n            commitSuspenseCallback(finishedWork);\n            attachSuspenseRetryListeners(finishedWork);\n            return;\n          }\n          case SuspenseListComponent: {\n            attachSuspenseRetryListeners(finishedWork);\n            return;\n          }\n          case IncompleteClassComponent: {\n            return;\n          }\n        }\n        throw new Error(\"This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.\");\n      }\n      function commitSuspenseCallback(finishedWork) {\n        finishedWork.memoizedState;\n      }\n      function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n        if (!supportsHydration) {\n          return;\n        }\n        var newState = finishedWork.memoizedState;\n        if (newState === null) {\n          var current2 = finishedWork.alternate;\n          if (current2 !== null) {\n            var prevState = current2.memoizedState;\n            if (prevState !== null) {\n              var suspenseInstance = prevState.dehydrated;\n              if (suspenseInstance !== null) {\n                commitHydratedSuspenseInstance(suspenseInstance);\n              }\n            }\n          }\n        }\n      }\n      function attachSuspenseRetryListeners(finishedWork) {\n        var wakeables = finishedWork.updateQueue;\n        if (wakeables !== null) {\n          finishedWork.updateQueue = null;\n          var retryCache = finishedWork.stateNode;\n          if (retryCache === null) {\n            retryCache = finishedWork.stateNode = new PossiblyWeakSet();\n          }\n          wakeables.forEach(function(wakeable) {\n            var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n            if (!retryCache.has(wakeable)) {\n              retryCache.add(wakeable);\n              {\n                if (isDevToolsPresent) {\n                  if (inProgressLanes !== null && inProgressRoot !== null) {\n                    restorePendingUpdaters(inProgressRoot, inProgressLanes);\n                  } else {\n                    throw Error(\"Expected finished root and lanes to be set. This is a bug in React.\");\n                  }\n                }\n              }\n              wakeable.then(retry, retry);\n            }\n          });\n        }\n      }\n      function commitResetTextContent(current2) {\n        if (!supportsMutation) {\n          return;\n        }\n        resetTextContent(current2.stateNode);\n      }\n      function commitMutationEffects(root, firstChild, committedLanes) {\n        inProgressLanes = committedLanes;\n        inProgressRoot = root;\n        nextEffect = firstChild;\n        commitMutationEffects_begin(root, committedLanes);\n        inProgressLanes = null;\n        inProgressRoot = null;\n      }\n      function commitMutationEffects_begin(root, lanes) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var deletions = fiber.deletions;\n          if (deletions !== null) {\n            for (var i2 = 0; i2 < deletions.length; i2++) {\n              var childToDelete = deletions[i2];\n              try {\n                commitDeletion(root, childToDelete, fiber);\n              } catch (error3) {\n                reportUncaughtErrorInDEV(error3);\n                captureCommitPhaseError(childToDelete, fiber, error3);\n              }\n            }\n          }\n          var child = fiber.child;\n          if ((fiber.subtreeFlags & MutationMask) !== NoFlags && child !== null) {\n            ensureCorrectReturnPointer(child, fiber);\n            nextEffect = child;\n          } else {\n            commitMutationEffects_complete(root, lanes);\n          }\n        }\n      }\n      function commitMutationEffects_complete(root, lanes) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          setCurrentFiber(fiber);\n          try {\n            commitMutationEffectsOnFiber(fiber, root, lanes);\n          } catch (error3) {\n            reportUncaughtErrorInDEV(error3);\n            captureCommitPhaseError(fiber, fiber.return, error3);\n          }\n          resetCurrentFiber();\n          var sibling = fiber.sibling;\n          if (sibling !== null) {\n            ensureCorrectReturnPointer(sibling, fiber.return);\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = fiber.return;\n        }\n      }\n      function commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n        var flags = finishedWork.flags;\n        if (flags & ContentReset) {\n          commitResetTextContent(finishedWork);\n        }\n        if (flags & Ref) {\n          var current2 = finishedWork.alternate;\n          if (current2 !== null) {\n            commitDetachRef(current2);\n          }\n        }\n        if (flags & Visibility) {\n          switch (finishedWork.tag) {\n            case SuspenseComponent: {\n              var newState = finishedWork.memoizedState;\n              var isHidden = newState !== null;\n              if (isHidden) {\n                var _current = finishedWork.alternate;\n                var wasHidden = _current !== null && _current.memoizedState !== null;\n                if (!wasHidden) {\n                  markCommitTimeOfFallback();\n                }\n              }\n              break;\n            }\n            case OffscreenComponent: {\n              var _newState = finishedWork.memoizedState;\n              var _isHidden = _newState !== null;\n              var _current2 = finishedWork.alternate;\n              var _wasHidden = _current2 !== null && _current2.memoizedState !== null;\n              var offscreenBoundary = finishedWork;\n              if (supportsMutation) {\n                hideOrUnhideAllChildren(offscreenBoundary, _isHidden);\n              }\n              {\n                if (_isHidden) {\n                  if (!_wasHidden) {\n                    if ((offscreenBoundary.mode & ConcurrentMode) !== NoMode) {\n                      nextEffect = offscreenBoundary;\n                      var offscreenChild = offscreenBoundary.child;\n                      while (offscreenChild !== null) {\n                        nextEffect = offscreenChild;\n                        disappearLayoutEffects_begin(offscreenChild);\n                        offscreenChild = offscreenChild.sibling;\n                      }\n                    }\n                  }\n                }\n                break;\n              }\n            }\n          }\n        }\n        var primaryFlags = flags & (Placement | Update | Hydrating);\n        switch (primaryFlags) {\n          case Placement: {\n            commitPlacement(finishedWork);\n            finishedWork.flags &= -3;\n            break;\n          }\n          case PlacementAndUpdate: {\n            commitPlacement(finishedWork);\n            finishedWork.flags &= -3;\n            var _current3 = finishedWork.alternate;\n            commitWork(_current3, finishedWork);\n            break;\n          }\n          case Hydrating: {\n            finishedWork.flags &= -4097;\n            break;\n          }\n          case HydratingAndUpdate: {\n            finishedWork.flags &= -4097;\n            var _current4 = finishedWork.alternate;\n            commitWork(_current4, finishedWork);\n            break;\n          }\n          case Update: {\n            var _current5 = finishedWork.alternate;\n            commitWork(_current5, finishedWork);\n            break;\n          }\n        }\n      }\n      function commitLayoutEffects(finishedWork, root, committedLanes) {\n        inProgressLanes = committedLanes;\n        inProgressRoot = root;\n        nextEffect = finishedWork;\n        commitLayoutEffects_begin(finishedWork, root, committedLanes);\n        inProgressLanes = null;\n        inProgressRoot = null;\n      }\n      function commitLayoutEffects_begin(subtreeRoot, root, committedLanes) {\n        var isModernRoot = (subtreeRoot.mode & ConcurrentMode) !== NoMode;\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var firstChild = fiber.child;\n          if (fiber.tag === OffscreenComponent && isModernRoot) {\n            var isHidden = fiber.memoizedState !== null;\n            var newOffscreenSubtreeIsHidden = isHidden || offscreenSubtreeIsHidden;\n            if (newOffscreenSubtreeIsHidden) {\n              commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n              continue;\n            } else {\n              var current2 = fiber.alternate;\n              var wasHidden = current2 !== null && current2.memoizedState !== null;\n              var newOffscreenSubtreeWasHidden = wasHidden || offscreenSubtreeWasHidden;\n              var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;\n              var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n              offscreenSubtreeIsHidden = newOffscreenSubtreeIsHidden;\n              offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden;\n              if (offscreenSubtreeWasHidden && !prevOffscreenSubtreeWasHidden) {\n                nextEffect = fiber;\n                reappearLayoutEffects_begin(fiber);\n              }\n              var child = firstChild;\n              while (child !== null) {\n                nextEffect = child;\n                commitLayoutEffects_begin(\n                  child,\n                  // New root; bubble back up to here and stop.\n                  root,\n                  committedLanes\n                );\n                child = child.sibling;\n              }\n              nextEffect = fiber;\n              offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n              offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n              commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n              continue;\n            }\n          }\n          if ((fiber.subtreeFlags & LayoutMask) !== NoFlags && firstChild !== null) {\n            ensureCorrectReturnPointer(firstChild, fiber);\n            nextEffect = firstChild;\n          } else {\n            commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n          }\n        }\n      }\n      function commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          if ((fiber.flags & LayoutMask) !== NoFlags) {\n            var current2 = fiber.alternate;\n            setCurrentFiber(fiber);\n            try {\n              commitLayoutEffectOnFiber(root, current2, fiber, committedLanes);\n            } catch (error3) {\n              reportUncaughtErrorInDEV(error3);\n              captureCommitPhaseError(fiber, fiber.return, error3);\n            }\n            resetCurrentFiber();\n          }\n          if (fiber === subtreeRoot) {\n            nextEffect = null;\n            return;\n          }\n          var sibling = fiber.sibling;\n          if (sibling !== null) {\n            ensureCorrectReturnPointer(sibling, fiber.return);\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = fiber.return;\n        }\n      }\n      function disappearLayoutEffects_begin(subtreeRoot) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var firstChild = fiber.child;\n          switch (fiber.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case MemoComponent:\n            case SimpleMemoComponent: {\n              if (fiber.mode & ProfileMode) {\n                try {\n                  startLayoutEffectTimer();\n                  commitHookEffectListUnmount(Layout, fiber, fiber.return);\n                } finally {\n                  recordLayoutEffectDuration(fiber);\n                }\n              } else {\n                commitHookEffectListUnmount(Layout, fiber, fiber.return);\n              }\n              break;\n            }\n            case ClassComponent: {\n              safelyDetachRef(fiber, fiber.return);\n              var instance = fiber.stateNode;\n              if (typeof instance.componentWillUnmount === \"function\") {\n                safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n              }\n              break;\n            }\n            case HostComponent: {\n              safelyDetachRef(fiber, fiber.return);\n              break;\n            }\n            case OffscreenComponent: {\n              var isHidden = fiber.memoizedState !== null;\n              if (isHidden) {\n                disappearLayoutEffects_complete(subtreeRoot);\n                continue;\n              }\n              break;\n            }\n          }\n          if (firstChild !== null) {\n            firstChild.return = fiber;\n            nextEffect = firstChild;\n          } else {\n            disappearLayoutEffects_complete(subtreeRoot);\n          }\n        }\n      }\n      function disappearLayoutEffects_complete(subtreeRoot) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          if (fiber === subtreeRoot) {\n            nextEffect = null;\n            return;\n          }\n          var sibling = fiber.sibling;\n          if (sibling !== null) {\n            sibling.return = fiber.return;\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = fiber.return;\n        }\n      }\n      function reappearLayoutEffects_begin(subtreeRoot) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var firstChild = fiber.child;\n          if (fiber.tag === OffscreenComponent) {\n            var isHidden = fiber.memoizedState !== null;\n            if (isHidden) {\n              reappearLayoutEffects_complete(subtreeRoot);\n              continue;\n            }\n          }\n          if (firstChild !== null) {\n            firstChild.return = fiber;\n            nextEffect = firstChild;\n          } else {\n            reappearLayoutEffects_complete(subtreeRoot);\n          }\n        }\n      }\n      function reappearLayoutEffects_complete(subtreeRoot) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          setCurrentFiber(fiber);\n          try {\n            reappearLayoutEffectsOnFiber(fiber);\n          } catch (error3) {\n            reportUncaughtErrorInDEV(error3);\n            captureCommitPhaseError(fiber, fiber.return, error3);\n          }\n          resetCurrentFiber();\n          if (fiber === subtreeRoot) {\n            nextEffect = null;\n            return;\n          }\n          var sibling = fiber.sibling;\n          if (sibling !== null) {\n            sibling.return = fiber.return;\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = fiber.return;\n        }\n      }\n      function commitPassiveMountEffects(root, finishedWork) {\n        nextEffect = finishedWork;\n        commitPassiveMountEffects_begin(finishedWork, root);\n      }\n      function commitPassiveMountEffects_begin(subtreeRoot, root) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var firstChild = fiber.child;\n          if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && firstChild !== null) {\n            ensureCorrectReturnPointer(firstChild, fiber);\n            nextEffect = firstChild;\n          } else {\n            commitPassiveMountEffects_complete(subtreeRoot, root);\n          }\n        }\n      }\n      function commitPassiveMountEffects_complete(subtreeRoot, root) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          if ((fiber.flags & Passive) !== NoFlags) {\n            setCurrentFiber(fiber);\n            try {\n              commitPassiveMountOnFiber(root, fiber);\n            } catch (error3) {\n              reportUncaughtErrorInDEV(error3);\n              captureCommitPhaseError(fiber, fiber.return, error3);\n            }\n            resetCurrentFiber();\n          }\n          if (fiber === subtreeRoot) {\n            nextEffect = null;\n            return;\n          }\n          var sibling = fiber.sibling;\n          if (sibling !== null) {\n            ensureCorrectReturnPointer(sibling, fiber.return);\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = fiber.return;\n        }\n      }\n      function commitPassiveMountOnFiber(finishedRoot, finishedWork) {\n        switch (finishedWork.tag) {\n          case FunctionComponent:\n          case ForwardRef:\n          case SimpleMemoComponent: {\n            if (finishedWork.mode & ProfileMode) {\n              startPassiveEffectTimer();\n              try {\n                commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n              } finally {\n                recordPassiveEffectDuration(finishedWork);\n              }\n            } else {\n              commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n            }\n            break;\n          }\n        }\n      }\n      function commitPassiveUnmountEffects(firstChild) {\n        nextEffect = firstChild;\n        commitPassiveUnmountEffects_begin();\n      }\n      function commitPassiveUnmountEffects_begin() {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var child = fiber.child;\n          if ((nextEffect.flags & ChildDeletion) !== NoFlags) {\n            var deletions = fiber.deletions;\n            if (deletions !== null) {\n              for (var i2 = 0; i2 < deletions.length; i2++) {\n                var fiberToDelete = deletions[i2];\n                nextEffect = fiberToDelete;\n                commitPassiveUnmountEffectsInsideOfDeletedTree_begin(fiberToDelete, fiber);\n              }\n              {\n                var previousFiber = fiber.alternate;\n                if (previousFiber !== null) {\n                  var detachedChild = previousFiber.child;\n                  if (detachedChild !== null) {\n                    previousFiber.child = null;\n                    do {\n                      var detachedSibling = detachedChild.sibling;\n                      detachedChild.sibling = null;\n                      detachedChild = detachedSibling;\n                    } while (detachedChild !== null);\n                  }\n                }\n              }\n              nextEffect = fiber;\n            }\n          }\n          if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && child !== null) {\n            ensureCorrectReturnPointer(child, fiber);\n            nextEffect = child;\n          } else {\n            commitPassiveUnmountEffects_complete();\n          }\n        }\n      }\n      function commitPassiveUnmountEffects_complete() {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          if ((fiber.flags & Passive) !== NoFlags) {\n            setCurrentFiber(fiber);\n            commitPassiveUnmountOnFiber(fiber);\n            resetCurrentFiber();\n          }\n          var sibling = fiber.sibling;\n          if (sibling !== null) {\n            ensureCorrectReturnPointer(sibling, fiber.return);\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = fiber.return;\n        }\n      }\n      function commitPassiveUnmountOnFiber(finishedWork) {\n        switch (finishedWork.tag) {\n          case FunctionComponent:\n          case ForwardRef:\n          case SimpleMemoComponent: {\n            if (finishedWork.mode & ProfileMode) {\n              startPassiveEffectTimer();\n              commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n              recordPassiveEffectDuration(finishedWork);\n            } else {\n              commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n            }\n            break;\n          }\n        }\n      }\n      function commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          setCurrentFiber(fiber);\n          commitPassiveUnmountInsideDeletedTreeOnFiber(fiber, nearestMountedAncestor);\n          resetCurrentFiber();\n          var child = fiber.child;\n          if (child !== null) {\n            ensureCorrectReturnPointer(child, fiber);\n            nextEffect = child;\n          } else {\n            commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot);\n          }\n        }\n      }\n      function commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot) {\n        while (nextEffect !== null) {\n          var fiber = nextEffect;\n          var sibling = fiber.sibling;\n          var returnFiber = fiber.return;\n          {\n            detachFiberAfterEffects(fiber);\n            if (fiber === deletedSubtreeRoot) {\n              nextEffect = null;\n              return;\n            }\n          }\n          if (sibling !== null) {\n            ensureCorrectReturnPointer(sibling, returnFiber);\n            nextEffect = sibling;\n            return;\n          }\n          nextEffect = returnFiber;\n        }\n      }\n      function commitPassiveUnmountInsideDeletedTreeOnFiber(current2, nearestMountedAncestor) {\n        switch (current2.tag) {\n          case FunctionComponent:\n          case ForwardRef:\n          case SimpleMemoComponent: {\n            if (current2.mode & ProfileMode) {\n              startPassiveEffectTimer();\n              commitHookEffectListUnmount(Passive$1, current2, nearestMountedAncestor);\n              recordPassiveEffectDuration(current2);\n            } else {\n              commitHookEffectListUnmount(Passive$1, current2, nearestMountedAncestor);\n            }\n            break;\n          }\n        }\n      }\n      var didWarnWrongReturnPointer = false;\n      function ensureCorrectReturnPointer(fiber, expectedReturnFiber) {\n        {\n          if (!didWarnWrongReturnPointer && fiber.return !== expectedReturnFiber) {\n            didWarnWrongReturnPointer = true;\n            error2(\"Internal React error: Return pointer is inconsistent with parent.\");\n          }\n        }\n        fiber.return = expectedReturnFiber;\n      }\n      function invokeLayoutEffectMountInDEV(fiber) {\n        {\n          switch (fiber.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              try {\n                commitHookEffectListMount(Layout | HasEffect, fiber);\n              } catch (error3) {\n                reportUncaughtErrorInDEV(error3);\n                captureCommitPhaseError(fiber, fiber.return, error3);\n              }\n              break;\n            }\n            case ClassComponent: {\n              var instance = fiber.stateNode;\n              try {\n                instance.componentDidMount();\n              } catch (error3) {\n                reportUncaughtErrorInDEV(error3);\n                captureCommitPhaseError(fiber, fiber.return, error3);\n              }\n              break;\n            }\n          }\n        }\n      }\n      function invokePassiveEffectMountInDEV(fiber) {\n        {\n          switch (fiber.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              try {\n                commitHookEffectListMount(Passive$1 | HasEffect, fiber);\n              } catch (error3) {\n                reportUncaughtErrorInDEV(error3);\n                captureCommitPhaseError(fiber, fiber.return, error3);\n              }\n              break;\n            }\n          }\n        }\n      }\n      function invokeLayoutEffectUnmountInDEV(fiber) {\n        {\n          switch (fiber.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              try {\n                commitHookEffectListUnmount(Layout | HasEffect, fiber, fiber.return);\n              } catch (error3) {\n                reportUncaughtErrorInDEV(error3);\n                captureCommitPhaseError(fiber, fiber.return, error3);\n              }\n              break;\n            }\n            case ClassComponent: {\n              var instance = fiber.stateNode;\n              if (typeof instance.componentWillUnmount === \"function\") {\n                safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n              }\n              break;\n            }\n          }\n        }\n      }\n      function invokePassiveEffectUnmountInDEV(fiber) {\n        {\n          switch (fiber.tag) {\n            case FunctionComponent:\n            case ForwardRef:\n            case SimpleMemoComponent: {\n              try {\n                commitHookEffectListUnmount(Passive$1 | HasEffect, fiber, fiber.return);\n              } catch (error3) {\n                reportUncaughtErrorInDEV(error3);\n                captureCommitPhaseError(fiber, fiber.return, error3);\n              }\n            }\n          }\n        }\n      }\n      var COMPONENT_TYPE = 0;\n      var HAS_PSEUDO_CLASS_TYPE = 1;\n      var ROLE_TYPE = 2;\n      var TEST_NAME_TYPE = 3;\n      var TEXT_TYPE = 4;\n      if (typeof Symbol === \"function\" && Symbol.for) {\n        var symbolFor = Symbol.for;\n        COMPONENT_TYPE = symbolFor(\"selector.component\");\n        HAS_PSEUDO_CLASS_TYPE = symbolFor(\"selector.has_pseudo_class\");\n        ROLE_TYPE = symbolFor(\"selector.role\");\n        TEST_NAME_TYPE = symbolFor(\"selector.test_id\");\n        TEXT_TYPE = symbolFor(\"selector.text\");\n      }\n      function createComponentSelector(component) {\n        return {\n          $$typeof: COMPONENT_TYPE,\n          value: component\n        };\n      }\n      function createHasPseudoClassSelector(selectors) {\n        return {\n          $$typeof: HAS_PSEUDO_CLASS_TYPE,\n          value: selectors\n        };\n      }\n      function createRoleSelector(role) {\n        return {\n          $$typeof: ROLE_TYPE,\n          value: role\n        };\n      }\n      function createTextSelector(text) {\n        return {\n          $$typeof: TEXT_TYPE,\n          value: text\n        };\n      }\n      function createTestNameSelector(id) {\n        return {\n          $$typeof: TEST_NAME_TYPE,\n          value: id\n        };\n      }\n      function findFiberRootForHostRoot(hostRoot) {\n        var maybeFiber = getInstanceFromNode(hostRoot);\n        if (maybeFiber != null) {\n          if (typeof maybeFiber.memoizedProps[\"data-testname\"] !== \"string\") {\n            throw new Error(\"Invalid host root specified. Should be either a React container or a node with a testname attribute.\");\n          }\n          return maybeFiber;\n        } else {\n          var fiberRoot = findFiberRoot(hostRoot);\n          if (fiberRoot === null) {\n            throw new Error(\"Could not find React container within specified host subtree.\");\n          }\n          return fiberRoot.stateNode.current;\n        }\n      }\n      function matchSelector(fiber, selector) {\n        switch (selector.$$typeof) {\n          case COMPONENT_TYPE:\n            if (fiber.type === selector.value) {\n              return true;\n            }\n            break;\n          case HAS_PSEUDO_CLASS_TYPE:\n            return hasMatchingPaths(fiber, selector.value);\n          case ROLE_TYPE:\n            if (fiber.tag === HostComponent) {\n              var node = fiber.stateNode;\n              if (matchAccessibilityRole(node, selector.value)) {\n                return true;\n              }\n            }\n            break;\n          case TEXT_TYPE:\n            if (fiber.tag === HostComponent || fiber.tag === HostText) {\n              var textContent = getTextContent(fiber);\n              if (textContent !== null && textContent.indexOf(selector.value) >= 0) {\n                return true;\n              }\n            }\n            break;\n          case TEST_NAME_TYPE:\n            if (fiber.tag === HostComponent) {\n              var dataTestID = fiber.memoizedProps[\"data-testname\"];\n              if (typeof dataTestID === \"string\" && dataTestID.toLowerCase() === selector.value.toLowerCase()) {\n                return true;\n              }\n            }\n            break;\n          default:\n            throw new Error(\"Invalid selector type specified.\");\n        }\n        return false;\n      }\n      function selectorToString(selector) {\n        switch (selector.$$typeof) {\n          case COMPONENT_TYPE:\n            var displayName = getComponentNameFromType(selector.value) || \"Unknown\";\n            return \"<\" + displayName + \">\";\n          case HAS_PSEUDO_CLASS_TYPE:\n            return \":has(\" + (selectorToString(selector) || \"\") + \")\";\n          case ROLE_TYPE:\n            return '[role=\"' + selector.value + '\"]';\n          case TEXT_TYPE:\n            return '\"' + selector.value + '\"';\n          case TEST_NAME_TYPE:\n            return '[data-testname=\"' + selector.value + '\"]';\n          default:\n            throw new Error(\"Invalid selector type specified.\");\n        }\n      }\n      function findPaths(root, selectors) {\n        var matchingFibers = [];\n        var stack = [root, 0];\n        var index2 = 0;\n        while (index2 < stack.length) {\n          var fiber = stack[index2++];\n          var selectorIndex = stack[index2++];\n          var selector = selectors[selectorIndex];\n          if (fiber.tag === HostComponent && isHiddenSubtree(fiber)) {\n            continue;\n          } else {\n            while (selector != null && matchSelector(fiber, selector)) {\n              selectorIndex++;\n              selector = selectors[selectorIndex];\n            }\n          }\n          if (selectorIndex === selectors.length) {\n            matchingFibers.push(fiber);\n          } else {\n            var child = fiber.child;\n            while (child !== null) {\n              stack.push(child, selectorIndex);\n              child = child.sibling;\n            }\n          }\n        }\n        return matchingFibers;\n      }\n      function hasMatchingPaths(root, selectors) {\n        var stack = [root, 0];\n        var index2 = 0;\n        while (index2 < stack.length) {\n          var fiber = stack[index2++];\n          var selectorIndex = stack[index2++];\n          var selector = selectors[selectorIndex];\n          if (fiber.tag === HostComponent && isHiddenSubtree(fiber)) {\n            continue;\n          } else {\n            while (selector != null && matchSelector(fiber, selector)) {\n              selectorIndex++;\n              selector = selectors[selectorIndex];\n            }\n          }\n          if (selectorIndex === selectors.length) {\n            return true;\n          } else {\n            var child = fiber.child;\n            while (child !== null) {\n              stack.push(child, selectorIndex);\n              child = child.sibling;\n            }\n          }\n        }\n        return false;\n      }\n      function findAllNodes(hostRoot, selectors) {\n        if (!supportsTestSelectors) {\n          throw new Error(\"Test selector API is not supported by this renderer.\");\n        }\n        var root = findFiberRootForHostRoot(hostRoot);\n        var matchingFibers = findPaths(root, selectors);\n        var instanceRoots = [];\n        var stack = Array.from(matchingFibers);\n        var index2 = 0;\n        while (index2 < stack.length) {\n          var node = stack[index2++];\n          if (node.tag === HostComponent) {\n            if (isHiddenSubtree(node)) {\n              continue;\n            }\n            instanceRoots.push(node.stateNode);\n          } else {\n            var child = node.child;\n            while (child !== null) {\n              stack.push(child);\n              child = child.sibling;\n            }\n          }\n        }\n        return instanceRoots;\n      }\n      function getFindAllNodesFailureDescription(hostRoot, selectors) {\n        if (!supportsTestSelectors) {\n          throw new Error(\"Test selector API is not supported by this renderer.\");\n        }\n        var root = findFiberRootForHostRoot(hostRoot);\n        var maxSelectorIndex = 0;\n        var matchedNames = [];\n        var stack = [root, 0];\n        var index2 = 0;\n        while (index2 < stack.length) {\n          var fiber = stack[index2++];\n          var selectorIndex = stack[index2++];\n          var selector = selectors[selectorIndex];\n          if (fiber.tag === HostComponent && isHiddenSubtree(fiber)) {\n            continue;\n          } else if (matchSelector(fiber, selector)) {\n            matchedNames.push(selectorToString(selector));\n            selectorIndex++;\n            if (selectorIndex > maxSelectorIndex) {\n              maxSelectorIndex = selectorIndex;\n            }\n          }\n          if (selectorIndex < selectors.length) {\n            var child = fiber.child;\n            while (child !== null) {\n              stack.push(child, selectorIndex);\n              child = child.sibling;\n            }\n          }\n        }\n        if (maxSelectorIndex < selectors.length) {\n          var unmatchedNames = [];\n          for (var i2 = maxSelectorIndex; i2 < selectors.length; i2++) {\n            unmatchedNames.push(selectorToString(selectors[i2]));\n          }\n          return \"findAllNodes was able to match part of the selector:\\n\" + (\"  \" + matchedNames.join(\" > \") + \"\\n\\n\") + \"No matching component was found for:\\n\" + (\"  \" + unmatchedNames.join(\" > \"));\n        }\n        return null;\n      }\n      function findBoundingRects(hostRoot, selectors) {\n        if (!supportsTestSelectors) {\n          throw new Error(\"Test selector API is not supported by this renderer.\");\n        }\n        var instanceRoots = findAllNodes(hostRoot, selectors);\n        var boundingRects = [];\n        for (var i2 = 0; i2 < instanceRoots.length; i2++) {\n          boundingRects.push(getBoundingRect(instanceRoots[i2]));\n        }\n        for (var _i = boundingRects.length - 1; _i > 0; _i--) {\n          var targetRect = boundingRects[_i];\n          var targetLeft = targetRect.x;\n          var targetRight = targetLeft + targetRect.width;\n          var targetTop = targetRect.y;\n          var targetBottom = targetTop + targetRect.height;\n          for (var j2 = _i - 1; j2 >= 0; j2--) {\n            if (_i !== j2) {\n              var otherRect = boundingRects[j2];\n              var otherLeft = otherRect.x;\n              var otherRight = otherLeft + otherRect.width;\n              var otherTop = otherRect.y;\n              var otherBottom = otherTop + otherRect.height;\n              if (targetLeft >= otherLeft && targetTop >= otherTop && targetRight <= otherRight && targetBottom <= otherBottom) {\n                boundingRects.splice(_i, 1);\n                break;\n              } else if (targetLeft === otherLeft && targetRect.width === otherRect.width && !(otherBottom < targetTop) && !(otherTop > targetBottom)) {\n                if (otherTop > targetTop) {\n                  otherRect.height += otherTop - targetTop;\n                  otherRect.y = targetTop;\n                }\n                if (otherBottom < targetBottom) {\n                  otherRect.height = targetBottom - otherTop;\n                }\n                boundingRects.splice(_i, 1);\n                break;\n              } else if (targetTop === otherTop && targetRect.height === otherRect.height && !(otherRight < targetLeft) && !(otherLeft > targetRight)) {\n                if (otherLeft > targetLeft) {\n                  otherRect.width += otherLeft - targetLeft;\n                  otherRect.x = targetLeft;\n                }\n                if (otherRight < targetRight) {\n                  otherRect.width = targetRight - otherLeft;\n                }\n                boundingRects.splice(_i, 1);\n                break;\n              }\n            }\n          }\n        }\n        return boundingRects;\n      }\n      function focusWithin(hostRoot, selectors) {\n        if (!supportsTestSelectors) {\n          throw new Error(\"Test selector API is not supported by this renderer.\");\n        }\n        var root = findFiberRootForHostRoot(hostRoot);\n        var matchingFibers = findPaths(root, selectors);\n        var stack = Array.from(matchingFibers);\n        var index2 = 0;\n        while (index2 < stack.length) {\n          var fiber = stack[index2++];\n          if (isHiddenSubtree(fiber)) {\n            continue;\n          }\n          if (fiber.tag === HostComponent) {\n            var node = fiber.stateNode;\n            if (setFocusIfFocusable(node)) {\n              return true;\n            }\n          }\n          var child = fiber.child;\n          while (child !== null) {\n            stack.push(child);\n            child = child.sibling;\n          }\n        }\n        return false;\n      }\n      var commitHooks = [];\n      function onCommitRoot$1() {\n        if (supportsTestSelectors) {\n          commitHooks.forEach(function(commitHook) {\n            return commitHook();\n          });\n        }\n      }\n      function observeVisibleRects(hostRoot, selectors, callback, options) {\n        if (!supportsTestSelectors) {\n          throw new Error(\"Test selector API is not supported by this renderer.\");\n        }\n        var instanceRoots = findAllNodes(hostRoot, selectors);\n        var _setupIntersectionObs = setupIntersectionObserver(instanceRoots, callback, options), disconnect = _setupIntersectionObs.disconnect, observe = _setupIntersectionObs.observe, unobserve = _setupIntersectionObs.unobserve;\n        var commitHook = function() {\n          var nextInstanceRoots = findAllNodes(hostRoot, selectors);\n          instanceRoots.forEach(function(target) {\n            if (nextInstanceRoots.indexOf(target) < 0) {\n              unobserve(target);\n            }\n          });\n          nextInstanceRoots.forEach(function(target) {\n            if (instanceRoots.indexOf(target) < 0) {\n              observe(target);\n            }\n          });\n        };\n        commitHooks.push(commitHook);\n        return {\n          disconnect: function() {\n            var index2 = commitHooks.indexOf(commitHook);\n            if (index2 >= 0) {\n              commitHooks.splice(index2, 1);\n            }\n            disconnect();\n          }\n        };\n      }\n      var ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue;\n      function isLegacyActEnvironment(fiber) {\n        {\n          var isReactActEnvironmentGlobal = (\n            // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n            typeof IS_REACT_ACT_ENVIRONMENT !== \"undefined\" ? IS_REACT_ACT_ENVIRONMENT : void 0\n          );\n          var jestIsDefined = typeof jest !== \"undefined\";\n          return warnsIfNotActing && jestIsDefined && isReactActEnvironmentGlobal !== false;\n        }\n      }\n      function isConcurrentActEnvironment() {\n        {\n          var isReactActEnvironmentGlobal = (\n            // $FlowExpectedError – Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n            typeof IS_REACT_ACT_ENVIRONMENT !== \"undefined\" ? IS_REACT_ACT_ENVIRONMENT : void 0\n          );\n          if (!isReactActEnvironmentGlobal && ReactCurrentActQueue.current !== null) {\n            error2(\"The current testing environment is not configured to support act(...)\");\n          }\n          return isReactActEnvironmentGlobal;\n        }\n      }\n      var ceil = Math.ceil;\n      var ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher, ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner, ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig, ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue;\n      var NoContext = (\n        /*             */\n        0\n      );\n      var BatchedContext = (\n        /*               */\n        1\n      );\n      var RenderContext = (\n        /*                */\n        2\n      );\n      var CommitContext = (\n        /*                */\n        4\n      );\n      var RootInProgress = 0;\n      var RootFatalErrored = 1;\n      var RootErrored = 2;\n      var RootSuspended = 3;\n      var RootSuspendedWithDelay = 4;\n      var RootCompleted = 5;\n      var RootDidNotComplete = 6;\n      var executionContext = NoContext;\n      var workInProgressRoot = null;\n      var workInProgress = null;\n      var workInProgressRootRenderLanes = NoLanes;\n      var subtreeRenderLanes = NoLanes;\n      var subtreeRenderLanesCursor = createCursor(NoLanes);\n      var workInProgressRootExitStatus = RootInProgress;\n      var workInProgressRootFatalError = null;\n      var workInProgressRootSkippedLanes = NoLanes;\n      var workInProgressRootInterleavedUpdatedLanes = NoLanes;\n      var workInProgressRootPingedLanes = NoLanes;\n      var workInProgressRootConcurrentErrors = null;\n      var workInProgressRootRecoverableErrors = null;\n      var globalMostRecentFallbackTime = 0;\n      var FALLBACK_THROTTLE_MS = 500;\n      var workInProgressRootRenderTargetTime = Infinity;\n      var RENDER_TIMEOUT_MS = 500;\n      function resetRenderTimer() {\n        workInProgressRootRenderTargetTime = now$1() + RENDER_TIMEOUT_MS;\n      }\n      function getRenderTargetTime() {\n        return workInProgressRootRenderTargetTime;\n      }\n      var hasUncaughtError = false;\n      var firstUncaughtError = null;\n      var legacyErrorBoundariesThatAlreadyFailed = null;\n      var rootDoesHavePassiveEffects = false;\n      var rootWithPendingPassiveEffects = null;\n      var pendingPassiveEffectsLanes = NoLanes;\n      var pendingPassiveProfilerEffects = [];\n      var NESTED_UPDATE_LIMIT = 50;\n      var nestedUpdateCount = 0;\n      var rootWithNestedUpdates = null;\n      var NESTED_PASSIVE_UPDATE_LIMIT = 50;\n      var nestedPassiveUpdateCount = 0;\n      var currentEventTime = NoTimestamp;\n      var currentEventTransitionLane = NoLanes;\n      function getWorkInProgressRoot() {\n        return workInProgressRoot;\n      }\n      function requestEventTime() {\n        if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n          return now$1();\n        }\n        if (currentEventTime !== NoTimestamp) {\n          return currentEventTime;\n        }\n        currentEventTime = now$1();\n        return currentEventTime;\n      }\n      function requestUpdateLane(fiber) {\n        var mode = fiber.mode;\n        if ((mode & ConcurrentMode) === NoMode) {\n          return SyncLane;\n        } else if ((executionContext & RenderContext) !== NoContext && workInProgressRootRenderLanes !== NoLanes) {\n          return pickArbitraryLane(workInProgressRootRenderLanes);\n        }\n        var isTransition = requestCurrentTransition() !== NoTransition;\n        if (isTransition) {\n          if (ReactCurrentBatchConfig$2.transition !== null) {\n            var transition = ReactCurrentBatchConfig$2.transition;\n            if (!transition._updatedFibers) {\n              transition._updatedFibers = /* @__PURE__ */ new Set();\n            }\n            transition._updatedFibers.add(fiber);\n          }\n          if (currentEventTransitionLane === NoLane) {\n            currentEventTransitionLane = claimNextTransitionLane();\n          }\n          return currentEventTransitionLane;\n        }\n        var updateLane = getCurrentUpdatePriority();\n        if (updateLane !== NoLane) {\n          return updateLane;\n        }\n        var eventLane = getCurrentEventPriority();\n        return eventLane;\n      }\n      function requestRetryLane(fiber) {\n        var mode = fiber.mode;\n        if ((mode & ConcurrentMode) === NoMode) {\n          return SyncLane;\n        }\n        return claimNextRetryLane();\n      }\n      function scheduleUpdateOnFiber(fiber, lane, eventTime) {\n        checkForNestedUpdates();\n        var root = markUpdateLaneFromFiberToRoot(fiber, lane);\n        if (root === null) {\n          return null;\n        }\n        markRootUpdated(root, lane, eventTime);\n        if ((executionContext & RenderContext) !== NoLanes && root === workInProgressRoot) {\n          warnAboutRenderPhaseUpdatesInDEV(fiber);\n        } else {\n          {\n            if (isDevToolsPresent) {\n              addFiberToLanesMap(root, fiber, lane);\n            }\n          }\n          warnIfUpdatesNotWrappedWithActDEV(fiber);\n          if (root === workInProgressRoot) {\n            if ((executionContext & RenderContext) === NoContext) {\n              workInProgressRootInterleavedUpdatedLanes = mergeLanes(workInProgressRootInterleavedUpdatedLanes, lane);\n            }\n            if (workInProgressRootExitStatus === RootSuspendedWithDelay) {\n              markRootSuspended$1(root, workInProgressRootRenderLanes);\n            }\n          }\n          ensureRootIsScheduled(root, eventTime);\n          if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n          !ReactCurrentActQueue$1.isBatchingLegacy) {\n            resetRenderTimer();\n            flushSyncCallbacksOnlyInLegacyMode();\n          }\n        }\n        return root;\n      }\n      function scheduleInitialHydrationOnRoot(root, lane, eventTime) {\n        var current2 = root.current;\n        current2.lanes = lane;\n        markRootUpdated(root, lane, eventTime);\n        ensureRootIsScheduled(root, eventTime);\n      }\n      function markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n        sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);\n        var alternate = sourceFiber.alternate;\n        if (alternate !== null) {\n          alternate.lanes = mergeLanes(alternate.lanes, lane);\n        }\n        {\n          if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {\n            warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n          }\n        }\n        var node = sourceFiber;\n        var parent = sourceFiber.return;\n        while (parent !== null) {\n          parent.childLanes = mergeLanes(parent.childLanes, lane);\n          alternate = parent.alternate;\n          if (alternate !== null) {\n            alternate.childLanes = mergeLanes(alternate.childLanes, lane);\n          } else {\n            {\n              if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {\n                warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n              }\n            }\n          }\n          node = parent;\n          parent = parent.return;\n        }\n        if (node.tag === HostRoot) {\n          var root = node.stateNode;\n          return root;\n        } else {\n          return null;\n        }\n      }\n      function isInterleavedUpdate(fiber, lane) {\n        return (\n          // TODO: Optimize slightly by comparing to root that fiber belongs to.\n          // Requires some refactoring. Not a big deal though since it's rare for\n          // concurrent apps to have more than a single root.\n          workInProgressRoot !== null && (fiber.mode & ConcurrentMode) !== NoMode && // If this is a render phase update (i.e. UNSAFE_componentWillReceiveProps),\n          // then don't treat this as an interleaved update. This pattern is\n          // accompanied by a warning but we haven't fully deprecated it yet. We can\n          // remove once the deferRenderPhaseUpdateToNextBatch flag is enabled.\n          (executionContext & RenderContext) === NoContext\n        );\n      }\n      function ensureRootIsScheduled(root, currentTime) {\n        var existingCallbackNode = root.callbackNode;\n        markStarvedLanesAsExpired(root, currentTime);\n        var nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n        if (nextLanes === NoLanes) {\n          if (existingCallbackNode !== null) {\n            cancelCallback$1(existingCallbackNode);\n          }\n          root.callbackNode = null;\n          root.callbackPriority = NoLane;\n          return;\n        }\n        var newCallbackPriority = getHighestPriorityLane(nextLanes);\n        var existingCallbackPriority = root.callbackPriority;\n        if (existingCallbackPriority === newCallbackPriority && // Special case related to `act`. If the currently scheduled task is a\n        // Scheduler task, rather than an `act` task, cancel it and re-scheduled\n        // on the `act` queue.\n        !(ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) {\n          {\n            if (existingCallbackNode == null && existingCallbackPriority !== SyncLane) {\n              error2(\"Expected scheduled callback to exist. This error is likely caused by a bug in React. Please file an issue.\");\n            }\n          }\n          return;\n        }\n        if (existingCallbackNode != null) {\n          cancelCallback$1(existingCallbackNode);\n        }\n        var newCallbackNode;\n        if (newCallbackPriority === SyncLane) {\n          if (root.tag === LegacyRoot) {\n            if (ReactCurrentActQueue$1.isBatchingLegacy !== null) {\n              ReactCurrentActQueue$1.didScheduleLegacyUpdate = true;\n            }\n            scheduleLegacySyncCallback(performSyncWorkOnRoot.bind(null, root));\n          } else {\n            scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));\n          }\n          if (supportsMicrotasks) {\n            if (ReactCurrentActQueue$1.current !== null) {\n              ReactCurrentActQueue$1.current.push(flushSyncCallbacks);\n            } else {\n              scheduleMicrotask(function() {\n                if (executionContext === NoContext) {\n                  flushSyncCallbacks();\n                }\n              });\n            }\n          } else {\n            scheduleCallback$1(ImmediatePriority, flushSyncCallbacks);\n          }\n          newCallbackNode = null;\n        } else {\n          var schedulerPriorityLevel;\n          switch (lanesToEventPriority(nextLanes)) {\n            case DiscreteEventPriority:\n              schedulerPriorityLevel = ImmediatePriority;\n              break;\n            case ContinuousEventPriority:\n              schedulerPriorityLevel = UserBlockingPriority;\n              break;\n            case DefaultEventPriority:\n              schedulerPriorityLevel = NormalPriority;\n              break;\n            case IdleEventPriority:\n              schedulerPriorityLevel = IdlePriority;\n              break;\n            default:\n              schedulerPriorityLevel = NormalPriority;\n              break;\n          }\n          newCallbackNode = scheduleCallback$1(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root));\n        }\n        root.callbackPriority = newCallbackPriority;\n        root.callbackNode = newCallbackNode;\n      }\n      function performConcurrentWorkOnRoot(root, didTimeout) {\n        {\n          resetNestedUpdateFlag();\n        }\n        currentEventTime = NoTimestamp;\n        currentEventTransitionLane = NoLanes;\n        if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n          throw new Error(\"Should not already be working.\");\n        }\n        var originalCallbackNode = root.callbackNode;\n        var didFlushPassiveEffects = flushPassiveEffects();\n        if (didFlushPassiveEffects) {\n          if (root.callbackNode !== originalCallbackNode) {\n            return null;\n          }\n        }\n        var lanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n        if (lanes === NoLanes) {\n          return null;\n        }\n        var shouldTimeSlice = !includesBlockingLane(root, lanes) && !includesExpiredLane(root, lanes) && !didTimeout;\n        var exitStatus = shouldTimeSlice ? renderRootConcurrent(root, lanes) : renderRootSync(root, lanes);\n        if (exitStatus !== RootInProgress) {\n          if (exitStatus === RootErrored) {\n            var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n            if (errorRetryLanes !== NoLanes) {\n              lanes = errorRetryLanes;\n              exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n            }\n          }\n          if (exitStatus === RootFatalErrored) {\n            var fatalError = workInProgressRootFatalError;\n            prepareFreshStack(root, NoLanes);\n            markRootSuspended$1(root, lanes);\n            ensureRootIsScheduled(root, now$1());\n            throw fatalError;\n          }\n          if (exitStatus === RootDidNotComplete) {\n            markRootSuspended$1(root, lanes);\n          } else {\n            var renderWasConcurrent = !includesBlockingLane(root, lanes);\n            var finishedWork = root.current.alternate;\n            if (renderWasConcurrent && !isRenderConsistentWithExternalStores(finishedWork)) {\n              exitStatus = renderRootSync(root, lanes);\n              if (exitStatus === RootErrored) {\n                var _errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n                if (_errorRetryLanes !== NoLanes) {\n                  lanes = _errorRetryLanes;\n                  exitStatus = recoverFromConcurrentError(root, _errorRetryLanes);\n                }\n              }\n              if (exitStatus === RootFatalErrored) {\n                var _fatalError = workInProgressRootFatalError;\n                prepareFreshStack(root, NoLanes);\n                markRootSuspended$1(root, lanes);\n                ensureRootIsScheduled(root, now$1());\n                throw _fatalError;\n              }\n            }\n            root.finishedWork = finishedWork;\n            root.finishedLanes = lanes;\n            finishConcurrentRender(root, exitStatus, lanes);\n          }\n        }\n        ensureRootIsScheduled(root, now$1());\n        if (root.callbackNode === originalCallbackNode) {\n          return performConcurrentWorkOnRoot.bind(null, root);\n        }\n        return null;\n      }\n      function recoverFromConcurrentError(root, errorRetryLanes) {\n        var errorsFromFirstAttempt = workInProgressRootConcurrentErrors;\n        if (isRootDehydrated(root)) {\n          var rootWorkInProgress = prepareFreshStack(root, errorRetryLanes);\n          rootWorkInProgress.flags |= ForceClientRender;\n          {\n            errorHydratingContainer(root.containerInfo);\n          }\n        }\n        var exitStatus = renderRootSync(root, errorRetryLanes);\n        if (exitStatus !== RootErrored) {\n          var errorsFromSecondAttempt = workInProgressRootRecoverableErrors;\n          workInProgressRootRecoverableErrors = errorsFromFirstAttempt;\n          if (errorsFromSecondAttempt !== null) {\n            queueRecoverableErrors(errorsFromSecondAttempt);\n          }\n        }\n        return exitStatus;\n      }\n      function queueRecoverableErrors(errors) {\n        if (workInProgressRootRecoverableErrors === null) {\n          workInProgressRootRecoverableErrors = errors;\n        } else {\n          workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors, errors);\n        }\n      }\n      function finishConcurrentRender(root, exitStatus, lanes) {\n        switch (exitStatus) {\n          case RootInProgress:\n          case RootFatalErrored: {\n            throw new Error(\"Root did not complete. This is a bug in React.\");\n          }\n          // Flow knows about invariant, so it complains if I add a break\n          // statement, but eslint doesn't know about invariant, so it complains\n          // if I do. eslint-disable-next-line no-fallthrough\n          case RootErrored: {\n            commitRoot(root, workInProgressRootRecoverableErrors);\n            break;\n          }\n          case RootSuspended: {\n            markRootSuspended$1(root, lanes);\n            if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope\n            !shouldForceFlushFallbacksInDEV()) {\n              var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now$1();\n              if (msUntilTimeout > 10) {\n                var nextLanes = getNextLanes(root, NoLanes);\n                if (nextLanes !== NoLanes) {\n                  break;\n                }\n                var suspendedLanes = root.suspendedLanes;\n                if (!isSubsetOfLanes(suspendedLanes, lanes)) {\n                  requestEventTime();\n                  markRootPinged(root, suspendedLanes);\n                  break;\n                }\n                root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors), msUntilTimeout);\n                break;\n              }\n            }\n            commitRoot(root, workInProgressRootRecoverableErrors);\n            break;\n          }\n          case RootSuspendedWithDelay: {\n            markRootSuspended$1(root, lanes);\n            if (includesOnlyTransitions(lanes)) {\n              break;\n            }\n            if (!shouldForceFlushFallbacksInDEV()) {\n              var mostRecentEventTime = getMostRecentEventTime(root, lanes);\n              var eventTimeMs = mostRecentEventTime;\n              var timeElapsedMs = now$1() - eventTimeMs;\n              var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs;\n              if (_msUntilTimeout > 10) {\n                root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors), _msUntilTimeout);\n                break;\n              }\n            }\n            commitRoot(root, workInProgressRootRecoverableErrors);\n            break;\n          }\n          case RootCompleted: {\n            commitRoot(root, workInProgressRootRecoverableErrors);\n            break;\n          }\n          default: {\n            throw new Error(\"Unknown root exit status.\");\n          }\n        }\n      }\n      function isRenderConsistentWithExternalStores(finishedWork) {\n        var node = finishedWork;\n        while (true) {\n          if (node.flags & StoreConsistency) {\n            var updateQueue = node.updateQueue;\n            if (updateQueue !== null) {\n              var checks = updateQueue.stores;\n              if (checks !== null) {\n                for (var i2 = 0; i2 < checks.length; i2++) {\n                  var check = checks[i2];\n                  var getSnapshot = check.getSnapshot;\n                  var renderedValue = check.value;\n                  try {\n                    if (!objectIs(getSnapshot(), renderedValue)) {\n                      return false;\n                    }\n                  } catch (error3) {\n                    return false;\n                  }\n                }\n              }\n            }\n          }\n          var child = node.child;\n          if (node.subtreeFlags & StoreConsistency && child !== null) {\n            child.return = node;\n            node = child;\n            continue;\n          }\n          if (node === finishedWork) {\n            return true;\n          }\n          while (node.sibling === null) {\n            if (node.return === null || node.return === finishedWork) {\n              return true;\n            }\n            node = node.return;\n          }\n          node.sibling.return = node.return;\n          node = node.sibling;\n        }\n        return true;\n      }\n      function markRootSuspended$1(root, suspendedLanes) {\n        suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);\n        suspendedLanes = removeLanes(suspendedLanes, workInProgressRootInterleavedUpdatedLanes);\n        markRootSuspended(root, suspendedLanes);\n      }\n      function performSyncWorkOnRoot(root) {\n        {\n          syncNestedUpdateFlag();\n        }\n        if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n          throw new Error(\"Should not already be working.\");\n        }\n        flushPassiveEffects();\n        var lanes = getNextLanes(root, NoLanes);\n        if (!includesSomeLane(lanes, SyncLane)) {\n          ensureRootIsScheduled(root, now$1());\n          return null;\n        }\n        var exitStatus = renderRootSync(root, lanes);\n        if (root.tag !== LegacyRoot && exitStatus === RootErrored) {\n          var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n          if (errorRetryLanes !== NoLanes) {\n            lanes = errorRetryLanes;\n            exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n          }\n        }\n        if (exitStatus === RootFatalErrored) {\n          var fatalError = workInProgressRootFatalError;\n          prepareFreshStack(root, NoLanes);\n          markRootSuspended$1(root, lanes);\n          ensureRootIsScheduled(root, now$1());\n          throw fatalError;\n        }\n        if (exitStatus === RootDidNotComplete) {\n          throw new Error(\"Root did not complete. This is a bug in React.\");\n        }\n        var finishedWork = root.current.alternate;\n        root.finishedWork = finishedWork;\n        root.finishedLanes = lanes;\n        commitRoot(root, workInProgressRootRecoverableErrors);\n        ensureRootIsScheduled(root, now$1());\n        return null;\n      }\n      function flushRoot(root, lanes) {\n        if (lanes !== NoLanes) {\n          markRootEntangled(root, mergeLanes(lanes, SyncLane));\n          ensureRootIsScheduled(root, now$1());\n          if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n            resetRenderTimer();\n            flushSyncCallbacks();\n          }\n        }\n      }\n      function deferredUpdates(fn) {\n        var previousPriority = getCurrentUpdatePriority();\n        var prevTransition = ReactCurrentBatchConfig$2.transition;\n        try {\n          ReactCurrentBatchConfig$2.transition = null;\n          setCurrentUpdatePriority(DefaultEventPriority);\n          return fn();\n        } finally {\n          setCurrentUpdatePriority(previousPriority);\n          ReactCurrentBatchConfig$2.transition = prevTransition;\n        }\n      }\n      function batchedUpdates(fn, a2) {\n        var prevExecutionContext = executionContext;\n        executionContext |= BatchedContext;\n        try {\n          return fn(a2);\n        } finally {\n          executionContext = prevExecutionContext;\n          if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n          !ReactCurrentActQueue$1.isBatchingLegacy) {\n            resetRenderTimer();\n            flushSyncCallbacksOnlyInLegacyMode();\n          }\n        }\n      }\n      function discreteUpdates(fn, a2, b2, c2, d2) {\n        var previousPriority = getCurrentUpdatePriority();\n        var prevTransition = ReactCurrentBatchConfig$2.transition;\n        try {\n          ReactCurrentBatchConfig$2.transition = null;\n          setCurrentUpdatePriority(DiscreteEventPriority);\n          return fn(a2, b2, c2, d2);\n        } finally {\n          setCurrentUpdatePriority(previousPriority);\n          ReactCurrentBatchConfig$2.transition = prevTransition;\n          if (executionContext === NoContext) {\n            resetRenderTimer();\n          }\n        }\n      }\n      function flushSync(fn) {\n        if (rootWithPendingPassiveEffects !== null && rootWithPendingPassiveEffects.tag === LegacyRoot && (executionContext & (RenderContext | CommitContext)) === NoContext) {\n          flushPassiveEffects();\n        }\n        var prevExecutionContext = executionContext;\n        executionContext |= BatchedContext;\n        var prevTransition = ReactCurrentBatchConfig$2.transition;\n        var previousPriority = getCurrentUpdatePriority();\n        try {\n          ReactCurrentBatchConfig$2.transition = null;\n          setCurrentUpdatePriority(DiscreteEventPriority);\n          if (fn) {\n            return fn();\n          } else {\n            return void 0;\n          }\n        } finally {\n          setCurrentUpdatePriority(previousPriority);\n          ReactCurrentBatchConfig$2.transition = prevTransition;\n          executionContext = prevExecutionContext;\n          if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n            flushSyncCallbacks();\n          }\n        }\n      }\n      function isAlreadyRendering() {\n        return (executionContext & (RenderContext | CommitContext)) !== NoContext;\n      }\n      function flushControlled(fn) {\n        var prevExecutionContext = executionContext;\n        executionContext |= BatchedContext;\n        var prevTransition = ReactCurrentBatchConfig$2.transition;\n        var previousPriority = getCurrentUpdatePriority();\n        try {\n          ReactCurrentBatchConfig$2.transition = null;\n          setCurrentUpdatePriority(DiscreteEventPriority);\n          fn();\n        } finally {\n          setCurrentUpdatePriority(previousPriority);\n          ReactCurrentBatchConfig$2.transition = prevTransition;\n          executionContext = prevExecutionContext;\n          if (executionContext === NoContext) {\n            resetRenderTimer();\n            flushSyncCallbacks();\n          }\n        }\n      }\n      function pushRenderLanes(fiber, lanes) {\n        push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);\n        subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);\n      }\n      function popRenderLanes(fiber) {\n        subtreeRenderLanes = subtreeRenderLanesCursor.current;\n        pop(subtreeRenderLanesCursor, fiber);\n      }\n      function prepareFreshStack(root, lanes) {\n        root.finishedWork = null;\n        root.finishedLanes = NoLanes;\n        var timeoutHandle = root.timeoutHandle;\n        if (timeoutHandle !== noTimeout) {\n          root.timeoutHandle = noTimeout;\n          cancelTimeout(timeoutHandle);\n        }\n        if (workInProgress !== null) {\n          var interruptedWork = workInProgress.return;\n          while (interruptedWork !== null) {\n            var current2 = interruptedWork.alternate;\n            unwindInterruptedWork(current2, interruptedWork);\n            interruptedWork = interruptedWork.return;\n          }\n        }\n        workInProgressRoot = root;\n        var rootWorkInProgress = createWorkInProgress(root.current, null);\n        workInProgress = rootWorkInProgress;\n        workInProgressRootRenderLanes = subtreeRenderLanes = lanes;\n        workInProgressRootExitStatus = RootInProgress;\n        workInProgressRootFatalError = null;\n        workInProgressRootSkippedLanes = NoLanes;\n        workInProgressRootInterleavedUpdatedLanes = NoLanes;\n        workInProgressRootPingedLanes = NoLanes;\n        workInProgressRootConcurrentErrors = null;\n        workInProgressRootRecoverableErrors = null;\n        enqueueInterleavedUpdates();\n        {\n          ReactStrictModeWarnings.discardPendingWarnings();\n        }\n        return rootWorkInProgress;\n      }\n      function handleError(root, thrownValue) {\n        do {\n          var erroredWork = workInProgress;\n          try {\n            resetContextDependencies();\n            resetHooksAfterThrow();\n            resetCurrentFiber();\n            ReactCurrentOwner$2.current = null;\n            if (erroredWork === null || erroredWork.return === null) {\n              workInProgressRootExitStatus = RootFatalErrored;\n              workInProgressRootFatalError = thrownValue;\n              workInProgress = null;\n              return;\n            }\n            if (enableProfilerTimer && erroredWork.mode & ProfileMode) {\n              stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);\n            }\n            if (enableSchedulingProfiler) {\n              markComponentRenderStopped();\n              if (thrownValue !== null && typeof thrownValue === \"object\" && typeof thrownValue.then === \"function\") {\n                var wakeable = thrownValue;\n                markComponentSuspended(erroredWork, wakeable, workInProgressRootRenderLanes);\n              } else {\n                markComponentErrored(erroredWork, thrownValue, workInProgressRootRenderLanes);\n              }\n            }\n            throwException(root, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);\n            completeUnitOfWork(erroredWork);\n          } catch (yetAnotherThrownValue) {\n            thrownValue = yetAnotherThrownValue;\n            if (workInProgress === erroredWork && erroredWork !== null) {\n              erroredWork = erroredWork.return;\n              workInProgress = erroredWork;\n            } else {\n              erroredWork = workInProgress;\n            }\n            continue;\n          }\n          return;\n        } while (true);\n      }\n      function pushDispatcher() {\n        var prevDispatcher = ReactCurrentDispatcher$2.current;\n        ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n        if (prevDispatcher === null) {\n          return ContextOnlyDispatcher;\n        } else {\n          return prevDispatcher;\n        }\n      }\n      function popDispatcher(prevDispatcher) {\n        ReactCurrentDispatcher$2.current = prevDispatcher;\n      }\n      function markCommitTimeOfFallback() {\n        globalMostRecentFallbackTime = now$1();\n      }\n      function markSkippedUpdateLanes(lane) {\n        workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);\n      }\n      function renderDidSuspend() {\n        if (workInProgressRootExitStatus === RootInProgress) {\n          workInProgressRootExitStatus = RootSuspended;\n        }\n      }\n      function renderDidSuspendDelayIfPossible() {\n        if (workInProgressRootExitStatus === RootInProgress || workInProgressRootExitStatus === RootSuspended || workInProgressRootExitStatus === RootErrored) {\n          workInProgressRootExitStatus = RootSuspendedWithDelay;\n        }\n        if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes))) {\n          markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);\n        }\n      }\n      function renderDidError(error3) {\n        if (workInProgressRootExitStatus !== RootSuspendedWithDelay) {\n          workInProgressRootExitStatus = RootErrored;\n        }\n        if (workInProgressRootConcurrentErrors === null) {\n          workInProgressRootConcurrentErrors = [error3];\n        } else {\n          workInProgressRootConcurrentErrors.push(error3);\n        }\n      }\n      function renderHasNotSuspendedYet() {\n        return workInProgressRootExitStatus === RootInProgress;\n      }\n      function renderRootSync(root, lanes) {\n        var prevExecutionContext = executionContext;\n        executionContext |= RenderContext;\n        var prevDispatcher = pushDispatcher();\n        if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n          {\n            if (isDevToolsPresent) {\n              var memoizedUpdaters = root.memoizedUpdaters;\n              if (memoizedUpdaters.size > 0) {\n                restorePendingUpdaters(root, workInProgressRootRenderLanes);\n                memoizedUpdaters.clear();\n              }\n              movePendingFibersToMemoized(root, lanes);\n            }\n          }\n          prepareFreshStack(root, lanes);\n        }\n        {\n          markRenderStarted(lanes);\n        }\n        do {\n          try {\n            workLoopSync();\n            break;\n          } catch (thrownValue) {\n            handleError(root, thrownValue);\n          }\n        } while (true);\n        resetContextDependencies();\n        executionContext = prevExecutionContext;\n        popDispatcher(prevDispatcher);\n        if (workInProgress !== null) {\n          throw new Error(\"Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        {\n          markRenderStopped();\n        }\n        workInProgressRoot = null;\n        workInProgressRootRenderLanes = NoLanes;\n        return workInProgressRootExitStatus;\n      }\n      function workLoopSync() {\n        while (workInProgress !== null) {\n          performUnitOfWork(workInProgress);\n        }\n      }\n      function renderRootConcurrent(root, lanes) {\n        var prevExecutionContext = executionContext;\n        executionContext |= RenderContext;\n        var prevDispatcher = pushDispatcher();\n        if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n          {\n            if (isDevToolsPresent) {\n              var memoizedUpdaters = root.memoizedUpdaters;\n              if (memoizedUpdaters.size > 0) {\n                restorePendingUpdaters(root, workInProgressRootRenderLanes);\n                memoizedUpdaters.clear();\n              }\n              movePendingFibersToMemoized(root, lanes);\n            }\n          }\n          resetRenderTimer();\n          prepareFreshStack(root, lanes);\n        }\n        {\n          markRenderStarted(lanes);\n        }\n        do {\n          try {\n            workLoopConcurrent();\n            break;\n          } catch (thrownValue) {\n            handleError(root, thrownValue);\n          }\n        } while (true);\n        resetContextDependencies();\n        popDispatcher(prevDispatcher);\n        executionContext = prevExecutionContext;\n        if (workInProgress !== null) {\n          {\n            markRenderYielded();\n          }\n          return RootInProgress;\n        } else {\n          {\n            markRenderStopped();\n          }\n          workInProgressRoot = null;\n          workInProgressRootRenderLanes = NoLanes;\n          return workInProgressRootExitStatus;\n        }\n      }\n      function workLoopConcurrent() {\n        while (workInProgress !== null && !shouldYield()) {\n          performUnitOfWork(workInProgress);\n        }\n      }\n      function performUnitOfWork(unitOfWork) {\n        var current2 = unitOfWork.alternate;\n        setCurrentFiber(unitOfWork);\n        var next;\n        if ((unitOfWork.mode & ProfileMode) !== NoMode) {\n          startProfilerTimer(unitOfWork);\n          next = beginWork$1(current2, unitOfWork, subtreeRenderLanes);\n          stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);\n        } else {\n          next = beginWork$1(current2, unitOfWork, subtreeRenderLanes);\n        }\n        resetCurrentFiber();\n        unitOfWork.memoizedProps = unitOfWork.pendingProps;\n        if (next === null) {\n          completeUnitOfWork(unitOfWork);\n        } else {\n          workInProgress = next;\n        }\n        ReactCurrentOwner$2.current = null;\n      }\n      function completeUnitOfWork(unitOfWork) {\n        var completedWork = unitOfWork;\n        do {\n          var current2 = completedWork.alternate;\n          var returnFiber = completedWork.return;\n          if ((completedWork.flags & Incomplete) === NoFlags) {\n            setCurrentFiber(completedWork);\n            var next = void 0;\n            if ((completedWork.mode & ProfileMode) === NoMode) {\n              next = completeWork(current2, completedWork, subtreeRenderLanes);\n            } else {\n              startProfilerTimer(completedWork);\n              next = completeWork(current2, completedWork, subtreeRenderLanes);\n              stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n            }\n            resetCurrentFiber();\n            if (next !== null) {\n              workInProgress = next;\n              return;\n            }\n          } else {\n            var _next = unwindWork(current2, completedWork);\n            if (_next !== null) {\n              _next.flags &= HostEffectMask;\n              workInProgress = _next;\n              return;\n            }\n            if ((completedWork.mode & ProfileMode) !== NoMode) {\n              stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n              var actualDuration = completedWork.actualDuration;\n              var child = completedWork.child;\n              while (child !== null) {\n                actualDuration += child.actualDuration;\n                child = child.sibling;\n              }\n              completedWork.actualDuration = actualDuration;\n            }\n            if (returnFiber !== null) {\n              returnFiber.flags |= Incomplete;\n              returnFiber.subtreeFlags = NoFlags;\n              returnFiber.deletions = null;\n            } else {\n              workInProgressRootExitStatus = RootDidNotComplete;\n              workInProgress = null;\n              return;\n            }\n          }\n          var siblingFiber = completedWork.sibling;\n          if (siblingFiber !== null) {\n            workInProgress = siblingFiber;\n            return;\n          }\n          completedWork = returnFiber;\n          workInProgress = completedWork;\n        } while (completedWork !== null);\n        if (workInProgressRootExitStatus === RootInProgress) {\n          workInProgressRootExitStatus = RootCompleted;\n        }\n      }\n      function commitRoot(root, recoverableErrors) {\n        var previousUpdateLanePriority = getCurrentUpdatePriority();\n        var prevTransition = ReactCurrentBatchConfig$2.transition;\n        try {\n          ReactCurrentBatchConfig$2.transition = null;\n          setCurrentUpdatePriority(DiscreteEventPriority);\n          commitRootImpl(root, recoverableErrors, previousUpdateLanePriority);\n        } finally {\n          ReactCurrentBatchConfig$2.transition = prevTransition;\n          setCurrentUpdatePriority(previousUpdateLanePriority);\n        }\n        return null;\n      }\n      function commitRootImpl(root, recoverableErrors, renderPriorityLevel) {\n        do {\n          flushPassiveEffects();\n        } while (rootWithPendingPassiveEffects !== null);\n        flushRenderPhaseStrictModeWarningsInDEV();\n        if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n          throw new Error(\"Should not already be working.\");\n        }\n        var finishedWork = root.finishedWork;\n        var lanes = root.finishedLanes;\n        {\n          markCommitStarted(lanes);\n        }\n        if (finishedWork === null) {\n          {\n            markCommitStopped();\n          }\n          return null;\n        } else {\n          {\n            if (lanes === NoLanes) {\n              error2(\"root.finishedLanes should not be empty during a commit. This is a bug in React.\");\n            }\n          }\n        }\n        root.finishedWork = null;\n        root.finishedLanes = NoLanes;\n        if (finishedWork === root.current) {\n          throw new Error(\"Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.\");\n        }\n        root.callbackNode = null;\n        root.callbackPriority = NoLane;\n        var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);\n        markRootFinished(root, remainingLanes);\n        if (root === workInProgressRoot) {\n          workInProgressRoot = null;\n          workInProgress = null;\n          workInProgressRootRenderLanes = NoLanes;\n        }\n        if ((finishedWork.subtreeFlags & PassiveMask) !== NoFlags || (finishedWork.flags & PassiveMask) !== NoFlags) {\n          if (!rootDoesHavePassiveEffects) {\n            rootDoesHavePassiveEffects = true;\n            scheduleCallback$1(NormalPriority, function() {\n              flushPassiveEffects();\n              return null;\n            });\n          }\n        }\n        var subtreeHasEffects = (finishedWork.subtreeFlags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n        var rootHasEffect = (finishedWork.flags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n        if (subtreeHasEffects || rootHasEffect) {\n          var prevTransition = ReactCurrentBatchConfig$2.transition;\n          ReactCurrentBatchConfig$2.transition = null;\n          var previousPriority = getCurrentUpdatePriority();\n          setCurrentUpdatePriority(DiscreteEventPriority);\n          var prevExecutionContext = executionContext;\n          executionContext |= CommitContext;\n          ReactCurrentOwner$2.current = null;\n          commitBeforeMutationEffects(root, finishedWork);\n          {\n            recordCommitTime();\n          }\n          commitMutationEffects(root, finishedWork, lanes);\n          resetAfterCommit(root.containerInfo);\n          root.current = finishedWork;\n          {\n            markLayoutEffectsStarted(lanes);\n          }\n          commitLayoutEffects(finishedWork, root, lanes);\n          {\n            markLayoutEffectsStopped();\n          }\n          requestPaint();\n          executionContext = prevExecutionContext;\n          setCurrentUpdatePriority(previousPriority);\n          ReactCurrentBatchConfig$2.transition = prevTransition;\n        } else {\n          root.current = finishedWork;\n          {\n            recordCommitTime();\n          }\n        }\n        var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;\n        if (rootDoesHavePassiveEffects) {\n          rootDoesHavePassiveEffects = false;\n          rootWithPendingPassiveEffects = root;\n          pendingPassiveEffectsLanes = lanes;\n        }\n        remainingLanes = root.pendingLanes;\n        if (remainingLanes === NoLanes) {\n          legacyErrorBoundariesThatAlreadyFailed = null;\n        }\n        {\n          if (!rootDidHavePassiveEffects) {\n            commitDoubleInvokeEffectsInDEV(root.current, false);\n          }\n        }\n        onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n        {\n          if (isDevToolsPresent) {\n            root.memoizedUpdaters.clear();\n          }\n        }\n        {\n          onCommitRoot$1();\n        }\n        ensureRootIsScheduled(root, now$1());\n        if (recoverableErrors !== null) {\n          var onRecoverableError = root.onRecoverableError;\n          for (var i2 = 0; i2 < recoverableErrors.length; i2++) {\n            var recoverableError = recoverableErrors[i2];\n            onRecoverableError(recoverableError);\n          }\n        }\n        if (hasUncaughtError) {\n          hasUncaughtError = false;\n          var error$1 = firstUncaughtError;\n          firstUncaughtError = null;\n          throw error$1;\n        }\n        if (includesSomeLane(pendingPassiveEffectsLanes, SyncLane) && root.tag !== LegacyRoot) {\n          flushPassiveEffects();\n        }\n        remainingLanes = root.pendingLanes;\n        if (includesSomeLane(remainingLanes, SyncLane)) {\n          {\n            markNestedUpdateScheduled();\n          }\n          if (root === rootWithNestedUpdates) {\n            nestedUpdateCount++;\n          } else {\n            nestedUpdateCount = 0;\n            rootWithNestedUpdates = root;\n          }\n        } else {\n          nestedUpdateCount = 0;\n        }\n        flushSyncCallbacks();\n        {\n          markCommitStopped();\n        }\n        return null;\n      }\n      function flushPassiveEffects() {\n        if (rootWithPendingPassiveEffects !== null) {\n          var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes);\n          var priority = lowerEventPriority(DefaultEventPriority, renderPriority);\n          var prevTransition = ReactCurrentBatchConfig$2.transition;\n          var previousPriority = getCurrentUpdatePriority();\n          try {\n            ReactCurrentBatchConfig$2.transition = null;\n            setCurrentUpdatePriority(priority);\n            return flushPassiveEffectsImpl();\n          } finally {\n            setCurrentUpdatePriority(previousPriority);\n            ReactCurrentBatchConfig$2.transition = prevTransition;\n          }\n        }\n        return false;\n      }\n      function enqueuePendingPassiveProfilerEffect(fiber) {\n        {\n          pendingPassiveProfilerEffects.push(fiber);\n          if (!rootDoesHavePassiveEffects) {\n            rootDoesHavePassiveEffects = true;\n            scheduleCallback$1(NormalPriority, function() {\n              flushPassiveEffects();\n              return null;\n            });\n          }\n        }\n      }\n      function flushPassiveEffectsImpl() {\n        if (rootWithPendingPassiveEffects === null) {\n          return false;\n        }\n        var root = rootWithPendingPassiveEffects;\n        var lanes = pendingPassiveEffectsLanes;\n        rootWithPendingPassiveEffects = null;\n        pendingPassiveEffectsLanes = NoLanes;\n        if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n          throw new Error(\"Cannot flush passive effects while already rendering.\");\n        }\n        {\n          markPassiveEffectsStarted(lanes);\n        }\n        var prevExecutionContext = executionContext;\n        executionContext |= CommitContext;\n        commitPassiveUnmountEffects(root.current);\n        commitPassiveMountEffects(root, root.current);\n        {\n          var profilerEffects = pendingPassiveProfilerEffects;\n          pendingPassiveProfilerEffects = [];\n          for (var i2 = 0; i2 < profilerEffects.length; i2++) {\n            var _fiber = profilerEffects[i2];\n            commitPassiveEffectDurations(root, _fiber);\n          }\n        }\n        {\n          markPassiveEffectsStopped();\n        }\n        {\n          commitDoubleInvokeEffectsInDEV(root.current, true);\n        }\n        executionContext = prevExecutionContext;\n        flushSyncCallbacks();\n        nestedPassiveUpdateCount = rootWithPendingPassiveEffects === null ? 0 : nestedPassiveUpdateCount + 1;\n        onPostCommitRoot(root);\n        {\n          var stateNode = root.current.stateNode;\n          stateNode.effectDuration = 0;\n          stateNode.passiveEffectDuration = 0;\n        }\n        return true;\n      }\n      function isAlreadyFailedLegacyErrorBoundary(instance) {\n        return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n      }\n      function markLegacyErrorBoundaryAsFailed(instance) {\n        if (legacyErrorBoundariesThatAlreadyFailed === null) {\n          legacyErrorBoundariesThatAlreadyFailed = /* @__PURE__ */ new Set([instance]);\n        } else {\n          legacyErrorBoundariesThatAlreadyFailed.add(instance);\n        }\n      }\n      function prepareToThrowUncaughtError(error3) {\n        if (!hasUncaughtError) {\n          hasUncaughtError = true;\n          firstUncaughtError = error3;\n        }\n      }\n      var onUncaughtError = prepareToThrowUncaughtError;\n      function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error3) {\n        var errorInfo = createCapturedValue(error3, sourceFiber);\n        var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n        enqueueUpdate(rootFiber, update);\n        var eventTime = requestEventTime();\n        var root = markUpdateLaneFromFiberToRoot(rootFiber, SyncLane);\n        if (root !== null) {\n          markRootUpdated(root, SyncLane, eventTime);\n          ensureRootIsScheduled(root, eventTime);\n        }\n      }\n      function captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error$1) {\n        if (sourceFiber.tag === HostRoot) {\n          captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error$1);\n          return;\n        }\n        var fiber = null;\n        {\n          fiber = nearestMountedAncestor;\n        }\n        while (fiber !== null) {\n          if (fiber.tag === HostRoot) {\n            captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error$1);\n            return;\n          } else if (fiber.tag === ClassComponent) {\n            var ctor = fiber.type;\n            var instance = fiber.stateNode;\n            if (typeof ctor.getDerivedStateFromError === \"function\" || typeof instance.componentDidCatch === \"function\" && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n              var errorInfo = createCapturedValue(error$1, sourceFiber);\n              var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n              enqueueUpdate(fiber, update);\n              var eventTime = requestEventTime();\n              var root = markUpdateLaneFromFiberToRoot(fiber, SyncLane);\n              if (root !== null) {\n                markRootUpdated(root, SyncLane, eventTime);\n                ensureRootIsScheduled(root, eventTime);\n              }\n              return;\n            }\n          }\n          fiber = fiber.return;\n        }\n        {\n          error2(\"Internal React error: Attempted to capture a commit phase error inside a detached tree. This indicates a bug in React. Likely causes include deleting the same fiber more than once, committing an already-finished tree, or an inconsistent return pointer.\\n\\nError message:\\n\\n%s\", error$1);\n        }\n      }\n      function pingSuspendedRoot(root, wakeable, pingedLanes) {\n        var pingCache = root.pingCache;\n        if (pingCache !== null) {\n          pingCache.delete(wakeable);\n        }\n        var eventTime = requestEventTime();\n        markRootPinged(root, pingedLanes);\n        warnIfSuspenseResolutionNotWrappedWithActDEV(root);\n        if (workInProgressRoot === root && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {\n          if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now$1() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {\n            prepareFreshStack(root, NoLanes);\n          } else {\n            workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);\n          }\n        }\n        ensureRootIsScheduled(root, eventTime);\n      }\n      function retryTimedOutBoundary(boundaryFiber, retryLane) {\n        if (retryLane === NoLane) {\n          retryLane = requestRetryLane(boundaryFiber);\n        }\n        var eventTime = requestEventTime();\n        var root = markUpdateLaneFromFiberToRoot(boundaryFiber, retryLane);\n        if (root !== null) {\n          markRootUpdated(root, retryLane, eventTime);\n          ensureRootIsScheduled(root, eventTime);\n        }\n      }\n      function retryDehydratedSuspenseBoundary(boundaryFiber) {\n        var suspenseState = boundaryFiber.memoizedState;\n        var retryLane = NoLane;\n        if (suspenseState !== null) {\n          retryLane = suspenseState.retryLane;\n        }\n        retryTimedOutBoundary(boundaryFiber, retryLane);\n      }\n      function resolveRetryWakeable(boundaryFiber, wakeable) {\n        var retryLane = NoLane;\n        var retryCache;\n        {\n          switch (boundaryFiber.tag) {\n            case SuspenseComponent:\n              retryCache = boundaryFiber.stateNode;\n              var suspenseState = boundaryFiber.memoizedState;\n              if (suspenseState !== null) {\n                retryLane = suspenseState.retryLane;\n              }\n              break;\n            case SuspenseListComponent:\n              retryCache = boundaryFiber.stateNode;\n              break;\n            default:\n              throw new Error(\"Pinged unknown suspense boundary type. This is probably a bug in React.\");\n          }\n        }\n        if (retryCache !== null) {\n          retryCache.delete(wakeable);\n        }\n        retryTimedOutBoundary(boundaryFiber, retryLane);\n      }\n      function jnd(timeElapsed) {\n        return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3e3 ? 3e3 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;\n      }\n      function checkForNestedUpdates() {\n        if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n          nestedUpdateCount = 0;\n          rootWithNestedUpdates = null;\n          throw new Error(\"Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.\");\n        }\n        {\n          if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {\n            nestedPassiveUpdateCount = 0;\n            error2(\"Maximum update depth exceeded. This can happen when a component calls setState inside useEffect, but useEffect either doesn't have a dependency array, or one of the dependencies changes on every render.\");\n          }\n        }\n      }\n      function flushRenderPhaseStrictModeWarningsInDEV() {\n        {\n          ReactStrictModeWarnings.flushLegacyContextWarning();\n          {\n            ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();\n          }\n        }\n      }\n      function commitDoubleInvokeEffectsInDEV(fiber, hasPassiveEffects) {\n        {\n          setCurrentFiber(fiber);\n          invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectUnmountInDEV);\n          if (hasPassiveEffects) {\n            invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectUnmountInDEV);\n          }\n          invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectMountInDEV);\n          if (hasPassiveEffects) {\n            invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectMountInDEV);\n          }\n          resetCurrentFiber();\n        }\n      }\n      function invokeEffectsInDev(firstChild, fiberFlags, invokeEffectFn) {\n        {\n          var current2 = firstChild;\n          var subtreeRoot = null;\n          while (current2 !== null) {\n            var primarySubtreeFlag = current2.subtreeFlags & fiberFlags;\n            if (current2 !== subtreeRoot && current2.child !== null && primarySubtreeFlag !== NoFlags) {\n              current2 = current2.child;\n            } else {\n              if ((current2.flags & fiberFlags) !== NoFlags) {\n                invokeEffectFn(current2);\n              }\n              if (current2.sibling !== null) {\n                current2 = current2.sibling;\n              } else {\n                current2 = subtreeRoot = current2.return;\n              }\n            }\n          }\n        }\n      }\n      var didWarnStateUpdateForNotYetMountedComponent = null;\n      function warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {\n        {\n          if ((executionContext & RenderContext) !== NoContext) {\n            return;\n          }\n          if (!(fiber.mode & ConcurrentMode)) {\n            return;\n          }\n          var tag = fiber.tag;\n          if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent) {\n            return;\n          }\n          var componentName = getComponentNameFromFiber(fiber) || \"ReactComponent\";\n          if (didWarnStateUpdateForNotYetMountedComponent !== null) {\n            if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {\n              return;\n            }\n            didWarnStateUpdateForNotYetMountedComponent.add(componentName);\n          } else {\n            didWarnStateUpdateForNotYetMountedComponent = /* @__PURE__ */ new Set([componentName]);\n          }\n          var previousFiber = current;\n          try {\n            setCurrentFiber(fiber);\n            error2(\"Can't perform a React state update on a component that hasn't mounted yet. This indicates that you have a side-effect in your render function that asynchronously later calls tries to update the component. Move this work to useEffect instead.\");\n          } finally {\n            if (previousFiber) {\n              setCurrentFiber(fiber);\n            } else {\n              resetCurrentFiber();\n            }\n          }\n        }\n      }\n      var beginWork$1;\n      {\n        var dummyFiber = null;\n        beginWork$1 = function(current2, unitOfWork, lanes) {\n          var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);\n          try {\n            return beginWork(current2, unitOfWork, lanes);\n          } catch (originalError) {\n            if (originalError !== null && typeof originalError === \"object\" && typeof originalError.then === \"function\") {\n              throw originalError;\n            }\n            resetContextDependencies();\n            resetHooksAfterThrow();\n            unwindInterruptedWork(current2, unitOfWork);\n            assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);\n            if (unitOfWork.mode & ProfileMode) {\n              startProfilerTimer(unitOfWork);\n            }\n            invokeGuardedCallback(null, beginWork, null, current2, unitOfWork, lanes);\n            if (hasCaughtError()) {\n              var replayError = clearCaughtError();\n              if (typeof replayError === \"object\" && replayError !== null && replayError._suppressLogging && typeof originalError === \"object\" && originalError !== null && !originalError._suppressLogging) {\n                originalError._suppressLogging = true;\n              }\n            }\n            throw originalError;\n          }\n        };\n      }\n      var didWarnAboutUpdateInRender = false;\n      var didWarnAboutUpdateInRenderForAnotherComponent;\n      {\n        didWarnAboutUpdateInRenderForAnotherComponent = /* @__PURE__ */ new Set();\n      }\n      function warnAboutRenderPhaseUpdatesInDEV(fiber) {\n        {\n          if (isRendering && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {\n            switch (fiber.tag) {\n              case FunctionComponent:\n              case ForwardRef:\n              case SimpleMemoComponent: {\n                var renderingComponentName = workInProgress && getComponentNameFromFiber(workInProgress) || \"Unknown\";\n                var dedupeKey = renderingComponentName;\n                if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {\n                  didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);\n                  var setStateComponentName = getComponentNameFromFiber(fiber) || \"Unknown\";\n                  error2(\"Cannot update a component (`%s`) while rendering a different component (`%s`). To locate the bad setState() call inside `%s`, follow the stack trace as described in https://reactjs.org/link/setstate-in-render\", setStateComponentName, renderingComponentName, renderingComponentName);\n                }\n                break;\n              }\n              case ClassComponent: {\n                if (!didWarnAboutUpdateInRender) {\n                  error2(\"Cannot update during an existing state transition (such as within `render`). Render methods should be a pure function of props and state.\");\n                  didWarnAboutUpdateInRender = true;\n                }\n                break;\n              }\n            }\n          }\n        }\n      }\n      function restorePendingUpdaters(root, lanes) {\n        {\n          if (isDevToolsPresent) {\n            var memoizedUpdaters = root.memoizedUpdaters;\n            memoizedUpdaters.forEach(function(schedulingFiber) {\n              addFiberToLanesMap(root, schedulingFiber, lanes);\n            });\n          }\n        }\n      }\n      var fakeActCallbackNode = {};\n      function scheduleCallback$1(priorityLevel, callback) {\n        {\n          var actQueue = ReactCurrentActQueue$1.current;\n          if (actQueue !== null) {\n            actQueue.push(callback);\n            return fakeActCallbackNode;\n          } else {\n            return scheduleCallback(priorityLevel, callback);\n          }\n        }\n      }\n      function cancelCallback$1(callbackNode) {\n        if (callbackNode === fakeActCallbackNode) {\n          return;\n        }\n        return cancelCallback(callbackNode);\n      }\n      function shouldForceFlushFallbacksInDEV() {\n        return ReactCurrentActQueue$1.current !== null;\n      }\n      function warnIfUpdatesNotWrappedWithActDEV(fiber) {\n        {\n          if (fiber.mode & ConcurrentMode) {\n            if (!isConcurrentActEnvironment()) {\n              return;\n            }\n          } else {\n            if (!isLegacyActEnvironment()) {\n              return;\n            }\n            if (executionContext !== NoContext) {\n              return;\n            }\n            if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef && fiber.tag !== SimpleMemoComponent) {\n              return;\n            }\n          }\n          if (ReactCurrentActQueue$1.current === null) {\n            var previousFiber = current;\n            try {\n              setCurrentFiber(fiber);\n              error2(\"An update to %s inside a test was not wrapped in act(...).\\n\\nWhen testing, code that causes React state updates should be wrapped into act(...):\\n\\nact(() => {\\n  /* fire events that update state */\\n});\\n/* assert on the output */\\n\\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act\", getComponentNameFromFiber(fiber));\n            } finally {\n              if (previousFiber) {\n                setCurrentFiber(fiber);\n              } else {\n                resetCurrentFiber();\n              }\n            }\n          }\n        }\n      }\n      function warnIfSuspenseResolutionNotWrappedWithActDEV(root) {\n        {\n          if (root.tag !== LegacyRoot && isConcurrentActEnvironment() && ReactCurrentActQueue$1.current === null) {\n            error2(\"A suspended resource finished loading inside a test, but the event was not wrapped in act(...).\\n\\nWhen testing, code that resolves suspended data should be wrapped into act(...):\\n\\nact(() => {\\n  /* finish loading suspended data */\\n});\\n/* assert on the output */\\n\\nThis ensures that you're testing the behavior the user would see in the browser. Learn more at https://reactjs.org/link/wrap-tests-with-act\");\n          }\n        }\n      }\n      var resolveFamily = null;\n      var failedBoundaries = null;\n      var setRefreshHandler = function(handler) {\n        {\n          resolveFamily = handler;\n        }\n      };\n      function resolveFunctionForHotReloading(type) {\n        {\n          if (resolveFamily === null) {\n            return type;\n          }\n          var family = resolveFamily(type);\n          if (family === void 0) {\n            return type;\n          }\n          return family.current;\n        }\n      }\n      function resolveClassForHotReloading(type) {\n        return resolveFunctionForHotReloading(type);\n      }\n      function resolveForwardRefForHotReloading(type) {\n        {\n          if (resolveFamily === null) {\n            return type;\n          }\n          var family = resolveFamily(type);\n          if (family === void 0) {\n            if (type !== null && type !== void 0 && typeof type.render === \"function\") {\n              var currentRender = resolveFunctionForHotReloading(type.render);\n              if (type.render !== currentRender) {\n                var syntheticType = {\n                  $$typeof: REACT_FORWARD_REF_TYPE,\n                  render: currentRender\n                };\n                if (type.displayName !== void 0) {\n                  syntheticType.displayName = type.displayName;\n                }\n                return syntheticType;\n              }\n            }\n            return type;\n          }\n          return family.current;\n        }\n      }\n      function isCompatibleFamilyForHotReloading(fiber, element) {\n        {\n          if (resolveFamily === null) {\n            return false;\n          }\n          var prevType = fiber.elementType;\n          var nextType = element.type;\n          var needsCompareFamilies = false;\n          var $$typeofNextType = typeof nextType === \"object\" && nextType !== null ? nextType.$$typeof : null;\n          switch (fiber.tag) {\n            case ClassComponent: {\n              if (typeof nextType === \"function\") {\n                needsCompareFamilies = true;\n              }\n              break;\n            }\n            case FunctionComponent: {\n              if (typeof nextType === \"function\") {\n                needsCompareFamilies = true;\n              } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n                needsCompareFamilies = true;\n              }\n              break;\n            }\n            case ForwardRef: {\n              if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {\n                needsCompareFamilies = true;\n              } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n                needsCompareFamilies = true;\n              }\n              break;\n            }\n            case MemoComponent:\n            case SimpleMemoComponent: {\n              if ($$typeofNextType === REACT_MEMO_TYPE) {\n                needsCompareFamilies = true;\n              } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n                needsCompareFamilies = true;\n              }\n              break;\n            }\n            default:\n              return false;\n          }\n          if (needsCompareFamilies) {\n            var prevFamily = resolveFamily(prevType);\n            if (prevFamily !== void 0 && prevFamily === resolveFamily(nextType)) {\n              return true;\n            }\n          }\n          return false;\n        }\n      }\n      function markFailedErrorBoundaryForHotReloading(fiber) {\n        {\n          if (resolveFamily === null) {\n            return;\n          }\n          if (typeof WeakSet !== \"function\") {\n            return;\n          }\n          if (failedBoundaries === null) {\n            failedBoundaries = /* @__PURE__ */ new WeakSet();\n          }\n          failedBoundaries.add(fiber);\n        }\n      }\n      var scheduleRefresh = function(root, update) {\n        {\n          if (resolveFamily === null) {\n            return;\n          }\n          var staleFamilies = update.staleFamilies, updatedFamilies = update.updatedFamilies;\n          flushPassiveEffects();\n          flushSync(function() {\n            scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies);\n          });\n        }\n      };\n      var scheduleRoot = function(root, element) {\n        {\n          if (root.context !== emptyContextObject) {\n            return;\n          }\n          flushPassiveEffects();\n          flushSync(function() {\n            updateContainer(element, root, null, null);\n          });\n        }\n      };\n      function scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {\n        {\n          var alternate = fiber.alternate, child = fiber.child, sibling = fiber.sibling, tag = fiber.tag, type = fiber.type;\n          var candidateType = null;\n          switch (tag) {\n            case FunctionComponent:\n            case SimpleMemoComponent:\n            case ClassComponent:\n              candidateType = type;\n              break;\n            case ForwardRef:\n              candidateType = type.render;\n              break;\n          }\n          if (resolveFamily === null) {\n            throw new Error(\"Expected resolveFamily to be set during hot reload.\");\n          }\n          var needsRender = false;\n          var needsRemount = false;\n          if (candidateType !== null) {\n            var family = resolveFamily(candidateType);\n            if (family !== void 0) {\n              if (staleFamilies.has(family)) {\n                needsRemount = true;\n              } else if (updatedFamilies.has(family)) {\n                if (tag === ClassComponent) {\n                  needsRemount = true;\n                } else {\n                  needsRender = true;\n                }\n              }\n            }\n          }\n          if (failedBoundaries !== null) {\n            if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {\n              needsRemount = true;\n            }\n          }\n          if (needsRemount) {\n            fiber._debugNeedsRemount = true;\n          }\n          if (needsRemount || needsRender) {\n            scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n          }\n          if (child !== null && !needsRemount) {\n            scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);\n          }\n          if (sibling !== null) {\n            scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);\n          }\n        }\n      }\n      var findHostInstancesForRefresh = function(root, families) {\n        {\n          var hostInstances = /* @__PURE__ */ new Set();\n          var types = new Set(families.map(function(family) {\n            return family.current;\n          }));\n          findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances);\n          return hostInstances;\n        }\n      };\n      function findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {\n        {\n          var child = fiber.child, sibling = fiber.sibling, tag = fiber.tag, type = fiber.type;\n          var candidateType = null;\n          switch (tag) {\n            case FunctionComponent:\n            case SimpleMemoComponent:\n            case ClassComponent:\n              candidateType = type;\n              break;\n            case ForwardRef:\n              candidateType = type.render;\n              break;\n          }\n          var didMatch = false;\n          if (candidateType !== null) {\n            if (types.has(candidateType)) {\n              didMatch = true;\n            }\n          }\n          if (didMatch) {\n            findHostInstancesForFiberShallowly(fiber, hostInstances);\n          } else {\n            if (child !== null) {\n              findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);\n            }\n          }\n          if (sibling !== null) {\n            findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);\n          }\n        }\n      }\n      function findHostInstancesForFiberShallowly(fiber, hostInstances) {\n        {\n          var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);\n          if (foundHostInstances) {\n            return;\n          }\n          var node = fiber;\n          while (true) {\n            switch (node.tag) {\n              case HostComponent:\n                hostInstances.add(node.stateNode);\n                return;\n              case HostPortal:\n                hostInstances.add(node.stateNode.containerInfo);\n                return;\n              case HostRoot:\n                hostInstances.add(node.stateNode.containerInfo);\n                return;\n            }\n            if (node.return === null) {\n              throw new Error(\"Expected to reach root first.\");\n            }\n            node = node.return;\n          }\n        }\n      }\n      function findChildHostInstancesForFiberShallowly(fiber, hostInstances) {\n        {\n          var node = fiber;\n          var foundHostInstances = false;\n          while (true) {\n            if (node.tag === HostComponent) {\n              foundHostInstances = true;\n              hostInstances.add(node.stateNode);\n            } else if (node.child !== null) {\n              node.child.return = node;\n              node = node.child;\n              continue;\n            }\n            if (node === fiber) {\n              return foundHostInstances;\n            }\n            while (node.sibling === null) {\n              if (node.return === null || node.return === fiber) {\n                return foundHostInstances;\n              }\n              node = node.return;\n            }\n            node.sibling.return = node.return;\n            node = node.sibling;\n          }\n        }\n        return false;\n      }\n      var hasBadMapPolyfill;\n      {\n        hasBadMapPolyfill = false;\n        try {\n          var nonExtensibleObject = Object.preventExtensions({});\n          /* @__PURE__ */ new Map([[nonExtensibleObject, null]]);\n          /* @__PURE__ */ new Set([nonExtensibleObject]);\n        } catch (e2) {\n          hasBadMapPolyfill = true;\n        }\n      }\n      function FiberNode(tag, pendingProps, key, mode) {\n        this.tag = tag;\n        this.key = key;\n        this.elementType = null;\n        this.type = null;\n        this.stateNode = null;\n        this.return = null;\n        this.child = null;\n        this.sibling = null;\n        this.index = 0;\n        this.ref = null;\n        this.pendingProps = pendingProps;\n        this.memoizedProps = null;\n        this.updateQueue = null;\n        this.memoizedState = null;\n        this.dependencies = null;\n        this.mode = mode;\n        this.flags = NoFlags;\n        this.subtreeFlags = NoFlags;\n        this.deletions = null;\n        this.lanes = NoLanes;\n        this.childLanes = NoLanes;\n        this.alternate = null;\n        {\n          this.actualDuration = Number.NaN;\n          this.actualStartTime = Number.NaN;\n          this.selfBaseDuration = Number.NaN;\n          this.treeBaseDuration = Number.NaN;\n          this.actualDuration = 0;\n          this.actualStartTime = -1;\n          this.selfBaseDuration = 0;\n          this.treeBaseDuration = 0;\n        }\n        {\n          this._debugSource = null;\n          this._debugOwner = null;\n          this._debugNeedsRemount = false;\n          this._debugHookTypes = null;\n          if (!hasBadMapPolyfill && typeof Object.preventExtensions === \"function\") {\n            Object.preventExtensions(this);\n          }\n        }\n      }\n      var createFiber = function(tag, pendingProps, key, mode) {\n        return new FiberNode(tag, pendingProps, key, mode);\n      };\n      function shouldConstruct$1(Component) {\n        var prototype = Component.prototype;\n        return !!(prototype && prototype.isReactComponent);\n      }\n      function isSimpleFunctionComponent(type) {\n        return typeof type === \"function\" && !shouldConstruct$1(type) && type.defaultProps === void 0;\n      }\n      function resolveLazyComponentTag(Component) {\n        if (typeof Component === \"function\") {\n          return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;\n        } else if (Component !== void 0 && Component !== null) {\n          var $$typeof = Component.$$typeof;\n          if ($$typeof === REACT_FORWARD_REF_TYPE) {\n            return ForwardRef;\n          }\n          if ($$typeof === REACT_MEMO_TYPE) {\n            return MemoComponent;\n          }\n        }\n        return IndeterminateComponent;\n      }\n      function createWorkInProgress(current2, pendingProps) {\n        var workInProgress2 = current2.alternate;\n        if (workInProgress2 === null) {\n          workInProgress2 = createFiber(current2.tag, pendingProps, current2.key, current2.mode);\n          workInProgress2.elementType = current2.elementType;\n          workInProgress2.type = current2.type;\n          workInProgress2.stateNode = current2.stateNode;\n          {\n            workInProgress2._debugSource = current2._debugSource;\n            workInProgress2._debugOwner = current2._debugOwner;\n            workInProgress2._debugHookTypes = current2._debugHookTypes;\n          }\n          workInProgress2.alternate = current2;\n          current2.alternate = workInProgress2;\n        } else {\n          workInProgress2.pendingProps = pendingProps;\n          workInProgress2.type = current2.type;\n          workInProgress2.flags = NoFlags;\n          workInProgress2.subtreeFlags = NoFlags;\n          workInProgress2.deletions = null;\n          {\n            workInProgress2.actualDuration = 0;\n            workInProgress2.actualStartTime = -1;\n          }\n        }\n        workInProgress2.flags = current2.flags & StaticMask;\n        workInProgress2.childLanes = current2.childLanes;\n        workInProgress2.lanes = current2.lanes;\n        workInProgress2.child = current2.child;\n        workInProgress2.memoizedProps = current2.memoizedProps;\n        workInProgress2.memoizedState = current2.memoizedState;\n        workInProgress2.updateQueue = current2.updateQueue;\n        var currentDependencies = current2.dependencies;\n        workInProgress2.dependencies = currentDependencies === null ? null : {\n          lanes: currentDependencies.lanes,\n          firstContext: currentDependencies.firstContext\n        };\n        workInProgress2.sibling = current2.sibling;\n        workInProgress2.index = current2.index;\n        workInProgress2.ref = current2.ref;\n        {\n          workInProgress2.selfBaseDuration = current2.selfBaseDuration;\n          workInProgress2.treeBaseDuration = current2.treeBaseDuration;\n        }\n        {\n          workInProgress2._debugNeedsRemount = current2._debugNeedsRemount;\n          switch (workInProgress2.tag) {\n            case IndeterminateComponent:\n            case FunctionComponent:\n            case SimpleMemoComponent:\n              workInProgress2.type = resolveFunctionForHotReloading(current2.type);\n              break;\n            case ClassComponent:\n              workInProgress2.type = resolveClassForHotReloading(current2.type);\n              break;\n            case ForwardRef:\n              workInProgress2.type = resolveForwardRefForHotReloading(current2.type);\n              break;\n          }\n        }\n        return workInProgress2;\n      }\n      function resetWorkInProgress(workInProgress2, renderLanes2) {\n        workInProgress2.flags &= StaticMask | Placement;\n        var current2 = workInProgress2.alternate;\n        if (current2 === null) {\n          workInProgress2.childLanes = NoLanes;\n          workInProgress2.lanes = renderLanes2;\n          workInProgress2.child = null;\n          workInProgress2.subtreeFlags = NoFlags;\n          workInProgress2.memoizedProps = null;\n          workInProgress2.memoizedState = null;\n          workInProgress2.updateQueue = null;\n          workInProgress2.dependencies = null;\n          workInProgress2.stateNode = null;\n          {\n            workInProgress2.selfBaseDuration = 0;\n            workInProgress2.treeBaseDuration = 0;\n          }\n        } else {\n          workInProgress2.childLanes = current2.childLanes;\n          workInProgress2.lanes = current2.lanes;\n          workInProgress2.child = current2.child;\n          workInProgress2.subtreeFlags = NoFlags;\n          workInProgress2.deletions = null;\n          workInProgress2.memoizedProps = current2.memoizedProps;\n          workInProgress2.memoizedState = current2.memoizedState;\n          workInProgress2.updateQueue = current2.updateQueue;\n          workInProgress2.type = current2.type;\n          var currentDependencies = current2.dependencies;\n          workInProgress2.dependencies = currentDependencies === null ? null : {\n            lanes: currentDependencies.lanes,\n            firstContext: currentDependencies.firstContext\n          };\n          {\n            workInProgress2.selfBaseDuration = current2.selfBaseDuration;\n            workInProgress2.treeBaseDuration = current2.treeBaseDuration;\n          }\n        }\n        return workInProgress2;\n      }\n      function createHostRootFiber(tag, isStrictMode, concurrentUpdatesByDefaultOverride) {\n        var mode;\n        if (tag === ConcurrentRoot) {\n          mode = ConcurrentMode;\n          if (isStrictMode === true) {\n            mode |= StrictLegacyMode;\n            {\n              mode |= StrictEffectsMode;\n            }\n          }\n        } else {\n          mode = NoMode;\n        }\n        if (isDevToolsPresent) {\n          mode |= ProfileMode;\n        }\n        return createFiber(HostRoot, null, null, mode);\n      }\n      function createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes) {\n        var fiberTag = IndeterminateComponent;\n        var resolvedType = type;\n        if (typeof type === \"function\") {\n          if (shouldConstruct$1(type)) {\n            fiberTag = ClassComponent;\n            {\n              resolvedType = resolveClassForHotReloading(resolvedType);\n            }\n          } else {\n            {\n              resolvedType = resolveFunctionForHotReloading(resolvedType);\n            }\n          }\n        } else if (typeof type === \"string\") {\n          fiberTag = HostComponent;\n        } else {\n          getTag: switch (type) {\n            case REACT_FRAGMENT_TYPE:\n              return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n            case REACT_STRICT_MODE_TYPE:\n              fiberTag = Mode;\n              mode |= StrictLegacyMode;\n              if ((mode & ConcurrentMode) !== NoMode) {\n                mode |= StrictEffectsMode;\n              }\n              break;\n            case REACT_PROFILER_TYPE:\n              return createFiberFromProfiler(pendingProps, mode, lanes, key);\n            case REACT_SUSPENSE_TYPE:\n              return createFiberFromSuspense(pendingProps, mode, lanes, key);\n            case REACT_SUSPENSE_LIST_TYPE:\n              return createFiberFromSuspenseList(pendingProps, mode, lanes, key);\n            case REACT_OFFSCREEN_TYPE:\n              return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n            case REACT_LEGACY_HIDDEN_TYPE:\n            // eslint-disable-next-line no-fallthrough\n            case REACT_SCOPE_TYPE:\n            // eslint-disable-next-line no-fallthrough\n            case REACT_CACHE_TYPE:\n            // eslint-disable-next-line no-fallthrough\n            case REACT_TRACING_MARKER_TYPE:\n            // eslint-disable-next-line no-fallthrough\n            case REACT_DEBUG_TRACING_MODE_TYPE:\n            // eslint-disable-next-line no-fallthrough\n            default: {\n              if (typeof type === \"object\" && type !== null) {\n                switch (type.$$typeof) {\n                  case REACT_PROVIDER_TYPE:\n                    fiberTag = ContextProvider;\n                    break getTag;\n                  case REACT_CONTEXT_TYPE:\n                    fiberTag = ContextConsumer;\n                    break getTag;\n                  case REACT_FORWARD_REF_TYPE:\n                    fiberTag = ForwardRef;\n                    {\n                      resolvedType = resolveForwardRefForHotReloading(resolvedType);\n                    }\n                    break getTag;\n                  case REACT_MEMO_TYPE:\n                    fiberTag = MemoComponent;\n                    break getTag;\n                  case REACT_LAZY_TYPE:\n                    fiberTag = LazyComponent;\n                    resolvedType = null;\n                    break getTag;\n                }\n              }\n              var info = \"\";\n              {\n                if (type === void 0 || typeof type === \"object\" && type !== null && Object.keys(type).length === 0) {\n                  info += \" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.\";\n                }\n                var ownerName = owner ? getComponentNameFromFiber(owner) : null;\n                if (ownerName) {\n                  info += \"\\n\\nCheck the render method of `\" + ownerName + \"`.\";\n                }\n              }\n              throw new Error(\"Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) \" + (\"but got: \" + (type == null ? type : typeof type) + \".\" + info));\n            }\n          }\n        }\n        var fiber = createFiber(fiberTag, pendingProps, key, mode);\n        fiber.elementType = type;\n        fiber.type = resolvedType;\n        fiber.lanes = lanes;\n        {\n          fiber._debugOwner = owner;\n        }\n        return fiber;\n      }\n      function createFiberFromElement(element, mode, lanes) {\n        var owner = null;\n        {\n          owner = element._owner;\n        }\n        var type = element.type;\n        var key = element.key;\n        var pendingProps = element.props;\n        var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);\n        {\n          fiber._debugSource = element._source;\n          fiber._debugOwner = element._owner;\n        }\n        return fiber;\n      }\n      function createFiberFromFragment(elements, mode, lanes, key) {\n        var fiber = createFiber(Fragment2, elements, key, mode);\n        fiber.lanes = lanes;\n        return fiber;\n      }\n      function createFiberFromProfiler(pendingProps, mode, lanes, key) {\n        {\n          if (typeof pendingProps.id !== \"string\") {\n            error2('Profiler must specify an \"id\" of type `string` as a prop. Received the type `%s` instead.', typeof pendingProps.id);\n          }\n        }\n        var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode);\n        fiber.elementType = REACT_PROFILER_TYPE;\n        fiber.lanes = lanes;\n        {\n          fiber.stateNode = {\n            effectDuration: 0,\n            passiveEffectDuration: 0\n          };\n        }\n        return fiber;\n      }\n      function createFiberFromSuspense(pendingProps, mode, lanes, key) {\n        var fiber = createFiber(SuspenseComponent, pendingProps, key, mode);\n        fiber.elementType = REACT_SUSPENSE_TYPE;\n        fiber.lanes = lanes;\n        return fiber;\n      }\n      function createFiberFromSuspenseList(pendingProps, mode, lanes, key) {\n        var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);\n        fiber.elementType = REACT_SUSPENSE_LIST_TYPE;\n        fiber.lanes = lanes;\n        return fiber;\n      }\n      function createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n        var fiber = createFiber(OffscreenComponent, pendingProps, key, mode);\n        fiber.elementType = REACT_OFFSCREEN_TYPE;\n        fiber.lanes = lanes;\n        var primaryChildInstance = {};\n        fiber.stateNode = primaryChildInstance;\n        return fiber;\n      }\n      function createFiberFromText(content, mode, lanes) {\n        var fiber = createFiber(HostText, content, null, mode);\n        fiber.lanes = lanes;\n        return fiber;\n      }\n      function createFiberFromHostInstanceForDeletion() {\n        var fiber = createFiber(HostComponent, null, null, NoMode);\n        fiber.elementType = \"DELETED\";\n        return fiber;\n      }\n      function createFiberFromDehydratedFragment(dehydratedNode) {\n        var fiber = createFiber(DehydratedFragment, null, null, NoMode);\n        fiber.stateNode = dehydratedNode;\n        return fiber;\n      }\n      function createFiberFromPortal(portal, mode, lanes) {\n        var pendingProps = portal.children !== null ? portal.children : [];\n        var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n        fiber.lanes = lanes;\n        fiber.stateNode = {\n          containerInfo: portal.containerInfo,\n          pendingChildren: null,\n          // Used by persistent updates\n          implementation: portal.implementation\n        };\n        return fiber;\n      }\n      function assignFiberPropertiesInDEV(target, source) {\n        if (target === null) {\n          target = createFiber(IndeterminateComponent, null, null, NoMode);\n        }\n        target.tag = source.tag;\n        target.key = source.key;\n        target.elementType = source.elementType;\n        target.type = source.type;\n        target.stateNode = source.stateNode;\n        target.return = source.return;\n        target.child = source.child;\n        target.sibling = source.sibling;\n        target.index = source.index;\n        target.ref = source.ref;\n        target.pendingProps = source.pendingProps;\n        target.memoizedProps = source.memoizedProps;\n        target.updateQueue = source.updateQueue;\n        target.memoizedState = source.memoizedState;\n        target.dependencies = source.dependencies;\n        target.mode = source.mode;\n        target.flags = source.flags;\n        target.subtreeFlags = source.subtreeFlags;\n        target.deletions = source.deletions;\n        target.lanes = source.lanes;\n        target.childLanes = source.childLanes;\n        target.alternate = source.alternate;\n        {\n          target.actualDuration = source.actualDuration;\n          target.actualStartTime = source.actualStartTime;\n          target.selfBaseDuration = source.selfBaseDuration;\n          target.treeBaseDuration = source.treeBaseDuration;\n        }\n        target._debugSource = source._debugSource;\n        target._debugOwner = source._debugOwner;\n        target._debugNeedsRemount = source._debugNeedsRemount;\n        target._debugHookTypes = source._debugHookTypes;\n        return target;\n      }\n      function FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError) {\n        this.tag = tag;\n        this.containerInfo = containerInfo;\n        this.pendingChildren = null;\n        this.current = null;\n        this.pingCache = null;\n        this.finishedWork = null;\n        this.timeoutHandle = noTimeout;\n        this.context = null;\n        this.pendingContext = null;\n        this.callbackNode = null;\n        this.callbackPriority = NoLane;\n        this.eventTimes = createLaneMap(NoLanes);\n        this.expirationTimes = createLaneMap(NoTimestamp);\n        this.pendingLanes = NoLanes;\n        this.suspendedLanes = NoLanes;\n        this.pingedLanes = NoLanes;\n        this.expiredLanes = NoLanes;\n        this.mutableReadLanes = NoLanes;\n        this.finishedLanes = NoLanes;\n        this.entangledLanes = NoLanes;\n        this.entanglements = createLaneMap(NoLanes);\n        this.identifierPrefix = identifierPrefix;\n        this.onRecoverableError = onRecoverableError;\n        if (supportsHydration) {\n          this.mutableSourceEagerHydrationData = null;\n        }\n        {\n          this.effectDuration = 0;\n          this.passiveEffectDuration = 0;\n        }\n        {\n          this.memoizedUpdaters = /* @__PURE__ */ new Set();\n          var pendingUpdatersLaneMap = this.pendingUpdatersLaneMap = [];\n          for (var _i = 0; _i < TotalLanes; _i++) {\n            pendingUpdatersLaneMap.push(/* @__PURE__ */ new Set());\n          }\n        }\n        {\n          switch (tag) {\n            case ConcurrentRoot:\n              this._debugRootType = hydrate ? \"hydrateRoot()\" : \"createRoot()\";\n              break;\n            case LegacyRoot:\n              this._debugRootType = hydrate ? \"hydrate()\" : \"render()\";\n              break;\n          }\n        }\n      }\n      function createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n        var root = new FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError);\n        var uninitializedFiber = createHostRootFiber(tag, isStrictMode);\n        root.current = uninitializedFiber;\n        uninitializedFiber.stateNode = root;\n        {\n          var _initialState = {\n            element: initialChildren,\n            isDehydrated: hydrate,\n            cache: null,\n            // not enabled yet\n            transitions: null\n          };\n          uninitializedFiber.memoizedState = _initialState;\n        }\n        initializeUpdateQueue(uninitializedFiber);\n        return root;\n      }\n      var ReactVersion = \"18.0.0-fc46dba67-20220329\";\n      function createPortal2(children, containerInfo, implementation) {\n        var key = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;\n        {\n          checkKeyStringCoercion(key);\n        }\n        return {\n          // This tag allow us to uniquely identify this as a React Portal\n          $$typeof: REACT_PORTAL_TYPE,\n          key: key == null ? null : \"\" + key,\n          children,\n          containerInfo,\n          implementation\n        };\n      }\n      var didWarnAboutNestedUpdates;\n      var didWarnAboutFindNodeInStrictMode;\n      {\n        didWarnAboutNestedUpdates = false;\n        didWarnAboutFindNodeInStrictMode = {};\n      }\n      function getContextForSubtree(parentComponent) {\n        if (!parentComponent) {\n          return emptyContextObject;\n        }\n        var fiber = get(parentComponent);\n        var parentContext = findCurrentUnmaskedContext(fiber);\n        if (fiber.tag === ClassComponent) {\n          var Component = fiber.type;\n          if (isContextProvider(Component)) {\n            return processChildContext(fiber, Component, parentContext);\n          }\n        }\n        return parentContext;\n      }\n      function findHostInstance(component) {\n        var fiber = get(component);\n        if (fiber === void 0) {\n          if (typeof component.render === \"function\") {\n            throw new Error(\"Unable to find node on an unmounted component.\");\n          } else {\n            var keys = Object.keys(component).join(\",\");\n            throw new Error(\"Argument appears to not be a ReactComponent. Keys: \" + keys);\n          }\n        }\n        var hostFiber = findCurrentHostFiber(fiber);\n        if (hostFiber === null) {\n          return null;\n        }\n        return hostFiber.stateNode;\n      }\n      function findHostInstanceWithWarning(component, methodName) {\n        {\n          var fiber = get(component);\n          if (fiber === void 0) {\n            if (typeof component.render === \"function\") {\n              throw new Error(\"Unable to find node on an unmounted component.\");\n            } else {\n              var keys = Object.keys(component).join(\",\");\n              throw new Error(\"Argument appears to not be a ReactComponent. Keys: \" + keys);\n            }\n          }\n          var hostFiber = findCurrentHostFiber(fiber);\n          if (hostFiber === null) {\n            return null;\n          }\n          if (hostFiber.mode & StrictLegacyMode) {\n            var componentName = getComponentNameFromFiber(fiber) || \"Component\";\n            if (!didWarnAboutFindNodeInStrictMode[componentName]) {\n              didWarnAboutFindNodeInStrictMode[componentName] = true;\n              var previousFiber = current;\n              try {\n                setCurrentFiber(hostFiber);\n                if (fiber.mode & StrictLegacyMode) {\n                  error2(\"%s is deprecated in StrictMode. %s was passed an instance of %s which is inside StrictMode. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node\", methodName, methodName, componentName);\n                } else {\n                  error2(\"%s is deprecated in StrictMode. %s was passed an instance of %s which renders StrictMode children. Instead, add a ref directly to the element you want to reference. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-find-node\", methodName, methodName, componentName);\n                }\n              } finally {\n                if (previousFiber) {\n                  setCurrentFiber(previousFiber);\n                } else {\n                  resetCurrentFiber();\n                }\n              }\n            }\n          }\n          return hostFiber.stateNode;\n        }\n      }\n      function createContainer(containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n        var hydrate = false;\n        var initialChildren = null;\n        return createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n      }\n      function createHydrationContainer(initialChildren, callback, containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n        var hydrate = true;\n        var root = createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n        root.context = getContextForSubtree(null);\n        var current2 = root.current;\n        var eventTime = requestEventTime();\n        var lane = requestUpdateLane(current2);\n        var update = createUpdate(eventTime, lane);\n        update.callback = callback !== void 0 && callback !== null ? callback : null;\n        enqueueUpdate(current2, update);\n        scheduleInitialHydrationOnRoot(root, lane, eventTime);\n        return root;\n      }\n      function updateContainer(element, container, parentComponent, callback) {\n        {\n          onScheduleRoot(container, element);\n        }\n        var current$1 = container.current;\n        var eventTime = requestEventTime();\n        var lane = requestUpdateLane(current$1);\n        {\n          markRenderScheduled(lane);\n        }\n        var context2 = getContextForSubtree(parentComponent);\n        if (container.context === null) {\n          container.context = context2;\n        } else {\n          container.pendingContext = context2;\n        }\n        {\n          if (isRendering && current !== null && !didWarnAboutNestedUpdates) {\n            didWarnAboutNestedUpdates = true;\n            error2(\"Render methods should be a pure function of props and state; triggering nested component updates from render is not allowed. If necessary, trigger nested updates in componentDidUpdate.\\n\\nCheck the render method of %s.\", getComponentNameFromFiber(current) || \"Unknown\");\n          }\n        }\n        var update = createUpdate(eventTime, lane);\n        update.payload = {\n          element\n        };\n        callback = callback === void 0 ? null : callback;\n        if (callback !== null) {\n          {\n            if (typeof callback !== \"function\") {\n              error2(\"render(...): Expected the last optional `callback` argument to be a function. Instead received: %s.\", callback);\n            }\n          }\n          update.callback = callback;\n        }\n        enqueueUpdate(current$1, update);\n        var root = scheduleUpdateOnFiber(current$1, lane, eventTime);\n        if (root !== null) {\n          entangleTransitions(root, current$1, lane);\n        }\n        return lane;\n      }\n      function getPublicRootInstance(container) {\n        var containerFiber = container.current;\n        if (!containerFiber.child) {\n          return null;\n        }\n        switch (containerFiber.child.tag) {\n          case HostComponent:\n            return getPublicInstance(containerFiber.child.stateNode);\n          default:\n            return containerFiber.child.stateNode;\n        }\n      }\n      function attemptSynchronousHydration(fiber) {\n        switch (fiber.tag) {\n          case HostRoot:\n            var root = fiber.stateNode;\n            if (isRootDehydrated(root)) {\n              var lanes = getHighestPriorityPendingLanes(root);\n              flushRoot(root, lanes);\n            }\n            break;\n          case SuspenseComponent:\n            var eventTime = requestEventTime();\n            flushSync(function() {\n              return scheduleUpdateOnFiber(fiber, SyncLane, eventTime);\n            });\n            var retryLane = SyncLane;\n            markRetryLaneIfNotHydrated(fiber, retryLane);\n            break;\n        }\n      }\n      function markRetryLaneImpl(fiber, retryLane) {\n        var suspenseState = fiber.memoizedState;\n        if (suspenseState !== null && suspenseState.dehydrated !== null) {\n          suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);\n        }\n      }\n      function markRetryLaneIfNotHydrated(fiber, retryLane) {\n        markRetryLaneImpl(fiber, retryLane);\n        var alternate = fiber.alternate;\n        if (alternate) {\n          markRetryLaneImpl(alternate, retryLane);\n        }\n      }\n      function attemptContinuousHydration(fiber) {\n        if (fiber.tag !== SuspenseComponent) {\n          return;\n        }\n        var eventTime = requestEventTime();\n        var lane = SelectiveHydrationLane;\n        scheduleUpdateOnFiber(fiber, lane, eventTime);\n        markRetryLaneIfNotHydrated(fiber, lane);\n      }\n      function attemptHydrationAtCurrentPriority(fiber) {\n        if (fiber.tag !== SuspenseComponent) {\n          return;\n        }\n        var eventTime = requestEventTime();\n        var lane = requestUpdateLane(fiber);\n        scheduleUpdateOnFiber(fiber, lane, eventTime);\n        markRetryLaneIfNotHydrated(fiber, lane);\n      }\n      function findHostInstanceWithNoPortals(fiber) {\n        var hostFiber = findCurrentHostFiberWithNoPortals(fiber);\n        if (hostFiber === null) {\n          return null;\n        }\n        return hostFiber.stateNode;\n      }\n      var shouldErrorImpl = function(fiber) {\n        return null;\n      };\n      function shouldError(fiber) {\n        return shouldErrorImpl(fiber);\n      }\n      var shouldSuspendImpl = function(fiber) {\n        return false;\n      };\n      function shouldSuspend(fiber) {\n        return shouldSuspendImpl(fiber);\n      }\n      var overrideHookState = null;\n      var overrideHookStateDeletePath = null;\n      var overrideHookStateRenamePath = null;\n      var overrideProps = null;\n      var overridePropsDeletePath = null;\n      var overridePropsRenamePath = null;\n      var scheduleUpdate = null;\n      var setErrorHandler = null;\n      var setSuspenseHandler = null;\n      {\n        var copyWithDeleteImpl = function(obj, path, index2) {\n          var key = path[index2];\n          var updated = isArray2(obj) ? obj.slice() : assign({}, obj);\n          if (index2 + 1 === path.length) {\n            if (isArray2(updated)) {\n              updated.splice(key, 1);\n            } else {\n              delete updated[key];\n            }\n            return updated;\n          }\n          updated[key] = copyWithDeleteImpl(obj[key], path, index2 + 1);\n          return updated;\n        };\n        var copyWithDelete = function(obj, path) {\n          return copyWithDeleteImpl(obj, path, 0);\n        };\n        var copyWithRenameImpl = function(obj, oldPath, newPath, index2) {\n          var oldKey = oldPath[index2];\n          var updated = isArray2(obj) ? obj.slice() : assign({}, obj);\n          if (index2 + 1 === oldPath.length) {\n            var newKey = newPath[index2];\n            updated[newKey] = updated[oldKey];\n            if (isArray2(updated)) {\n              updated.splice(oldKey, 1);\n            } else {\n              delete updated[oldKey];\n            }\n          } else {\n            updated[oldKey] = copyWithRenameImpl(\n              // $FlowFixMe number or string is fine here\n              obj[oldKey],\n              oldPath,\n              newPath,\n              index2 + 1\n            );\n          }\n          return updated;\n        };\n        var copyWithRename = function(obj, oldPath, newPath) {\n          if (oldPath.length !== newPath.length) {\n            warn(\"copyWithRename() expects paths of the same length\");\n            return;\n          } else {\n            for (var i2 = 0; i2 < newPath.length - 1; i2++) {\n              if (oldPath[i2] !== newPath[i2]) {\n                warn(\"copyWithRename() expects paths to be the same except for the deepest key\");\n                return;\n              }\n            }\n          }\n          return copyWithRenameImpl(obj, oldPath, newPath, 0);\n        };\n        var copyWithSetImpl = function(obj, path, index2, value) {\n          if (index2 >= path.length) {\n            return value;\n          }\n          var key = path[index2];\n          var updated = isArray2(obj) ? obj.slice() : assign({}, obj);\n          updated[key] = copyWithSetImpl(obj[key], path, index2 + 1, value);\n          return updated;\n        };\n        var copyWithSet = function(obj, path, value) {\n          return copyWithSetImpl(obj, path, 0, value);\n        };\n        var findHook = function(fiber, id) {\n          var currentHook2 = fiber.memoizedState;\n          while (currentHook2 !== null && id > 0) {\n            currentHook2 = currentHook2.next;\n            id--;\n          }\n          return currentHook2;\n        };\n        overrideHookState = function(fiber, id, path, value) {\n          var hook = findHook(fiber, id);\n          if (hook !== null) {\n            var newState = copyWithSet(hook.memoizedState, path, value);\n            hook.memoizedState = newState;\n            hook.baseState = newState;\n            fiber.memoizedProps = assign({}, fiber.memoizedProps);\n            scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n          }\n        };\n        overrideHookStateDeletePath = function(fiber, id, path) {\n          var hook = findHook(fiber, id);\n          if (hook !== null) {\n            var newState = copyWithDelete(hook.memoizedState, path);\n            hook.memoizedState = newState;\n            hook.baseState = newState;\n            fiber.memoizedProps = assign({}, fiber.memoizedProps);\n            scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n          }\n        };\n        overrideHookStateRenamePath = function(fiber, id, oldPath, newPath) {\n          var hook = findHook(fiber, id);\n          if (hook !== null) {\n            var newState = copyWithRename(hook.memoizedState, oldPath, newPath);\n            hook.memoizedState = newState;\n            hook.baseState = newState;\n            fiber.memoizedProps = assign({}, fiber.memoizedProps);\n            scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n          }\n        };\n        overrideProps = function(fiber, path, value) {\n          fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);\n          if (fiber.alternate) {\n            fiber.alternate.pendingProps = fiber.pendingProps;\n          }\n          scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n        };\n        overridePropsDeletePath = function(fiber, path) {\n          fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);\n          if (fiber.alternate) {\n            fiber.alternate.pendingProps = fiber.pendingProps;\n          }\n          scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n        };\n        overridePropsRenamePath = function(fiber, oldPath, newPath) {\n          fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);\n          if (fiber.alternate) {\n            fiber.alternate.pendingProps = fiber.pendingProps;\n          }\n          scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n        };\n        scheduleUpdate = function(fiber) {\n          scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);\n        };\n        setErrorHandler = function(newShouldErrorImpl) {\n          shouldErrorImpl = newShouldErrorImpl;\n        };\n        setSuspenseHandler = function(newShouldSuspendImpl) {\n          shouldSuspendImpl = newShouldSuspendImpl;\n        };\n      }\n      function findHostInstanceByFiber(fiber) {\n        var hostFiber = findCurrentHostFiber(fiber);\n        if (hostFiber === null) {\n          return null;\n        }\n        return hostFiber.stateNode;\n      }\n      function emptyFindFiberByHostInstance(instance) {\n        return null;\n      }\n      function getCurrentFiberForDevTools() {\n        return current;\n      }\n      function injectIntoDevTools(devToolsConfig) {\n        var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n        var ReactCurrentDispatcher2 = ReactSharedInternals.ReactCurrentDispatcher;\n        return injectInternals({\n          bundleType: devToolsConfig.bundleType,\n          version: devToolsConfig.version,\n          rendererPackageName: devToolsConfig.rendererPackageName,\n          rendererConfig: devToolsConfig.rendererConfig,\n          overrideHookState,\n          overrideHookStateDeletePath,\n          overrideHookStateRenamePath,\n          overrideProps,\n          overridePropsDeletePath,\n          overridePropsRenamePath,\n          setErrorHandler,\n          setSuspenseHandler,\n          scheduleUpdate,\n          currentDispatcherRef: ReactCurrentDispatcher2,\n          findHostInstanceByFiber,\n          findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,\n          // React Refresh\n          findHostInstancesForRefresh,\n          scheduleRefresh,\n          scheduleRoot,\n          setRefreshHandler,\n          // Enables DevTools to append owner stacks to error messages in DEV mode.\n          getCurrentFiber: getCurrentFiberForDevTools,\n          // Enables DevTools to detect reconciler version rather than renderer version\n          // which may not match for third party renderers.\n          reconcilerVersion: ReactVersion\n        });\n      }\n      exports.attemptContinuousHydration = attemptContinuousHydration;\n      exports.attemptHydrationAtCurrentPriority = attemptHydrationAtCurrentPriority;\n      exports.attemptSynchronousHydration = attemptSynchronousHydration;\n      exports.batchedUpdates = batchedUpdates;\n      exports.createComponentSelector = createComponentSelector;\n      exports.createContainer = createContainer;\n      exports.createHasPseudoClassSelector = createHasPseudoClassSelector;\n      exports.createHydrationContainer = createHydrationContainer;\n      exports.createPortal = createPortal2;\n      exports.createRoleSelector = createRoleSelector;\n      exports.createTestNameSelector = createTestNameSelector;\n      exports.createTextSelector = createTextSelector;\n      exports.deferredUpdates = deferredUpdates;\n      exports.discreteUpdates = discreteUpdates;\n      exports.findAllNodes = findAllNodes;\n      exports.findBoundingRects = findBoundingRects;\n      exports.findHostInstance = findHostInstance;\n      exports.findHostInstanceWithNoPortals = findHostInstanceWithNoPortals;\n      exports.findHostInstanceWithWarning = findHostInstanceWithWarning;\n      exports.flushControlled = flushControlled;\n      exports.flushPassiveEffects = flushPassiveEffects;\n      exports.flushSync = flushSync;\n      exports.focusWithin = focusWithin;\n      exports.getCurrentUpdatePriority = getCurrentUpdatePriority;\n      exports.getFindAllNodesFailureDescription = getFindAllNodesFailureDescription;\n      exports.getPublicRootInstance = getPublicRootInstance;\n      exports.injectIntoDevTools = injectIntoDevTools;\n      exports.isAlreadyRendering = isAlreadyRendering;\n      exports.observeVisibleRects = observeVisibleRects;\n      exports.registerMutableSourceForHydration = registerMutableSourceForHydration;\n      exports.runWithPriority = runWithPriority;\n      exports.shouldError = shouldError;\n      exports.shouldSuspend = shouldSuspend;\n      exports.updateContainer = updateContainer;\n      return exports;\n    };\n  }\n  return reactReconciler_development.exports;\n}\nvar hasRequiredReactReconciler;\nfunction requireReactReconciler() {\n  if (hasRequiredReactReconciler) return reactReconciler.exports;\n  hasRequiredReactReconciler = 1;\n  if (process.env.NODE_ENV === \"production\") {\n    reactReconciler.exports = requireReactReconciler_production_min();\n  } else {\n    reactReconciler.exports = requireReactReconciler_development();\n  }\n  return reactReconciler.exports;\n}\nvar reactReconcilerExports = requireReactReconciler();\nconst Reconciler = /* @__PURE__ */ getDefaultExportFromCjs(reactReconcilerExports);\nvar schedulerExports = requireScheduler();\nconst catalogue = {};\nconst extend = (objects) => void Object.assign(catalogue, objects);\nfunction createRenderer(_roots, _getEventPriority) {\n  function createInstance(type, {\n    args = [],\n    attach: attach2,\n    ...props\n  }, root) {\n    let name = `${type[0].toUpperCase()}${type.slice(1)}`;\n    let instance;\n    if (type === \"primitive\") {\n      if (props.object === void 0) throw new Error(\"R3F: Primitives without 'object' are invalid!\");\n      const object = props.object;\n      instance = prepare(object, {\n        type,\n        root,\n        attach: attach2,\n        primitive: true\n      });\n    } else {\n      const target = catalogue[name];\n      if (!target) {\n        throw new Error(`R3F: ${name} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);\n      }\n      if (!Array.isArray(args)) throw new Error(\"R3F: The args prop must be an array!\");\n      instance = prepare(new target(...args), {\n        type,\n        root,\n        attach: attach2,\n        // Save args in case we need to reconstruct later for HMR\n        memoizedProps: {\n          args\n        }\n      });\n    }\n    if (instance.__r3f.attach === void 0) {\n      if (instance.isBufferGeometry) instance.__r3f.attach = \"geometry\";\n      else if (instance.isMaterial) instance.__r3f.attach = \"material\";\n    }\n    if (name !== \"inject\") applyProps$1(instance, props);\n    return instance;\n  }\n  function appendChild(parentInstance, child) {\n    let added = false;\n    if (child) {\n      var _child$__r3f, _parentInstance$__r3f;\n      if ((_child$__r3f = child.__r3f) != null && _child$__r3f.attach) {\n        attach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        parentInstance.add(child);\n        added = true;\n      }\n      if (!added) (_parentInstance$__r3f = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f.objects.push(child);\n      if (!child.__r3f) prepare(child, {});\n      child.__r3f.parent = parentInstance;\n      updateInstance(child);\n      invalidateInstance(child);\n    }\n  }\n  function insertBefore(parentInstance, child, beforeChild) {\n    let added = false;\n    if (child) {\n      var _child$__r3f2, _parentInstance$__r3f2;\n      if ((_child$__r3f2 = child.__r3f) != null && _child$__r3f2.attach) {\n        attach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        child.parent = parentInstance;\n        child.dispatchEvent({\n          type: \"added\"\n        });\n        parentInstance.dispatchEvent({\n          type: \"childadded\",\n          child\n        });\n        const restSiblings = parentInstance.children.filter((sibling) => sibling !== child);\n        const index = restSiblings.indexOf(beforeChild);\n        parentInstance.children = [...restSiblings.slice(0, index), child, ...restSiblings.slice(index)];\n        added = true;\n      }\n      if (!added) (_parentInstance$__r3f2 = parentInstance.__r3f) == null ? void 0 : _parentInstance$__r3f2.objects.push(child);\n      if (!child.__r3f) prepare(child, {});\n      child.__r3f.parent = parentInstance;\n      updateInstance(child);\n      invalidateInstance(child);\n    }\n  }\n  function removeRecursive(array, parent, dispose2 = false) {\n    if (array) [...array].forEach((child) => removeChild(parent, child, dispose2));\n  }\n  function removeChild(parentInstance, child, dispose2) {\n    if (child) {\n      var _parentInstance$__r3f3, _child$__r3f3, _child$__r3f5;\n      if (child.__r3f) child.__r3f.parent = null;\n      if ((_parentInstance$__r3f3 = parentInstance.__r3f) != null && _parentInstance$__r3f3.objects) parentInstance.__r3f.objects = parentInstance.__r3f.objects.filter((x2) => x2 !== child);\n      if ((_child$__r3f3 = child.__r3f) != null && _child$__r3f3.attach) {\n        detach(parentInstance, child, child.__r3f.attach);\n      } else if (child.isObject3D && parentInstance.isObject3D) {\n        var _child$__r3f4;\n        parentInstance.remove(child);\n        if ((_child$__r3f4 = child.__r3f) != null && _child$__r3f4.root) {\n          removeInteractivity(findInitialRoot(child), child);\n        }\n      }\n      const isPrimitive = (_child$__r3f5 = child.__r3f) == null ? void 0 : _child$__r3f5.primitive;\n      const shouldDispose = !isPrimitive && (dispose2 === void 0 ? child.dispose !== null : dispose2);\n      if (!isPrimitive) {\n        var _child$__r3f6;\n        removeRecursive((_child$__r3f6 = child.__r3f) == null ? void 0 : _child$__r3f6.objects, child, shouldDispose);\n        removeRecursive(child.children, child, shouldDispose);\n      }\n      delete child.__r3f;\n      if (shouldDispose && child.dispose && child.type !== \"Scene\") {\n        const callback = () => {\n          try {\n            child.dispose();\n          } catch (e2) {\n          }\n        };\n        if (typeof IS_REACT_ACT_ENVIRONMENT === \"undefined\") {\n          schedulerExports.unstable_scheduleCallback(schedulerExports.unstable_IdlePriority, callback);\n        } else {\n          callback();\n        }\n      }\n      invalidateInstance(parentInstance);\n    }\n  }\n  function switchInstance(instance, type, newProps, fiber) {\n    var _instance$__r3f;\n    const parent = (_instance$__r3f = instance.__r3f) == null ? void 0 : _instance$__r3f.parent;\n    if (!parent) return;\n    const newInstance = createInstance(type, newProps, instance.__r3f.root);\n    if (instance.children) {\n      for (const child of instance.children) {\n        if (child.__r3f) appendChild(newInstance, child);\n      }\n      instance.children = instance.children.filter((child) => !child.__r3f);\n    }\n    instance.__r3f.objects.forEach((child) => appendChild(newInstance, child));\n    instance.__r3f.objects = [];\n    if (!instance.__r3f.autoRemovedBeforeAppend) {\n      removeChild(parent, instance);\n    }\n    if (newInstance.parent) {\n      newInstance.__r3f.autoRemovedBeforeAppend = true;\n    }\n    appendChild(parent, newInstance);\n    if (newInstance.raycast && newInstance.__r3f.eventCount) {\n      const rootState = findInitialRoot(newInstance).getState();\n      rootState.internal.interaction.push(newInstance);\n    }\n    [fiber, fiber.alternate].forEach((fiber2) => {\n      if (fiber2 !== null) {\n        fiber2.stateNode = newInstance;\n        if (fiber2.ref) {\n          if (typeof fiber2.ref === \"function\") fiber2.ref(newInstance);\n          else fiber2.ref.current = newInstance;\n        }\n      }\n    });\n  }\n  const handleTextInstance = () => {\n  };\n  const reconciler2 = Reconciler({\n    createInstance,\n    removeChild,\n    appendChild,\n    appendInitialChild: appendChild,\n    insertBefore,\n    supportsMutation: true,\n    isPrimaryRenderer: false,\n    supportsPersistence: false,\n    supportsHydration: false,\n    noTimeout: -1,\n    appendChildToContainer: (container, child) => {\n      if (!child) return;\n      const scene = container.getState().scene;\n      if (!scene.__r3f) return;\n      scene.__r3f.root = container;\n      appendChild(scene, child);\n    },\n    removeChildFromContainer: (container, child) => {\n      if (!child) return;\n      removeChild(container.getState().scene, child);\n    },\n    insertInContainerBefore: (container, child, beforeChild) => {\n      if (!child || !beforeChild) return;\n      const scene = container.getState().scene;\n      if (!scene.__r3f) return;\n      insertBefore(scene, child, beforeChild);\n    },\n    getRootHostContext: () => null,\n    getChildHostContext: (parentHostContext) => parentHostContext,\n    finalizeInitialChildren(instance) {\n      var _instance$__r3f2;\n      const localState = (_instance$__r3f2 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f2 : {};\n      return Boolean(localState.handlers);\n    },\n    prepareUpdate(instance, _type, oldProps, newProps) {\n      var _instance$__r3f3;\n      const localState = (_instance$__r3f3 = instance == null ? void 0 : instance.__r3f) != null ? _instance$__r3f3 : {};\n      if (localState.primitive && newProps.object && newProps.object !== instance) {\n        return [true];\n      } else {\n        const {\n          args: argsNew = [],\n          children: cN,\n          ...restNew\n        } = newProps;\n        const {\n          args: argsOld = [],\n          children: cO,\n          ...restOld\n        } = oldProps;\n        if (!Array.isArray(argsNew)) throw new Error(\"R3F: the args prop must be an array!\");\n        if (argsNew.some((value, index) => value !== argsOld[index])) return [true];\n        const diff = diffProps(instance, restNew, restOld, true);\n        if (diff.changes.length) return [false, diff];\n        return null;\n      }\n    },\n    commitUpdate(instance, [reconstruct, diff], type, _oldProps, newProps, fiber) {\n      if (reconstruct) switchInstance(instance, type, newProps, fiber);\n      else applyProps$1(instance, diff);\n    },\n    commitMount(instance, _type, _props, _int) {\n      var _instance$__r3f4;\n      const localState = (_instance$__r3f4 = instance.__r3f) != null ? _instance$__r3f4 : {};\n      if (instance.raycast && localState.handlers && localState.eventCount) {\n        findInitialRoot(instance).getState().internal.interaction.push(instance);\n      }\n    },\n    getPublicInstance: (instance) => instance,\n    prepareForCommit: () => null,\n    preparePortalMount: (container) => prepare(container.getState().scene),\n    resetAfterCommit: () => {\n    },\n    shouldSetTextContent: () => false,\n    clearContainer: () => false,\n    hideInstance(instance) {\n      var _instance$__r3f5;\n      const {\n        attach: type,\n        parent\n      } = (_instance$__r3f5 = instance.__r3f) != null ? _instance$__r3f5 : {};\n      if (type && parent) detach(parent, instance, type);\n      if (instance.isObject3D) instance.visible = false;\n      invalidateInstance(instance);\n    },\n    unhideInstance(instance, props) {\n      var _instance$__r3f6;\n      const {\n        attach: type,\n        parent\n      } = (_instance$__r3f6 = instance.__r3f) != null ? _instance$__r3f6 : {};\n      if (type && parent) attach(parent, instance, type);\n      if (instance.isObject3D && props.visible == null || props.visible) instance.visible = true;\n      invalidateInstance(instance);\n    },\n    createTextInstance: handleTextInstance,\n    hideTextInstance: handleTextInstance,\n    unhideTextInstance: handleTextInstance,\n    // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874\n    // @ts-expect-error\n    getCurrentEventPriority: () => _getEventPriority ? _getEventPriority() : constantsExports.DefaultEventPriority,\n    beforeActiveInstanceBlur: () => {\n    },\n    afterActiveInstanceBlur: () => {\n    },\n    detachDeletedInstance: () => {\n    },\n    now: typeof performance !== \"undefined\" && is.fun(performance.now) ? performance.now : is.fun(Date.now) ? Date.now : () => 0,\n    // https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r920883503\n    scheduleTimeout: is.fun(setTimeout) ? setTimeout : void 0,\n    cancelTimeout: is.fun(clearTimeout) ? clearTimeout : void 0\n  });\n  return {\n    reconciler: reconciler2,\n    applyProps: applyProps$1\n  };\n}\nvar _window$document, _window$navigator;\nconst hasColorSpace$1 = (object) => \"colorSpace\" in object || \"outputColorSpace\" in object;\nconst getColorManagement = () => {\n  var _ColorManagement;\n  return (_ColorManagement = catalogue.ColorManagement) != null ? _ColorManagement : null;\n};\nconst isOrthographicCamera = (def) => def && def.isOrthographicCamera;\nconst isRef$1 = (obj) => obj && obj.hasOwnProperty(\"current\");\nconst useIsomorphicLayoutEffect = typeof window !== \"undefined\" && ((_window$document = window.document) != null && _window$document.createElement || ((_window$navigator = window.navigator) == null ? void 0 : _window$navigator.product) === \"ReactNative\") ? React.useLayoutEffect : React.useEffect;\nfunction useMutableCallback(fn) {\n  const ref = React.useRef(fn);\n  useIsomorphicLayoutEffect(() => void (ref.current = fn), [fn]);\n  return ref;\n}\nfunction Block({\n  set\n}) {\n  useIsomorphicLayoutEffect(() => {\n    set(new Promise(() => null));\n    return () => set(false);\n  }, [set]);\n  return null;\n}\nclass ErrorBoundary extends React.Component {\n  constructor(...args) {\n    super(...args);\n    this.state = {\n      error: false\n    };\n  }\n  componentDidCatch(err) {\n    this.props.set(err);\n  }\n  render() {\n    return this.state.error ? null : this.props.children;\n  }\n}\nErrorBoundary.getDerivedStateFromError = () => ({\n  error: true\n});\nconst DEFAULT = \"__default\";\nconst DEFAULTS = /* @__PURE__ */ new Map();\nconst isDiffSet = (def) => def && !!def.memoized && !!def.changes;\nfunction calculateDpr(dpr) {\n  var _window$devicePixelRa;\n  const target = typeof window !== \"undefined\" ? (_window$devicePixelRa = window.devicePixelRatio) != null ? _window$devicePixelRa : 2 : 1;\n  return Array.isArray(dpr) ? Math.min(Math.max(dpr[0], target), dpr[1]) : dpr;\n}\nconst getRootState = (obj) => {\n  var _r3f;\n  return (_r3f = obj.__r3f) == null ? void 0 : _r3f.root.getState();\n};\nfunction findInitialRoot(child) {\n  let root = child.__r3f.root;\n  while (root.getState().previousRoot) root = root.getState().previousRoot;\n  return root;\n}\nconst is = {\n  obj: (a2) => a2 === Object(a2) && !is.arr(a2) && typeof a2 !== \"function\",\n  fun: (a2) => typeof a2 === \"function\",\n  str: (a2) => typeof a2 === \"string\",\n  num: (a2) => typeof a2 === \"number\",\n  boo: (a2) => typeof a2 === \"boolean\",\n  und: (a2) => a2 === void 0,\n  arr: (a2) => Array.isArray(a2),\n  equ(a2, b2, {\n    arrays = \"shallow\",\n    objects = \"reference\",\n    strict = true\n  } = {}) {\n    if (typeof a2 !== typeof b2 || !!a2 !== !!b2) return false;\n    if (is.str(a2) || is.num(a2) || is.boo(a2)) return a2 === b2;\n    const isObj = is.obj(a2);\n    if (isObj && objects === \"reference\") return a2 === b2;\n    const isArr = is.arr(a2);\n    if (isArr && arrays === \"reference\") return a2 === b2;\n    if ((isArr || isObj) && a2 === b2) return true;\n    let i2;\n    for (i2 in a2) if (!(i2 in b2)) return false;\n    if (isObj && arrays === \"shallow\" && objects === \"shallow\") {\n      for (i2 in strict ? b2 : a2) if (!is.equ(a2[i2], b2[i2], {\n        strict,\n        objects: \"reference\"\n      })) return false;\n    } else {\n      for (i2 in strict ? b2 : a2) if (a2[i2] !== b2[i2]) return false;\n    }\n    if (is.und(i2)) {\n      if (isArr && a2.length === 0 && b2.length === 0) return true;\n      if (isObj && Object.keys(a2).length === 0 && Object.keys(b2).length === 0) return true;\n      if (a2 !== b2) return false;\n    }\n    return true;\n  }\n};\nfunction buildGraph(object) {\n  const data = {\n    nodes: {},\n    materials: {}\n  };\n  if (object) {\n    object.traverse((obj) => {\n      if (obj.name) data.nodes[obj.name] = obj;\n      if (obj.material && !data.materials[obj.material.name]) data.materials[obj.material.name] = obj.material;\n    });\n  }\n  return data;\n}\nfunction dispose(obj) {\n  if (obj.dispose && obj.type !== \"Scene\") obj.dispose();\n  for (const p2 in obj) {\n    p2.dispose == null ? void 0 : p2.dispose();\n    delete obj[p2];\n  }\n}\nfunction prepare(object, state) {\n  const instance = object;\n  instance.__r3f = {\n    type: \"\",\n    root: null,\n    previousAttach: null,\n    memoizedProps: {},\n    eventCount: 0,\n    handlers: {},\n    objects: [],\n    parent: null,\n    ...state\n  };\n  return object;\n}\nfunction resolve(instance, key) {\n  let target = instance;\n  if (key.includes(\"-\")) {\n    const entries = key.split(\"-\");\n    const last = entries.pop();\n    target = entries.reduce((acc, key2) => acc[key2], instance);\n    return {\n      target,\n      key: last\n    };\n  } else return {\n    target,\n    key\n  };\n}\nconst INDEX_REGEX = /-\\d+$/;\nfunction attach(parent, child, type) {\n  if (is.str(type)) {\n    if (INDEX_REGEX.test(type)) {\n      const root = type.replace(INDEX_REGEX, \"\");\n      const {\n        target: target2,\n        key: key2\n      } = resolve(parent, root);\n      if (!Array.isArray(target2[key2])) target2[key2] = [];\n    }\n    const {\n      target,\n      key\n    } = resolve(parent, type);\n    child.__r3f.previousAttach = target[key];\n    target[key] = child;\n  } else child.__r3f.previousAttach = type(parent, child);\n}\nfunction detach(parent, child, type) {\n  var _child$__r3f, _child$__r3f2;\n  if (is.str(type)) {\n    const {\n      target,\n      key\n    } = resolve(parent, type);\n    const previous = child.__r3f.previousAttach;\n    if (previous === void 0) delete target[key];\n    else target[key] = previous;\n  } else (_child$__r3f = child.__r3f) == null ? void 0 : _child$__r3f.previousAttach == null ? void 0 : _child$__r3f.previousAttach(parent, child);\n  (_child$__r3f2 = child.__r3f) == null ? true : delete _child$__r3f2.previousAttach;\n}\nfunction diffProps(instance, {\n  children: cN,\n  key: kN,\n  ref: rN,\n  ...props\n}, {\n  children: cP,\n  key: kP,\n  ref: rP,\n  ...previous\n} = {}, remove = false) {\n  const localState = instance.__r3f;\n  const entries = Object.entries(props);\n  const changes = [];\n  if (remove) {\n    const previousKeys = Object.keys(previous);\n    for (let i2 = 0; i2 < previousKeys.length; i2++) {\n      if (!props.hasOwnProperty(previousKeys[i2])) entries.unshift([previousKeys[i2], DEFAULT + \"remove\"]);\n    }\n  }\n  entries.forEach(([key, value]) => {\n    var _instance$__r3f;\n    if ((_instance$__r3f = instance.__r3f) != null && _instance$__r3f.primitive && key === \"object\") return;\n    if (is.equ(value, previous[key])) return;\n    if (/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/.test(key)) return changes.push([key, value, true, []]);\n    let entries2 = [];\n    if (key.includes(\"-\")) entries2 = key.split(\"-\");\n    changes.push([key, value, false, entries2]);\n    for (const prop in props) {\n      const value2 = props[prop];\n      if (prop.startsWith(`${key}-`)) changes.push([prop, value2, false, prop.split(\"-\")]);\n    }\n  });\n  const memoized = {\n    ...props\n  };\n  if (localState != null && localState.memoizedProps && localState != null && localState.memoizedProps.args) memoized.args = localState.memoizedProps.args;\n  if (localState != null && localState.memoizedProps && localState != null && localState.memoizedProps.attach) memoized.attach = localState.memoizedProps.attach;\n  return {\n    memoized,\n    changes\n  };\n}\nconst __DEV__ = typeof process !== \"undefined\" && process.env.NODE_ENV !== \"production\";\nfunction applyProps$1(instance, data) {\n  var _instance$__r3f2;\n  const localState = instance.__r3f;\n  const root = localState == null ? void 0 : localState.root;\n  const rootState = root == null ? void 0 : root.getState == null ? void 0 : root.getState();\n  const {\n    memoized,\n    changes\n  } = isDiffSet(data) ? data : diffProps(instance, data);\n  const prevHandlers = localState == null ? void 0 : localState.eventCount;\n  if (instance.__r3f) instance.__r3f.memoizedProps = memoized;\n  for (let i2 = 0; i2 < changes.length; i2++) {\n    let [key, value, isEvent, keys] = changes[i2];\n    if (hasColorSpace$1(instance)) {\n      const sRGBEncoding2 = 3001;\n      const SRGBColorSpace2 = \"srgb\";\n      const LinearSRGBColorSpace2 = \"srgb-linear\";\n      if (key === \"encoding\") {\n        key = \"colorSpace\";\n        value = value === sRGBEncoding2 ? SRGBColorSpace2 : LinearSRGBColorSpace2;\n      } else if (key === \"outputEncoding\") {\n        key = \"outputColorSpace\";\n        value = value === sRGBEncoding2 ? SRGBColorSpace2 : LinearSRGBColorSpace2;\n      }\n    }\n    let currentInstance = instance;\n    let targetProp = currentInstance[key];\n    if (keys.length) {\n      targetProp = keys.reduce((acc, key2) => acc[key2], instance);\n      if (!(targetProp && targetProp.set)) {\n        const [name, ...reverseEntries] = keys.reverse();\n        currentInstance = reverseEntries.reverse().reduce((acc, key2) => acc[key2], instance);\n        key = name;\n      }\n    }\n    if (value === DEFAULT + \"remove\") {\n      if (currentInstance.constructor) {\n        let ctor = DEFAULTS.get(currentInstance.constructor);\n        if (!ctor) {\n          ctor = new currentInstance.constructor();\n          DEFAULTS.set(currentInstance.constructor, ctor);\n        }\n        value = ctor[key];\n      } else {\n        value = 0;\n      }\n    }\n    if (isEvent && localState) {\n      if (value) localState.handlers[key] = value;\n      else delete localState.handlers[key];\n      localState.eventCount = Object.keys(localState.handlers).length;\n    } else if (targetProp && targetProp.set && (targetProp.copy || targetProp instanceof Layers)) {\n      if (Array.isArray(value)) {\n        if (targetProp.fromArray) targetProp.fromArray(value);\n        else targetProp.set(...value);\n      } else if (targetProp.copy && value && value.constructor && // Some environments may break strict identity checks by duplicating versions of three.js.\n      // Loosen to unminified names, ignoring descendents.\n      // https://github.com/pmndrs/react-three-fiber/issues/2856\n      // TODO: fix upstream and remove in v9\n      (__DEV__ ? targetProp.constructor.name === value.constructor.name : targetProp.constructor === value.constructor)) {\n        targetProp.copy(value);\n      } else if (value !== void 0) {\n        var _targetProp;\n        const isColor = (_targetProp = targetProp) == null ? void 0 : _targetProp.isColor;\n        if (!isColor && targetProp.setScalar) targetProp.setScalar(value);\n        else if (targetProp instanceof Layers && value instanceof Layers) targetProp.mask = value.mask;\n        else targetProp.set(value);\n        if (!getColorManagement() && rootState && !rootState.linear && isColor) targetProp.convertSRGBToLinear();\n      }\n    } else {\n      var _currentInstance$key;\n      currentInstance[key] = value;\n      if ((_currentInstance$key = currentInstance[key]) != null && _currentInstance$key.isTexture && // sRGB textures must be RGBA8 since r137 https://github.com/mrdoob/three.js/pull/23129\n      currentInstance[key].format === RGBAFormat && currentInstance[key].type === UnsignedByteType && rootState) {\n        const texture = currentInstance[key];\n        if (hasColorSpace$1(texture) && hasColorSpace$1(rootState.gl)) texture.colorSpace = rootState.gl.outputColorSpace;\n        else texture.encoding = rootState.gl.outputEncoding;\n      }\n    }\n    invalidateInstance(instance);\n  }\n  if (localState && localState.parent && instance.raycast && prevHandlers !== localState.eventCount) {\n    const internal = findInitialRoot(instance).getState().internal;\n    const index = internal.interaction.indexOf(instance);\n    if (index > -1) internal.interaction.splice(index, 1);\n    if (localState.eventCount) internal.interaction.push(instance);\n  }\n  const isCircular = changes.length === 1 && changes[0][0] === \"onUpdate\";\n  if (!isCircular && changes.length && (_instance$__r3f2 = instance.__r3f) != null && _instance$__r3f2.parent) updateInstance(instance);\n  return instance;\n}\nfunction invalidateInstance(instance) {\n  var _instance$__r3f3, _instance$__r3f3$root;\n  const state = (_instance$__r3f3 = instance.__r3f) == null ? void 0 : (_instance$__r3f3$root = _instance$__r3f3.root) == null ? void 0 : _instance$__r3f3$root.getState == null ? void 0 : _instance$__r3f3$root.getState();\n  if (state && state.internal.frames === 0) state.invalidate();\n}\nfunction updateInstance(instance) {\n  instance.onUpdate == null ? void 0 : instance.onUpdate(instance);\n}\nfunction updateCamera(camera, size) {\n  if (!camera.manual) {\n    if (isOrthographicCamera(camera)) {\n      camera.left = size.width / -2;\n      camera.right = size.width / 2;\n      camera.top = size.height / 2;\n      camera.bottom = size.height / -2;\n    } else {\n      camera.aspect = size.width / size.height;\n    }\n    camera.updateProjectionMatrix();\n    camera.updateMatrixWorld();\n  }\n}\nfunction makeId(event) {\n  return (event.eventObject || event.object).uuid + \"/\" + event.index + event.instanceId;\n}\nfunction getEventPriority() {\n  var _globalScope$event;\n  const globalScope = typeof self !== \"undefined\" && self || typeof window !== \"undefined\" && window;\n  if (!globalScope) return constantsExports.DefaultEventPriority;\n  const name = (_globalScope$event = globalScope.event) == null ? void 0 : _globalScope$event.type;\n  switch (name) {\n    case \"click\":\n    case \"contextmenu\":\n    case \"dblclick\":\n    case \"pointercancel\":\n    case \"pointerdown\":\n    case \"pointerup\":\n      return constantsExports.DiscreteEventPriority;\n    case \"pointermove\":\n    case \"pointerout\":\n    case \"pointerover\":\n    case \"pointerenter\":\n    case \"pointerleave\":\n    case \"wheel\":\n      return constantsExports.ContinuousEventPriority;\n    default:\n      return constantsExports.DefaultEventPriority;\n  }\n}\nfunction releaseInternalPointerCapture(capturedMap, obj, captures, pointerId) {\n  const captureData = captures.get(obj);\n  if (captureData) {\n    captures.delete(obj);\n    if (captures.size === 0) {\n      capturedMap.delete(pointerId);\n      captureData.target.releasePointerCapture(pointerId);\n    }\n  }\n}\nfunction removeInteractivity(store, object) {\n  const {\n    internal\n  } = store.getState();\n  internal.interaction = internal.interaction.filter((o2) => o2 !== object);\n  internal.initialHits = internal.initialHits.filter((o2) => o2 !== object);\n  internal.hovered.forEach((value, key) => {\n    if (value.eventObject === object || value.object === object) {\n      internal.hovered.delete(key);\n    }\n  });\n  internal.capturedMap.forEach((captures, pointerId) => {\n    releaseInternalPointerCapture(internal.capturedMap, object, captures, pointerId);\n  });\n}\nfunction createEvents(store) {\n  function calculateDistance(event) {\n    const {\n      internal\n    } = store.getState();\n    const dx = event.offsetX - internal.initialClick[0];\n    const dy = event.offsetY - internal.initialClick[1];\n    return Math.round(Math.sqrt(dx * dx + dy * dy));\n  }\n  function filterPointerEvents(objects) {\n    return objects.filter((obj) => [\"Move\", \"Over\", \"Enter\", \"Out\", \"Leave\"].some((name) => {\n      var _r3f;\n      return (_r3f = obj.__r3f) == null ? void 0 : _r3f.handlers[\"onPointer\" + name];\n    }));\n  }\n  function intersect(event, filter) {\n    const state = store.getState();\n    const duplicates = /* @__PURE__ */ new Set();\n    const intersections = [];\n    const eventsObjects = filter ? filter(state.internal.interaction) : state.internal.interaction;\n    for (let i2 = 0; i2 < eventsObjects.length; i2++) {\n      const state2 = getRootState(eventsObjects[i2]);\n      if (state2) {\n        state2.raycaster.camera = void 0;\n      }\n    }\n    if (!state.previousRoot) {\n      state.events.compute == null ? void 0 : state.events.compute(event, state);\n    }\n    function handleRaycast(obj) {\n      const state2 = getRootState(obj);\n      if (!state2 || !state2.events.enabled || state2.raycaster.camera === null) return [];\n      if (state2.raycaster.camera === void 0) {\n        var _state$previousRoot;\n        state2.events.compute == null ? void 0 : state2.events.compute(event, state2, (_state$previousRoot = state2.previousRoot) == null ? void 0 : _state$previousRoot.getState());\n        if (state2.raycaster.camera === void 0) state2.raycaster.camera = null;\n      }\n      return state2.raycaster.camera ? state2.raycaster.intersectObject(obj, true) : [];\n    }\n    let hits = eventsObjects.flatMap(handleRaycast).sort((a2, b2) => {\n      const aState = getRootState(a2.object);\n      const bState = getRootState(b2.object);\n      if (!aState || !bState) return a2.distance - b2.distance;\n      return bState.events.priority - aState.events.priority || a2.distance - b2.distance;\n    }).filter((item) => {\n      const id = makeId(item);\n      if (duplicates.has(id)) return false;\n      duplicates.add(id);\n      return true;\n    });\n    if (state.events.filter) hits = state.events.filter(hits, state);\n    for (const hit of hits) {\n      let eventObject = hit.object;\n      while (eventObject) {\n        var _r3f2;\n        if ((_r3f2 = eventObject.__r3f) != null && _r3f2.eventCount) intersections.push({\n          ...hit,\n          eventObject\n        });\n        eventObject = eventObject.parent;\n      }\n    }\n    if (\"pointerId\" in event && state.internal.capturedMap.has(event.pointerId)) {\n      for (let captureData of state.internal.capturedMap.get(event.pointerId).values()) {\n        if (!duplicates.has(makeId(captureData.intersection))) intersections.push(captureData.intersection);\n      }\n    }\n    return intersections;\n  }\n  function handleIntersects(intersections, event, delta, callback) {\n    const rootState = store.getState();\n    if (intersections.length) {\n      const localState = {\n        stopped: false\n      };\n      for (const hit of intersections) {\n        const state = getRootState(hit.object) || rootState;\n        const {\n          raycaster,\n          pointer,\n          camera,\n          internal\n        } = state;\n        const unprojectedPoint = new Vector3(pointer.x, pointer.y, 0).unproject(camera);\n        const hasPointerCapture = (id) => {\n          var _internal$capturedMap, _internal$capturedMap2;\n          return (_internal$capturedMap = (_internal$capturedMap2 = internal.capturedMap.get(id)) == null ? void 0 : _internal$capturedMap2.has(hit.eventObject)) != null ? _internal$capturedMap : false;\n        };\n        const setPointerCapture = (id) => {\n          const captureData = {\n            intersection: hit,\n            target: event.target\n          };\n          if (internal.capturedMap.has(id)) {\n            internal.capturedMap.get(id).set(hit.eventObject, captureData);\n          } else {\n            internal.capturedMap.set(id, /* @__PURE__ */ new Map([[hit.eventObject, captureData]]));\n          }\n          event.target.setPointerCapture(id);\n        };\n        const releasePointerCapture = (id) => {\n          const captures = internal.capturedMap.get(id);\n          if (captures) {\n            releaseInternalPointerCapture(internal.capturedMap, hit.eventObject, captures, id);\n          }\n        };\n        let extractEventProps = {};\n        for (let prop in event) {\n          let property = event[prop];\n          if (typeof property !== \"function\") extractEventProps[prop] = property;\n        }\n        let raycastEvent = {\n          ...hit,\n          ...extractEventProps,\n          pointer,\n          intersections,\n          stopped: localState.stopped,\n          delta,\n          unprojectedPoint,\n          ray: raycaster.ray,\n          camera,\n          // Hijack stopPropagation, which just sets a flag\n          stopPropagation() {\n            const capturesForPointer = \"pointerId\" in event && internal.capturedMap.get(event.pointerId);\n            if (\n              // ...if this pointer hasn't been captured\n              !capturesForPointer || // ... or if the hit object is capturing the pointer\n              capturesForPointer.has(hit.eventObject)\n            ) {\n              raycastEvent.stopped = localState.stopped = true;\n              if (internal.hovered.size && Array.from(internal.hovered.values()).find((i2) => i2.eventObject === hit.eventObject)) {\n                const higher = intersections.slice(0, intersections.indexOf(hit));\n                cancelPointer([...higher, hit]);\n              }\n            }\n          },\n          // there should be a distinction between target and currentTarget\n          target: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture\n          },\n          currentTarget: {\n            hasPointerCapture,\n            setPointerCapture,\n            releasePointerCapture\n          },\n          nativeEvent: event\n        };\n        callback(raycastEvent);\n        if (localState.stopped === true) break;\n      }\n    }\n    return intersections;\n  }\n  function cancelPointer(intersections) {\n    const {\n      internal\n    } = store.getState();\n    for (const hoveredObj of internal.hovered.values()) {\n      if (!intersections.length || !intersections.find((hit) => hit.object === hoveredObj.object && hit.index === hoveredObj.index && hit.instanceId === hoveredObj.instanceId)) {\n        const eventObject = hoveredObj.eventObject;\n        const instance = eventObject.__r3f;\n        const handlers = instance == null ? void 0 : instance.handlers;\n        internal.hovered.delete(makeId(hoveredObj));\n        if (instance != null && instance.eventCount) {\n          const data = {\n            ...hoveredObj,\n            intersections\n          };\n          handlers.onPointerOut == null ? void 0 : handlers.onPointerOut(data);\n          handlers.onPointerLeave == null ? void 0 : handlers.onPointerLeave(data);\n        }\n      }\n    }\n  }\n  function pointerMissed(event, objects) {\n    for (let i2 = 0; i2 < objects.length; i2++) {\n      const instance = objects[i2].__r3f;\n      instance == null ? void 0 : instance.handlers.onPointerMissed == null ? void 0 : instance.handlers.onPointerMissed(event);\n    }\n  }\n  function handlePointer(name) {\n    switch (name) {\n      case \"onPointerLeave\":\n      case \"onPointerCancel\":\n        return () => cancelPointer([]);\n      case \"onLostPointerCapture\":\n        return (event) => {\n          const {\n            internal\n          } = store.getState();\n          if (\"pointerId\" in event && internal.capturedMap.has(event.pointerId)) {\n            requestAnimationFrame(() => {\n              if (internal.capturedMap.has(event.pointerId)) {\n                internal.capturedMap.delete(event.pointerId);\n                cancelPointer([]);\n              }\n            });\n          }\n        };\n    }\n    return function handleEvent(event) {\n      const {\n        onPointerMissed,\n        internal\n      } = store.getState();\n      internal.lastEvent.current = event;\n      const isPointerMove = name === \"onPointerMove\";\n      const isClickEvent = name === \"onClick\" || name === \"onContextMenu\" || name === \"onDoubleClick\";\n      const filter = isPointerMove ? filterPointerEvents : void 0;\n      const hits = intersect(event, filter);\n      const delta = isClickEvent ? calculateDistance(event) : 0;\n      if (name === \"onPointerDown\") {\n        internal.initialClick = [event.offsetX, event.offsetY];\n        internal.initialHits = hits.map((hit) => hit.eventObject);\n      }\n      if (isClickEvent && !hits.length) {\n        if (delta <= 2) {\n          pointerMissed(event, internal.interaction);\n          if (onPointerMissed) onPointerMissed(event);\n        }\n      }\n      if (isPointerMove) cancelPointer(hits);\n      function onIntersect(data) {\n        const eventObject = data.eventObject;\n        const instance = eventObject.__r3f;\n        const handlers = instance == null ? void 0 : instance.handlers;\n        if (!(instance != null && instance.eventCount)) return;\n        if (isPointerMove) {\n          if (handlers.onPointerOver || handlers.onPointerEnter || handlers.onPointerOut || handlers.onPointerLeave) {\n            const id = makeId(data);\n            const hoveredItem = internal.hovered.get(id);\n            if (!hoveredItem) {\n              internal.hovered.set(id, data);\n              handlers.onPointerOver == null ? void 0 : handlers.onPointerOver(data);\n              handlers.onPointerEnter == null ? void 0 : handlers.onPointerEnter(data);\n            } else if (hoveredItem.stopped) {\n              data.stopPropagation();\n            }\n          }\n          handlers.onPointerMove == null ? void 0 : handlers.onPointerMove(data);\n        } else {\n          const handler = handlers[name];\n          if (handler) {\n            if (!isClickEvent || internal.initialHits.includes(eventObject)) {\n              pointerMissed(event, internal.interaction.filter((object) => !internal.initialHits.includes(object)));\n              handler(data);\n            }\n          } else {\n            if (isClickEvent && internal.initialHits.includes(eventObject)) {\n              pointerMissed(event, internal.interaction.filter((object) => !internal.initialHits.includes(object)));\n            }\n          }\n        }\n      }\n      handleIntersects(hits, event, delta, onIntersect);\n    };\n  }\n  return {\n    handlePointer\n  };\n}\nconst privateKeys = [\"set\", \"get\", \"setSize\", \"setFrameloop\", \"setDpr\", \"events\", \"invalidate\", \"advance\", \"size\", \"viewport\"];\nconst isRenderer = (def) => !!(def != null && def.render);\nconst context = /* @__PURE__ */ React.createContext(null);\nconst createStore = (invalidate2, advance2) => {\n  const rootState = create((set, get) => {\n    const position = new Vector3();\n    const defaultTarget = new Vector3();\n    const tempTarget = new Vector3();\n    function getCurrentViewport(camera = get().camera, target = defaultTarget, size = get().size) {\n      const {\n        width,\n        height,\n        top,\n        left\n      } = size;\n      const aspect2 = width / height;\n      if (target.isVector3) tempTarget.copy(target);\n      else tempTarget.set(...target);\n      const distance = camera.getWorldPosition(position).distanceTo(tempTarget);\n      if (isOrthographicCamera(camera)) {\n        return {\n          width: width / camera.zoom,\n          height: height / camera.zoom,\n          top,\n          left,\n          factor: 1,\n          distance,\n          aspect: aspect2\n        };\n      } else {\n        const fov2 = camera.fov * Math.PI / 180;\n        const h2 = 2 * Math.tan(fov2 / 2) * distance;\n        const w2 = h2 * (width / height);\n        return {\n          width: w2,\n          height: h2,\n          top,\n          left,\n          factor: width / w2,\n          distance,\n          aspect: aspect2\n        };\n      }\n    }\n    let performanceTimeout = void 0;\n    const setPerformanceCurrent = (current) => set((state2) => ({\n      performance: {\n        ...state2.performance,\n        current\n      }\n    }));\n    const pointer = new Vector2();\n    const rootState2 = {\n      set,\n      get,\n      // Mock objects that have to be configured\n      gl: null,\n      camera: null,\n      raycaster: null,\n      events: {\n        priority: 1,\n        enabled: true,\n        connected: false\n      },\n      xr: null,\n      scene: null,\n      invalidate: (frames = 1) => invalidate2(get(), frames),\n      advance: (timestamp, runGlobalEffects) => advance2(timestamp, runGlobalEffects, get()),\n      legacy: false,\n      linear: false,\n      flat: false,\n      controls: null,\n      clock: new Clock(),\n      pointer,\n      mouse: pointer,\n      frameloop: \"always\",\n      onPointerMissed: void 0,\n      performance: {\n        current: 1,\n        min: 0.5,\n        max: 1,\n        debounce: 200,\n        regress: () => {\n          const state2 = get();\n          if (performanceTimeout) clearTimeout(performanceTimeout);\n          if (state2.performance.current !== state2.performance.min) setPerformanceCurrent(state2.performance.min);\n          performanceTimeout = setTimeout(() => setPerformanceCurrent(get().performance.max), state2.performance.debounce);\n        }\n      },\n      size: {\n        width: 0,\n        height: 0,\n        top: 0,\n        left: 0,\n        updateStyle: false\n      },\n      viewport: {\n        initialDpr: 0,\n        dpr: 0,\n        width: 0,\n        height: 0,\n        top: 0,\n        left: 0,\n        aspect: 0,\n        distance: 0,\n        factor: 0,\n        getCurrentViewport\n      },\n      setEvents: (events) => set((state2) => ({\n        ...state2,\n        events: {\n          ...state2.events,\n          ...events\n        }\n      })),\n      setSize: (width, height, updateStyle, top, left) => {\n        const camera = get().camera;\n        const size = {\n          width,\n          height,\n          top: top || 0,\n          left: left || 0,\n          updateStyle\n        };\n        set((state2) => ({\n          size,\n          viewport: {\n            ...state2.viewport,\n            ...getCurrentViewport(camera, defaultTarget, size)\n          }\n        }));\n      },\n      setDpr: (dpr) => set((state2) => {\n        const resolved = calculateDpr(dpr);\n        return {\n          viewport: {\n            ...state2.viewport,\n            dpr: resolved,\n            initialDpr: state2.viewport.initialDpr || resolved\n          }\n        };\n      }),\n      setFrameloop: (frameloop = \"always\") => {\n        const clock = get().clock;\n        clock.stop();\n        clock.elapsedTime = 0;\n        if (frameloop !== \"never\") {\n          clock.start();\n          clock.elapsedTime = 0;\n        }\n        set(() => ({\n          frameloop\n        }));\n      },\n      previousRoot: void 0,\n      internal: {\n        active: false,\n        priority: 0,\n        frames: 0,\n        lastEvent: /* @__PURE__ */ React.createRef(),\n        interaction: [],\n        hovered: /* @__PURE__ */ new Map(),\n        subscribers: [],\n        initialClick: [0, 0],\n        initialHits: [],\n        capturedMap: /* @__PURE__ */ new Map(),\n        subscribe: (ref, priority, store) => {\n          const internal = get().internal;\n          internal.priority = internal.priority + (priority > 0 ? 1 : 0);\n          internal.subscribers.push({\n            ref,\n            priority,\n            store\n          });\n          internal.subscribers = internal.subscribers.sort((a2, b2) => a2.priority - b2.priority);\n          return () => {\n            const internal2 = get().internal;\n            if (internal2 != null && internal2.subscribers) {\n              internal2.priority = internal2.priority - (priority > 0 ? 1 : 0);\n              internal2.subscribers = internal2.subscribers.filter((s2) => s2.ref !== ref);\n            }\n          };\n        }\n      }\n    };\n    return rootState2;\n  });\n  const state = rootState.getState();\n  let oldSize = state.size;\n  let oldDpr = state.viewport.dpr;\n  let oldCamera = state.camera;\n  rootState.subscribe(() => {\n    const {\n      camera,\n      size,\n      viewport,\n      gl,\n      set\n    } = rootState.getState();\n    if (size.width !== oldSize.width || size.height !== oldSize.height || viewport.dpr !== oldDpr) {\n      var _size$updateStyle;\n      oldSize = size;\n      oldDpr = viewport.dpr;\n      updateCamera(camera, size);\n      gl.setPixelRatio(viewport.dpr);\n      const updateStyle = (_size$updateStyle = size.updateStyle) != null ? _size$updateStyle : typeof HTMLCanvasElement !== \"undefined\" && gl.domElement instanceof HTMLCanvasElement;\n      gl.setSize(size.width, size.height, updateStyle);\n    }\n    if (camera !== oldCamera) {\n      oldCamera = camera;\n      set((state2) => ({\n        viewport: {\n          ...state2.viewport,\n          ...state2.viewport.getCurrentViewport(camera)\n        }\n      }));\n    }\n  });\n  rootState.subscribe((state2) => invalidate2(state2));\n  return rootState;\n};\nlet i$2;\nlet globalEffects = /* @__PURE__ */ new Set();\nlet globalAfterEffects = /* @__PURE__ */ new Set();\nlet globalTailEffects = /* @__PURE__ */ new Set();\nfunction run(effects, timestamp) {\n  if (!effects.size) return;\n  for (const {\n    callback\n  } of effects.values()) {\n    callback(timestamp);\n  }\n}\nfunction flushGlobalEffects(type, timestamp) {\n  switch (type) {\n    case \"before\":\n      return run(globalEffects, timestamp);\n    case \"after\":\n      return run(globalAfterEffects, timestamp);\n    case \"tail\":\n      return run(globalTailEffects, timestamp);\n  }\n}\nlet subscribers;\nlet subscription;\nfunction render$1(timestamp, state, frame) {\n  let delta = state.clock.getDelta();\n  if (state.frameloop === \"never\" && typeof timestamp === \"number\") {\n    delta = timestamp - state.clock.elapsedTime;\n    state.clock.oldTime = state.clock.elapsedTime;\n    state.clock.elapsedTime = timestamp;\n  }\n  subscribers = state.internal.subscribers;\n  for (i$2 = 0; i$2 < subscribers.length; i$2++) {\n    subscription = subscribers[i$2];\n    subscription.ref.current(subscription.store.getState(), delta, frame);\n  }\n  if (!state.internal.priority && state.gl.render) state.gl.render(state.scene, state.camera);\n  state.internal.frames = Math.max(0, state.internal.frames - 1);\n  return state.frameloop === \"always\" ? 1 : state.internal.frames;\n}\nfunction createLoop(roots2) {\n  let running = false;\n  let useFrameInProgress = false;\n  let repeat;\n  let frame;\n  let state;\n  function loop(timestamp) {\n    frame = requestAnimationFrame(loop);\n    running = true;\n    repeat = 0;\n    flushGlobalEffects(\"before\", timestamp);\n    useFrameInProgress = true;\n    for (const root of roots2.values()) {\n      var _state$gl$xr;\n      state = root.store.getState();\n      if (state.internal.active && (state.frameloop === \"always\" || state.internal.frames > 0) && !((_state$gl$xr = state.gl.xr) != null && _state$gl$xr.isPresenting)) {\n        repeat += render$1(timestamp, state);\n      }\n    }\n    useFrameInProgress = false;\n    flushGlobalEffects(\"after\", timestamp);\n    if (repeat === 0) {\n      flushGlobalEffects(\"tail\", timestamp);\n      running = false;\n      return cancelAnimationFrame(frame);\n    }\n  }\n  function invalidate2(state2, frames = 1) {\n    var _state$gl$xr2;\n    if (!state2) return roots2.forEach((root) => invalidate2(root.store.getState(), frames));\n    if ((_state$gl$xr2 = state2.gl.xr) != null && _state$gl$xr2.isPresenting || !state2.internal.active || state2.frameloop === \"never\") return;\n    if (frames > 1) {\n      state2.internal.frames = Math.min(60, state2.internal.frames + frames);\n    } else {\n      if (useFrameInProgress) {\n        state2.internal.frames = 2;\n      } else {\n        state2.internal.frames = 1;\n      }\n    }\n    if (!running) {\n      running = true;\n      requestAnimationFrame(loop);\n    }\n  }\n  function advance2(timestamp, runGlobalEffects = true, state2, frame2) {\n    if (runGlobalEffects) flushGlobalEffects(\"before\", timestamp);\n    if (!state2) for (const root of roots2.values()) render$1(timestamp, root.store.getState());\n    else render$1(timestamp, state2, frame2);\n    if (runGlobalEffects) flushGlobalEffects(\"after\", timestamp);\n  }\n  return {\n    loop,\n    invalidate: invalidate2,\n    advance: advance2\n  };\n}\nfunction useStore() {\n  const store = React.useContext(context);\n  if (!store) throw new Error(\"R3F: Hooks can only be used within the Canvas component!\");\n  return store;\n}\nfunction useThree(selector = (state) => state, equalityFn) {\n  return useStore()(selector, equalityFn);\n}\nfunction useFrame(callback, renderPriority = 0) {\n  const store = useStore();\n  const subscribe = store.getState().internal.subscribe;\n  const ref = useMutableCallback(callback);\n  useIsomorphicLayoutEffect(() => subscribe(ref, renderPriority, store), [renderPriority, subscribe, store]);\n  return null;\n}\nconst memoizedLoaders = /* @__PURE__ */ new WeakMap();\nfunction loadingFn(extensions2, onProgress) {\n  return function(Proto, ...input) {\n    let loader = memoizedLoaders.get(Proto);\n    if (!loader) {\n      loader = new Proto();\n      memoizedLoaders.set(Proto, loader);\n    }\n    if (extensions2) extensions2(loader);\n    return Promise.all(input.map((input2) => new Promise((res, reject) => loader.load(input2, (data) => {\n      if (data.scene) Object.assign(data, buildGraph(data.scene));\n      res(data);\n    }, onProgress, (error2) => reject(new Error(`Could not load ${input2}: ${error2 == null ? void 0 : error2.message}`))))));\n  };\n}\nfunction useLoader(Proto, input, extensions2, onProgress) {\n  const keys = Array.isArray(input) ? input : [input];\n  const results = suspend(loadingFn(extensions2, onProgress), [Proto, ...keys], {\n    equal: is.equ\n  });\n  return Array.isArray(input) ? results : results[0];\n}\nuseLoader.preload = function(Proto, input, extensions2) {\n  const keys = Array.isArray(input) ? input : [input];\n  return preload(loadingFn(extensions2), [Proto, ...keys]);\n};\nuseLoader.clear = function(Proto, input) {\n  const keys = Array.isArray(input) ? input : [input];\n  return clear([Proto, ...keys]);\n};\nconst roots = /* @__PURE__ */ new Map();\nconst {\n  invalidate,\n  advance\n} = createLoop(roots);\nconst {\n  reconciler,\n  applyProps\n} = createRenderer(roots, getEventPriority);\nconst shallowLoose = {\n  objects: \"shallow\",\n  strict: false\n};\nconst createRendererInstance = (gl, canvas) => {\n  const customRenderer = typeof gl === \"function\" ? gl(canvas) : gl;\n  if (isRenderer(customRenderer)) return customRenderer;\n  else return new WebGLRenderer({\n    powerPreference: \"high-performance\",\n    canvas,\n    antialias: true,\n    alpha: true,\n    ...gl\n  });\n};\nfunction computeInitialSize(canvas, defaultSize) {\n  const defaultStyle = typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement;\n  if (defaultSize) {\n    const {\n      width,\n      height,\n      top,\n      left,\n      updateStyle = defaultStyle\n    } = defaultSize;\n    return {\n      width,\n      height,\n      top,\n      left,\n      updateStyle\n    };\n  } else if (typeof HTMLCanvasElement !== \"undefined\" && canvas instanceof HTMLCanvasElement && canvas.parentElement) {\n    const {\n      width,\n      height,\n      top,\n      left\n    } = canvas.parentElement.getBoundingClientRect();\n    return {\n      width,\n      height,\n      top,\n      left,\n      updateStyle: defaultStyle\n    };\n  } else if (typeof OffscreenCanvas !== \"undefined\" && canvas instanceof OffscreenCanvas) {\n    return {\n      width: canvas.width,\n      height: canvas.height,\n      top: 0,\n      left: 0,\n      updateStyle: defaultStyle\n    };\n  }\n  return {\n    width: 0,\n    height: 0,\n    top: 0,\n    left: 0\n  };\n}\nfunction createRoot(canvas) {\n  const prevRoot = roots.get(canvas);\n  const prevFiber = prevRoot == null ? void 0 : prevRoot.fiber;\n  const prevStore = prevRoot == null ? void 0 : prevRoot.store;\n  if (prevRoot) console.warn(\"R3F.createRoot should only be called once!\");\n  const logRecoverableError = typeof reportError === \"function\" ? (\n    // In modern browsers, reportError will dispatch an error event,\n    // emulating an uncaught JavaScript error.\n    reportError\n  ) : (\n    // In older browsers and test environments, fallback to console.error.\n    console.error\n  );\n  const store = prevStore || createStore(invalidate, advance);\n  const fiber = prevFiber || reconciler.createContainer(store, constantsExports.ConcurrentRoot, null, false, null, \"\", logRecoverableError, null);\n  if (!prevRoot) roots.set(canvas, {\n    fiber,\n    store\n  });\n  let onCreated;\n  let configured = false;\n  let lastCamera;\n  return {\n    configure(props = {}) {\n      let {\n        gl: glConfig,\n        size: propsSize,\n        scene: sceneOptions,\n        events,\n        onCreated: onCreatedCallback,\n        shadows = false,\n        linear = false,\n        flat = false,\n        legacy = false,\n        orthographic = false,\n        frameloop = \"always\",\n        dpr = [1, 2],\n        performance: performance2,\n        raycaster: raycastOptions,\n        camera: cameraOptions,\n        onPointerMissed\n      } = props;\n      let state = store.getState();\n      let gl = state.gl;\n      if (!state.gl) state.set({\n        gl: gl = createRendererInstance(glConfig, canvas)\n      });\n      let raycaster = state.raycaster;\n      if (!raycaster) state.set({\n        raycaster: raycaster = new Raycaster()\n      });\n      const {\n        params,\n        ...options\n      } = raycastOptions || {};\n      if (!is.equ(options, raycaster, shallowLoose)) applyProps(raycaster, {\n        ...options\n      });\n      if (!is.equ(params, raycaster.params, shallowLoose)) applyProps(raycaster, {\n        params: {\n          ...raycaster.params,\n          ...params\n        }\n      });\n      if (!state.camera || state.camera === lastCamera && !is.equ(lastCamera, cameraOptions, shallowLoose)) {\n        lastCamera = cameraOptions;\n        const isCamera = cameraOptions instanceof Camera;\n        const camera = isCamera ? cameraOptions : orthographic ? new OrthographicCamera(0, 0, 0, 0, 0.1, 1e3) : new PerspectiveCamera(75, 0, 0.1, 1e3);\n        if (!isCamera) {\n          camera.position.z = 5;\n          if (cameraOptions) {\n            applyProps(camera, cameraOptions);\n            if (\"aspect\" in cameraOptions || \"left\" in cameraOptions || \"right\" in cameraOptions || \"bottom\" in cameraOptions || \"top\" in cameraOptions) {\n              camera.manual = true;\n              camera.updateProjectionMatrix();\n            }\n          }\n          if (!state.camera && !(cameraOptions != null && cameraOptions.rotation)) camera.lookAt(0, 0, 0);\n        }\n        state.set({\n          camera\n        });\n        raycaster.camera = camera;\n      }\n      if (!state.scene) {\n        let scene;\n        if (sceneOptions != null && sceneOptions.isScene) {\n          scene = sceneOptions;\n        } else {\n          scene = new Scene();\n          if (sceneOptions) applyProps(scene, sceneOptions);\n        }\n        state.set({\n          scene: prepare(scene)\n        });\n      }\n      if (!state.xr) {\n        var _gl$xr;\n        const handleXRFrame = (timestamp, frame) => {\n          const state2 = store.getState();\n          if (state2.frameloop === \"never\") return;\n          advance(timestamp, true, state2, frame);\n        };\n        const handleSessionChange = () => {\n          const state2 = store.getState();\n          state2.gl.xr.enabled = state2.gl.xr.isPresenting;\n          state2.gl.xr.setAnimationLoop(state2.gl.xr.isPresenting ? handleXRFrame : null);\n          if (!state2.gl.xr.isPresenting) invalidate(state2);\n        };\n        const xr = {\n          connect() {\n            const gl2 = store.getState().gl;\n            gl2.xr.addEventListener(\"sessionstart\", handleSessionChange);\n            gl2.xr.addEventListener(\"sessionend\", handleSessionChange);\n          },\n          disconnect() {\n            const gl2 = store.getState().gl;\n            gl2.xr.removeEventListener(\"sessionstart\", handleSessionChange);\n            gl2.xr.removeEventListener(\"sessionend\", handleSessionChange);\n          }\n        };\n        if (typeof ((_gl$xr = gl.xr) == null ? void 0 : _gl$xr.addEventListener) === \"function\") xr.connect();\n        state.set({\n          xr\n        });\n      }\n      if (gl.shadowMap) {\n        const oldEnabled = gl.shadowMap.enabled;\n        const oldType = gl.shadowMap.type;\n        gl.shadowMap.enabled = !!shadows;\n        if (is.boo(shadows)) {\n          gl.shadowMap.type = PCFSoftShadowMap;\n        } else if (is.str(shadows)) {\n          var _types$shadows;\n          const types = {\n            basic: BasicShadowMap,\n            percentage: PCFShadowMap,\n            soft: PCFSoftShadowMap,\n            variance: VSMShadowMap\n          };\n          gl.shadowMap.type = (_types$shadows = types[shadows]) != null ? _types$shadows : PCFSoftShadowMap;\n        } else if (is.obj(shadows)) {\n          Object.assign(gl.shadowMap, shadows);\n        }\n        if (oldEnabled !== gl.shadowMap.enabled || oldType !== gl.shadowMap.type) gl.shadowMap.needsUpdate = true;\n      }\n      const ColorManagement2 = getColorManagement();\n      if (ColorManagement2) {\n        if (\"enabled\" in ColorManagement2) ColorManagement2.enabled = !legacy;\n        else if (\"legacyMode\" in ColorManagement2) ColorManagement2.legacyMode = legacy;\n      }\n      if (!configured) {\n        const LinearEncoding2 = 3e3;\n        const sRGBEncoding2 = 3001;\n        applyProps(gl, {\n          outputEncoding: linear ? LinearEncoding2 : sRGBEncoding2,\n          toneMapping: flat ? NoToneMapping : ACESFilmicToneMapping\n        });\n      }\n      if (state.legacy !== legacy) state.set(() => ({\n        legacy\n      }));\n      if (state.linear !== linear) state.set(() => ({\n        linear\n      }));\n      if (state.flat !== flat) state.set(() => ({\n        flat\n      }));\n      if (glConfig && !is.fun(glConfig) && !isRenderer(glConfig) && !is.equ(glConfig, gl, shallowLoose)) applyProps(gl, glConfig);\n      if (events && !state.events.handlers) state.set({\n        events: events(store)\n      });\n      const size = computeInitialSize(canvas, propsSize);\n      if (!is.equ(size, state.size, shallowLoose)) {\n        state.setSize(size.width, size.height, size.updateStyle, size.top, size.left);\n      }\n      if (dpr && state.viewport.dpr !== calculateDpr(dpr)) state.setDpr(dpr);\n      if (state.frameloop !== frameloop) state.setFrameloop(frameloop);\n      if (!state.onPointerMissed) state.set({\n        onPointerMissed\n      });\n      if (performance2 && !is.equ(performance2, state.performance, shallowLoose)) state.set((state2) => ({\n        performance: {\n          ...state2.performance,\n          ...performance2\n        }\n      }));\n      onCreated = onCreatedCallback;\n      configured = true;\n      return this;\n    },\n    render(children) {\n      if (!configured) this.configure();\n      reconciler.updateContainer(/* @__PURE__ */ jsxRuntimeExports.jsx(Provider, {\n        store,\n        children,\n        onCreated,\n        rootElement: canvas\n      }), fiber, null, () => void 0);\n      return store;\n    },\n    unmount() {\n      unmountComponentAtNode(canvas);\n    }\n  };\n}\nfunction Provider({\n  store,\n  children,\n  onCreated,\n  rootElement\n}) {\n  useIsomorphicLayoutEffect(() => {\n    const state = store.getState();\n    state.set((state2) => ({\n      internal: {\n        ...state2.internal,\n        active: true\n      }\n    }));\n    if (onCreated) onCreated(state);\n    if (!store.getState().events.connected) state.events.connect == null ? void 0 : state.events.connect(rootElement);\n  }, []);\n  return /* @__PURE__ */ jsxRuntimeExports.jsx(context.Provider, {\n    value: store,\n    children\n  });\n}\nfunction unmountComponentAtNode(canvas, callback) {\n  const root = roots.get(canvas);\n  const fiber = root == null ? void 0 : root.fiber;\n  if (fiber) {\n    const state = root == null ? void 0 : root.store.getState();\n    if (state) state.internal.active = false;\n    reconciler.updateContainer(null, fiber, null, () => {\n      if (state) {\n        setTimeout(() => {\n          try {\n            var _state$gl, _state$gl$renderLists, _state$gl2, _state$gl3;\n            state.events.disconnect == null ? void 0 : state.events.disconnect();\n            (_state$gl = state.gl) == null ? void 0 : (_state$gl$renderLists = _state$gl.renderLists) == null ? void 0 : _state$gl$renderLists.dispose == null ? void 0 : _state$gl$renderLists.dispose();\n            (_state$gl2 = state.gl) == null ? void 0 : _state$gl2.forceContextLoss == null ? void 0 : _state$gl2.forceContextLoss();\n            if ((_state$gl3 = state.gl) != null && _state$gl3.xr) state.xr.disconnect();\n            dispose(state);\n            roots.delete(canvas);\n            if (callback) ;\n          } catch (e2) {\n          }\n        }, 500);\n      }\n    });\n  }\n}\nfunction createPortal(children, container, state) {\n  return /* @__PURE__ */ jsxRuntimeExports.jsx(Portal, {\n    children,\n    container,\n    state\n  }, container.uuid);\n}\nfunction Portal({\n  state = {},\n  children,\n  container\n}) {\n  const {\n    events,\n    size,\n    ...rest\n  } = state;\n  const previousRoot = useStore();\n  const [raycaster] = React.useState(() => new Raycaster());\n  const [pointer] = React.useState(() => new Vector2());\n  const inject = React.useCallback(\n    (rootState, injectState) => {\n      const intersect = {\n        ...rootState\n      };\n      Object.keys(rootState).forEach((key) => {\n        if (\n          // Some props should be off-limits\n          privateKeys.includes(key) || // Otherwise filter out the props that are different and let the inject layer take precedence\n          // Unless the inject layer props is undefined, then we keep the root layer\n          rootState[key] !== injectState[key] && injectState[key]\n        ) {\n          delete intersect[key];\n        }\n      });\n      let viewport = void 0;\n      if (injectState && size) {\n        const camera = injectState.camera;\n        viewport = rootState.viewport.getCurrentViewport(camera, new Vector3(), size);\n        if (camera !== rootState.camera) updateCamera(camera, size);\n      }\n      return {\n        // The intersect consists of the previous root state\n        ...intersect,\n        // Portals have their own scene, which forms the root, a raycaster and a pointer\n        scene: container,\n        raycaster,\n        pointer,\n        mouse: pointer,\n        // Their previous root is the layer before it\n        previousRoot,\n        // Events, size and viewport can be overridden by the inject layer\n        events: {\n          ...rootState.events,\n          ...injectState == null ? void 0 : injectState.events,\n          ...events\n        },\n        size: {\n          ...rootState.size,\n          ...size\n        },\n        viewport: {\n          ...rootState.viewport,\n          ...viewport\n        },\n        ...rest\n      };\n    },\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [state]\n  );\n  const [usePortalStore] = React.useState(() => {\n    const previousState = previousRoot.getState();\n    const store = create((set, get) => ({\n      ...previousState,\n      scene: container,\n      raycaster,\n      pointer,\n      mouse: pointer,\n      previousRoot,\n      events: {\n        ...previousState.events,\n        ...events\n      },\n      size: {\n        ...previousState.size,\n        ...size\n      },\n      ...rest,\n      // Set and get refer to this root-state\n      set,\n      get,\n      // Layers are allowed to override events\n      setEvents: (events2) => set((state2) => ({\n        ...state2,\n        events: {\n          ...state2.events,\n          ...events2\n        }\n      }))\n    }));\n    return store;\n  });\n  React.useEffect(() => {\n    const unsub = previousRoot.subscribe((prev) => usePortalStore.setState((state2) => inject(prev, state2)));\n    return () => {\n      unsub();\n    };\n  }, [inject]);\n  React.useEffect(() => {\n    usePortalStore.setState((injectState) => inject(previousRoot.getState(), injectState));\n  }, [inject]);\n  React.useEffect(() => {\n    return () => {\n      usePortalStore.destroy();\n    };\n  }, []);\n  return /* @__PURE__ */ jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {\n    children: reconciler.createPortal(/* @__PURE__ */ jsxRuntimeExports.jsx(context.Provider, {\n      value: usePortalStore,\n      children\n    }), usePortalStore, null)\n  });\n}\nreconciler.injectIntoDevTools({\n  bundleType: process.env.NODE_ENV === \"production\" ? 0 : 1,\n  rendererPackageName: \"@react-three/fiber\",\n  version: React.version\n});\nconst DOM_EVENTS = {\n  onClick: [\"click\", false],\n  onContextMenu: [\"contextmenu\", false],\n  onDoubleClick: [\"dblclick\", false],\n  onWheel: [\"wheel\", true],\n  onPointerDown: [\"pointerdown\", true],\n  onPointerUp: [\"pointerup\", true],\n  onPointerLeave: [\"pointerleave\", true],\n  onPointerMove: [\"pointermove\", true],\n  onPointerCancel: [\"pointercancel\", true],\n  onLostPointerCapture: [\"lostpointercapture\", true]\n};\nfunction createPointerEvents(store) {\n  const {\n    handlePointer\n  } = createEvents(store);\n  return {\n    priority: 1,\n    enabled: true,\n    compute(event, state, previous) {\n      state.pointer.set(event.offsetX / state.size.width * 2 - 1, -(event.offsetY / state.size.height) * 2 + 1);\n      state.raycaster.setFromCamera(state.pointer, state.camera);\n    },\n    connected: void 0,\n    handlers: Object.keys(DOM_EVENTS).reduce((acc, key) => ({\n      ...acc,\n      [key]: handlePointer(key)\n    }), {}),\n    update: () => {\n      var _internal$lastEvent;\n      const {\n        events,\n        internal\n      } = store.getState();\n      if ((_internal$lastEvent = internal.lastEvent) != null && _internal$lastEvent.current && events.handlers) events.handlers.onPointerMove(internal.lastEvent.current);\n    },\n    connect: (target) => {\n      var _events$handlers;\n      const {\n        set,\n        events\n      } = store.getState();\n      events.disconnect == null ? void 0 : events.disconnect();\n      set((state) => ({\n        events: {\n          ...state.events,\n          connected: target\n        }\n      }));\n      Object.entries((_events$handlers = events.handlers) != null ? _events$handlers : []).forEach(([name, event]) => {\n        const [eventName, passive] = DOM_EVENTS[name];\n        target.addEventListener(eventName, event, {\n          passive\n        });\n      });\n    },\n    disconnect: () => {\n      const {\n        set,\n        events\n      } = store.getState();\n      if (events.connected) {\n        var _events$handlers2;\n        Object.entries((_events$handlers2 = events.handlers) != null ? _events$handlers2 : []).forEach(([name, event]) => {\n          if (events && events.connected instanceof HTMLElement) {\n            const [eventName] = DOM_EVENTS[name];\n            events.connected.removeEventListener(eventName, event);\n          }\n        });\n        set((state) => ({\n          events: {\n            ...state.events,\n            connected: void 0\n          }\n        }));\n      }\n    }\n  };\n}\nfunction g$1(n2, t2) {\n  let o2;\n  return (...i2) => {\n    window.clearTimeout(o2), o2 = window.setTimeout(() => n2(...i2), t2);\n  };\n}\nfunction j$1({ debounce: n2, scroll: t2, polyfill: o2, offsetSize: i2 } = { debounce: 0, scroll: false, offsetSize: false }) {\n  const a2 = o2 || (typeof window == \"undefined\" ? class {\n  } : window.ResizeObserver);\n  if (!a2) throw new Error(\"This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills\");\n  const [c2, h2] = useState({ left: 0, top: 0, width: 0, height: 0, bottom: 0, right: 0, x: 0, y: 0 }), e2 = useRef({ element: null, scrollContainers: null, resizeObserver: null, lastBounds: c2, orientationHandler: null }), d2 = n2 ? typeof n2 == \"number\" ? n2 : n2.scroll : null, f2 = n2 ? typeof n2 == \"number\" ? n2 : n2.resize : null, w2 = useRef(false);\n  useEffect(() => (w2.current = true, () => void (w2.current = false)));\n  const [z2, m2, s2] = useMemo(() => {\n    const r2 = () => {\n      if (!e2.current.element) return;\n      const { left: y2, top: C2, width: H2, height: O2, bottom: S2, right: x2, x: B2, y: R2 } = e2.current.element.getBoundingClientRect(), l2 = { left: y2, top: C2, width: H2, height: O2, bottom: S2, right: x2, x: B2, y: R2 };\n      e2.current.element instanceof HTMLElement && i2 && (l2.height = e2.current.element.offsetHeight, l2.width = e2.current.element.offsetWidth), Object.freeze(l2), w2.current && !D$1(e2.current.lastBounds, l2) && h2(e2.current.lastBounds = l2);\n    };\n    return [r2, f2 ? g$1(r2, f2) : r2, d2 ? g$1(r2, d2) : r2];\n  }, [h2, i2, d2, f2]);\n  function v2() {\n    e2.current.scrollContainers && (e2.current.scrollContainers.forEach((r2) => r2.removeEventListener(\"scroll\", s2, true)), e2.current.scrollContainers = null), e2.current.resizeObserver && (e2.current.resizeObserver.disconnect(), e2.current.resizeObserver = null), e2.current.orientationHandler && (\"orientation\" in screen && \"removeEventListener\" in screen.orientation ? screen.orientation.removeEventListener(\"change\", e2.current.orientationHandler) : \"onorientationchange\" in window && window.removeEventListener(\"orientationchange\", e2.current.orientationHandler));\n  }\n  function b2() {\n    e2.current.element && (e2.current.resizeObserver = new a2(s2), e2.current.resizeObserver.observe(e2.current.element), t2 && e2.current.scrollContainers && e2.current.scrollContainers.forEach((r2) => r2.addEventListener(\"scroll\", s2, { capture: true, passive: true })), e2.current.orientationHandler = () => {\n      s2();\n    }, \"orientation\" in screen && \"addEventListener\" in screen.orientation ? screen.orientation.addEventListener(\"change\", e2.current.orientationHandler) : \"onorientationchange\" in window && window.addEventListener(\"orientationchange\", e2.current.orientationHandler));\n  }\n  const L2 = (r2) => {\n    !r2 || r2 === e2.current.element || (v2(), e2.current.element = r2, e2.current.scrollContainers = E$1(r2), b2());\n  };\n  return X$1(s2, !!t2), W$1(m2), useEffect(() => {\n    v2(), b2();\n  }, [t2, s2, m2]), useEffect(() => v2, []), [L2, c2, z2];\n}\nfunction W$1(n2) {\n  useEffect(() => {\n    const t2 = n2;\n    return window.addEventListener(\"resize\", t2), () => void window.removeEventListener(\"resize\", t2);\n  }, [n2]);\n}\nfunction X$1(n2, t2) {\n  useEffect(() => {\n    if (t2) {\n      const o2 = n2;\n      return window.addEventListener(\"scroll\", o2, { capture: true, passive: true }), () => void window.removeEventListener(\"scroll\", o2, true);\n    }\n  }, [n2, t2]);\n}\nfunction E$1(n2) {\n  const t2 = [];\n  if (!n2 || n2 === document.body) return t2;\n  const { overflow: o2, overflowX: i2, overflowY: a2 } = window.getComputedStyle(n2);\n  return [o2, i2, a2].some((c2) => c2 === \"auto\" || c2 === \"scroll\") && t2.push(n2), [...t2, ...E$1(n2.parentElement)];\n}\nconst k$1 = [\"x\", \"y\", \"top\", \"bottom\", \"left\", \"right\", \"width\", \"height\"], D$1 = (n2, t2) => k$1.every((o2) => n2[o2] === t2[o2]);\nvar __defProp$1 = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a2, b2) => {\n  for (var prop in b2 || (b2 = {}))\n    if (__hasOwnProp.call(b2, prop))\n      __defNormalProp$1(a2, prop, b2[prop]);\n  if (__getOwnPropSymbols)\n    for (var prop of __getOwnPropSymbols(b2)) {\n      if (__propIsEnum.call(b2, prop))\n        __defNormalProp$1(a2, prop, b2[prop]);\n    }\n  return a2;\n};\nvar __spreadProps = (a2, b2) => __defProps(a2, __getOwnPropDescs(b2));\nvar _a$1, _b$1;\ntypeof window !== \"undefined\" && (((_a$1 = window.document) == null ? void 0 : _a$1.createElement) || ((_b$1 = window.navigator) == null ? void 0 : _b$1.product) === \"ReactNative\") ? React.useLayoutEffect : React.useEffect;\nfunction traverseFiber(fiber, ascending, selector) {\n  if (!fiber)\n    return;\n  if (selector(fiber) === true)\n    return fiber;\n  let child = fiber.child;\n  while (child) {\n    const match = traverseFiber(child, ascending, selector);\n    if (match)\n      return match;\n    child = child.sibling;\n  }\n}\nfunction wrapContext(context2) {\n  try {\n    return Object.defineProperties(context2, {\n      _currentRenderer: {\n        get() {\n          return null;\n        },\n        set() {\n        }\n      },\n      _currentRenderer2: {\n        get() {\n          return null;\n        },\n        set() {\n        }\n      }\n    });\n  } catch (_2) {\n    return context2;\n  }\n}\nconst error = console.error;\nconsole.error = function() {\n  const message = [...arguments].join(\"\");\n  if ((message == null ? void 0 : message.startsWith(\"Warning:\")) && message.includes(\"useContext\")) {\n    console.error = error;\n    return;\n  }\n  return error.apply(this, arguments);\n};\nconst FiberContext = wrapContext(React.createContext(null));\nclass FiberProvider extends React.Component {\n  render() {\n    return /* @__PURE__ */ React.createElement(FiberContext.Provider, {\n      value: this._reactInternals\n    }, this.props.children);\n  }\n}\nfunction useFiber() {\n  const root = React.useContext(FiberContext);\n  if (root === null)\n    throw new Error(\"its-fine: useFiber must be called within a <FiberProvider />!\");\n  const id = React.useId();\n  const fiber = React.useMemo(() => {\n    for (const maybeFiber of [root, root == null ? void 0 : root.alternate]) {\n      if (!maybeFiber)\n        continue;\n      const fiber2 = traverseFiber(maybeFiber, false, (node) => {\n        let state = node.memoizedState;\n        while (state) {\n          if (state.memoizedState === id)\n            return true;\n          state = state.next;\n        }\n      });\n      if (fiber2)\n        return fiber2;\n    }\n  }, [root, id]);\n  return fiber;\n}\nfunction useContextMap() {\n  const fiber = useFiber();\n  const [contextMap] = React.useState(() => /* @__PURE__ */ new Map());\n  contextMap.clear();\n  let node = fiber;\n  while (node) {\n    if (node.type && typeof node.type === \"object\") {\n      const enableRenderableContext = node.type._context === void 0 && node.type.Provider === node.type;\n      const context2 = enableRenderableContext ? node.type : node.type._context;\n      if (context2 && context2 !== FiberContext && !contextMap.has(context2)) {\n        contextMap.set(context2, React.useContext(wrapContext(context2)));\n      }\n    }\n    node = node.return;\n  }\n  return contextMap;\n}\nfunction useContextBridge() {\n  const contextMap = useContextMap();\n  return React.useMemo(\n    () => Array.from(contextMap.keys()).reduce(\n      (Prev, context2) => (props) => /* @__PURE__ */ React.createElement(Prev, null, /* @__PURE__ */ React.createElement(context2.Provider, __spreadProps(__spreadValues({}, props), {\n        value: contextMap.get(context2)\n      }))),\n      (props) => /* @__PURE__ */ React.createElement(FiberProvider, __spreadValues({}, props))\n    ),\n    [contextMap]\n  );\n}\nconst CanvasImpl = /* @__PURE__ */ React.forwardRef(function Canvas({\n  children,\n  fallback,\n  resize,\n  style,\n  gl,\n  events = createPointerEvents,\n  eventSource,\n  eventPrefix,\n  shadows,\n  linear,\n  flat,\n  legacy,\n  orthographic,\n  frameloop,\n  dpr,\n  performance: performance2,\n  raycaster,\n  camera,\n  scene,\n  onPointerMissed,\n  onCreated,\n  ...props\n}, forwardedRef) {\n  React.useMemo(() => extend(THREE), []);\n  const Bridge = useContextBridge();\n  const [containerRef, containerRect] = j$1({\n    scroll: true,\n    debounce: {\n      scroll: 50,\n      resize: 0\n    },\n    ...resize\n  });\n  const canvasRef = React.useRef(null);\n  const divRef = React.useRef(null);\n  React.useImperativeHandle(forwardedRef, () => canvasRef.current);\n  const handlePointerMissed = useMutableCallback(onPointerMissed);\n  const [block, setBlock] = React.useState(false);\n  const [error2, setError] = React.useState(false);\n  if (block) throw block;\n  if (error2) throw error2;\n  const root = React.useRef(null);\n  useIsomorphicLayoutEffect(() => {\n    const canvas = canvasRef.current;\n    if (containerRect.width > 0 && containerRect.height > 0 && canvas) {\n      if (!root.current) root.current = createRoot(canvas);\n      root.current.configure({\n        gl,\n        events,\n        shadows,\n        linear,\n        flat,\n        legacy,\n        orthographic,\n        frameloop,\n        dpr,\n        performance: performance2,\n        raycaster,\n        camera,\n        scene,\n        size: containerRect,\n        // Pass mutable reference to onPointerMissed so it's free to update\n        onPointerMissed: (...args) => handlePointerMissed.current == null ? void 0 : handlePointerMissed.current(...args),\n        onCreated: (state) => {\n          state.events.connect == null ? void 0 : state.events.connect(eventSource ? isRef$1(eventSource) ? eventSource.current : eventSource : divRef.current);\n          if (eventPrefix) {\n            state.setEvents({\n              compute: (event, state2) => {\n                const x2 = event[eventPrefix + \"X\"];\n                const y2 = event[eventPrefix + \"Y\"];\n                state2.pointer.set(x2 / state2.size.width * 2 - 1, -(y2 / state2.size.height) * 2 + 1);\n                state2.raycaster.setFromCamera(state2.pointer, state2.camera);\n              }\n            });\n          }\n          onCreated == null ? void 0 : onCreated(state);\n        }\n      });\n      root.current.render(/* @__PURE__ */ jsxRuntimeExports.jsx(Bridge, {\n        children: /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorBoundary, {\n          set: setError,\n          children: /* @__PURE__ */ jsxRuntimeExports.jsx(React.Suspense, {\n            fallback: /* @__PURE__ */ jsxRuntimeExports.jsx(Block, {\n              set: setBlock\n            }),\n            children: children != null ? children : null\n          })\n        })\n      }));\n    }\n  });\n  React.useEffect(() => {\n    const canvas = canvasRef.current;\n    if (canvas) return () => unmountComponentAtNode(canvas);\n  }, []);\n  const pointerEvents = eventSource ? \"none\" : \"auto\";\n  return /* @__PURE__ */ jsxRuntimeExports.jsx(\"div\", {\n    ref: divRef,\n    style: {\n      position: \"relative\",\n      width: \"100%\",\n      height: \"100%\",\n      overflow: \"hidden\",\n      pointerEvents,\n      ...style\n    },\n    ...props,\n    children: /* @__PURE__ */ jsxRuntimeExports.jsx(\"div\", {\n      ref: containerRef,\n      style: {\n        width: \"100%\",\n        height: \"100%\"\n      },\n      children: /* @__PURE__ */ jsxRuntimeExports.jsx(\"canvas\", {\n        ref: canvasRef,\n        style: {\n          display: \"block\"\n        },\n        children: fallback\n      })\n    })\n  });\n});\nconst Canvas2 = /* @__PURE__ */ React.forwardRef(function CanvasWrapper(props, ref) {\n  return /* @__PURE__ */ jsxRuntimeExports.jsx(FiberProvider, {\n    children: /* @__PURE__ */ jsxRuntimeExports.jsx(CanvasImpl, {\n      ...props,\n      ref\n    })\n  });\n});\nfunction _extends$1() {\n  return _extends$1 = Object.assign ? Object.assign.bind() : function(n2) {\n    for (var e2 = 1; e2 < arguments.length; e2++) {\n      var t2 = arguments[e2];\n      for (var r2 in t2) ({}).hasOwnProperty.call(t2, r2) && (n2[r2] = t2[r2]);\n    }\n    return n2;\n  }, _extends$1.apply(null, arguments);\n}\nconst version$1 = /* @__PURE__ */ (() => parseInt(REVISION.replace(/\\D+/g, \"\")))();\nfunction mergeVertices(geometry, tolerance = 1e-4) {\n  tolerance = Math.max(tolerance, Number.EPSILON);\n  const hashToIndex = {};\n  const indices = geometry.getIndex();\n  const positions = geometry.getAttribute(\"position\");\n  const vertexCount = indices ? indices.count : positions.count;\n  let nextIndex = 0;\n  const attributeNames = Object.keys(geometry.attributes);\n  const attrArrays = {};\n  const morphAttrsArrays = {};\n  const newIndices = [];\n  const getters = [\"getX\", \"getY\", \"getZ\", \"getW\"];\n  for (let i2 = 0, l2 = attributeNames.length; i2 < l2; i2++) {\n    const name = attributeNames[i2];\n    attrArrays[name] = [];\n    const morphAttr = geometry.morphAttributes[name];\n    if (morphAttr) {\n      morphAttrsArrays[name] = new Array(morphAttr.length).fill(0).map(() => []);\n    }\n  }\n  const decimalShift = Math.log10(1 / tolerance);\n  const shiftMultiplier = Math.pow(10, decimalShift);\n  for (let i2 = 0; i2 < vertexCount; i2++) {\n    const index = indices ? indices.getX(i2) : i2;\n    let hash = \"\";\n    for (let j2 = 0, l2 = attributeNames.length; j2 < l2; j2++) {\n      const name = attributeNames[j2];\n      const attribute = geometry.getAttribute(name);\n      const itemSize = attribute.itemSize;\n      for (let k2 = 0; k2 < itemSize; k2++) {\n        hash += `${~~(attribute[getters[k2]](index) * shiftMultiplier)},`;\n      }\n    }\n    if (hash in hashToIndex) {\n      newIndices.push(hashToIndex[hash]);\n    } else {\n      for (let j2 = 0, l2 = attributeNames.length; j2 < l2; j2++) {\n        const name = attributeNames[j2];\n        const attribute = geometry.getAttribute(name);\n        const morphAttr = geometry.morphAttributes[name];\n        const itemSize = attribute.itemSize;\n        const newarray = attrArrays[name];\n        const newMorphArrays = morphAttrsArrays[name];\n        for (let k2 = 0; k2 < itemSize; k2++) {\n          const getterFunc = getters[k2];\n          newarray.push(attribute[getterFunc](index));\n          if (morphAttr) {\n            for (let m2 = 0, ml = morphAttr.length; m2 < ml; m2++) {\n              newMorphArrays[m2].push(morphAttr[m2][getterFunc](index));\n            }\n          }\n        }\n      }\n      hashToIndex[hash] = nextIndex;\n      newIndices.push(nextIndex);\n      nextIndex++;\n    }\n  }\n  const result = geometry.clone();\n  for (let i2 = 0, l2 = attributeNames.length; i2 < l2; i2++) {\n    const name = attributeNames[i2];\n    const oldAttribute = geometry.getAttribute(name);\n    const buffer = new oldAttribute.array.constructor(attrArrays[name]);\n    const attribute = new BufferAttribute(buffer, oldAttribute.itemSize, oldAttribute.normalized);\n    result.setAttribute(name, attribute);\n    if (name in morphAttrsArrays) {\n      for (let j2 = 0; j2 < morphAttrsArrays[name].length; j2++) {\n        const oldMorphAttribute = geometry.morphAttributes[name][j2];\n        const buffer2 = new oldMorphAttribute.array.constructor(morphAttrsArrays[name][j2]);\n        const morphAttribute = new BufferAttribute(buffer2, oldMorphAttribute.itemSize, oldMorphAttribute.normalized);\n        result.morphAttributes[name][j2] = morphAttribute;\n      }\n    }\n  }\n  result.setIndex(newIndices);\n  return result;\n}\nfunction toTrianglesDrawMode(geometry, drawMode) {\n  if (drawMode === TrianglesDrawMode) {\n    console.warn(\"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.\");\n    return geometry;\n  }\n  if (drawMode === TriangleFanDrawMode || drawMode === TriangleStripDrawMode) {\n    let index = geometry.getIndex();\n    if (index === null) {\n      const indices = [];\n      const position = geometry.getAttribute(\"position\");\n      if (position !== void 0) {\n        for (let i2 = 0; i2 < position.count; i2++) {\n          indices.push(i2);\n        }\n        geometry.setIndex(indices);\n        index = geometry.getIndex();\n      } else {\n        console.error(\n          \"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.\"\n        );\n        return geometry;\n      }\n    }\n    const numberOfTriangles = index.count - 2;\n    const newIndices = [];\n    if (index) {\n      if (drawMode === TriangleFanDrawMode) {\n        for (let i2 = 1; i2 <= numberOfTriangles; i2++) {\n          newIndices.push(index.getX(0));\n          newIndices.push(index.getX(i2));\n          newIndices.push(index.getX(i2 + 1));\n        }\n      } else {\n        for (let i2 = 0; i2 < numberOfTriangles; i2++) {\n          if (i2 % 2 === 0) {\n            newIndices.push(index.getX(i2));\n            newIndices.push(index.getX(i2 + 1));\n            newIndices.push(index.getX(i2 + 2));\n          } else {\n            newIndices.push(index.getX(i2 + 2));\n            newIndices.push(index.getX(i2 + 1));\n            newIndices.push(index.getX(i2));\n          }\n        }\n      }\n    }\n    if (newIndices.length / 3 !== numberOfTriangles) {\n      console.error(\"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.\");\n    }\n    const newGeometry = geometry.clone();\n    newGeometry.setIndex(newIndices);\n    newGeometry.clearGroups();\n    return newGeometry;\n  } else {\n    console.error(\"THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:\", drawMode);\n    return geometry;\n  }\n}\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\nvar fleb = new u8([\n  0,\n  0,\n  0,\n  0,\n  0,\n  0,\n  0,\n  0,\n  1,\n  1,\n  1,\n  1,\n  2,\n  2,\n  2,\n  2,\n  3,\n  3,\n  3,\n  3,\n  4,\n  4,\n  4,\n  4,\n  5,\n  5,\n  5,\n  5,\n  0,\n  /* unused */\n  0,\n  0,\n  /* impossible */\n  0\n]);\nvar fdeb = new u8([\n  0,\n  0,\n  0,\n  0,\n  1,\n  1,\n  2,\n  2,\n  3,\n  3,\n  4,\n  4,\n  5,\n  5,\n  6,\n  6,\n  7,\n  7,\n  8,\n  8,\n  9,\n  9,\n  10,\n  10,\n  11,\n  11,\n  12,\n  12,\n  13,\n  13,\n  /* unused */\n  0,\n  0\n]);\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nvar freb = function(eb, start) {\n  var b2 = new u16(31);\n  for (var i2 = 0; i2 < 31; ++i2) {\n    b2[i2] = start += 1 << eb[i2 - 1];\n  }\n  var r2 = new u32(b2[30]);\n  for (var i2 = 1; i2 < 30; ++i2) {\n    for (var j2 = b2[i2]; j2 < b2[i2 + 1]; ++j2) {\n      r2[j2] = j2 - b2[i2] << 5 | i2;\n    }\n  }\n  return [b2, r2];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0];\nvar rev = new u16(32768);\nfor (var i$1 = 0; i$1 < 32768; ++i$1) {\n  var x$1 = (i$1 & 43690) >>> 1 | (i$1 & 21845) << 1;\n  x$1 = (x$1 & 52428) >>> 2 | (x$1 & 13107) << 2;\n  x$1 = (x$1 & 61680) >>> 4 | (x$1 & 3855) << 4;\n  rev[i$1] = ((x$1 & 65280) >>> 8 | (x$1 & 255) << 8) >>> 1;\n}\nvar hMap = function(cd, mb, r2) {\n  var s2 = cd.length;\n  var i2 = 0;\n  var l2 = new u16(mb);\n  for (; i2 < s2; ++i2)\n    ++l2[cd[i2] - 1];\n  var le = new u16(mb);\n  for (i2 = 0; i2 < mb; ++i2) {\n    le[i2] = le[i2 - 1] + l2[i2 - 1] << 1;\n  }\n  var co;\n  if (r2) {\n    co = new u16(1 << mb);\n    var rvb = 15 - mb;\n    for (i2 = 0; i2 < s2; ++i2) {\n      if (cd[i2]) {\n        var sv = i2 << 4 | cd[i2];\n        var r_1 = mb - cd[i2];\n        var v2 = le[cd[i2] - 1]++ << r_1;\n        for (var m2 = v2 | (1 << r_1) - 1; v2 <= m2; ++v2) {\n          co[rev[v2] >>> rvb] = sv;\n        }\n      }\n    }\n  } else {\n    co = new u16(s2);\n    for (i2 = 0; i2 < s2; ++i2) {\n      if (cd[i2]) {\n        co[i2] = rev[le[cd[i2] - 1]++] >>> 15 - cd[i2];\n      }\n    }\n  }\n  return co;\n};\nvar flt = new u8(288);\nfor (var i$1 = 0; i$1 < 144; ++i$1)\n  flt[i$1] = 8;\nfor (var i$1 = 144; i$1 < 256; ++i$1)\n  flt[i$1] = 9;\nfor (var i$1 = 256; i$1 < 280; ++i$1)\n  flt[i$1] = 7;\nfor (var i$1 = 280; i$1 < 288; ++i$1)\n  flt[i$1] = 8;\nvar fdt = new u8(32);\nfor (var i$1 = 0; i$1 < 32; ++i$1)\n  fdt[i$1] = 5;\nvar flrm = /* @__PURE__ */ hMap(flt, 9, 1);\nvar fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);\nvar max = function(a2) {\n  var m2 = a2[0];\n  for (var i2 = 1; i2 < a2.length; ++i2) {\n    if (a2[i2] > m2)\n      m2 = a2[i2];\n  }\n  return m2;\n};\nvar bits = function(d2, p2, m2) {\n  var o2 = p2 / 8 | 0;\n  return (d2[o2] | d2[o2 + 1] << 8) >> (p2 & 7) & m2;\n};\nvar bits16 = function(d2, p2) {\n  var o2 = p2 / 8 | 0;\n  return (d2[o2] | d2[o2 + 1] << 8 | d2[o2 + 2] << 16) >> (p2 & 7);\n};\nvar shft = function(p2) {\n  return (p2 / 8 | 0) + (p2 & 7 && 1);\n};\nvar slc = function(v2, s2, e2) {\n  if (e2 == null || e2 > v2.length)\n    e2 = v2.length;\n  var n2 = new (v2 instanceof u16 ? u16 : v2 instanceof u32 ? u32 : u8)(e2 - s2);\n  n2.set(v2.subarray(s2, e2));\n  return n2;\n};\nvar inflt = function(dat, buf, st) {\n  var sl = dat.length;\n  if (!sl || st && !st.l && sl < 5)\n    return buf || new u8(0);\n  var noBuf = !buf || st;\n  var noSt = !st || st.i;\n  if (!st)\n    st = {};\n  if (!buf)\n    buf = new u8(sl * 3);\n  var cbuf = function(l3) {\n    var bl = buf.length;\n    if (l3 > bl) {\n      var nbuf = new u8(Math.max(bl * 2, l3));\n      nbuf.set(buf);\n      buf = nbuf;\n    }\n  };\n  var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n  var tbts = sl * 8;\n  do {\n    if (!lm) {\n      st.f = final = bits(dat, pos, 1);\n      var type = bits(dat, pos + 1, 3);\n      pos += 3;\n      if (!type) {\n        var s2 = shft(pos) + 4, l2 = dat[s2 - 4] | dat[s2 - 3] << 8, t2 = s2 + l2;\n        if (t2 > sl) {\n          if (noSt)\n            throw \"unexpected EOF\";\n          break;\n        }\n        if (noBuf)\n          cbuf(bt + l2);\n        buf.set(dat.subarray(s2, t2), bt);\n        st.b = bt += l2, st.p = pos = t2 * 8;\n        continue;\n      } else if (type == 1)\n        lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n      else if (type == 2) {\n        var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n        var tl = hLit + bits(dat, pos + 5, 31) + 1;\n        pos += 14;\n        var ldt = new u8(tl);\n        var clt = new u8(19);\n        for (var i2 = 0; i2 < hcLen; ++i2) {\n          clt[clim[i2]] = bits(dat, pos + i2 * 3, 7);\n        }\n        pos += hcLen * 3;\n        var clb = max(clt), clbmsk = (1 << clb) - 1;\n        var clm = hMap(clt, clb, 1);\n        for (var i2 = 0; i2 < tl; ) {\n          var r2 = clm[bits(dat, pos, clbmsk)];\n          pos += r2 & 15;\n          var s2 = r2 >>> 4;\n          if (s2 < 16) {\n            ldt[i2++] = s2;\n          } else {\n            var c2 = 0, n2 = 0;\n            if (s2 == 16)\n              n2 = 3 + bits(dat, pos, 3), pos += 2, c2 = ldt[i2 - 1];\n            else if (s2 == 17)\n              n2 = 3 + bits(dat, pos, 7), pos += 3;\n            else if (s2 == 18)\n              n2 = 11 + bits(dat, pos, 127), pos += 7;\n            while (n2--)\n              ldt[i2++] = c2;\n          }\n        }\n        var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n        lbt = max(lt);\n        dbt = max(dt);\n        lm = hMap(lt, lbt, 1);\n        dm = hMap(dt, dbt, 1);\n      } else\n        throw \"invalid block type\";\n      if (pos > tbts) {\n        if (noSt)\n          throw \"unexpected EOF\";\n        break;\n      }\n    }\n    if (noBuf)\n      cbuf(bt + 131072);\n    var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n    var lpos = pos;\n    for (; ; lpos = pos) {\n      var c2 = lm[bits16(dat, pos) & lms], sym = c2 >>> 4;\n      pos += c2 & 15;\n      if (pos > tbts) {\n        if (noSt)\n          throw \"unexpected EOF\";\n        break;\n      }\n      if (!c2)\n        throw \"invalid length/literal\";\n      if (sym < 256)\n        buf[bt++] = sym;\n      else if (sym == 256) {\n        lpos = pos, lm = null;\n        break;\n      } else {\n        var add = sym - 254;\n        if (sym > 264) {\n          var i2 = sym - 257, b2 = fleb[i2];\n          add = bits(dat, pos, (1 << b2) - 1) + fl[i2];\n          pos += b2;\n        }\n        var d2 = dm[bits16(dat, pos) & dms], dsym = d2 >>> 4;\n        if (!d2)\n          throw \"invalid distance\";\n        pos += d2 & 15;\n        var dt = fd[dsym];\n        if (dsym > 3) {\n          var b2 = fdeb[dsym];\n          dt += bits16(dat, pos) & (1 << b2) - 1, pos += b2;\n        }\n        if (pos > tbts) {\n          if (noSt)\n            throw \"unexpected EOF\";\n          break;\n        }\n        if (noBuf)\n          cbuf(bt + 131072);\n        var end = bt + add;\n        for (; bt < end; bt += 4) {\n          buf[bt] = buf[bt - dt];\n          buf[bt + 1] = buf[bt + 1 - dt];\n          buf[bt + 2] = buf[bt + 2 - dt];\n          buf[bt + 3] = buf[bt + 3 - dt];\n        }\n        bt = end;\n      }\n    }\n    st.l = lm, st.p = lpos, st.b = bt;\n    if (lm)\n      final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n  } while (!final);\n  return bt == buf.length ? buf : slc(buf, 0, bt);\n};\nvar et = /* @__PURE__ */ new u8(0);\nvar zlv = function(d2) {\n  if ((d2[0] & 15) != 8 || d2[0] >>> 4 > 7 || (d2[0] << 8 | d2[1]) % 31)\n    throw \"invalid zlib data\";\n  if (d2[1] & 32)\n    throw \"invalid zlib data: preset dictionaries not supported\";\n};\nfunction unzlibSync(data, out) {\n  return inflt((zlv(data), data.subarray(2, -4)), out);\n}\nvar td = typeof TextDecoder != \"undefined\" && /* @__PURE__ */ new TextDecoder();\nvar tds = 0;\ntry {\n  td.decode(et, { stream: true });\n  tds = 1;\n} catch (e2) {\n}\nconst isCubeTexture = (def) => def && def.isCubeTexture;\nclass GroundProjectedEnv extends Mesh {\n  constructor(texture, options) {\n    var _a2, _b2;\n    const isCubeMap = isCubeTexture(texture);\n    const w2 = (_b2 = isCubeMap ? (_a2 = texture.image[0]) == null ? void 0 : _a2.width : texture.image.width) != null ? _b2 : 1024;\n    const cubeSize = w2 / 4;\n    const _lodMax = Math.floor(Math.log2(cubeSize));\n    const _cubeSize = Math.pow(2, _lodMax);\n    const width = 3 * Math.max(_cubeSize, 16 * 7);\n    const height = 4 * _cubeSize;\n    const defines = [\n      isCubeMap ? \"#define ENVMAP_TYPE_CUBE\" : \"\",\n      `#define CUBEUV_TEXEL_WIDTH ${1 / width}`,\n      `#define CUBEUV_TEXEL_HEIGHT ${1 / height}`,\n      `#define CUBEUV_MAX_MIP ${_lodMax}.0`\n    ];\n    const vertexShader2 = (\n      /* glsl */\n      `\n        varying vec3 vWorldPosition;\n        void main() \n        {\n            vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );\n            vWorldPosition = worldPosition.xyz;\n            \n            gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n        }\n        `\n    );\n    const fragmentShader2 = defines.join(\"\\n\") + /* glsl */\n    `\n        #define ENVMAP_TYPE_CUBE_UV\n        varying vec3 vWorldPosition;\n        uniform float radius;\n        uniform float height;\n        uniform float angle;\n        #ifdef ENVMAP_TYPE_CUBE\n            uniform samplerCube map;\n        #else\n            uniform sampler2D map;\n        #endif\n        // From: https://www.shadertoy.com/view/4tsBD7\n        float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r ) \n        {\n            float d = dot ( rd, n );\n            \n            if( d > 0.0 ) { return 1e6; }\n            \n            vec3  o = ro - c;\n            float t = - dot( n, o ) / d;\n            vec3  q = o + rd * t;\n            \n            return ( dot( q, q ) < r * r ) ? t : 1e6;\n        }\n        // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm\n        float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra ) \n        {\n            vec3 oc = ro - ce;\n            float b = dot( oc, rd );\n            float c = dot( oc, oc ) - ra * ra;\n            float h = b * b - c;\n            \n            if( h < 0.0 ) { return -1.0; }\n            \n            h = sqrt( h );\n            \n            return - b + h;\n        }\n        vec3 project() \n        {\n            vec3 p = normalize( vWorldPosition );\n            vec3 camPos = cameraPosition;\n            camPos.y -= height;\n            float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );\n            if( intersection > 0.0 ) {\n                \n                vec3 h = vec3( 0.0, - height, 0.0 );\n                float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );\n                p = ( camPos + min( intersection, intersection2 ) * p ) / radius;\n            } else {\n                p = vec3( 0.0, 1.0, 0.0 );\n            }\n            return p;\n        }\n        #include <common>\n        #include <cube_uv_reflection_fragment>\n        void main() \n        {\n            vec3 projectedWorldPosition = project();\n            \n            #ifdef ENVMAP_TYPE_CUBE\n                vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;\n            #else\n                vec3 direction = normalize( projectedWorldPosition );\n                vec2 uv = equirectUv( direction );\n                vec3 outcolor = texture2D( map, uv ).rgb;\n            #endif\n            gl_FragColor = vec4( outcolor, 1.0 );\n            #include <tonemapping_fragment>\n            #include <${version$1 >= 154 ? \"colorspace_fragment\" : \"encodings_fragment\"}>\n        }\n        `;\n    const uniforms = {\n      map: { value: texture },\n      height: { value: (options == null ? void 0 : options.height) || 15 },\n      radius: { value: (options == null ? void 0 : options.radius) || 100 }\n    };\n    const geometry = new IcosahedronGeometry(1, 16);\n    const material = new ShaderMaterial({\n      uniforms,\n      fragmentShader: fragmentShader2,\n      vertexShader: vertexShader2,\n      side: DoubleSide\n    });\n    super(geometry, material);\n  }\n  set radius(radius) {\n    this.material.uniforms.radius.value = radius;\n  }\n  get radius() {\n    return this.material.uniforms.radius.value;\n  }\n  set height(height) {\n    this.material.uniforms.height.value = height;\n  }\n  get height() {\n    return this.material.uniforms.height.value;\n  }\n}\nfunction decodeText(array) {\n  if (typeof TextDecoder !== \"undefined\") {\n    return new TextDecoder().decode(array);\n  }\n  let s2 = \"\";\n  for (let i2 = 0, il = array.length; i2 < il; i2++) {\n    s2 += String.fromCharCode(array[i2]);\n  }\n  try {\n    return decodeURIComponent(escape(s2));\n  } catch (e2) {\n    return s2;\n  }\n}\nconst SRGBColorSpace = \"srgb\";\nconst LinearSRGBColorSpace = \"srgb-linear\";\nconst sRGBEncoding$1 = 3001;\nconst LinearEncoding$1 = 3e3;\nclass GLTFLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.dracoLoader = null;\n    this.ktx2Loader = null;\n    this.meshoptDecoder = null;\n    this.pluginCallbacks = [];\n    this.register(function(parser) {\n      return new GLTFMaterialsClearcoatExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsDispersionExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFTextureBasisUExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFTextureWebPExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFTextureAVIFExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsSheenExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsTransmissionExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsVolumeExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsIorExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsEmissiveStrengthExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsSpecularExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsIridescenceExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsAnisotropyExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMaterialsBumpExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFLightsExtension(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMeshoptCompression(parser);\n    });\n    this.register(function(parser) {\n      return new GLTFMeshGpuInstancing(parser);\n    });\n  }\n  load(url, onLoad, onProgress, onError) {\n    const scope = this;\n    let resourcePath;\n    if (this.resourcePath !== \"\") {\n      resourcePath = this.resourcePath;\n    } else if (this.path !== \"\") {\n      const relativeUrl = LoaderUtils.extractUrlBase(url);\n      resourcePath = LoaderUtils.resolveURL(relativeUrl, this.path);\n    } else {\n      resourcePath = LoaderUtils.extractUrlBase(url);\n    }\n    this.manager.itemStart(url);\n    const _onError = function(e2) {\n      if (onError) {\n        onError(e2);\n      } else {\n        console.error(e2);\n      }\n      scope.manager.itemError(url);\n      scope.manager.itemEnd(url);\n    };\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(\n      url,\n      function(data) {\n        try {\n          scope.parse(\n            data,\n            resourcePath,\n            function(gltf) {\n              onLoad(gltf);\n              scope.manager.itemEnd(url);\n            },\n            _onError\n          );\n        } catch (e2) {\n          _onError(e2);\n        }\n      },\n      onProgress,\n      _onError\n    );\n  }\n  setDRACOLoader(dracoLoader2) {\n    this.dracoLoader = dracoLoader2;\n    return this;\n  }\n  setDDSLoader() {\n    throw new Error('THREE.GLTFLoader: \"MSFT_texture_dds\" no longer supported. Please update to \"KHR_texture_basisu\".');\n  }\n  setKTX2Loader(ktx2Loader) {\n    this.ktx2Loader = ktx2Loader;\n    return this;\n  }\n  setMeshoptDecoder(meshoptDecoder) {\n    this.meshoptDecoder = meshoptDecoder;\n    return this;\n  }\n  register(callback) {\n    if (this.pluginCallbacks.indexOf(callback) === -1) {\n      this.pluginCallbacks.push(callback);\n    }\n    return this;\n  }\n  unregister(callback) {\n    if (this.pluginCallbacks.indexOf(callback) !== -1) {\n      this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(callback), 1);\n    }\n    return this;\n  }\n  parse(data, path, onLoad, onError) {\n    let json;\n    const extensions2 = {};\n    const plugins = {};\n    if (typeof data === \"string\") {\n      json = JSON.parse(data);\n    } else if (data instanceof ArrayBuffer) {\n      const magic = decodeText(new Uint8Array(data.slice(0, 4)));\n      if (magic === BINARY_EXTENSION_HEADER_MAGIC) {\n        try {\n          extensions2[EXTENSIONS.KHR_BINARY_GLTF] = new GLTFBinaryExtension(data);\n        } catch (error2) {\n          if (onError)\n            onError(error2);\n          return;\n        }\n        json = JSON.parse(extensions2[EXTENSIONS.KHR_BINARY_GLTF].content);\n      } else {\n        json = JSON.parse(decodeText(new Uint8Array(data)));\n      }\n    } else {\n      json = data;\n    }\n    if (json.asset === void 0 || json.asset.version[0] < 2) {\n      if (onError)\n        onError(new Error(\"THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.\"));\n      return;\n    }\n    const parser = new GLTFParser(json, {\n      path: path || this.resourcePath || \"\",\n      crossOrigin: this.crossOrigin,\n      requestHeader: this.requestHeader,\n      manager: this.manager,\n      ktx2Loader: this.ktx2Loader,\n      meshoptDecoder: this.meshoptDecoder\n    });\n    parser.fileLoader.setRequestHeader(this.requestHeader);\n    for (let i2 = 0; i2 < this.pluginCallbacks.length; i2++) {\n      const plugin = this.pluginCallbacks[i2](parser);\n      if (!plugin.name)\n        console.error(\"THREE.GLTFLoader: Invalid plugin found: missing name\");\n      plugins[plugin.name] = plugin;\n      extensions2[plugin.name] = true;\n    }\n    if (json.extensionsUsed) {\n      for (let i2 = 0; i2 < json.extensionsUsed.length; ++i2) {\n        const extensionName = json.extensionsUsed[i2];\n        const extensionsRequired = json.extensionsRequired || [];\n        switch (extensionName) {\n          case EXTENSIONS.KHR_MATERIALS_UNLIT:\n            extensions2[extensionName] = new GLTFMaterialsUnlitExtension();\n            break;\n          case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\n            extensions2[extensionName] = new GLTFDracoMeshCompressionExtension(json, this.dracoLoader);\n            break;\n          case EXTENSIONS.KHR_TEXTURE_TRANSFORM:\n            extensions2[extensionName] = new GLTFTextureTransformExtension();\n            break;\n          case EXTENSIONS.KHR_MESH_QUANTIZATION:\n            extensions2[extensionName] = new GLTFMeshQuantizationExtension();\n            break;\n          default:\n            if (extensionsRequired.indexOf(extensionName) >= 0 && plugins[extensionName] === void 0) {\n              console.warn('THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".');\n            }\n        }\n      }\n    }\n    parser.setExtensions(extensions2);\n    parser.setPlugins(plugins);\n    parser.parse(onLoad, onError);\n  }\n  parseAsync(data, path) {\n    const scope = this;\n    return new Promise(function(resolve2, reject) {\n      scope.parse(data, path, resolve2, reject);\n    });\n  }\n}\nfunction GLTFRegistry() {\n  let objects = {};\n  return {\n    get: function(key) {\n      return objects[key];\n    },\n    add: function(key, object) {\n      objects[key] = object;\n    },\n    remove: function(key) {\n      delete objects[key];\n    },\n    removeAll: function() {\n      objects = {};\n    }\n  };\n}\nconst EXTENSIONS = {\n  KHR_BINARY_GLTF: \"KHR_binary_glTF\",\n  KHR_DRACO_MESH_COMPRESSION: \"KHR_draco_mesh_compression\",\n  KHR_LIGHTS_PUNCTUAL: \"KHR_lights_punctual\",\n  KHR_MATERIALS_CLEARCOAT: \"KHR_materials_clearcoat\",\n  KHR_MATERIALS_DISPERSION: \"KHR_materials_dispersion\",\n  KHR_MATERIALS_IOR: \"KHR_materials_ior\",\n  KHR_MATERIALS_SHEEN: \"KHR_materials_sheen\",\n  KHR_MATERIALS_SPECULAR: \"KHR_materials_specular\",\n  KHR_MATERIALS_TRANSMISSION: \"KHR_materials_transmission\",\n  KHR_MATERIALS_IRIDESCENCE: \"KHR_materials_iridescence\",\n  KHR_MATERIALS_ANISOTROPY: \"KHR_materials_anisotropy\",\n  KHR_MATERIALS_UNLIT: \"KHR_materials_unlit\",\n  KHR_MATERIALS_VOLUME: \"KHR_materials_volume\",\n  KHR_TEXTURE_BASISU: \"KHR_texture_basisu\",\n  KHR_TEXTURE_TRANSFORM: \"KHR_texture_transform\",\n  KHR_MESH_QUANTIZATION: \"KHR_mesh_quantization\",\n  KHR_MATERIALS_EMISSIVE_STRENGTH: \"KHR_materials_emissive_strength\",\n  EXT_MATERIALS_BUMP: \"EXT_materials_bump\",\n  EXT_TEXTURE_WEBP: \"EXT_texture_webp\",\n  EXT_TEXTURE_AVIF: \"EXT_texture_avif\",\n  EXT_MESHOPT_COMPRESSION: \"EXT_meshopt_compression\",\n  EXT_MESH_GPU_INSTANCING: \"EXT_mesh_gpu_instancing\"\n};\nclass GLTFLightsExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\n    this.cache = { refs: {}, uses: {} };\n  }\n  _markDefs() {\n    const parser = this.parser;\n    const nodeDefs = this.parser.json.nodes || [];\n    for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n      const nodeDef = nodeDefs[nodeIndex];\n      if (nodeDef.extensions && nodeDef.extensions[this.name] && nodeDef.extensions[this.name].light !== void 0) {\n        parser._addNodeRef(this.cache, nodeDef.extensions[this.name].light);\n      }\n    }\n  }\n  _loadLight(lightIndex) {\n    const parser = this.parser;\n    const cacheKey = \"light:\" + lightIndex;\n    let dependency = parser.cache.get(cacheKey);\n    if (dependency)\n      return dependency;\n    const json = parser.json;\n    const extensions2 = json.extensions && json.extensions[this.name] || {};\n    const lightDefs = extensions2.lights || [];\n    const lightDef = lightDefs[lightIndex];\n    let lightNode;\n    const color = new Color(16777215);\n    if (lightDef.color !== void 0)\n      color.setRGB(lightDef.color[0], lightDef.color[1], lightDef.color[2], LinearSRGBColorSpace);\n    const range = lightDef.range !== void 0 ? lightDef.range : 0;\n    switch (lightDef.type) {\n      case \"directional\":\n        lightNode = new DirectionalLight(color);\n        lightNode.target.position.set(0, 0, -1);\n        lightNode.add(lightNode.target);\n        break;\n      case \"point\":\n        lightNode = new PointLight(color);\n        lightNode.distance = range;\n        break;\n      case \"spot\":\n        lightNode = new SpotLight(color);\n        lightNode.distance = range;\n        lightDef.spot = lightDef.spot || {};\n        lightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== void 0 ? lightDef.spot.innerConeAngle : 0;\n        lightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== void 0 ? lightDef.spot.outerConeAngle : Math.PI / 4;\n        lightNode.angle = lightDef.spot.outerConeAngle;\n        lightNode.penumbra = 1 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\n        lightNode.target.position.set(0, 0, -1);\n        lightNode.add(lightNode.target);\n        break;\n      default:\n        throw new Error(\"THREE.GLTFLoader: Unexpected light type: \" + lightDef.type);\n    }\n    lightNode.position.set(0, 0, 0);\n    lightNode.decay = 2;\n    assignExtrasToUserData(lightNode, lightDef);\n    if (lightDef.intensity !== void 0)\n      lightNode.intensity = lightDef.intensity;\n    lightNode.name = parser.createUniqueName(lightDef.name || \"light_\" + lightIndex);\n    dependency = Promise.resolve(lightNode);\n    parser.cache.add(cacheKey, dependency);\n    return dependency;\n  }\n  getDependency(type, index) {\n    if (type !== \"light\")\n      return;\n    return this._loadLight(index);\n  }\n  createNodeAttachment(nodeIndex) {\n    const self2 = this;\n    const parser = this.parser;\n    const json = parser.json;\n    const nodeDef = json.nodes[nodeIndex];\n    const lightDef = nodeDef.extensions && nodeDef.extensions[this.name] || {};\n    const lightIndex = lightDef.light;\n    if (lightIndex === void 0)\n      return null;\n    return this._loadLight(lightIndex).then(function(light) {\n      return parser._getNodeRef(self2.cache, lightIndex, light);\n    });\n  }\n}\nclass GLTFMaterialsUnlitExtension {\n  constructor() {\n    this.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\n  }\n  getMaterialType() {\n    return MeshBasicMaterial;\n  }\n  extendParams(materialParams, materialDef, parser) {\n    const pending = [];\n    materialParams.color = new Color(1, 1, 1);\n    materialParams.opacity = 1;\n    const metallicRoughness = materialDef.pbrMetallicRoughness;\n    if (metallicRoughness) {\n      if (Array.isArray(metallicRoughness.baseColorFactor)) {\n        const array = metallicRoughness.baseColorFactor;\n        materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace);\n        materialParams.opacity = array[3];\n      }\n      if (metallicRoughness.baseColorTexture !== void 0) {\n        pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture, SRGBColorSpace));\n      }\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsEmissiveStrengthExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_EMISSIVE_STRENGTH;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const emissiveStrength = materialDef.extensions[this.name].emissiveStrength;\n    if (emissiveStrength !== void 0) {\n      materialParams.emissiveIntensity = emissiveStrength;\n    }\n    return Promise.resolve();\n  }\n}\nclass GLTFMaterialsClearcoatExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    if (extension.clearcoatFactor !== void 0) {\n      materialParams.clearcoat = extension.clearcoatFactor;\n    }\n    if (extension.clearcoatTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"clearcoatMap\", extension.clearcoatTexture));\n    }\n    if (extension.clearcoatRoughnessFactor !== void 0) {\n      materialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\n    }\n    if (extension.clearcoatRoughnessTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"clearcoatRoughnessMap\", extension.clearcoatRoughnessTexture));\n    }\n    if (extension.clearcoatNormalTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"clearcoatNormalMap\", extension.clearcoatNormalTexture));\n      if (extension.clearcoatNormalTexture.scale !== void 0) {\n        const scale = extension.clearcoatNormalTexture.scale;\n        materialParams.clearcoatNormalScale = new Vector2(scale, scale);\n      }\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsDispersionExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_DISPERSION;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const extension = materialDef.extensions[this.name];\n    materialParams.dispersion = extension.dispersion !== void 0 ? extension.dispersion : 0;\n    return Promise.resolve();\n  }\n}\nclass GLTFMaterialsIridescenceExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_IRIDESCENCE;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    if (extension.iridescenceFactor !== void 0) {\n      materialParams.iridescence = extension.iridescenceFactor;\n    }\n    if (extension.iridescenceTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"iridescenceMap\", extension.iridescenceTexture));\n    }\n    if (extension.iridescenceIor !== void 0) {\n      materialParams.iridescenceIOR = extension.iridescenceIor;\n    }\n    if (materialParams.iridescenceThicknessRange === void 0) {\n      materialParams.iridescenceThicknessRange = [100, 400];\n    }\n    if (extension.iridescenceThicknessMinimum !== void 0) {\n      materialParams.iridescenceThicknessRange[0] = extension.iridescenceThicknessMinimum;\n    }\n    if (extension.iridescenceThicknessMaximum !== void 0) {\n      materialParams.iridescenceThicknessRange[1] = extension.iridescenceThicknessMaximum;\n    }\n    if (extension.iridescenceThicknessTexture !== void 0) {\n      pending.push(\n        parser.assignTexture(materialParams, \"iridescenceThicknessMap\", extension.iridescenceThicknessTexture)\n      );\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsSheenExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_SHEEN;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    materialParams.sheenColor = new Color(0, 0, 0);\n    materialParams.sheenRoughness = 0;\n    materialParams.sheen = 1;\n    const extension = materialDef.extensions[this.name];\n    if (extension.sheenColorFactor !== void 0) {\n      const colorFactor = extension.sheenColorFactor;\n      materialParams.sheenColor.setRGB(colorFactor[0], colorFactor[1], colorFactor[2], LinearSRGBColorSpace);\n    }\n    if (extension.sheenRoughnessFactor !== void 0) {\n      materialParams.sheenRoughness = extension.sheenRoughnessFactor;\n    }\n    if (extension.sheenColorTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"sheenColorMap\", extension.sheenColorTexture, SRGBColorSpace));\n    }\n    if (extension.sheenRoughnessTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"sheenRoughnessMap\", extension.sheenRoughnessTexture));\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsTransmissionExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    if (extension.transmissionFactor !== void 0) {\n      materialParams.transmission = extension.transmissionFactor;\n    }\n    if (extension.transmissionTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"transmissionMap\", extension.transmissionTexture));\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsVolumeExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_VOLUME;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    materialParams.thickness = extension.thicknessFactor !== void 0 ? extension.thicknessFactor : 0;\n    if (extension.thicknessTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"thicknessMap\", extension.thicknessTexture));\n    }\n    materialParams.attenuationDistance = extension.attenuationDistance || Infinity;\n    const colorArray = extension.attenuationColor || [1, 1, 1];\n    materialParams.attenuationColor = new Color().setRGB(\n      colorArray[0],\n      colorArray[1],\n      colorArray[2],\n      LinearSRGBColorSpace\n    );\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsIorExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_IOR;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const extension = materialDef.extensions[this.name];\n    materialParams.ior = extension.ior !== void 0 ? extension.ior : 1.5;\n    return Promise.resolve();\n  }\n}\nclass GLTFMaterialsSpecularExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_SPECULAR;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    materialParams.specularIntensity = extension.specularFactor !== void 0 ? extension.specularFactor : 1;\n    if (extension.specularTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"specularIntensityMap\", extension.specularTexture));\n    }\n    const colorArray = extension.specularColorFactor || [1, 1, 1];\n    materialParams.specularColor = new Color().setRGB(colorArray[0], colorArray[1], colorArray[2], LinearSRGBColorSpace);\n    if (extension.specularColorTexture !== void 0) {\n      pending.push(\n        parser.assignTexture(materialParams, \"specularColorMap\", extension.specularColorTexture, SRGBColorSpace)\n      );\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsBumpExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.EXT_MATERIALS_BUMP;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    materialParams.bumpScale = extension.bumpFactor !== void 0 ? extension.bumpFactor : 1;\n    if (extension.bumpTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"bumpMap\", extension.bumpTexture));\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFMaterialsAnisotropyExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_MATERIALS_ANISOTROPY;\n  }\n  getMaterialType(materialIndex) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name])\n      return null;\n    return MeshPhysicalMaterial;\n  }\n  extendMaterialParams(materialIndex, materialParams) {\n    const parser = this.parser;\n    const materialDef = parser.json.materials[materialIndex];\n    if (!materialDef.extensions || !materialDef.extensions[this.name]) {\n      return Promise.resolve();\n    }\n    const pending = [];\n    const extension = materialDef.extensions[this.name];\n    if (extension.anisotropyStrength !== void 0) {\n      materialParams.anisotropy = extension.anisotropyStrength;\n    }\n    if (extension.anisotropyRotation !== void 0) {\n      materialParams.anisotropyRotation = extension.anisotropyRotation;\n    }\n    if (extension.anisotropyTexture !== void 0) {\n      pending.push(parser.assignTexture(materialParams, \"anisotropyMap\", extension.anisotropyTexture));\n    }\n    return Promise.all(pending);\n  }\n}\nclass GLTFTextureBasisUExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.KHR_TEXTURE_BASISU;\n  }\n  loadTexture(textureIndex) {\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n    if (!textureDef.extensions || !textureDef.extensions[this.name]) {\n      return null;\n    }\n    const extension = textureDef.extensions[this.name];\n    const loader = parser.options.ktx2Loader;\n    if (!loader) {\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n        throw new Error(\"THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures\");\n      } else {\n        return null;\n      }\n    }\n    return parser.loadTextureImage(textureIndex, extension.source, loader);\n  }\n}\nclass GLTFTextureWebPExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.EXT_TEXTURE_WEBP;\n    this.isSupported = null;\n  }\n  loadTexture(textureIndex) {\n    const name = this.name;\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n    if (!textureDef.extensions || !textureDef.extensions[name]) {\n      return null;\n    }\n    const extension = textureDef.extensions[name];\n    const source = json.images[extension.source];\n    let loader = parser.textureLoader;\n    if (source.uri) {\n      const handler = parser.options.manager.getHandler(source.uri);\n      if (handler !== null)\n        loader = handler;\n    }\n    return this.detectSupport().then(function(isSupported) {\n      if (isSupported)\n        return parser.loadTextureImage(textureIndex, extension.source, loader);\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\n        throw new Error(\"THREE.GLTFLoader: WebP required by asset but unsupported.\");\n      }\n      return parser.loadTexture(textureIndex);\n    });\n  }\n  detectSupport() {\n    if (!this.isSupported) {\n      this.isSupported = new Promise(function(resolve2) {\n        const image = new Image();\n        image.src = \"data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA\";\n        image.onload = image.onerror = function() {\n          resolve2(image.height === 1);\n        };\n      });\n    }\n    return this.isSupported;\n  }\n}\nclass GLTFTextureAVIFExtension {\n  constructor(parser) {\n    this.parser = parser;\n    this.name = EXTENSIONS.EXT_TEXTURE_AVIF;\n    this.isSupported = null;\n  }\n  loadTexture(textureIndex) {\n    const name = this.name;\n    const parser = this.parser;\n    const json = parser.json;\n    const textureDef = json.textures[textureIndex];\n    if (!textureDef.extensions || !textureDef.extensions[name]) {\n      return null;\n    }\n    const extension = textureDef.extensions[name];\n    const source = json.images[extension.source];\n    let loader = parser.textureLoader;\n    if (source.uri) {\n      const handler = parser.options.manager.getHandler(source.uri);\n      if (handler !== null)\n        loader = handler;\n    }\n    return this.detectSupport().then(function(isSupported) {\n      if (isSupported)\n        return parser.loadTextureImage(textureIndex, extension.source, loader);\n      if (json.extensionsRequired && json.extensionsRequired.indexOf(name) >= 0) {\n        throw new Error(\"THREE.GLTFLoader: AVIF required by asset but unsupported.\");\n      }\n      return parser.loadTexture(textureIndex);\n    });\n  }\n  detectSupport() {\n    if (!this.isSupported) {\n      this.isSupported = new Promise(function(resolve2) {\n        const image = new Image();\n        image.src = \"data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=\";\n        image.onload = image.onerror = function() {\n          resolve2(image.height === 1);\n        };\n      });\n    }\n    return this.isSupported;\n  }\n}\nclass GLTFMeshoptCompression {\n  constructor(parser) {\n    this.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\n    this.parser = parser;\n  }\n  loadBufferView(index) {\n    const json = this.parser.json;\n    const bufferView = json.bufferViews[index];\n    if (bufferView.extensions && bufferView.extensions[this.name]) {\n      const extensionDef = bufferView.extensions[this.name];\n      const buffer = this.parser.getDependency(\"buffer\", extensionDef.buffer);\n      const decoder = this.parser.options.meshoptDecoder;\n      if (!decoder || !decoder.supported) {\n        if (json.extensionsRequired && json.extensionsRequired.indexOf(this.name) >= 0) {\n          throw new Error(\"THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files\");\n        } else {\n          return null;\n        }\n      }\n      return buffer.then(function(res) {\n        const byteOffset = extensionDef.byteOffset || 0;\n        const byteLength = extensionDef.byteLength || 0;\n        const count = extensionDef.count;\n        const stride = extensionDef.byteStride;\n        const source = new Uint8Array(res, byteOffset, byteLength);\n        if (decoder.decodeGltfBufferAsync) {\n          return decoder.decodeGltfBufferAsync(count, stride, source, extensionDef.mode, extensionDef.filter).then(function(res2) {\n            return res2.buffer;\n          });\n        } else {\n          return decoder.ready.then(function() {\n            const result = new ArrayBuffer(count * stride);\n            decoder.decodeGltfBuffer(\n              new Uint8Array(result),\n              count,\n              stride,\n              source,\n              extensionDef.mode,\n              extensionDef.filter\n            );\n            return result;\n          });\n        }\n      });\n    } else {\n      return null;\n    }\n  }\n}\nclass GLTFMeshGpuInstancing {\n  constructor(parser) {\n    this.name = EXTENSIONS.EXT_MESH_GPU_INSTANCING;\n    this.parser = parser;\n  }\n  createNodeMesh(nodeIndex) {\n    const json = this.parser.json;\n    const nodeDef = json.nodes[nodeIndex];\n    if (!nodeDef.extensions || !nodeDef.extensions[this.name] || nodeDef.mesh === void 0) {\n      return null;\n    }\n    const meshDef = json.meshes[nodeDef.mesh];\n    for (const primitive of meshDef.primitives) {\n      if (primitive.mode !== WEBGL_CONSTANTS.TRIANGLES && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_STRIP && primitive.mode !== WEBGL_CONSTANTS.TRIANGLE_FAN && primitive.mode !== void 0) {\n        return null;\n      }\n    }\n    const extensionDef = nodeDef.extensions[this.name];\n    const attributesDef = extensionDef.attributes;\n    const pending = [];\n    const attributes = {};\n    for (const key in attributesDef) {\n      pending.push(\n        this.parser.getDependency(\"accessor\", attributesDef[key]).then((accessor) => {\n          attributes[key] = accessor;\n          return attributes[key];\n        })\n      );\n    }\n    if (pending.length < 1) {\n      return null;\n    }\n    pending.push(this.parser.createNodeMesh(nodeIndex));\n    return Promise.all(pending).then((results) => {\n      const nodeObject = results.pop();\n      const meshes = nodeObject.isGroup ? nodeObject.children : [nodeObject];\n      const count = results[0].count;\n      const instancedMeshes = [];\n      for (const mesh of meshes) {\n        const m2 = new Matrix4();\n        const p2 = new Vector3();\n        const q2 = new Quaternion();\n        const s2 = new Vector3(1, 1, 1);\n        const instancedMesh = new InstancedMesh(mesh.geometry, mesh.material, count);\n        for (let i2 = 0; i2 < count; i2++) {\n          if (attributes.TRANSLATION) {\n            p2.fromBufferAttribute(attributes.TRANSLATION, i2);\n          }\n          if (attributes.ROTATION) {\n            q2.fromBufferAttribute(attributes.ROTATION, i2);\n          }\n          if (attributes.SCALE) {\n            s2.fromBufferAttribute(attributes.SCALE, i2);\n          }\n          instancedMesh.setMatrixAt(i2, m2.compose(p2, q2, s2));\n        }\n        for (const attributeName in attributes) {\n          if (attributeName === \"_COLOR_0\") {\n            const attr = attributes[attributeName];\n            instancedMesh.instanceColor = new InstancedBufferAttribute(attr.array, attr.itemSize, attr.normalized);\n          } else if (attributeName !== \"TRANSLATION\" && attributeName !== \"ROTATION\" && attributeName !== \"SCALE\") {\n            mesh.geometry.setAttribute(attributeName, attributes[attributeName]);\n          }\n        }\n        Object3D.prototype.copy.call(instancedMesh, mesh);\n        this.parser.assignFinalMaterial(instancedMesh);\n        instancedMeshes.push(instancedMesh);\n      }\n      if (nodeObject.isGroup) {\n        nodeObject.clear();\n        nodeObject.add(...instancedMeshes);\n        return nodeObject;\n      }\n      return instancedMeshes[0];\n    });\n  }\n}\nconst BINARY_EXTENSION_HEADER_MAGIC = \"glTF\";\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\nconst BINARY_EXTENSION_CHUNK_TYPES = { JSON: 1313821514, BIN: 5130562 };\nclass GLTFBinaryExtension {\n  constructor(data) {\n    this.name = EXTENSIONS.KHR_BINARY_GLTF;\n    this.content = null;\n    this.body = null;\n    const headerView = new DataView(data, 0, BINARY_EXTENSION_HEADER_LENGTH);\n    this.header = {\n      magic: decodeText(new Uint8Array(data.slice(0, 4))),\n      version: headerView.getUint32(4, true),\n      length: headerView.getUint32(8, true)\n    };\n    if (this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n      throw new Error(\"THREE.GLTFLoader: Unsupported glTF-Binary header.\");\n    } else if (this.header.version < 2) {\n      throw new Error(\"THREE.GLTFLoader: Legacy binary file detected.\");\n    }\n    const chunkContentsLength = this.header.length - BINARY_EXTENSION_HEADER_LENGTH;\n    const chunkView = new DataView(data, BINARY_EXTENSION_HEADER_LENGTH);\n    let chunkIndex = 0;\n    while (chunkIndex < chunkContentsLength) {\n      const chunkLength = chunkView.getUint32(chunkIndex, true);\n      chunkIndex += 4;\n      const chunkType = chunkView.getUint32(chunkIndex, true);\n      chunkIndex += 4;\n      if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON) {\n        const contentArray = new Uint8Array(data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength);\n        this.content = decodeText(contentArray);\n      } else if (chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN) {\n        const byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\n        this.body = data.slice(byteOffset, byteOffset + chunkLength);\n      }\n      chunkIndex += chunkLength;\n    }\n    if (this.content === null) {\n      throw new Error(\"THREE.GLTFLoader: JSON content not found.\");\n    }\n  }\n}\nclass GLTFDracoMeshCompressionExtension {\n  constructor(json, dracoLoader2) {\n    if (!dracoLoader2) {\n      throw new Error(\"THREE.GLTFLoader: No DRACOLoader instance provided.\");\n    }\n    this.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\n    this.json = json;\n    this.dracoLoader = dracoLoader2;\n    this.dracoLoader.preload();\n  }\n  decodePrimitive(primitive, parser) {\n    const json = this.json;\n    const dracoLoader2 = this.dracoLoader;\n    const bufferViewIndex = primitive.extensions[this.name].bufferView;\n    const gltfAttributeMap = primitive.extensions[this.name].attributes;\n    const threeAttributeMap = {};\n    const attributeNormalizedMap = {};\n    const attributeTypeMap = {};\n    for (const attributeName in gltfAttributeMap) {\n      const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n      threeAttributeMap[threeAttributeName] = gltfAttributeMap[attributeName];\n    }\n    for (const attributeName in primitive.attributes) {\n      const threeAttributeName = ATTRIBUTES[attributeName] || attributeName.toLowerCase();\n      if (gltfAttributeMap[attributeName] !== void 0) {\n        const accessorDef = json.accessors[primitive.attributes[attributeName]];\n        const componentType = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n        attributeTypeMap[threeAttributeName] = componentType.name;\n        attributeNormalizedMap[threeAttributeName] = accessorDef.normalized === true;\n      }\n    }\n    return parser.getDependency(\"bufferView\", bufferViewIndex).then(function(bufferView) {\n      return new Promise(function(resolve2, reject) {\n        dracoLoader2.decodeDracoFile(\n          bufferView,\n          function(geometry) {\n            for (const attributeName in geometry.attributes) {\n              const attribute = geometry.attributes[attributeName];\n              const normalized = attributeNormalizedMap[attributeName];\n              if (normalized !== void 0)\n                attribute.normalized = normalized;\n            }\n            resolve2(geometry);\n          },\n          threeAttributeMap,\n          attributeTypeMap,\n          LinearSRGBColorSpace,\n          reject\n        );\n      });\n    });\n  }\n}\nclass GLTFTextureTransformExtension {\n  constructor() {\n    this.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\n  }\n  extendTexture(texture, transform) {\n    if ((transform.texCoord === void 0 || transform.texCoord === texture.channel) && transform.offset === void 0 && transform.rotation === void 0 && transform.scale === void 0) {\n      return texture;\n    }\n    texture = texture.clone();\n    if (transform.texCoord !== void 0) {\n      texture.channel = transform.texCoord;\n    }\n    if (transform.offset !== void 0) {\n      texture.offset.fromArray(transform.offset);\n    }\n    if (transform.rotation !== void 0) {\n      texture.rotation = transform.rotation;\n    }\n    if (transform.scale !== void 0) {\n      texture.repeat.fromArray(transform.scale);\n    }\n    texture.needsUpdate = true;\n    return texture;\n  }\n}\nclass GLTFMeshQuantizationExtension {\n  constructor() {\n    this.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\n  }\n}\nclass GLTFCubicSplineInterpolant extends Interpolant {\n  constructor(parameterPositions, sampleValues, sampleSize, resultBuffer) {\n    super(parameterPositions, sampleValues, sampleSize, resultBuffer);\n  }\n  copySampleValue_(index) {\n    const result = this.resultBuffer, values = this.sampleValues, valueSize = this.valueSize, offset = index * valueSize * 3 + valueSize;\n    for (let i2 = 0; i2 !== valueSize; i2++) {\n      result[i2] = values[offset + i2];\n    }\n    return result;\n  }\n  interpolate_(i1, t0, t2, t1) {\n    const result = this.resultBuffer;\n    const values = this.sampleValues;\n    const stride = this.valueSize;\n    const stride2 = stride * 2;\n    const stride3 = stride * 3;\n    const td2 = t1 - t0;\n    const p2 = (t2 - t0) / td2;\n    const pp = p2 * p2;\n    const ppp = pp * p2;\n    const offset1 = i1 * stride3;\n    const offset0 = offset1 - stride3;\n    const s2 = -2 * ppp + 3 * pp;\n    const s3 = ppp - pp;\n    const s0 = 1 - s2;\n    const s1 = s3 - pp + p2;\n    for (let i2 = 0; i2 !== stride; i2++) {\n      const p0 = values[offset0 + i2 + stride];\n      const m0 = values[offset0 + i2 + stride2] * td2;\n      const p1 = values[offset1 + i2 + stride];\n      const m1 = values[offset1 + i2] * td2;\n      result[i2] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\n    }\n    return result;\n  }\n}\nconst _q = /* @__PURE__ */ new Quaternion();\nclass GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {\n  interpolate_(i1, t0, t2, t1) {\n    const result = super.interpolate_(i1, t0, t2, t1);\n    _q.fromArray(result).normalize().toArray(result);\n    return result;\n  }\n}\nconst WEBGL_CONSTANTS = {\n  POINTS: 0,\n  LINES: 1,\n  LINE_LOOP: 2,\n  LINE_STRIP: 3,\n  TRIANGLES: 4,\n  TRIANGLE_STRIP: 5,\n  TRIANGLE_FAN: 6\n};\nconst WEBGL_COMPONENT_TYPES = {\n  5120: Int8Array,\n  5121: Uint8Array,\n  5122: Int16Array,\n  5123: Uint16Array,\n  5125: Uint32Array,\n  5126: Float32Array\n};\nconst WEBGL_FILTERS = {\n  9728: NearestFilter,\n  9729: LinearFilter,\n  9984: NearestMipmapNearestFilter,\n  9985: LinearMipmapNearestFilter,\n  9986: NearestMipmapLinearFilter,\n  9987: LinearMipmapLinearFilter\n};\nconst WEBGL_WRAPPINGS = {\n  33071: ClampToEdgeWrapping,\n  33648: MirroredRepeatWrapping,\n  10497: RepeatWrapping\n};\nconst WEBGL_TYPE_SIZES = {\n  SCALAR: 1,\n  VEC2: 2,\n  VEC3: 3,\n  VEC4: 4,\n  MAT2: 4,\n  MAT3: 9,\n  MAT4: 16\n};\nconst ATTRIBUTES = {\n  POSITION: \"position\",\n  NORMAL: \"normal\",\n  TANGENT: \"tangent\",\n  // uv => uv1, 4 uv channels\n  // https://github.com/mrdoob/three.js/pull/25943\n  // https://github.com/mrdoob/three.js/pull/25788\n  ...version$1 >= 152 ? {\n    TEXCOORD_0: \"uv\",\n    TEXCOORD_1: \"uv1\",\n    TEXCOORD_2: \"uv2\",\n    TEXCOORD_3: \"uv3\"\n  } : {\n    TEXCOORD_0: \"uv\",\n    TEXCOORD_1: \"uv2\"\n  },\n  COLOR_0: \"color\",\n  WEIGHTS_0: \"skinWeight\",\n  JOINTS_0: \"skinIndex\"\n};\nconst PATH_PROPERTIES = {\n  scale: \"scale\",\n  translation: \"position\",\n  rotation: \"quaternion\",\n  weights: \"morphTargetInfluences\"\n};\nconst INTERPOLATION = {\n  CUBICSPLINE: void 0,\n  // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\n  // keyframe track will be initialized with a default interpolation type, then modified.\n  LINEAR: InterpolateLinear,\n  STEP: InterpolateDiscrete\n};\nconst ALPHA_MODES = {\n  OPAQUE: \"OPAQUE\",\n  MASK: \"MASK\",\n  BLEND: \"BLEND\"\n};\nfunction createDefaultMaterial(cache) {\n  if (cache[\"DefaultMaterial\"] === void 0) {\n    cache[\"DefaultMaterial\"] = new MeshStandardMaterial({\n      color: 16777215,\n      emissive: 0,\n      metalness: 1,\n      roughness: 1,\n      transparent: false,\n      depthTest: true,\n      side: FrontSide\n    });\n  }\n  return cache[\"DefaultMaterial\"];\n}\nfunction addUnknownExtensionsToUserData(knownExtensions, object, objectDef) {\n  for (const name in objectDef.extensions) {\n    if (knownExtensions[name] === void 0) {\n      object.userData.gltfExtensions = object.userData.gltfExtensions || {};\n      object.userData.gltfExtensions[name] = objectDef.extensions[name];\n    }\n  }\n}\nfunction assignExtrasToUserData(object, gltfDef) {\n  if (gltfDef.extras !== void 0) {\n    if (typeof gltfDef.extras === \"object\") {\n      Object.assign(object.userData, gltfDef.extras);\n    } else {\n      console.warn(\"THREE.GLTFLoader: Ignoring primitive type .extras, \" + gltfDef.extras);\n    }\n  }\n}\nfunction addMorphTargets(geometry, targets, parser) {\n  let hasMorphPosition = false;\n  let hasMorphNormal = false;\n  let hasMorphColor = false;\n  for (let i2 = 0, il = targets.length; i2 < il; i2++) {\n    const target = targets[i2];\n    if (target.POSITION !== void 0)\n      hasMorphPosition = true;\n    if (target.NORMAL !== void 0)\n      hasMorphNormal = true;\n    if (target.COLOR_0 !== void 0)\n      hasMorphColor = true;\n    if (hasMorphPosition && hasMorphNormal && hasMorphColor)\n      break;\n  }\n  if (!hasMorphPosition && !hasMorphNormal && !hasMorphColor)\n    return Promise.resolve(geometry);\n  const pendingPositionAccessors = [];\n  const pendingNormalAccessors = [];\n  const pendingColorAccessors = [];\n  for (let i2 = 0, il = targets.length; i2 < il; i2++) {\n    const target = targets[i2];\n    if (hasMorphPosition) {\n      const pendingAccessor = target.POSITION !== void 0 ? parser.getDependency(\"accessor\", target.POSITION) : geometry.attributes.position;\n      pendingPositionAccessors.push(pendingAccessor);\n    }\n    if (hasMorphNormal) {\n      const pendingAccessor = target.NORMAL !== void 0 ? parser.getDependency(\"accessor\", target.NORMAL) : geometry.attributes.normal;\n      pendingNormalAccessors.push(pendingAccessor);\n    }\n    if (hasMorphColor) {\n      const pendingAccessor = target.COLOR_0 !== void 0 ? parser.getDependency(\"accessor\", target.COLOR_0) : geometry.attributes.color;\n      pendingColorAccessors.push(pendingAccessor);\n    }\n  }\n  return Promise.all([\n    Promise.all(pendingPositionAccessors),\n    Promise.all(pendingNormalAccessors),\n    Promise.all(pendingColorAccessors)\n  ]).then(function(accessors) {\n    const morphPositions = accessors[0];\n    const morphNormals = accessors[1];\n    const morphColors = accessors[2];\n    if (hasMorphPosition)\n      geometry.morphAttributes.position = morphPositions;\n    if (hasMorphNormal)\n      geometry.morphAttributes.normal = morphNormals;\n    if (hasMorphColor)\n      geometry.morphAttributes.color = morphColors;\n    geometry.morphTargetsRelative = true;\n    return geometry;\n  });\n}\nfunction updateMorphTargets(mesh, meshDef) {\n  mesh.updateMorphTargets();\n  if (meshDef.weights !== void 0) {\n    for (let i2 = 0, il = meshDef.weights.length; i2 < il; i2++) {\n      mesh.morphTargetInfluences[i2] = meshDef.weights[i2];\n    }\n  }\n  if (meshDef.extras && Array.isArray(meshDef.extras.targetNames)) {\n    const targetNames = meshDef.extras.targetNames;\n    if (mesh.morphTargetInfluences.length === targetNames.length) {\n      mesh.morphTargetDictionary = {};\n      for (let i2 = 0, il = targetNames.length; i2 < il; i2++) {\n        mesh.morphTargetDictionary[targetNames[i2]] = i2;\n      }\n    } else {\n      console.warn(\"THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.\");\n    }\n  }\n}\nfunction createPrimitiveKey(primitiveDef) {\n  let geometryKey;\n  const dracoExtension = primitiveDef.extensions && primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];\n  if (dracoExtension) {\n    geometryKey = \"draco:\" + dracoExtension.bufferView + \":\" + dracoExtension.indices + \":\" + createAttributesKey(dracoExtension.attributes);\n  } else {\n    geometryKey = primitiveDef.indices + \":\" + createAttributesKey(primitiveDef.attributes) + \":\" + primitiveDef.mode;\n  }\n  if (primitiveDef.targets !== void 0) {\n    for (let i2 = 0, il = primitiveDef.targets.length; i2 < il; i2++) {\n      geometryKey += \":\" + createAttributesKey(primitiveDef.targets[i2]);\n    }\n  }\n  return geometryKey;\n}\nfunction createAttributesKey(attributes) {\n  let attributesKey = \"\";\n  const keys = Object.keys(attributes).sort();\n  for (let i2 = 0, il = keys.length; i2 < il; i2++) {\n    attributesKey += keys[i2] + \":\" + attributes[keys[i2]] + \";\";\n  }\n  return attributesKey;\n}\nfunction getNormalizedComponentScale(constructor) {\n  switch (constructor) {\n    case Int8Array:\n      return 1 / 127;\n    case Uint8Array:\n      return 1 / 255;\n    case Int16Array:\n      return 1 / 32767;\n    case Uint16Array:\n      return 1 / 65535;\n    default:\n      throw new Error(\"THREE.GLTFLoader: Unsupported normalized accessor component type.\");\n  }\n}\nfunction getImageURIMimeType(uri) {\n  if (uri.search(/\\.jpe?g($|\\?)/i) > 0 || uri.search(/^data\\:image\\/jpeg/) === 0)\n    return \"image/jpeg\";\n  if (uri.search(/\\.webp($|\\?)/i) > 0 || uri.search(/^data\\:image\\/webp/) === 0)\n    return \"image/webp\";\n  return \"image/png\";\n}\nconst _identityMatrix = /* @__PURE__ */ new Matrix4();\nclass GLTFParser {\n  constructor(json = {}, options = {}) {\n    this.json = json;\n    this.extensions = {};\n    this.plugins = {};\n    this.options = options;\n    this.cache = new GLTFRegistry();\n    this.associations = /* @__PURE__ */ new Map();\n    this.primitiveCache = {};\n    this.nodeCache = {};\n    this.meshCache = { refs: {}, uses: {} };\n    this.cameraCache = { refs: {}, uses: {} };\n    this.lightCache = { refs: {}, uses: {} };\n    this.sourceCache = {};\n    this.textureCache = {};\n    this.nodeNamesUsed = {};\n    let isSafari = false;\n    let isFirefox = false;\n    let firefoxVersion = -1;\n    if (typeof navigator !== \"undefined\" && typeof navigator.userAgent !== \"undefined\") {\n      isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent) === true;\n      isFirefox = navigator.userAgent.indexOf(\"Firefox\") > -1;\n      firefoxVersion = isFirefox ? navigator.userAgent.match(/Firefox\\/([0-9]+)\\./)[1] : -1;\n    }\n    if (typeof createImageBitmap === \"undefined\" || isSafari || isFirefox && firefoxVersion < 98) {\n      this.textureLoader = new TextureLoader(this.options.manager);\n    } else {\n      this.textureLoader = new ImageBitmapLoader(this.options.manager);\n    }\n    this.textureLoader.setCrossOrigin(this.options.crossOrigin);\n    this.textureLoader.setRequestHeader(this.options.requestHeader);\n    this.fileLoader = new FileLoader(this.options.manager);\n    this.fileLoader.setResponseType(\"arraybuffer\");\n    if (this.options.crossOrigin === \"use-credentials\") {\n      this.fileLoader.setWithCredentials(true);\n    }\n  }\n  setExtensions(extensions2) {\n    this.extensions = extensions2;\n  }\n  setPlugins(plugins) {\n    this.plugins = plugins;\n  }\n  parse(onLoad, onError) {\n    const parser = this;\n    const json = this.json;\n    const extensions2 = this.extensions;\n    this.cache.removeAll();\n    this.nodeCache = {};\n    this._invokeAll(function(ext) {\n      return ext._markDefs && ext._markDefs();\n    });\n    Promise.all(\n      this._invokeAll(function(ext) {\n        return ext.beforeRoot && ext.beforeRoot();\n      })\n    ).then(function() {\n      return Promise.all([\n        parser.getDependencies(\"scene\"),\n        parser.getDependencies(\"animation\"),\n        parser.getDependencies(\"camera\")\n      ]);\n    }).then(function(dependencies) {\n      const result = {\n        scene: dependencies[0][json.scene || 0],\n        scenes: dependencies[0],\n        animations: dependencies[1],\n        cameras: dependencies[2],\n        asset: json.asset,\n        parser,\n        userData: {}\n      };\n      addUnknownExtensionsToUserData(extensions2, result, json);\n      assignExtrasToUserData(result, json);\n      return Promise.all(\n        parser._invokeAll(function(ext) {\n          return ext.afterRoot && ext.afterRoot(result);\n        })\n      ).then(function() {\n        for (const scene of result.scenes) {\n          scene.updateMatrixWorld();\n        }\n        onLoad(result);\n      });\n    }).catch(onError);\n  }\n  /**\n   * Marks the special nodes/meshes in json for efficient parse.\n   */\n  _markDefs() {\n    const nodeDefs = this.json.nodes || [];\n    const skinDefs = this.json.skins || [];\n    const meshDefs = this.json.meshes || [];\n    for (let skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex++) {\n      const joints = skinDefs[skinIndex].joints;\n      for (let i2 = 0, il = joints.length; i2 < il; i2++) {\n        nodeDefs[joints[i2]].isBone = true;\n      }\n    }\n    for (let nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex++) {\n      const nodeDef = nodeDefs[nodeIndex];\n      if (nodeDef.mesh !== void 0) {\n        this._addNodeRef(this.meshCache, nodeDef.mesh);\n        if (nodeDef.skin !== void 0) {\n          meshDefs[nodeDef.mesh].isSkinnedMesh = true;\n        }\n      }\n      if (nodeDef.camera !== void 0) {\n        this._addNodeRef(this.cameraCache, nodeDef.camera);\n      }\n    }\n  }\n  /**\n   * Counts references to shared node / Object3D resources. These resources\n   * can be reused, or \"instantiated\", at multiple nodes in the scene\n   * hierarchy. Mesh, Camera, and Light instances are instantiated and must\n   * be marked. Non-scenegraph resources (like Materials, Geometries, and\n   * Textures) can be reused directly and are not marked here.\n   *\n   * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\n   */\n  _addNodeRef(cache, index) {\n    if (index === void 0)\n      return;\n    if (cache.refs[index] === void 0) {\n      cache.refs[index] = cache.uses[index] = 0;\n    }\n    cache.refs[index]++;\n  }\n  /** Returns a reference to a shared resource, cloning it if necessary. */\n  _getNodeRef(cache, index, object) {\n    if (cache.refs[index] <= 1)\n      return object;\n    const ref = object.clone();\n    const updateMappings = (original, clone) => {\n      const mappings = this.associations.get(original);\n      if (mappings != null) {\n        this.associations.set(clone, mappings);\n      }\n      for (const [i2, child] of original.children.entries()) {\n        updateMappings(child, clone.children[i2]);\n      }\n    };\n    updateMappings(object, ref);\n    ref.name += \"_instance_\" + cache.uses[index]++;\n    return ref;\n  }\n  _invokeOne(func) {\n    const extensions2 = Object.values(this.plugins);\n    extensions2.push(this);\n    for (let i2 = 0; i2 < extensions2.length; i2++) {\n      const result = func(extensions2[i2]);\n      if (result)\n        return result;\n    }\n    return null;\n  }\n  _invokeAll(func) {\n    const extensions2 = Object.values(this.plugins);\n    extensions2.unshift(this);\n    const pending = [];\n    for (let i2 = 0; i2 < extensions2.length; i2++) {\n      const result = func(extensions2[i2]);\n      if (result)\n        pending.push(result);\n    }\n    return pending;\n  }\n  /**\n   * Requests the specified dependency asynchronously, with caching.\n   * @param {string} type\n   * @param {number} index\n   * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}\n   */\n  getDependency(type, index) {\n    const cacheKey = type + \":\" + index;\n    let dependency = this.cache.get(cacheKey);\n    if (!dependency) {\n      switch (type) {\n        case \"scene\":\n          dependency = this.loadScene(index);\n          break;\n        case \"node\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadNode && ext.loadNode(index);\n          });\n          break;\n        case \"mesh\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadMesh && ext.loadMesh(index);\n          });\n          break;\n        case \"accessor\":\n          dependency = this.loadAccessor(index);\n          break;\n        case \"bufferView\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadBufferView && ext.loadBufferView(index);\n          });\n          break;\n        case \"buffer\":\n          dependency = this.loadBuffer(index);\n          break;\n        case \"material\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadMaterial && ext.loadMaterial(index);\n          });\n          break;\n        case \"texture\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadTexture && ext.loadTexture(index);\n          });\n          break;\n        case \"skin\":\n          dependency = this.loadSkin(index);\n          break;\n        case \"animation\":\n          dependency = this._invokeOne(function(ext) {\n            return ext.loadAnimation && ext.loadAnimation(index);\n          });\n          break;\n        case \"camera\":\n          dependency = this.loadCamera(index);\n          break;\n        default:\n          dependency = this._invokeOne(function(ext) {\n            return ext != this && ext.getDependency && ext.getDependency(type, index);\n          });\n          if (!dependency) {\n            throw new Error(\"Unknown type: \" + type);\n          }\n          break;\n      }\n      this.cache.add(cacheKey, dependency);\n    }\n    return dependency;\n  }\n  /**\n   * Requests all dependencies of the specified type asynchronously, with caching.\n   * @param {string} type\n   * @return {Promise<Array<Object>>}\n   */\n  getDependencies(type) {\n    let dependencies = this.cache.get(type);\n    if (!dependencies) {\n      const parser = this;\n      const defs = this.json[type + (type === \"mesh\" ? \"es\" : \"s\")] || [];\n      dependencies = Promise.all(\n        defs.map(function(def, index) {\n          return parser.getDependency(type, index);\n        })\n      );\n      this.cache.add(type, dependencies);\n    }\n    return dependencies;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n   * @param {number} bufferIndex\n   * @return {Promise<ArrayBuffer>}\n   */\n  loadBuffer(bufferIndex) {\n    const bufferDef = this.json.buffers[bufferIndex];\n    const loader = this.fileLoader;\n    if (bufferDef.type && bufferDef.type !== \"arraybuffer\") {\n      throw new Error(\"THREE.GLTFLoader: \" + bufferDef.type + \" buffer type is not supported.\");\n    }\n    if (bufferDef.uri === void 0 && bufferIndex === 0) {\n      return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);\n    }\n    const options = this.options;\n    return new Promise(function(resolve2, reject) {\n      loader.load(LoaderUtils.resolveURL(bufferDef.uri, options.path), resolve2, void 0, function() {\n        reject(new Error('THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".'));\n      });\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\n   * @param {number} bufferViewIndex\n   * @return {Promise<ArrayBuffer>}\n   */\n  loadBufferView(bufferViewIndex) {\n    const bufferViewDef = this.json.bufferViews[bufferViewIndex];\n    return this.getDependency(\"buffer\", bufferViewDef.buffer).then(function(buffer) {\n      const byteLength = bufferViewDef.byteLength || 0;\n      const byteOffset = bufferViewDef.byteOffset || 0;\n      return buffer.slice(byteOffset, byteOffset + byteLength);\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\n   * @param {number} accessorIndex\n   * @return {Promise<BufferAttribute|InterleavedBufferAttribute>}\n   */\n  loadAccessor(accessorIndex) {\n    const parser = this;\n    const json = this.json;\n    const accessorDef = this.json.accessors[accessorIndex];\n    if (accessorDef.bufferView === void 0 && accessorDef.sparse === void 0) {\n      const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n      const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n      const normalized = accessorDef.normalized === true;\n      const array = new TypedArray(accessorDef.count * itemSize);\n      return Promise.resolve(new BufferAttribute(array, itemSize, normalized));\n    }\n    const pendingBufferViews = [];\n    if (accessorDef.bufferView !== void 0) {\n      pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.bufferView));\n    } else {\n      pendingBufferViews.push(null);\n    }\n    if (accessorDef.sparse !== void 0) {\n      pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.indices.bufferView));\n      pendingBufferViews.push(this.getDependency(\"bufferView\", accessorDef.sparse.values.bufferView));\n    }\n    return Promise.all(pendingBufferViews).then(function(bufferViews) {\n      const bufferView = bufferViews[0];\n      const itemSize = WEBGL_TYPE_SIZES[accessorDef.type];\n      const TypedArray = WEBGL_COMPONENT_TYPES[accessorDef.componentType];\n      const elementBytes = TypedArray.BYTES_PER_ELEMENT;\n      const itemBytes = elementBytes * itemSize;\n      const byteOffset = accessorDef.byteOffset || 0;\n      const byteStride = accessorDef.bufferView !== void 0 ? json.bufferViews[accessorDef.bufferView].byteStride : void 0;\n      const normalized = accessorDef.normalized === true;\n      let array, bufferAttribute;\n      if (byteStride && byteStride !== itemBytes) {\n        const ibSlice = Math.floor(byteOffset / byteStride);\n        const ibCacheKey = \"InterleavedBuffer:\" + accessorDef.bufferView + \":\" + accessorDef.componentType + \":\" + ibSlice + \":\" + accessorDef.count;\n        let ib = parser.cache.get(ibCacheKey);\n        if (!ib) {\n          array = new TypedArray(bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes);\n          ib = new InterleavedBuffer(array, byteStride / elementBytes);\n          parser.cache.add(ibCacheKey, ib);\n        }\n        bufferAttribute = new InterleavedBufferAttribute(\n          ib,\n          itemSize,\n          byteOffset % byteStride / elementBytes,\n          normalized\n        );\n      } else {\n        if (bufferView === null) {\n          array = new TypedArray(accessorDef.count * itemSize);\n        } else {\n          array = new TypedArray(bufferView, byteOffset, accessorDef.count * itemSize);\n        }\n        bufferAttribute = new BufferAttribute(array, itemSize, normalized);\n      }\n      if (accessorDef.sparse !== void 0) {\n        const itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\n        const TypedArrayIndices = WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];\n        const byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\n        const byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\n        const sparseIndices = new TypedArrayIndices(\n          bufferViews[1],\n          byteOffsetIndices,\n          accessorDef.sparse.count * itemSizeIndices\n        );\n        const sparseValues = new TypedArray(bufferViews[2], byteOffsetValues, accessorDef.sparse.count * itemSize);\n        if (bufferView !== null) {\n          bufferAttribute = new BufferAttribute(\n            bufferAttribute.array.slice(),\n            bufferAttribute.itemSize,\n            bufferAttribute.normalized\n          );\n        }\n        for (let i2 = 0, il = sparseIndices.length; i2 < il; i2++) {\n          const index = sparseIndices[i2];\n          bufferAttribute.setX(index, sparseValues[i2 * itemSize]);\n          if (itemSize >= 2)\n            bufferAttribute.setY(index, sparseValues[i2 * itemSize + 1]);\n          if (itemSize >= 3)\n            bufferAttribute.setZ(index, sparseValues[i2 * itemSize + 2]);\n          if (itemSize >= 4)\n            bufferAttribute.setW(index, sparseValues[i2 * itemSize + 3]);\n          if (itemSize >= 5)\n            throw new Error(\"THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.\");\n        }\n      }\n      return bufferAttribute;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\n   * @param {number} textureIndex\n   * @return {Promise<THREE.Texture|null>}\n   */\n  loadTexture(textureIndex) {\n    const json = this.json;\n    const options = this.options;\n    const textureDef = json.textures[textureIndex];\n    const sourceIndex = textureDef.source;\n    const sourceDef = json.images[sourceIndex];\n    let loader = this.textureLoader;\n    if (sourceDef.uri) {\n      const handler = options.manager.getHandler(sourceDef.uri);\n      if (handler !== null)\n        loader = handler;\n    }\n    return this.loadTextureImage(textureIndex, sourceIndex, loader);\n  }\n  loadTextureImage(textureIndex, sourceIndex, loader) {\n    const parser = this;\n    const json = this.json;\n    const textureDef = json.textures[textureIndex];\n    const sourceDef = json.images[sourceIndex];\n    const cacheKey = (sourceDef.uri || sourceDef.bufferView) + \":\" + textureDef.sampler;\n    if (this.textureCache[cacheKey]) {\n      return this.textureCache[cacheKey];\n    }\n    const promise = this.loadImageSource(sourceIndex, loader).then(function(texture) {\n      texture.flipY = false;\n      texture.name = textureDef.name || sourceDef.name || \"\";\n      if (texture.name === \"\" && typeof sourceDef.uri === \"string\" && sourceDef.uri.startsWith(\"data:image/\") === false) {\n        texture.name = sourceDef.uri;\n      }\n      const samplers = json.samplers || {};\n      const sampler = samplers[textureDef.sampler] || {};\n      texture.magFilter = WEBGL_FILTERS[sampler.magFilter] || LinearFilter;\n      texture.minFilter = WEBGL_FILTERS[sampler.minFilter] || LinearMipmapLinearFilter;\n      texture.wrapS = WEBGL_WRAPPINGS[sampler.wrapS] || RepeatWrapping;\n      texture.wrapT = WEBGL_WRAPPINGS[sampler.wrapT] || RepeatWrapping;\n      parser.associations.set(texture, { textures: textureIndex });\n      return texture;\n    }).catch(function() {\n      return null;\n    });\n    this.textureCache[cacheKey] = promise;\n    return promise;\n  }\n  loadImageSource(sourceIndex, loader) {\n    const parser = this;\n    const json = this.json;\n    const options = this.options;\n    if (this.sourceCache[sourceIndex] !== void 0) {\n      return this.sourceCache[sourceIndex].then((texture) => texture.clone());\n    }\n    const sourceDef = json.images[sourceIndex];\n    const URL2 = self.URL || self.webkitURL;\n    let sourceURI = sourceDef.uri || \"\";\n    let isObjectURL = false;\n    if (sourceDef.bufferView !== void 0) {\n      sourceURI = parser.getDependency(\"bufferView\", sourceDef.bufferView).then(function(bufferView) {\n        isObjectURL = true;\n        const blob = new Blob([bufferView], { type: sourceDef.mimeType });\n        sourceURI = URL2.createObjectURL(blob);\n        return sourceURI;\n      });\n    } else if (sourceDef.uri === void 0) {\n      throw new Error(\"THREE.GLTFLoader: Image \" + sourceIndex + \" is missing URI and bufferView\");\n    }\n    const promise = Promise.resolve(sourceURI).then(function(sourceURI2) {\n      return new Promise(function(resolve2, reject) {\n        let onLoad = resolve2;\n        if (loader.isImageBitmapLoader === true) {\n          onLoad = function(imageBitmap) {\n            const texture = new Texture(imageBitmap);\n            texture.needsUpdate = true;\n            resolve2(texture);\n          };\n        }\n        loader.load(LoaderUtils.resolveURL(sourceURI2, options.path), onLoad, void 0, reject);\n      });\n    }).then(function(texture) {\n      if (isObjectURL === true) {\n        URL2.revokeObjectURL(sourceURI);\n      }\n      assignExtrasToUserData(texture, sourceDef);\n      texture.userData.mimeType = sourceDef.mimeType || getImageURIMimeType(sourceDef.uri);\n      return texture;\n    }).catch(function(error2) {\n      console.error(\"THREE.GLTFLoader: Couldn't load texture\", sourceURI);\n      throw error2;\n    });\n    this.sourceCache[sourceIndex] = promise;\n    return promise;\n  }\n  /**\n   * Asynchronously assigns a texture to the given material parameters.\n   * @param {Object} materialParams\n   * @param {string} mapName\n   * @param {Object} mapDef\n   * @return {Promise<Texture>}\n   */\n  assignTexture(materialParams, mapName, mapDef, colorSpace) {\n    const parser = this;\n    return this.getDependency(\"texture\", mapDef.index).then(function(texture) {\n      if (!texture)\n        return null;\n      if (mapDef.texCoord !== void 0 && mapDef.texCoord > 0) {\n        texture = texture.clone();\n        texture.channel = mapDef.texCoord;\n      }\n      if (parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]) {\n        const transform = mapDef.extensions !== void 0 ? mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM] : void 0;\n        if (transform) {\n          const gltfReference = parser.associations.get(texture);\n          texture = parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture, transform);\n          parser.associations.set(texture, gltfReference);\n        }\n      }\n      if (colorSpace !== void 0) {\n        if (typeof colorSpace === \"number\")\n          colorSpace = colorSpace === sRGBEncoding$1 ? SRGBColorSpace : LinearSRGBColorSpace;\n        if (\"colorSpace\" in texture)\n          texture.colorSpace = colorSpace;\n        else\n          texture.encoding = colorSpace === SRGBColorSpace ? sRGBEncoding$1 : LinearEncoding$1;\n      }\n      materialParams[mapName] = texture;\n      return texture;\n    });\n  }\n  /**\n   * Assigns final material to a Mesh, Line, or Points instance. The instance\n   * already has a material (generated from the glTF material options alone)\n   * but reuse of the same glTF material may require multiple threejs materials\n   * to accommodate different primitive types, defines, etc. New materials will\n   * be created if necessary, and reused from a cache.\n   * @param  {Object3D} mesh Mesh, Line, or Points instance.\n   */\n  assignFinalMaterial(mesh) {\n    const geometry = mesh.geometry;\n    let material = mesh.material;\n    const useDerivativeTangents = geometry.attributes.tangent === void 0;\n    const useVertexColors = geometry.attributes.color !== void 0;\n    const useFlatShading = geometry.attributes.normal === void 0;\n    if (mesh.isPoints) {\n      const cacheKey = \"PointsMaterial:\" + material.uuid;\n      let pointsMaterial = this.cache.get(cacheKey);\n      if (!pointsMaterial) {\n        pointsMaterial = new PointsMaterial();\n        Material.prototype.copy.call(pointsMaterial, material);\n        pointsMaterial.color.copy(material.color);\n        pointsMaterial.map = material.map;\n        pointsMaterial.sizeAttenuation = false;\n        this.cache.add(cacheKey, pointsMaterial);\n      }\n      material = pointsMaterial;\n    } else if (mesh.isLine) {\n      const cacheKey = \"LineBasicMaterial:\" + material.uuid;\n      let lineMaterial = this.cache.get(cacheKey);\n      if (!lineMaterial) {\n        lineMaterial = new LineBasicMaterial();\n        Material.prototype.copy.call(lineMaterial, material);\n        lineMaterial.color.copy(material.color);\n        lineMaterial.map = material.map;\n        this.cache.add(cacheKey, lineMaterial);\n      }\n      material = lineMaterial;\n    }\n    if (useDerivativeTangents || useVertexColors || useFlatShading) {\n      let cacheKey = \"ClonedMaterial:\" + material.uuid + \":\";\n      if (useDerivativeTangents)\n        cacheKey += \"derivative-tangents:\";\n      if (useVertexColors)\n        cacheKey += \"vertex-colors:\";\n      if (useFlatShading)\n        cacheKey += \"flat-shading:\";\n      let cachedMaterial = this.cache.get(cacheKey);\n      if (!cachedMaterial) {\n        cachedMaterial = material.clone();\n        if (useVertexColors)\n          cachedMaterial.vertexColors = true;\n        if (useFlatShading)\n          cachedMaterial.flatShading = true;\n        if (useDerivativeTangents) {\n          if (cachedMaterial.normalScale)\n            cachedMaterial.normalScale.y *= -1;\n          if (cachedMaterial.clearcoatNormalScale)\n            cachedMaterial.clearcoatNormalScale.y *= -1;\n        }\n        this.cache.add(cacheKey, cachedMaterial);\n        this.associations.set(cachedMaterial, this.associations.get(material));\n      }\n      material = cachedMaterial;\n    }\n    mesh.material = material;\n  }\n  getMaterialType() {\n    return MeshStandardMaterial;\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\n   * @param {number} materialIndex\n   * @return {Promise<Material>}\n   */\n  loadMaterial(materialIndex) {\n    const parser = this;\n    const json = this.json;\n    const extensions2 = this.extensions;\n    const materialDef = json.materials[materialIndex];\n    let materialType;\n    const materialParams = {};\n    const materialExtensions = materialDef.extensions || {};\n    const pending = [];\n    if (materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]) {\n      const kmuExtension = extensions2[EXTENSIONS.KHR_MATERIALS_UNLIT];\n      materialType = kmuExtension.getMaterialType();\n      pending.push(kmuExtension.extendParams(materialParams, materialDef, parser));\n    } else {\n      const metallicRoughness = materialDef.pbrMetallicRoughness || {};\n      materialParams.color = new Color(1, 1, 1);\n      materialParams.opacity = 1;\n      if (Array.isArray(metallicRoughness.baseColorFactor)) {\n        const array = metallicRoughness.baseColorFactor;\n        materialParams.color.setRGB(array[0], array[1], array[2], LinearSRGBColorSpace);\n        materialParams.opacity = array[3];\n      }\n      if (metallicRoughness.baseColorTexture !== void 0) {\n        pending.push(parser.assignTexture(materialParams, \"map\", metallicRoughness.baseColorTexture, SRGBColorSpace));\n      }\n      materialParams.metalness = metallicRoughness.metallicFactor !== void 0 ? metallicRoughness.metallicFactor : 1;\n      materialParams.roughness = metallicRoughness.roughnessFactor !== void 0 ? metallicRoughness.roughnessFactor : 1;\n      if (metallicRoughness.metallicRoughnessTexture !== void 0) {\n        pending.push(parser.assignTexture(materialParams, \"metalnessMap\", metallicRoughness.metallicRoughnessTexture));\n        pending.push(parser.assignTexture(materialParams, \"roughnessMap\", metallicRoughness.metallicRoughnessTexture));\n      }\n      materialType = this._invokeOne(function(ext) {\n        return ext.getMaterialType && ext.getMaterialType(materialIndex);\n      });\n      pending.push(\n        Promise.all(\n          this._invokeAll(function(ext) {\n            return ext.extendMaterialParams && ext.extendMaterialParams(materialIndex, materialParams);\n          })\n        )\n      );\n    }\n    if (materialDef.doubleSided === true) {\n      materialParams.side = DoubleSide;\n    }\n    const alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\n    if (alphaMode === ALPHA_MODES.BLEND) {\n      materialParams.transparent = true;\n      materialParams.depthWrite = false;\n    } else {\n      materialParams.transparent = false;\n      if (alphaMode === ALPHA_MODES.MASK) {\n        materialParams.alphaTest = materialDef.alphaCutoff !== void 0 ? materialDef.alphaCutoff : 0.5;\n      }\n    }\n    if (materialDef.normalTexture !== void 0 && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, \"normalMap\", materialDef.normalTexture));\n      materialParams.normalScale = new Vector2(1, 1);\n      if (materialDef.normalTexture.scale !== void 0) {\n        const scale = materialDef.normalTexture.scale;\n        materialParams.normalScale.set(scale, scale);\n      }\n    }\n    if (materialDef.occlusionTexture !== void 0 && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, \"aoMap\", materialDef.occlusionTexture));\n      if (materialDef.occlusionTexture.strength !== void 0) {\n        materialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\n      }\n    }\n    if (materialDef.emissiveFactor !== void 0 && materialType !== MeshBasicMaterial) {\n      const emissiveFactor = materialDef.emissiveFactor;\n      materialParams.emissive = new Color().setRGB(\n        emissiveFactor[0],\n        emissiveFactor[1],\n        emissiveFactor[2],\n        LinearSRGBColorSpace\n      );\n    }\n    if (materialDef.emissiveTexture !== void 0 && materialType !== MeshBasicMaterial) {\n      pending.push(parser.assignTexture(materialParams, \"emissiveMap\", materialDef.emissiveTexture, SRGBColorSpace));\n    }\n    return Promise.all(pending).then(function() {\n      const material = new materialType(materialParams);\n      if (materialDef.name)\n        material.name = materialDef.name;\n      assignExtrasToUserData(material, materialDef);\n      parser.associations.set(material, { materials: materialIndex });\n      if (materialDef.extensions)\n        addUnknownExtensionsToUserData(extensions2, material, materialDef);\n      return material;\n    });\n  }\n  /** When Object3D instances are targeted by animation, they need unique names. */\n  createUniqueName(originalName) {\n    const sanitizedName = PropertyBinding.sanitizeNodeName(originalName || \"\");\n    if (sanitizedName in this.nodeNamesUsed) {\n      return sanitizedName + \"_\" + ++this.nodeNamesUsed[sanitizedName];\n    } else {\n      this.nodeNamesUsed[sanitizedName] = 0;\n      return sanitizedName;\n    }\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\n   *\n   * Creates BufferGeometries from primitives.\n   *\n   * @param {Array<GLTF.Primitive>} primitives\n   * @return {Promise<Array<BufferGeometry>>}\n   */\n  loadGeometries(primitives) {\n    const parser = this;\n    const extensions2 = this.extensions;\n    const cache = this.primitiveCache;\n    function createDracoPrimitive(primitive) {\n      return extensions2[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive, parser).then(function(geometry) {\n        return addPrimitiveAttributes(geometry, primitive, parser);\n      });\n    }\n    const pending = [];\n    for (let i2 = 0, il = primitives.length; i2 < il; i2++) {\n      const primitive = primitives[i2];\n      const cacheKey = createPrimitiveKey(primitive);\n      const cached = cache[cacheKey];\n      if (cached) {\n        pending.push(cached.promise);\n      } else {\n        let geometryPromise;\n        if (primitive.extensions && primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]) {\n          geometryPromise = createDracoPrimitive(primitive);\n        } else {\n          geometryPromise = addPrimitiveAttributes(new BufferGeometry(), primitive, parser);\n        }\n        cache[cacheKey] = { primitive, promise: geometryPromise };\n        pending.push(geometryPromise);\n      }\n    }\n    return Promise.all(pending);\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\n   * @param {number} meshIndex\n   * @return {Promise<Group|Mesh|SkinnedMesh>}\n   */\n  loadMesh(meshIndex) {\n    const parser = this;\n    const json = this.json;\n    const extensions2 = this.extensions;\n    const meshDef = json.meshes[meshIndex];\n    const primitives = meshDef.primitives;\n    const pending = [];\n    for (let i2 = 0, il = primitives.length; i2 < il; i2++) {\n      const material = primitives[i2].material === void 0 ? createDefaultMaterial(this.cache) : this.getDependency(\"material\", primitives[i2].material);\n      pending.push(material);\n    }\n    pending.push(parser.loadGeometries(primitives));\n    return Promise.all(pending).then(function(results) {\n      const materials = results.slice(0, results.length - 1);\n      const geometries = results[results.length - 1];\n      const meshes = [];\n      for (let i2 = 0, il = geometries.length; i2 < il; i2++) {\n        const geometry = geometries[i2];\n        const primitive = primitives[i2];\n        let mesh;\n        const material = materials[i2];\n        if (primitive.mode === WEBGL_CONSTANTS.TRIANGLES || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP || primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN || primitive.mode === void 0) {\n          mesh = meshDef.isSkinnedMesh === true ? new SkinnedMesh(geometry, material) : new Mesh(geometry, material);\n          if (mesh.isSkinnedMesh === true) {\n            mesh.normalizeSkinWeights();\n          }\n          if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP) {\n            mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleStripDrawMode);\n          } else if (primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN) {\n            mesh.geometry = toTrianglesDrawMode(mesh.geometry, TriangleFanDrawMode);\n          }\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINES) {\n          mesh = new LineSegments(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINE_STRIP) {\n          mesh = new Line(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.LINE_LOOP) {\n          mesh = new LineLoop(geometry, material);\n        } else if (primitive.mode === WEBGL_CONSTANTS.POINTS) {\n          mesh = new Points(geometry, material);\n        } else {\n          throw new Error(\"THREE.GLTFLoader: Primitive mode unsupported: \" + primitive.mode);\n        }\n        if (Object.keys(mesh.geometry.morphAttributes).length > 0) {\n          updateMorphTargets(mesh, meshDef);\n        }\n        mesh.name = parser.createUniqueName(meshDef.name || \"mesh_\" + meshIndex);\n        assignExtrasToUserData(mesh, meshDef);\n        if (primitive.extensions)\n          addUnknownExtensionsToUserData(extensions2, mesh, primitive);\n        parser.assignFinalMaterial(mesh);\n        meshes.push(mesh);\n      }\n      for (let i2 = 0, il = meshes.length; i2 < il; i2++) {\n        parser.associations.set(meshes[i2], {\n          meshes: meshIndex,\n          primitives: i2\n        });\n      }\n      if (meshes.length === 1) {\n        if (meshDef.extensions)\n          addUnknownExtensionsToUserData(extensions2, meshes[0], meshDef);\n        return meshes[0];\n      }\n      const group = new Group();\n      if (meshDef.extensions)\n        addUnknownExtensionsToUserData(extensions2, group, meshDef);\n      parser.associations.set(group, { meshes: meshIndex });\n      for (let i2 = 0, il = meshes.length; i2 < il; i2++) {\n        group.add(meshes[i2]);\n      }\n      return group;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\n   * @param {number} cameraIndex\n   * @return {Promise<THREE.Camera>}\n   */\n  loadCamera(cameraIndex) {\n    let camera;\n    const cameraDef = this.json.cameras[cameraIndex];\n    const params = cameraDef[cameraDef.type];\n    if (!params) {\n      console.warn(\"THREE.GLTFLoader: Missing camera parameters.\");\n      return;\n    }\n    if (cameraDef.type === \"perspective\") {\n      camera = new PerspectiveCamera(\n        MathUtils.radToDeg(params.yfov),\n        params.aspectRatio || 1,\n        params.znear || 1,\n        params.zfar || 2e6\n      );\n    } else if (cameraDef.type === \"orthographic\") {\n      camera = new OrthographicCamera(-params.xmag, params.xmag, params.ymag, -params.ymag, params.znear, params.zfar);\n    }\n    if (cameraDef.name)\n      camera.name = this.createUniqueName(cameraDef.name);\n    assignExtrasToUserData(camera, cameraDef);\n    return Promise.resolve(camera);\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\n   * @param {number} skinIndex\n   * @return {Promise<Skeleton>}\n   */\n  loadSkin(skinIndex) {\n    const skinDef = this.json.skins[skinIndex];\n    const pending = [];\n    for (let i2 = 0, il = skinDef.joints.length; i2 < il; i2++) {\n      pending.push(this._loadNodeShallow(skinDef.joints[i2]));\n    }\n    if (skinDef.inverseBindMatrices !== void 0) {\n      pending.push(this.getDependency(\"accessor\", skinDef.inverseBindMatrices));\n    } else {\n      pending.push(null);\n    }\n    return Promise.all(pending).then(function(results) {\n      const inverseBindMatrices = results.pop();\n      const jointNodes = results;\n      const bones = [];\n      const boneInverses = [];\n      for (let i2 = 0, il = jointNodes.length; i2 < il; i2++) {\n        const jointNode = jointNodes[i2];\n        if (jointNode) {\n          bones.push(jointNode);\n          const mat = new Matrix4();\n          if (inverseBindMatrices !== null) {\n            mat.fromArray(inverseBindMatrices.array, i2 * 16);\n          }\n          boneInverses.push(mat);\n        } else {\n          console.warn('THREE.GLTFLoader: Joint \"%s\" could not be found.', skinDef.joints[i2]);\n        }\n      }\n      return new Skeleton(bones, boneInverses);\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\n   * @param {number} animationIndex\n   * @return {Promise<AnimationClip>}\n   */\n  loadAnimation(animationIndex) {\n    const json = this.json;\n    const parser = this;\n    const animationDef = json.animations[animationIndex];\n    const animationName = animationDef.name ? animationDef.name : \"animation_\" + animationIndex;\n    const pendingNodes = [];\n    const pendingInputAccessors = [];\n    const pendingOutputAccessors = [];\n    const pendingSamplers = [];\n    const pendingTargets = [];\n    for (let i2 = 0, il = animationDef.channels.length; i2 < il; i2++) {\n      const channel = animationDef.channels[i2];\n      const sampler = animationDef.samplers[channel.sampler];\n      const target = channel.target;\n      const name = target.node;\n      const input = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.input] : sampler.input;\n      const output = animationDef.parameters !== void 0 ? animationDef.parameters[sampler.output] : sampler.output;\n      if (target.node === void 0)\n        continue;\n      pendingNodes.push(this.getDependency(\"node\", name));\n      pendingInputAccessors.push(this.getDependency(\"accessor\", input));\n      pendingOutputAccessors.push(this.getDependency(\"accessor\", output));\n      pendingSamplers.push(sampler);\n      pendingTargets.push(target);\n    }\n    return Promise.all([\n      Promise.all(pendingNodes),\n      Promise.all(pendingInputAccessors),\n      Promise.all(pendingOutputAccessors),\n      Promise.all(pendingSamplers),\n      Promise.all(pendingTargets)\n    ]).then(function(dependencies) {\n      const nodes = dependencies[0];\n      const inputAccessors = dependencies[1];\n      const outputAccessors = dependencies[2];\n      const samplers = dependencies[3];\n      const targets = dependencies[4];\n      const tracks = [];\n      for (let i2 = 0, il = nodes.length; i2 < il; i2++) {\n        const node = nodes[i2];\n        const inputAccessor = inputAccessors[i2];\n        const outputAccessor = outputAccessors[i2];\n        const sampler = samplers[i2];\n        const target = targets[i2];\n        if (node === void 0)\n          continue;\n        if (node.updateMatrix) {\n          node.updateMatrix();\n        }\n        const createdTracks = parser._createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target);\n        if (createdTracks) {\n          for (let k2 = 0; k2 < createdTracks.length; k2++) {\n            tracks.push(createdTracks[k2]);\n          }\n        }\n      }\n      return new AnimationClip(animationName, void 0, tracks);\n    });\n  }\n  createNodeMesh(nodeIndex) {\n    const json = this.json;\n    const parser = this;\n    const nodeDef = json.nodes[nodeIndex];\n    if (nodeDef.mesh === void 0)\n      return null;\n    return parser.getDependency(\"mesh\", nodeDef.mesh).then(function(mesh) {\n      const node = parser._getNodeRef(parser.meshCache, nodeDef.mesh, mesh);\n      if (nodeDef.weights !== void 0) {\n        node.traverse(function(o2) {\n          if (!o2.isMesh)\n            return;\n          for (let i2 = 0, il = nodeDef.weights.length; i2 < il; i2++) {\n            o2.morphTargetInfluences[i2] = nodeDef.weights[i2];\n          }\n        });\n      }\n      return node;\n    });\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\n   * @param {number} nodeIndex\n   * @return {Promise<Object3D>}\n   */\n  loadNode(nodeIndex) {\n    const json = this.json;\n    const parser = this;\n    const nodeDef = json.nodes[nodeIndex];\n    const nodePending = parser._loadNodeShallow(nodeIndex);\n    const childPending = [];\n    const childrenDef = nodeDef.children || [];\n    for (let i2 = 0, il = childrenDef.length; i2 < il; i2++) {\n      childPending.push(parser.getDependency(\"node\", childrenDef[i2]));\n    }\n    const skeletonPending = nodeDef.skin === void 0 ? Promise.resolve(null) : parser.getDependency(\"skin\", nodeDef.skin);\n    return Promise.all([nodePending, Promise.all(childPending), skeletonPending]).then(function(results) {\n      const node = results[0];\n      const children = results[1];\n      const skeleton = results[2];\n      if (skeleton !== null) {\n        node.traverse(function(mesh) {\n          if (!mesh.isSkinnedMesh)\n            return;\n          mesh.bind(skeleton, _identityMatrix);\n        });\n      }\n      for (let i2 = 0, il = children.length; i2 < il; i2++) {\n        node.add(children[i2]);\n      }\n      return node;\n    });\n  }\n  // ._loadNodeShallow() parses a single node.\n  // skin and child nodes are created and added in .loadNode() (no '_' prefix).\n  _loadNodeShallow(nodeIndex) {\n    const json = this.json;\n    const extensions2 = this.extensions;\n    const parser = this;\n    if (this.nodeCache[nodeIndex] !== void 0) {\n      return this.nodeCache[nodeIndex];\n    }\n    const nodeDef = json.nodes[nodeIndex];\n    const nodeName = nodeDef.name ? parser.createUniqueName(nodeDef.name) : \"\";\n    const pending = [];\n    const meshPromise = parser._invokeOne(function(ext) {\n      return ext.createNodeMesh && ext.createNodeMesh(nodeIndex);\n    });\n    if (meshPromise) {\n      pending.push(meshPromise);\n    }\n    if (nodeDef.camera !== void 0) {\n      pending.push(\n        parser.getDependency(\"camera\", nodeDef.camera).then(function(camera) {\n          return parser._getNodeRef(parser.cameraCache, nodeDef.camera, camera);\n        })\n      );\n    }\n    parser._invokeAll(function(ext) {\n      return ext.createNodeAttachment && ext.createNodeAttachment(nodeIndex);\n    }).forEach(function(promise) {\n      pending.push(promise);\n    });\n    this.nodeCache[nodeIndex] = Promise.all(pending).then(function(objects) {\n      let node;\n      if (nodeDef.isBone === true) {\n        node = new Bone();\n      } else if (objects.length > 1) {\n        node = new Group();\n      } else if (objects.length === 1) {\n        node = objects[0];\n      } else {\n        node = new Object3D();\n      }\n      if (node !== objects[0]) {\n        for (let i2 = 0, il = objects.length; i2 < il; i2++) {\n          node.add(objects[i2]);\n        }\n      }\n      if (nodeDef.name) {\n        node.userData.name = nodeDef.name;\n        node.name = nodeName;\n      }\n      assignExtrasToUserData(node, nodeDef);\n      if (nodeDef.extensions)\n        addUnknownExtensionsToUserData(extensions2, node, nodeDef);\n      if (nodeDef.matrix !== void 0) {\n        const matrix = new Matrix4();\n        matrix.fromArray(nodeDef.matrix);\n        node.applyMatrix4(matrix);\n      } else {\n        if (nodeDef.translation !== void 0) {\n          node.position.fromArray(nodeDef.translation);\n        }\n        if (nodeDef.rotation !== void 0) {\n          node.quaternion.fromArray(nodeDef.rotation);\n        }\n        if (nodeDef.scale !== void 0) {\n          node.scale.fromArray(nodeDef.scale);\n        }\n      }\n      if (!parser.associations.has(node)) {\n        parser.associations.set(node, {});\n      }\n      parser.associations.get(node).nodes = nodeIndex;\n      return node;\n    });\n    return this.nodeCache[nodeIndex];\n  }\n  /**\n   * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\n   * @param {number} sceneIndex\n   * @return {Promise<Group>}\n   */\n  loadScene(sceneIndex) {\n    const extensions2 = this.extensions;\n    const sceneDef = this.json.scenes[sceneIndex];\n    const parser = this;\n    const scene = new Group();\n    if (sceneDef.name)\n      scene.name = parser.createUniqueName(sceneDef.name);\n    assignExtrasToUserData(scene, sceneDef);\n    if (sceneDef.extensions)\n      addUnknownExtensionsToUserData(extensions2, scene, sceneDef);\n    const nodeIds = sceneDef.nodes || [];\n    const pending = [];\n    for (let i2 = 0, il = nodeIds.length; i2 < il; i2++) {\n      pending.push(parser.getDependency(\"node\", nodeIds[i2]));\n    }\n    return Promise.all(pending).then(function(nodes) {\n      for (let i2 = 0, il = nodes.length; i2 < il; i2++) {\n        scene.add(nodes[i2]);\n      }\n      const reduceAssociations = (node) => {\n        const reducedAssociations = /* @__PURE__ */ new Map();\n        for (const [key, value] of parser.associations) {\n          if (key instanceof Material || key instanceof Texture) {\n            reducedAssociations.set(key, value);\n          }\n        }\n        node.traverse((node2) => {\n          const mappings = parser.associations.get(node2);\n          if (mappings != null) {\n            reducedAssociations.set(node2, mappings);\n          }\n        });\n        return reducedAssociations;\n      };\n      parser.associations = reduceAssociations(scene);\n      return scene;\n    });\n  }\n  _createAnimationTracks(node, inputAccessor, outputAccessor, sampler, target) {\n    const tracks = [];\n    const targetName = node.name ? node.name : node.uuid;\n    const targetNames = [];\n    if (PATH_PROPERTIES[target.path] === PATH_PROPERTIES.weights) {\n      node.traverse(function(object) {\n        if (object.morphTargetInfluences) {\n          targetNames.push(object.name ? object.name : object.uuid);\n        }\n      });\n    } else {\n      targetNames.push(targetName);\n    }\n    let TypedKeyframeTrack;\n    switch (PATH_PROPERTIES[target.path]) {\n      case PATH_PROPERTIES.weights:\n        TypedKeyframeTrack = NumberKeyframeTrack;\n        break;\n      case PATH_PROPERTIES.rotation:\n        TypedKeyframeTrack = QuaternionKeyframeTrack;\n        break;\n      case PATH_PROPERTIES.position:\n      case PATH_PROPERTIES.scale:\n        TypedKeyframeTrack = VectorKeyframeTrack;\n        break;\n      default:\n        switch (outputAccessor.itemSize) {\n          case 1:\n            TypedKeyframeTrack = NumberKeyframeTrack;\n            break;\n          case 2:\n          case 3:\n          default:\n            TypedKeyframeTrack = VectorKeyframeTrack;\n            break;\n        }\n        break;\n    }\n    const interpolation = sampler.interpolation !== void 0 ? INTERPOLATION[sampler.interpolation] : InterpolateLinear;\n    const outputArray = this._getArrayFromAccessor(outputAccessor);\n    for (let j2 = 0, jl = targetNames.length; j2 < jl; j2++) {\n      const track = new TypedKeyframeTrack(\n        targetNames[j2] + \".\" + PATH_PROPERTIES[target.path],\n        inputAccessor.array,\n        outputArray,\n        interpolation\n      );\n      if (sampler.interpolation === \"CUBICSPLINE\") {\n        this._createCubicSplineTrackInterpolant(track);\n      }\n      tracks.push(track);\n    }\n    return tracks;\n  }\n  _getArrayFromAccessor(accessor) {\n    let outputArray = accessor.array;\n    if (accessor.normalized) {\n      const scale = getNormalizedComponentScale(outputArray.constructor);\n      const scaled = new Float32Array(outputArray.length);\n      for (let j2 = 0, jl = outputArray.length; j2 < jl; j2++) {\n        scaled[j2] = outputArray[j2] * scale;\n      }\n      outputArray = scaled;\n    }\n    return outputArray;\n  }\n  _createCubicSplineTrackInterpolant(track) {\n    track.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline(result) {\n      const interpolantType = this instanceof QuaternionKeyframeTrack ? GLTFCubicSplineQuaternionInterpolant : GLTFCubicSplineInterpolant;\n      return new interpolantType(this.times, this.values, this.getValueSize() / 3, result);\n    };\n    track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\n  }\n}\nfunction computeBounds(geometry, primitiveDef, parser) {\n  const attributes = primitiveDef.attributes;\n  const box = new Box3();\n  if (attributes.POSITION !== void 0) {\n    const accessor = parser.json.accessors[attributes.POSITION];\n    const min = accessor.min;\n    const max2 = accessor.max;\n    if (min !== void 0 && max2 !== void 0) {\n      box.set(new Vector3(min[0], min[1], min[2]), new Vector3(max2[0], max2[1], max2[2]));\n      if (accessor.normalized) {\n        const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n        box.min.multiplyScalar(boxScale);\n        box.max.multiplyScalar(boxScale);\n      }\n    } else {\n      console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n      return;\n    }\n  } else {\n    return;\n  }\n  const targets = primitiveDef.targets;\n  if (targets !== void 0) {\n    const maxDisplacement = new Vector3();\n    const vector = new Vector3();\n    for (let i2 = 0, il = targets.length; i2 < il; i2++) {\n      const target = targets[i2];\n      if (target.POSITION !== void 0) {\n        const accessor = parser.json.accessors[target.POSITION];\n        const min = accessor.min;\n        const max2 = accessor.max;\n        if (min !== void 0 && max2 !== void 0) {\n          vector.setX(Math.max(Math.abs(min[0]), Math.abs(max2[0])));\n          vector.setY(Math.max(Math.abs(min[1]), Math.abs(max2[1])));\n          vector.setZ(Math.max(Math.abs(min[2]), Math.abs(max2[2])));\n          if (accessor.normalized) {\n            const boxScale = getNormalizedComponentScale(WEBGL_COMPONENT_TYPES[accessor.componentType]);\n            vector.multiplyScalar(boxScale);\n          }\n          maxDisplacement.max(vector);\n        } else {\n          console.warn(\"THREE.GLTFLoader: Missing min/max properties for accessor POSITION.\");\n        }\n      }\n    }\n    box.expandByVector(maxDisplacement);\n  }\n  geometry.boundingBox = box;\n  const sphere = new Sphere();\n  box.getCenter(sphere.center);\n  sphere.radius = box.min.distanceTo(box.max) / 2;\n  geometry.boundingSphere = sphere;\n}\nfunction addPrimitiveAttributes(geometry, primitiveDef, parser) {\n  const attributes = primitiveDef.attributes;\n  const pending = [];\n  function assignAttributeAccessor(accessorIndex, attributeName) {\n    return parser.getDependency(\"accessor\", accessorIndex).then(function(accessor) {\n      geometry.setAttribute(attributeName, accessor);\n    });\n  }\n  for (const gltfAttributeName in attributes) {\n    const threeAttributeName = ATTRIBUTES[gltfAttributeName] || gltfAttributeName.toLowerCase();\n    if (threeAttributeName in geometry.attributes)\n      continue;\n    pending.push(assignAttributeAccessor(attributes[gltfAttributeName], threeAttributeName));\n  }\n  if (primitiveDef.indices !== void 0 && !geometry.index) {\n    const accessor = parser.getDependency(\"accessor\", primitiveDef.indices).then(function(accessor2) {\n      geometry.setIndex(accessor2);\n    });\n    pending.push(accessor);\n  }\n  assignExtrasToUserData(geometry, primitiveDef);\n  computeBounds(geometry, primitiveDef, parser);\n  return Promise.all(pending).then(function() {\n    return primitiveDef.targets !== void 0 ? addMorphTargets(geometry, primitiveDef.targets, parser) : geometry;\n  });\n}\nclass RGBELoader extends DataTextureLoader {\n  constructor(manager) {\n    super(manager);\n    this.type = HalfFloatType;\n  }\n  // adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html\n  parse(buffer) {\n    const rgbe_read_error = 1, rgbe_write_error = 2, rgbe_format_error = 3, rgbe_memory_error = 4, rgbe_error = function(rgbe_error_code, msg) {\n      switch (rgbe_error_code) {\n        case rgbe_read_error:\n          throw new Error(\"THREE.RGBELoader: Read Error: \" + (msg || \"\"));\n        case rgbe_write_error:\n          throw new Error(\"THREE.RGBELoader: Write Error: \" + (msg || \"\"));\n        case rgbe_format_error:\n          throw new Error(\"THREE.RGBELoader: Bad File Format: \" + (msg || \"\"));\n        default:\n        case rgbe_memory_error:\n          throw new Error(\"THREE.RGBELoader: Memory Error: \" + (msg || \"\"));\n      }\n    }, RGBE_VALID_PROGRAMTYPE = 1, RGBE_VALID_FORMAT = 2, RGBE_VALID_DIMENSIONS = 4, NEWLINE = \"\\n\", fgets = function(buffer2, lineLimit, consume) {\n      const chunkSize = 128;\n      lineLimit = !lineLimit ? 1024 : lineLimit;\n      let p2 = buffer2.pos, i2 = -1, len = 0, s2 = \"\", chunk = String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p2, p2 + chunkSize)));\n      while (0 > (i2 = chunk.indexOf(NEWLINE)) && len < lineLimit && p2 < buffer2.byteLength) {\n        s2 += chunk;\n        len += chunk.length;\n        p2 += chunkSize;\n        chunk += String.fromCharCode.apply(null, new Uint16Array(buffer2.subarray(p2, p2 + chunkSize)));\n      }\n      if (-1 < i2) {\n        buffer2.pos += len + i2 + 1;\n        return s2 + chunk.slice(0, i2);\n      }\n      return false;\n    }, RGBE_ReadHeader = function(buffer2) {\n      const magic_token_re = /^#\\?(\\S+)/, gamma_re = /^\\s*GAMMA\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/, exposure_re = /^\\s*EXPOSURE\\s*=\\s*(\\d+(\\.\\d+)?)\\s*$/, format_re = /^\\s*FORMAT=(\\S+)\\s*$/, dimensions_re = /^\\s*\\-Y\\s+(\\d+)\\s+\\+X\\s+(\\d+)\\s*$/, header = {\n        valid: 0,\n        string: \"\",\n        comments: \"\",\n        programtype: \"RGBE\",\n        format: \"\",\n        gamma: 1,\n        exposure: 1,\n        width: 0,\n        height: 0\n      };\n      let line, match;\n      if (buffer2.pos >= buffer2.byteLength || !(line = fgets(buffer2))) {\n        rgbe_error(rgbe_read_error, \"no header found\");\n      }\n      if (!(match = line.match(magic_token_re))) {\n        rgbe_error(rgbe_format_error, \"bad initial token\");\n      }\n      header.valid |= RGBE_VALID_PROGRAMTYPE;\n      header.programtype = match[1];\n      header.string += line + \"\\n\";\n      while (true) {\n        line = fgets(buffer2);\n        if (false === line)\n          break;\n        header.string += line + \"\\n\";\n        if (\"#\" === line.charAt(0)) {\n          header.comments += line + \"\\n\";\n          continue;\n        }\n        if (match = line.match(gamma_re)) {\n          header.gamma = parseFloat(match[1]);\n        }\n        if (match = line.match(exposure_re)) {\n          header.exposure = parseFloat(match[1]);\n        }\n        if (match = line.match(format_re)) {\n          header.valid |= RGBE_VALID_FORMAT;\n          header.format = match[1];\n        }\n        if (match = line.match(dimensions_re)) {\n          header.valid |= RGBE_VALID_DIMENSIONS;\n          header.height = parseInt(match[1], 10);\n          header.width = parseInt(match[2], 10);\n        }\n        if (header.valid & RGBE_VALID_FORMAT && header.valid & RGBE_VALID_DIMENSIONS)\n          break;\n      }\n      if (!(header.valid & RGBE_VALID_FORMAT)) {\n        rgbe_error(rgbe_format_error, \"missing format specifier\");\n      }\n      if (!(header.valid & RGBE_VALID_DIMENSIONS)) {\n        rgbe_error(rgbe_format_error, \"missing image size specifier\");\n      }\n      return header;\n    }, RGBE_ReadPixels_RLE = function(buffer2, w22, h22) {\n      const scanline_width = w22;\n      if (\n        // run length encoding is not allowed so read flat\n        scanline_width < 8 || scanline_width > 32767 || // this file is not run length encoded\n        2 !== buffer2[0] || 2 !== buffer2[1] || buffer2[2] & 128\n      ) {\n        return new Uint8Array(buffer2);\n      }\n      if (scanline_width !== (buffer2[2] << 8 | buffer2[3])) {\n        rgbe_error(rgbe_format_error, \"wrong scanline width\");\n      }\n      const data_rgba = new Uint8Array(4 * w22 * h22);\n      if (!data_rgba.length) {\n        rgbe_error(rgbe_memory_error, \"unable to allocate buffer space\");\n      }\n      let offset = 0, pos = 0;\n      const ptr_end = 4 * scanline_width;\n      const rgbeStart = new Uint8Array(4);\n      const scanline_buffer = new Uint8Array(ptr_end);\n      let num_scanlines = h22;\n      while (num_scanlines > 0 && pos < buffer2.byteLength) {\n        if (pos + 4 > buffer2.byteLength) {\n          rgbe_error(rgbe_read_error);\n        }\n        rgbeStart[0] = buffer2[pos++];\n        rgbeStart[1] = buffer2[pos++];\n        rgbeStart[2] = buffer2[pos++];\n        rgbeStart[3] = buffer2[pos++];\n        if (2 != rgbeStart[0] || 2 != rgbeStart[1] || (rgbeStart[2] << 8 | rgbeStart[3]) != scanline_width) {\n          rgbe_error(rgbe_format_error, \"bad rgbe scanline format\");\n        }\n        let ptr = 0, count;\n        while (ptr < ptr_end && pos < buffer2.byteLength) {\n          count = buffer2[pos++];\n          const isEncodedRun = count > 128;\n          if (isEncodedRun)\n            count -= 128;\n          if (0 === count || ptr + count > ptr_end) {\n            rgbe_error(rgbe_format_error, \"bad scanline data\");\n          }\n          if (isEncodedRun) {\n            const byteValue = buffer2[pos++];\n            for (let i2 = 0; i2 < count; i2++) {\n              scanline_buffer[ptr++] = byteValue;\n            }\n          } else {\n            scanline_buffer.set(buffer2.subarray(pos, pos + count), ptr);\n            ptr += count;\n            pos += count;\n          }\n        }\n        const l2 = scanline_width;\n        for (let i2 = 0; i2 < l2; i2++) {\n          let off = 0;\n          data_rgba[offset] = scanline_buffer[i2 + off];\n          off += scanline_width;\n          data_rgba[offset + 1] = scanline_buffer[i2 + off];\n          off += scanline_width;\n          data_rgba[offset + 2] = scanline_buffer[i2 + off];\n          off += scanline_width;\n          data_rgba[offset + 3] = scanline_buffer[i2 + off];\n          offset += 4;\n        }\n        num_scanlines--;\n      }\n      return data_rgba;\n    };\n    const RGBEByteToRGBFloat = function(sourceArray, sourceOffset, destArray, destOffset) {\n      const e2 = sourceArray[sourceOffset + 3];\n      const scale = Math.pow(2, e2 - 128) / 255;\n      destArray[destOffset + 0] = sourceArray[sourceOffset + 0] * scale;\n      destArray[destOffset + 1] = sourceArray[sourceOffset + 1] * scale;\n      destArray[destOffset + 2] = sourceArray[sourceOffset + 2] * scale;\n      destArray[destOffset + 3] = 1;\n    };\n    const RGBEByteToRGBHalf = function(sourceArray, sourceOffset, destArray, destOffset) {\n      const e2 = sourceArray[sourceOffset + 3];\n      const scale = Math.pow(2, e2 - 128) / 255;\n      destArray[destOffset + 0] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 0] * scale, 65504));\n      destArray[destOffset + 1] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 1] * scale, 65504));\n      destArray[destOffset + 2] = DataUtils.toHalfFloat(Math.min(sourceArray[sourceOffset + 2] * scale, 65504));\n      destArray[destOffset + 3] = DataUtils.toHalfFloat(1);\n    };\n    const byteArray = new Uint8Array(buffer);\n    byteArray.pos = 0;\n    const rgbe_header_info = RGBE_ReadHeader(byteArray);\n    const w2 = rgbe_header_info.width, h2 = rgbe_header_info.height, image_rgba_data = RGBE_ReadPixels_RLE(byteArray.subarray(byteArray.pos), w2, h2);\n    let data, type;\n    let numElements;\n    switch (this.type) {\n      case FloatType:\n        numElements = image_rgba_data.length / 4;\n        const floatArray = new Float32Array(numElements * 4);\n        for (let j2 = 0; j2 < numElements; j2++) {\n          RGBEByteToRGBFloat(image_rgba_data, j2 * 4, floatArray, j2 * 4);\n        }\n        data = floatArray;\n        type = FloatType;\n        break;\n      case HalfFloatType:\n        numElements = image_rgba_data.length / 4;\n        const halfArray = new Uint16Array(numElements * 4);\n        for (let j2 = 0; j2 < numElements; j2++) {\n          RGBEByteToRGBHalf(image_rgba_data, j2 * 4, halfArray, j2 * 4);\n        }\n        data = halfArray;\n        type = HalfFloatType;\n        break;\n      default:\n        throw new Error(\"THREE.RGBELoader: Unsupported type: \" + this.type);\n    }\n    return {\n      width: w2,\n      height: h2,\n      data,\n      header: rgbe_header_info.string,\n      gamma: rgbe_header_info.gamma,\n      exposure: rgbe_header_info.exposure,\n      type\n    };\n  }\n  setDataType(value) {\n    this.type = value;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    function onLoadCallback(texture, texData) {\n      switch (texture.type) {\n        case FloatType:\n        case HalfFloatType:\n          if (\"colorSpace\" in texture)\n            texture.colorSpace = \"srgb-linear\";\n          else\n            texture.encoding = 3e3;\n          texture.minFilter = LinearFilter;\n          texture.magFilter = LinearFilter;\n          texture.generateMipmaps = false;\n          texture.flipY = true;\n          break;\n      }\n      if (onLoad)\n        onLoad(texture, texData);\n    }\n    return super.load(url, onLoadCallback, onProgress, onError);\n  }\n}\nconst hasColorSpace = version$1 >= 152;\nclass EXRLoader extends DataTextureLoader {\n  constructor(manager) {\n    super(manager);\n    this.type = HalfFloatType;\n  }\n  parse(buffer) {\n    const USHORT_RANGE = 1 << 16;\n    const BITMAP_SIZE = USHORT_RANGE >> 3;\n    const HUF_ENCBITS = 16;\n    const HUF_DECBITS = 14;\n    const HUF_ENCSIZE = (1 << HUF_ENCBITS) + 1;\n    const HUF_DECSIZE = 1 << HUF_DECBITS;\n    const HUF_DECMASK = HUF_DECSIZE - 1;\n    const NBITS = 16;\n    const A_OFFSET = 1 << NBITS - 1;\n    const MOD_MASK = (1 << NBITS) - 1;\n    const SHORT_ZEROCODE_RUN = 59;\n    const LONG_ZEROCODE_RUN = 63;\n    const SHORTEST_LONG_RUN = 2 + LONG_ZEROCODE_RUN - SHORT_ZEROCODE_RUN;\n    const ULONG_SIZE = 8;\n    const FLOAT32_SIZE = 4;\n    const INT32_SIZE = 4;\n    const INT16_SIZE = 2;\n    const INT8_SIZE = 1;\n    const STATIC_HUFFMAN = 0;\n    const DEFLATE = 1;\n    const UNKNOWN = 0;\n    const LOSSY_DCT = 1;\n    const RLE = 2;\n    const logBase = Math.pow(2.7182818, 2.2);\n    function reverseLutFromBitmap(bitmap, lut) {\n      var k2 = 0;\n      for (var i2 = 0; i2 < USHORT_RANGE; ++i2) {\n        if (i2 == 0 || bitmap[i2 >> 3] & 1 << (i2 & 7)) {\n          lut[k2++] = i2;\n        }\n      }\n      var n2 = k2 - 1;\n      while (k2 < USHORT_RANGE)\n        lut[k2++] = 0;\n      return n2;\n    }\n    function hufClearDecTable(hdec) {\n      for (var i2 = 0; i2 < HUF_DECSIZE; i2++) {\n        hdec[i2] = {};\n        hdec[i2].len = 0;\n        hdec[i2].lit = 0;\n        hdec[i2].p = null;\n      }\n    }\n    const getBitsReturn = { l: 0, c: 0, lc: 0 };\n    function getBits(nBits, c2, lc, uInt8Array2, inOffset) {\n      while (lc < nBits) {\n        c2 = c2 << 8 | parseUint8Array(uInt8Array2, inOffset);\n        lc += 8;\n      }\n      lc -= nBits;\n      getBitsReturn.l = c2 >> lc & (1 << nBits) - 1;\n      getBitsReturn.c = c2;\n      getBitsReturn.lc = lc;\n    }\n    const hufTableBuffer = new Array(59);\n    function hufCanonicalCodeTable(hcode) {\n      for (var i2 = 0; i2 <= 58; ++i2)\n        hufTableBuffer[i2] = 0;\n      for (var i2 = 0; i2 < HUF_ENCSIZE; ++i2)\n        hufTableBuffer[hcode[i2]] += 1;\n      var c2 = 0;\n      for (var i2 = 58; i2 > 0; --i2) {\n        var nc = c2 + hufTableBuffer[i2] >> 1;\n        hufTableBuffer[i2] = c2;\n        c2 = nc;\n      }\n      for (var i2 = 0; i2 < HUF_ENCSIZE; ++i2) {\n        var l2 = hcode[i2];\n        if (l2 > 0)\n          hcode[i2] = l2 | hufTableBuffer[l2]++ << 6;\n      }\n    }\n    function hufUnpackEncTable(uInt8Array2, inDataView, inOffset, ni, im, iM, hcode) {\n      var p2 = inOffset;\n      var c2 = 0;\n      var lc = 0;\n      for (; im <= iM; im++) {\n        if (p2.value - inOffset.value > ni)\n          return false;\n        getBits(6, c2, lc, uInt8Array2, p2);\n        var l2 = getBitsReturn.l;\n        c2 = getBitsReturn.c;\n        lc = getBitsReturn.lc;\n        hcode[im] = l2;\n        if (l2 == LONG_ZEROCODE_RUN) {\n          if (p2.value - inOffset.value > ni) {\n            throw \"Something wrong with hufUnpackEncTable\";\n          }\n          getBits(8, c2, lc, uInt8Array2, p2);\n          var zerun = getBitsReturn.l + SHORTEST_LONG_RUN;\n          c2 = getBitsReturn.c;\n          lc = getBitsReturn.lc;\n          if (im + zerun > iM + 1) {\n            throw \"Something wrong with hufUnpackEncTable\";\n          }\n          while (zerun--)\n            hcode[im++] = 0;\n          im--;\n        } else if (l2 >= SHORT_ZEROCODE_RUN) {\n          var zerun = l2 - SHORT_ZEROCODE_RUN + 2;\n          if (im + zerun > iM + 1) {\n            throw \"Something wrong with hufUnpackEncTable\";\n          }\n          while (zerun--)\n            hcode[im++] = 0;\n          im--;\n        }\n      }\n      hufCanonicalCodeTable(hcode);\n    }\n    function hufLength(code) {\n      return code & 63;\n    }\n    function hufCode(code) {\n      return code >> 6;\n    }\n    function hufBuildDecTable(hcode, im, iM, hdecod) {\n      for (; im <= iM; im++) {\n        var c2 = hufCode(hcode[im]);\n        var l2 = hufLength(hcode[im]);\n        if (c2 >> l2) {\n          throw \"Invalid table entry\";\n        }\n        if (l2 > HUF_DECBITS) {\n          var pl = hdecod[c2 >> l2 - HUF_DECBITS];\n          if (pl.len) {\n            throw \"Invalid table entry\";\n          }\n          pl.lit++;\n          if (pl.p) {\n            var p2 = pl.p;\n            pl.p = new Array(pl.lit);\n            for (var i2 = 0; i2 < pl.lit - 1; ++i2) {\n              pl.p[i2] = p2[i2];\n            }\n          } else {\n            pl.p = new Array(1);\n          }\n          pl.p[pl.lit - 1] = im;\n        } else if (l2) {\n          var plOffset = 0;\n          for (var i2 = 1 << HUF_DECBITS - l2; i2 > 0; i2--) {\n            var pl = hdecod[(c2 << HUF_DECBITS - l2) + plOffset];\n            if (pl.len || pl.p) {\n              throw \"Invalid table entry\";\n            }\n            pl.len = l2;\n            pl.lit = im;\n            plOffset++;\n          }\n        }\n      }\n      return true;\n    }\n    const getCharReturn = { c: 0, lc: 0 };\n    function getChar(c2, lc, uInt8Array2, inOffset) {\n      c2 = c2 << 8 | parseUint8Array(uInt8Array2, inOffset);\n      lc += 8;\n      getCharReturn.c = c2;\n      getCharReturn.lc = lc;\n    }\n    const getCodeReturn = { c: 0, lc: 0 };\n    function getCode(po, rlc, c2, lc, uInt8Array2, inDataView, inOffset, outBuffer, outBufferOffset, outBufferEndOffset) {\n      if (po == rlc) {\n        if (lc < 8) {\n          getChar(c2, lc, uInt8Array2, inOffset);\n          c2 = getCharReturn.c;\n          lc = getCharReturn.lc;\n        }\n        lc -= 8;\n        var cs = c2 >> lc;\n        var cs = new Uint8Array([cs])[0];\n        if (outBufferOffset.value + cs > outBufferEndOffset) {\n          return false;\n        }\n        var s2 = outBuffer[outBufferOffset.value - 1];\n        while (cs-- > 0) {\n          outBuffer[outBufferOffset.value++] = s2;\n        }\n      } else if (outBufferOffset.value < outBufferEndOffset) {\n        outBuffer[outBufferOffset.value++] = po;\n      } else {\n        return false;\n      }\n      getCodeReturn.c = c2;\n      getCodeReturn.lc = lc;\n    }\n    function UInt16(value) {\n      return value & 65535;\n    }\n    function Int16(value) {\n      var ref = UInt16(value);\n      return ref > 32767 ? ref - 65536 : ref;\n    }\n    const wdec14Return = { a: 0, b: 0 };\n    function wdec14(l2, h2) {\n      var ls = Int16(l2);\n      var hs = Int16(h2);\n      var hi = hs;\n      var ai = ls + (hi & 1) + (hi >> 1);\n      var as = ai;\n      var bs = ai - hi;\n      wdec14Return.a = as;\n      wdec14Return.b = bs;\n    }\n    function wdec16(l2, h2) {\n      var m2 = UInt16(l2);\n      var d2 = UInt16(h2);\n      var bb = m2 - (d2 >> 1) & MOD_MASK;\n      var aa = d2 + bb - A_OFFSET & MOD_MASK;\n      wdec14Return.a = aa;\n      wdec14Return.b = bb;\n    }\n    function wav2Decode(buffer2, j2, nx, ox, ny, oy, mx) {\n      var w14 = mx < 1 << 14;\n      var n2 = nx > ny ? ny : nx;\n      var p2 = 1;\n      var p22;\n      while (p2 <= n2)\n        p2 <<= 1;\n      p2 >>= 1;\n      p22 = p2;\n      p2 >>= 1;\n      while (p2 >= 1) {\n        var py2 = 0;\n        var ey = py2 + oy * (ny - p22);\n        var oy1 = oy * p2;\n        var oy2 = oy * p22;\n        var ox1 = ox * p2;\n        var ox2 = ox * p22;\n        var i00, i01, i10, i11;\n        for (; py2 <= ey; py2 += oy2) {\n          var px2 = py2;\n          var ex = py2 + ox * (nx - p22);\n          for (; px2 <= ex; px2 += ox2) {\n            var p01 = px2 + ox1;\n            var p10 = px2 + oy1;\n            var p11 = p10 + ox1;\n            if (w14) {\n              wdec14(buffer2[px2 + j2], buffer2[p10 + j2]);\n              i00 = wdec14Return.a;\n              i10 = wdec14Return.b;\n              wdec14(buffer2[p01 + j2], buffer2[p11 + j2]);\n              i01 = wdec14Return.a;\n              i11 = wdec14Return.b;\n              wdec14(i00, i01);\n              buffer2[px2 + j2] = wdec14Return.a;\n              buffer2[p01 + j2] = wdec14Return.b;\n              wdec14(i10, i11);\n              buffer2[p10 + j2] = wdec14Return.a;\n              buffer2[p11 + j2] = wdec14Return.b;\n            } else {\n              wdec16(buffer2[px2 + j2], buffer2[p10 + j2]);\n              i00 = wdec14Return.a;\n              i10 = wdec14Return.b;\n              wdec16(buffer2[p01 + j2], buffer2[p11 + j2]);\n              i01 = wdec14Return.a;\n              i11 = wdec14Return.b;\n              wdec16(i00, i01);\n              buffer2[px2 + j2] = wdec14Return.a;\n              buffer2[p01 + j2] = wdec14Return.b;\n              wdec16(i10, i11);\n              buffer2[p10 + j2] = wdec14Return.a;\n              buffer2[p11 + j2] = wdec14Return.b;\n            }\n          }\n          if (nx & p2) {\n            var p10 = px2 + oy1;\n            if (w14)\n              wdec14(buffer2[px2 + j2], buffer2[p10 + j2]);\n            else\n              wdec16(buffer2[px2 + j2], buffer2[p10 + j2]);\n            i00 = wdec14Return.a;\n            buffer2[p10 + j2] = wdec14Return.b;\n            buffer2[px2 + j2] = i00;\n          }\n        }\n        if (ny & p2) {\n          var px2 = py2;\n          var ex = py2 + ox * (nx - p22);\n          for (; px2 <= ex; px2 += ox2) {\n            var p01 = px2 + ox1;\n            if (w14)\n              wdec14(buffer2[px2 + j2], buffer2[p01 + j2]);\n            else\n              wdec16(buffer2[px2 + j2], buffer2[p01 + j2]);\n            i00 = wdec14Return.a;\n            buffer2[p01 + j2] = wdec14Return.b;\n            buffer2[px2 + j2] = i00;\n          }\n        }\n        p22 = p2;\n        p2 >>= 1;\n      }\n      return py2;\n    }\n    function hufDecode(encodingTable, decodingTable, uInt8Array2, inDataView, inOffset, ni, rlc, no, outBuffer, outOffset) {\n      var c2 = 0;\n      var lc = 0;\n      var outBufferEndOffset = no;\n      var inOffsetEnd = Math.trunc(inOffset.value + (ni + 7) / 8);\n      while (inOffset.value < inOffsetEnd) {\n        getChar(c2, lc, uInt8Array2, inOffset);\n        c2 = getCharReturn.c;\n        lc = getCharReturn.lc;\n        while (lc >= HUF_DECBITS) {\n          var index = c2 >> lc - HUF_DECBITS & HUF_DECMASK;\n          var pl = decodingTable[index];\n          if (pl.len) {\n            lc -= pl.len;\n            getCode(pl.lit, rlc, c2, lc, uInt8Array2, inDataView, inOffset, outBuffer, outOffset, outBufferEndOffset);\n            c2 = getCodeReturn.c;\n            lc = getCodeReturn.lc;\n          } else {\n            if (!pl.p) {\n              throw \"hufDecode issues\";\n            }\n            var j2;\n            for (j2 = 0; j2 < pl.lit; j2++) {\n              var l2 = hufLength(encodingTable[pl.p[j2]]);\n              while (lc < l2 && inOffset.value < inOffsetEnd) {\n                getChar(c2, lc, uInt8Array2, inOffset);\n                c2 = getCharReturn.c;\n                lc = getCharReturn.lc;\n              }\n              if (lc >= l2) {\n                if (hufCode(encodingTable[pl.p[j2]]) == (c2 >> lc - l2 & (1 << l2) - 1)) {\n                  lc -= l2;\n                  getCode(\n                    pl.p[j2],\n                    rlc,\n                    c2,\n                    lc,\n                    uInt8Array2,\n                    inDataView,\n                    inOffset,\n                    outBuffer,\n                    outOffset,\n                    outBufferEndOffset\n                  );\n                  c2 = getCodeReturn.c;\n                  lc = getCodeReturn.lc;\n                  break;\n                }\n              }\n            }\n            if (j2 == pl.lit) {\n              throw \"hufDecode issues\";\n            }\n          }\n        }\n      }\n      var i2 = 8 - ni & 7;\n      c2 >>= i2;\n      lc -= i2;\n      while (lc > 0) {\n        var pl = decodingTable[c2 << HUF_DECBITS - lc & HUF_DECMASK];\n        if (pl.len) {\n          lc -= pl.len;\n          getCode(pl.lit, rlc, c2, lc, uInt8Array2, inDataView, inOffset, outBuffer, outOffset, outBufferEndOffset);\n          c2 = getCodeReturn.c;\n          lc = getCodeReturn.lc;\n        } else {\n          throw \"hufDecode issues\";\n        }\n      }\n      return true;\n    }\n    function hufUncompress(uInt8Array2, inDataView, inOffset, nCompressed, outBuffer, nRaw) {\n      var outOffset = { value: 0 };\n      var initialInOffset = inOffset.value;\n      var im = parseUint32(inDataView, inOffset);\n      var iM = parseUint32(inDataView, inOffset);\n      inOffset.value += 4;\n      var nBits = parseUint32(inDataView, inOffset);\n      inOffset.value += 4;\n      if (im < 0 || im >= HUF_ENCSIZE || iM < 0 || iM >= HUF_ENCSIZE) {\n        throw \"Something wrong with HUF_ENCSIZE\";\n      }\n      var freq = new Array(HUF_ENCSIZE);\n      var hdec = new Array(HUF_DECSIZE);\n      hufClearDecTable(hdec);\n      var ni = nCompressed - (inOffset.value - initialInOffset);\n      hufUnpackEncTable(uInt8Array2, inDataView, inOffset, ni, im, iM, freq);\n      if (nBits > 8 * (nCompressed - (inOffset.value - initialInOffset))) {\n        throw \"Something wrong with hufUncompress\";\n      }\n      hufBuildDecTable(freq, im, iM, hdec);\n      hufDecode(freq, hdec, uInt8Array2, inDataView, inOffset, nBits, iM, nRaw, outBuffer, outOffset);\n    }\n    function applyLut(lut, data, nData) {\n      for (var i2 = 0; i2 < nData; ++i2) {\n        data[i2] = lut[data[i2]];\n      }\n    }\n    function predictor(source) {\n      for (var t2 = 1; t2 < source.length; t2++) {\n        var d2 = source[t2 - 1] + source[t2] - 128;\n        source[t2] = d2;\n      }\n    }\n    function interleaveScalar(source, out) {\n      var t1 = 0;\n      var t2 = Math.floor((source.length + 1) / 2);\n      var s2 = 0;\n      var stop = source.length - 1;\n      while (true) {\n        if (s2 > stop)\n          break;\n        out[s2++] = source[t1++];\n        if (s2 > stop)\n          break;\n        out[s2++] = source[t2++];\n      }\n    }\n    function decodeRunLength(source) {\n      var size = source.byteLength;\n      var out = new Array();\n      var p2 = 0;\n      var reader = new DataView(source);\n      while (size > 0) {\n        var l2 = reader.getInt8(p2++);\n        if (l2 < 0) {\n          var count = -l2;\n          size -= count + 1;\n          for (var i2 = 0; i2 < count; i2++) {\n            out.push(reader.getUint8(p2++));\n          }\n        } else {\n          var count = l2;\n          size -= 2;\n          var value = reader.getUint8(p2++);\n          for (var i2 = 0; i2 < count + 1; i2++) {\n            out.push(value);\n          }\n        }\n      }\n      return out;\n    }\n    function lossyDctDecode(cscSet, rowPtrs, channelData, acBuffer, dcBuffer, outBuffer) {\n      var dataView = new DataView(outBuffer.buffer);\n      var width = channelData[cscSet.idx[0]].width;\n      var height = channelData[cscSet.idx[0]].height;\n      var numComp = 3;\n      var numFullBlocksX = Math.floor(width / 8);\n      var numBlocksX = Math.ceil(width / 8);\n      var numBlocksY = Math.ceil(height / 8);\n      var leftoverX = width - (numBlocksX - 1) * 8;\n      var leftoverY = height - (numBlocksY - 1) * 8;\n      var currAcComp = { value: 0 };\n      var currDcComp = new Array(numComp);\n      var dctData = new Array(numComp);\n      var halfZigBlock = new Array(numComp);\n      var rowBlock = new Array(numComp);\n      var rowOffsets = new Array(numComp);\n      for (let comp2 = 0; comp2 < numComp; ++comp2) {\n        rowOffsets[comp2] = rowPtrs[cscSet.idx[comp2]];\n        currDcComp[comp2] = comp2 < 1 ? 0 : currDcComp[comp2 - 1] + numBlocksX * numBlocksY;\n        dctData[comp2] = new Float32Array(64);\n        halfZigBlock[comp2] = new Uint16Array(64);\n        rowBlock[comp2] = new Uint16Array(numBlocksX * 64);\n      }\n      for (let blocky = 0; blocky < numBlocksY; ++blocky) {\n        var maxY = 8;\n        if (blocky == numBlocksY - 1)\n          maxY = leftoverY;\n        var maxX = 8;\n        for (let blockx = 0; blockx < numBlocksX; ++blockx) {\n          if (blockx == numBlocksX - 1)\n            maxX = leftoverX;\n          for (let comp2 = 0; comp2 < numComp; ++comp2) {\n            halfZigBlock[comp2].fill(0);\n            halfZigBlock[comp2][0] = dcBuffer[currDcComp[comp2]++];\n            unRleAC(currAcComp, acBuffer, halfZigBlock[comp2]);\n            unZigZag(halfZigBlock[comp2], dctData[comp2]);\n            dctInverse(dctData[comp2]);\n          }\n          {\n            csc709Inverse(dctData);\n          }\n          for (let comp2 = 0; comp2 < numComp; ++comp2) {\n            convertToHalf(dctData[comp2], rowBlock[comp2], blockx * 64);\n          }\n        }\n        let offset2 = 0;\n        for (let comp2 = 0; comp2 < numComp; ++comp2) {\n          const type2 = channelData[cscSet.idx[comp2]].type;\n          for (let y22 = 8 * blocky; y22 < 8 * blocky + maxY; ++y22) {\n            offset2 = rowOffsets[comp2][y22];\n            for (let blockx = 0; blockx < numFullBlocksX; ++blockx) {\n              const src = blockx * 64 + (y22 & 7) * 8;\n              dataView.setUint16(offset2 + 0 * INT16_SIZE * type2, rowBlock[comp2][src + 0], true);\n              dataView.setUint16(offset2 + 1 * INT16_SIZE * type2, rowBlock[comp2][src + 1], true);\n              dataView.setUint16(offset2 + 2 * INT16_SIZE * type2, rowBlock[comp2][src + 2], true);\n              dataView.setUint16(offset2 + 3 * INT16_SIZE * type2, rowBlock[comp2][src + 3], true);\n              dataView.setUint16(offset2 + 4 * INT16_SIZE * type2, rowBlock[comp2][src + 4], true);\n              dataView.setUint16(offset2 + 5 * INT16_SIZE * type2, rowBlock[comp2][src + 5], true);\n              dataView.setUint16(offset2 + 6 * INT16_SIZE * type2, rowBlock[comp2][src + 6], true);\n              dataView.setUint16(offset2 + 7 * INT16_SIZE * type2, rowBlock[comp2][src + 7], true);\n              offset2 += 8 * INT16_SIZE * type2;\n            }\n          }\n          if (numFullBlocksX != numBlocksX) {\n            for (let y22 = 8 * blocky; y22 < 8 * blocky + maxY; ++y22) {\n              const offset3 = rowOffsets[comp2][y22] + 8 * numFullBlocksX * INT16_SIZE * type2;\n              const src = numFullBlocksX * 64 + (y22 & 7) * 8;\n              for (let x22 = 0; x22 < maxX; ++x22) {\n                dataView.setUint16(offset3 + x22 * INT16_SIZE * type2, rowBlock[comp2][src + x22], true);\n              }\n            }\n          }\n        }\n      }\n      var halfRow = new Uint16Array(width);\n      var dataView = new DataView(outBuffer.buffer);\n      for (var comp = 0; comp < numComp; ++comp) {\n        channelData[cscSet.idx[comp]].decoded = true;\n        var type = channelData[cscSet.idx[comp]].type;\n        if (channelData[comp].type != 2)\n          continue;\n        for (var y2 = 0; y2 < height; ++y2) {\n          const offset2 = rowOffsets[comp][y2];\n          for (var x2 = 0; x2 < width; ++x2) {\n            halfRow[x2] = dataView.getUint16(offset2 + x2 * INT16_SIZE * type, true);\n          }\n          for (var x2 = 0; x2 < width; ++x2) {\n            dataView.setFloat32(offset2 + x2 * INT16_SIZE * type, decodeFloat16(halfRow[x2]), true);\n          }\n        }\n      }\n    }\n    function unRleAC(currAcComp, acBuffer, halfZigBlock) {\n      var acValue;\n      var dctComp = 1;\n      while (dctComp < 64) {\n        acValue = acBuffer[currAcComp.value];\n        if (acValue == 65280) {\n          dctComp = 64;\n        } else if (acValue >> 8 == 255) {\n          dctComp += acValue & 255;\n        } else {\n          halfZigBlock[dctComp] = acValue;\n          dctComp++;\n        }\n        currAcComp.value++;\n      }\n    }\n    function unZigZag(src, dst) {\n      dst[0] = decodeFloat16(src[0]);\n      dst[1] = decodeFloat16(src[1]);\n      dst[2] = decodeFloat16(src[5]);\n      dst[3] = decodeFloat16(src[6]);\n      dst[4] = decodeFloat16(src[14]);\n      dst[5] = decodeFloat16(src[15]);\n      dst[6] = decodeFloat16(src[27]);\n      dst[7] = decodeFloat16(src[28]);\n      dst[8] = decodeFloat16(src[2]);\n      dst[9] = decodeFloat16(src[4]);\n      dst[10] = decodeFloat16(src[7]);\n      dst[11] = decodeFloat16(src[13]);\n      dst[12] = decodeFloat16(src[16]);\n      dst[13] = decodeFloat16(src[26]);\n      dst[14] = decodeFloat16(src[29]);\n      dst[15] = decodeFloat16(src[42]);\n      dst[16] = decodeFloat16(src[3]);\n      dst[17] = decodeFloat16(src[8]);\n      dst[18] = decodeFloat16(src[12]);\n      dst[19] = decodeFloat16(src[17]);\n      dst[20] = decodeFloat16(src[25]);\n      dst[21] = decodeFloat16(src[30]);\n      dst[22] = decodeFloat16(src[41]);\n      dst[23] = decodeFloat16(src[43]);\n      dst[24] = decodeFloat16(src[9]);\n      dst[25] = decodeFloat16(src[11]);\n      dst[26] = decodeFloat16(src[18]);\n      dst[27] = decodeFloat16(src[24]);\n      dst[28] = decodeFloat16(src[31]);\n      dst[29] = decodeFloat16(src[40]);\n      dst[30] = decodeFloat16(src[44]);\n      dst[31] = decodeFloat16(src[53]);\n      dst[32] = decodeFloat16(src[10]);\n      dst[33] = decodeFloat16(src[19]);\n      dst[34] = decodeFloat16(src[23]);\n      dst[35] = decodeFloat16(src[32]);\n      dst[36] = decodeFloat16(src[39]);\n      dst[37] = decodeFloat16(src[45]);\n      dst[38] = decodeFloat16(src[52]);\n      dst[39] = decodeFloat16(src[54]);\n      dst[40] = decodeFloat16(src[20]);\n      dst[41] = decodeFloat16(src[22]);\n      dst[42] = decodeFloat16(src[33]);\n      dst[43] = decodeFloat16(src[38]);\n      dst[44] = decodeFloat16(src[46]);\n      dst[45] = decodeFloat16(src[51]);\n      dst[46] = decodeFloat16(src[55]);\n      dst[47] = decodeFloat16(src[60]);\n      dst[48] = decodeFloat16(src[21]);\n      dst[49] = decodeFloat16(src[34]);\n      dst[50] = decodeFloat16(src[37]);\n      dst[51] = decodeFloat16(src[47]);\n      dst[52] = decodeFloat16(src[50]);\n      dst[53] = decodeFloat16(src[56]);\n      dst[54] = decodeFloat16(src[59]);\n      dst[55] = decodeFloat16(src[61]);\n      dst[56] = decodeFloat16(src[35]);\n      dst[57] = decodeFloat16(src[36]);\n      dst[58] = decodeFloat16(src[48]);\n      dst[59] = decodeFloat16(src[49]);\n      dst[60] = decodeFloat16(src[57]);\n      dst[61] = decodeFloat16(src[58]);\n      dst[62] = decodeFloat16(src[62]);\n      dst[63] = decodeFloat16(src[63]);\n    }\n    function dctInverse(data) {\n      const a2 = 0.5 * Math.cos(3.14159 / 4);\n      const b2 = 0.5 * Math.cos(3.14159 / 16);\n      const c2 = 0.5 * Math.cos(3.14159 / 8);\n      const d2 = 0.5 * Math.cos(3 * 3.14159 / 16);\n      const e2 = 0.5 * Math.cos(5 * 3.14159 / 16);\n      const f2 = 0.5 * Math.cos(3 * 3.14159 / 8);\n      const g2 = 0.5 * Math.cos(7 * 3.14159 / 16);\n      var alpha = new Array(4);\n      var beta = new Array(4);\n      var theta = new Array(4);\n      var gamma = new Array(4);\n      for (var row = 0; row < 8; ++row) {\n        var rowPtr = row * 8;\n        alpha[0] = c2 * data[rowPtr + 2];\n        alpha[1] = f2 * data[rowPtr + 2];\n        alpha[2] = c2 * data[rowPtr + 6];\n        alpha[3] = f2 * data[rowPtr + 6];\n        beta[0] = b2 * data[rowPtr + 1] + d2 * data[rowPtr + 3] + e2 * data[rowPtr + 5] + g2 * data[rowPtr + 7];\n        beta[1] = d2 * data[rowPtr + 1] - g2 * data[rowPtr + 3] - b2 * data[rowPtr + 5] - e2 * data[rowPtr + 7];\n        beta[2] = e2 * data[rowPtr + 1] - b2 * data[rowPtr + 3] + g2 * data[rowPtr + 5] + d2 * data[rowPtr + 7];\n        beta[3] = g2 * data[rowPtr + 1] - e2 * data[rowPtr + 3] + d2 * data[rowPtr + 5] - b2 * data[rowPtr + 7];\n        theta[0] = a2 * (data[rowPtr + 0] + data[rowPtr + 4]);\n        theta[3] = a2 * (data[rowPtr + 0] - data[rowPtr + 4]);\n        theta[1] = alpha[0] + alpha[3];\n        theta[2] = alpha[1] - alpha[2];\n        gamma[0] = theta[0] + theta[1];\n        gamma[1] = theta[3] + theta[2];\n        gamma[2] = theta[3] - theta[2];\n        gamma[3] = theta[0] - theta[1];\n        data[rowPtr + 0] = gamma[0] + beta[0];\n        data[rowPtr + 1] = gamma[1] + beta[1];\n        data[rowPtr + 2] = gamma[2] + beta[2];\n        data[rowPtr + 3] = gamma[3] + beta[3];\n        data[rowPtr + 4] = gamma[3] - beta[3];\n        data[rowPtr + 5] = gamma[2] - beta[2];\n        data[rowPtr + 6] = gamma[1] - beta[1];\n        data[rowPtr + 7] = gamma[0] - beta[0];\n      }\n      for (var column = 0; column < 8; ++column) {\n        alpha[0] = c2 * data[16 + column];\n        alpha[1] = f2 * data[16 + column];\n        alpha[2] = c2 * data[48 + column];\n        alpha[3] = f2 * data[48 + column];\n        beta[0] = b2 * data[8 + column] + d2 * data[24 + column] + e2 * data[40 + column] + g2 * data[56 + column];\n        beta[1] = d2 * data[8 + column] - g2 * data[24 + column] - b2 * data[40 + column] - e2 * data[56 + column];\n        beta[2] = e2 * data[8 + column] - b2 * data[24 + column] + g2 * data[40 + column] + d2 * data[56 + column];\n        beta[3] = g2 * data[8 + column] - e2 * data[24 + column] + d2 * data[40 + column] - b2 * data[56 + column];\n        theta[0] = a2 * (data[column] + data[32 + column]);\n        theta[3] = a2 * (data[column] - data[32 + column]);\n        theta[1] = alpha[0] + alpha[3];\n        theta[2] = alpha[1] - alpha[2];\n        gamma[0] = theta[0] + theta[1];\n        gamma[1] = theta[3] + theta[2];\n        gamma[2] = theta[3] - theta[2];\n        gamma[3] = theta[0] - theta[1];\n        data[0 + column] = gamma[0] + beta[0];\n        data[8 + column] = gamma[1] + beta[1];\n        data[16 + column] = gamma[2] + beta[2];\n        data[24 + column] = gamma[3] + beta[3];\n        data[32 + column] = gamma[3] - beta[3];\n        data[40 + column] = gamma[2] - beta[2];\n        data[48 + column] = gamma[1] - beta[1];\n        data[56 + column] = gamma[0] - beta[0];\n      }\n    }\n    function csc709Inverse(data) {\n      for (var i2 = 0; i2 < 64; ++i2) {\n        var y2 = data[0][i2];\n        var cb = data[1][i2];\n        var cr = data[2][i2];\n        data[0][i2] = y2 + 1.5747 * cr;\n        data[1][i2] = y2 - 0.1873 * cb - 0.4682 * cr;\n        data[2][i2] = y2 + 1.8556 * cb;\n      }\n    }\n    function convertToHalf(src, dst, idx) {\n      for (var i2 = 0; i2 < 64; ++i2) {\n        dst[idx + i2] = DataUtils.toHalfFloat(toLinear(src[i2]));\n      }\n    }\n    function toLinear(float) {\n      if (float <= 1) {\n        return Math.sign(float) * Math.pow(Math.abs(float), 2.2);\n      } else {\n        return Math.sign(float) * Math.pow(logBase, Math.abs(float) - 1);\n      }\n    }\n    function uncompressRAW(info) {\n      return new DataView(info.array.buffer, info.offset.value, info.size);\n    }\n    function uncompressRLE(info) {\n      var compressed = info.viewer.buffer.slice(info.offset.value, info.offset.value + info.size);\n      var rawBuffer = new Uint8Array(decodeRunLength(compressed));\n      var tmpBuffer = new Uint8Array(rawBuffer.length);\n      predictor(rawBuffer);\n      interleaveScalar(rawBuffer, tmpBuffer);\n      return new DataView(tmpBuffer.buffer);\n    }\n    function uncompressZIP(info) {\n      var compressed = info.array.slice(info.offset.value, info.offset.value + info.size);\n      var rawBuffer = unzlibSync(compressed);\n      var tmpBuffer = new Uint8Array(rawBuffer.length);\n      predictor(rawBuffer);\n      interleaveScalar(rawBuffer, tmpBuffer);\n      return new DataView(tmpBuffer.buffer);\n    }\n    function uncompressPIZ(info) {\n      var inDataView = info.viewer;\n      var inOffset = { value: info.offset.value };\n      var outBuffer = new Uint16Array(info.width * info.scanlineBlockSize * (info.channels * info.type));\n      var bitmap = new Uint8Array(BITMAP_SIZE);\n      var outBufferEnd = 0;\n      var pizChannelData = new Array(info.channels);\n      for (var i2 = 0; i2 < info.channels; i2++) {\n        pizChannelData[i2] = {};\n        pizChannelData[i2][\"start\"] = outBufferEnd;\n        pizChannelData[i2][\"end\"] = pizChannelData[i2][\"start\"];\n        pizChannelData[i2][\"nx\"] = info.width;\n        pizChannelData[i2][\"ny\"] = info.lines;\n        pizChannelData[i2][\"size\"] = info.type;\n        outBufferEnd += pizChannelData[i2].nx * pizChannelData[i2].ny * pizChannelData[i2].size;\n      }\n      var minNonZero = parseUint16(inDataView, inOffset);\n      var maxNonZero = parseUint16(inDataView, inOffset);\n      if (maxNonZero >= BITMAP_SIZE) {\n        throw \"Something is wrong with PIZ_COMPRESSION BITMAP_SIZE\";\n      }\n      if (minNonZero <= maxNonZero) {\n        for (var i2 = 0; i2 < maxNonZero - minNonZero + 1; i2++) {\n          bitmap[i2 + minNonZero] = parseUint8(inDataView, inOffset);\n        }\n      }\n      var lut = new Uint16Array(USHORT_RANGE);\n      var maxValue = reverseLutFromBitmap(bitmap, lut);\n      var length = parseUint32(inDataView, inOffset);\n      hufUncompress(info.array, inDataView, inOffset, length, outBuffer, outBufferEnd);\n      for (var i2 = 0; i2 < info.channels; ++i2) {\n        var cd = pizChannelData[i2];\n        for (var j2 = 0; j2 < pizChannelData[i2].size; ++j2) {\n          wav2Decode(outBuffer, cd.start + j2, cd.nx, cd.size, cd.ny, cd.nx * cd.size, maxValue);\n        }\n      }\n      applyLut(lut, outBuffer, outBufferEnd);\n      var tmpOffset2 = 0;\n      var tmpBuffer = new Uint8Array(outBuffer.buffer.byteLength);\n      for (var y2 = 0; y2 < info.lines; y2++) {\n        for (var c2 = 0; c2 < info.channels; c2++) {\n          var cd = pizChannelData[c2];\n          var n2 = cd.nx * cd.size;\n          var cp = new Uint8Array(outBuffer.buffer, cd.end * INT16_SIZE, n2 * INT16_SIZE);\n          tmpBuffer.set(cp, tmpOffset2);\n          tmpOffset2 += n2 * INT16_SIZE;\n          cd.end += n2;\n        }\n      }\n      return new DataView(tmpBuffer.buffer);\n    }\n    function uncompressPXR(info) {\n      var compressed = info.array.slice(info.offset.value, info.offset.value + info.size);\n      var rawBuffer = unzlibSync(compressed);\n      const sz = info.lines * info.channels * info.width;\n      const tmpBuffer = info.type == 1 ? new Uint16Array(sz) : new Uint32Array(sz);\n      let tmpBufferEnd = 0;\n      let writePtr = 0;\n      const ptr = new Array(4);\n      for (let y2 = 0; y2 < info.lines; y2++) {\n        for (let c2 = 0; c2 < info.channels; c2++) {\n          let pixel = 0;\n          switch (info.type) {\n            case 1:\n              ptr[0] = tmpBufferEnd;\n              ptr[1] = ptr[0] + info.width;\n              tmpBufferEnd = ptr[1] + info.width;\n              for (let j2 = 0; j2 < info.width; ++j2) {\n                const diff = rawBuffer[ptr[0]++] << 8 | rawBuffer[ptr[1]++];\n                pixel += diff;\n                tmpBuffer[writePtr] = pixel;\n                writePtr++;\n              }\n              break;\n            case 2:\n              ptr[0] = tmpBufferEnd;\n              ptr[1] = ptr[0] + info.width;\n              ptr[2] = ptr[1] + info.width;\n              tmpBufferEnd = ptr[2] + info.width;\n              for (let j2 = 0; j2 < info.width; ++j2) {\n                const diff = rawBuffer[ptr[0]++] << 24 | rawBuffer[ptr[1]++] << 16 | rawBuffer[ptr[2]++] << 8;\n                pixel += diff;\n                tmpBuffer[writePtr] = pixel;\n                writePtr++;\n              }\n              break;\n          }\n        }\n      }\n      return new DataView(tmpBuffer.buffer);\n    }\n    function uncompressDWA(info) {\n      var inDataView = info.viewer;\n      var inOffset = { value: info.offset.value };\n      var outBuffer = new Uint8Array(info.width * info.lines * (info.channels * info.type * INT16_SIZE));\n      var dwaHeader = {\n        version: parseInt64(inDataView, inOffset),\n        unknownUncompressedSize: parseInt64(inDataView, inOffset),\n        unknownCompressedSize: parseInt64(inDataView, inOffset),\n        acCompressedSize: parseInt64(inDataView, inOffset),\n        dcCompressedSize: parseInt64(inDataView, inOffset),\n        rleCompressedSize: parseInt64(inDataView, inOffset),\n        rleUncompressedSize: parseInt64(inDataView, inOffset),\n        rleRawSize: parseInt64(inDataView, inOffset),\n        totalAcUncompressedCount: parseInt64(inDataView, inOffset),\n        totalDcUncompressedCount: parseInt64(inDataView, inOffset),\n        acCompression: parseInt64(inDataView, inOffset)\n      };\n      if (dwaHeader.version < 2) {\n        throw \"EXRLoader.parse: \" + EXRHeader.compression + \" version \" + dwaHeader.version + \" is unsupported\";\n      }\n      var channelRules = new Array();\n      var ruleSize = parseUint16(inDataView, inOffset) - INT16_SIZE;\n      while (ruleSize > 0) {\n        var name = parseNullTerminatedString(inDataView.buffer, inOffset);\n        var value = parseUint8(inDataView, inOffset);\n        var compression = value >> 2 & 3;\n        var csc = (value >> 4) - 1;\n        var index = new Int8Array([csc])[0];\n        var type = parseUint8(inDataView, inOffset);\n        channelRules.push({\n          name,\n          index,\n          type,\n          compression\n        });\n        ruleSize -= name.length + 3;\n      }\n      var channels = EXRHeader.channels;\n      var channelData = new Array(info.channels);\n      for (var i2 = 0; i2 < info.channels; ++i2) {\n        var cd = channelData[i2] = {};\n        var channel = channels[i2];\n        cd.name = channel.name;\n        cd.compression = UNKNOWN;\n        cd.decoded = false;\n        cd.type = channel.pixelType;\n        cd.pLinear = channel.pLinear;\n        cd.width = info.width;\n        cd.height = info.lines;\n      }\n      var cscSet = {\n        idx: new Array(3)\n      };\n      for (var offset2 = 0; offset2 < info.channels; ++offset2) {\n        var cd = channelData[offset2];\n        for (var i2 = 0; i2 < channelRules.length; ++i2) {\n          var rule = channelRules[i2];\n          if (cd.name == rule.name) {\n            cd.compression = rule.compression;\n            if (rule.index >= 0) {\n              cscSet.idx[rule.index] = offset2;\n            }\n            cd.offset = offset2;\n          }\n        }\n      }\n      if (dwaHeader.acCompressedSize > 0) {\n        switch (dwaHeader.acCompression) {\n          case STATIC_HUFFMAN:\n            var acBuffer = new Uint16Array(dwaHeader.totalAcUncompressedCount);\n            hufUncompress(\n              info.array,\n              inDataView,\n              inOffset,\n              dwaHeader.acCompressedSize,\n              acBuffer,\n              dwaHeader.totalAcUncompressedCount\n            );\n            break;\n          case DEFLATE:\n            var compressed = info.array.slice(inOffset.value, inOffset.value + dwaHeader.totalAcUncompressedCount);\n            var data = unzlibSync(compressed);\n            var acBuffer = new Uint16Array(data.buffer);\n            inOffset.value += dwaHeader.totalAcUncompressedCount;\n            break;\n        }\n      }\n      if (dwaHeader.dcCompressedSize > 0) {\n        var zlibInfo = {\n          array: info.array,\n          offset: inOffset,\n          size: dwaHeader.dcCompressedSize\n        };\n        var dcBuffer = new Uint16Array(uncompressZIP(zlibInfo).buffer);\n        inOffset.value += dwaHeader.dcCompressedSize;\n      }\n      if (dwaHeader.rleRawSize > 0) {\n        var compressed = info.array.slice(inOffset.value, inOffset.value + dwaHeader.rleCompressedSize);\n        var data = unzlibSync(compressed);\n        var rleBuffer = decodeRunLength(data.buffer);\n        inOffset.value += dwaHeader.rleCompressedSize;\n      }\n      var outBufferEnd = 0;\n      var rowOffsets = new Array(channelData.length);\n      for (var i2 = 0; i2 < rowOffsets.length; ++i2) {\n        rowOffsets[i2] = new Array();\n      }\n      for (var y2 = 0; y2 < info.lines; ++y2) {\n        for (var chan = 0; chan < channelData.length; ++chan) {\n          rowOffsets[chan].push(outBufferEnd);\n          outBufferEnd += channelData[chan].width * info.type * INT16_SIZE;\n        }\n      }\n      lossyDctDecode(cscSet, rowOffsets, channelData, acBuffer, dcBuffer, outBuffer);\n      for (var i2 = 0; i2 < channelData.length; ++i2) {\n        var cd = channelData[i2];\n        if (cd.decoded)\n          continue;\n        switch (cd.compression) {\n          case RLE:\n            var row = 0;\n            var rleOffset = 0;\n            for (var y2 = 0; y2 < info.lines; ++y2) {\n              var rowOffsetBytes = rowOffsets[i2][row];\n              for (var x2 = 0; x2 < cd.width; ++x2) {\n                for (var byte = 0; byte < INT16_SIZE * cd.type; ++byte) {\n                  outBuffer[rowOffsetBytes++] = rleBuffer[rleOffset + byte * cd.width * cd.height];\n                }\n                rleOffset++;\n              }\n              row++;\n            }\n            break;\n          case LOSSY_DCT:\n          default:\n            throw \"EXRLoader.parse: unsupported channel compression\";\n        }\n      }\n      return new DataView(outBuffer.buffer);\n    }\n    function parseNullTerminatedString(buffer2, offset2) {\n      var uintBuffer = new Uint8Array(buffer2);\n      var endOffset = 0;\n      while (uintBuffer[offset2.value + endOffset] != 0) {\n        endOffset += 1;\n      }\n      var stringValue = new TextDecoder().decode(uintBuffer.slice(offset2.value, offset2.value + endOffset));\n      offset2.value = offset2.value + endOffset + 1;\n      return stringValue;\n    }\n    function parseFixedLengthString(buffer2, offset2, size) {\n      var stringValue = new TextDecoder().decode(new Uint8Array(buffer2).slice(offset2.value, offset2.value + size));\n      offset2.value = offset2.value + size;\n      return stringValue;\n    }\n    function parseRational(dataView, offset2) {\n      var x2 = parseInt32(dataView, offset2);\n      var y2 = parseUint32(dataView, offset2);\n      return [x2, y2];\n    }\n    function parseTimecode(dataView, offset2) {\n      var x2 = parseUint32(dataView, offset2);\n      var y2 = parseUint32(dataView, offset2);\n      return [x2, y2];\n    }\n    function parseInt32(dataView, offset2) {\n      var Int32 = dataView.getInt32(offset2.value, true);\n      offset2.value = offset2.value + INT32_SIZE;\n      return Int32;\n    }\n    function parseUint32(dataView, offset2) {\n      var Uint32 = dataView.getUint32(offset2.value, true);\n      offset2.value = offset2.value + INT32_SIZE;\n      return Uint32;\n    }\n    function parseUint8Array(uInt8Array2, offset2) {\n      var Uint8 = uInt8Array2[offset2.value];\n      offset2.value = offset2.value + INT8_SIZE;\n      return Uint8;\n    }\n    function parseUint8(dataView, offset2) {\n      var Uint8 = dataView.getUint8(offset2.value);\n      offset2.value = offset2.value + INT8_SIZE;\n      return Uint8;\n    }\n    const parseInt64 = function(dataView, offset2) {\n      let int;\n      if (\"getBigInt64\" in DataView.prototype) {\n        int = Number(dataView.getBigInt64(offset2.value, true));\n      } else {\n        int = dataView.getUint32(offset2.value + 4, true) + Number(dataView.getUint32(offset2.value, true) << 32);\n      }\n      offset2.value += ULONG_SIZE;\n      return int;\n    };\n    function parseFloat32(dataView, offset2) {\n      var float = dataView.getFloat32(offset2.value, true);\n      offset2.value += FLOAT32_SIZE;\n      return float;\n    }\n    function decodeFloat32(dataView, offset2) {\n      return DataUtils.toHalfFloat(parseFloat32(dataView, offset2));\n    }\n    function decodeFloat16(binary) {\n      var exponent = (binary & 31744) >> 10, fraction = binary & 1023;\n      return (binary >> 15 ? -1 : 1) * (exponent ? exponent === 31 ? fraction ? NaN : Infinity : Math.pow(2, exponent - 15) * (1 + fraction / 1024) : 6103515625e-14 * (fraction / 1024));\n    }\n    function parseUint16(dataView, offset2) {\n      var Uint16 = dataView.getUint16(offset2.value, true);\n      offset2.value += INT16_SIZE;\n      return Uint16;\n    }\n    function parseFloat16(buffer2, offset2) {\n      return decodeFloat16(parseUint16(buffer2, offset2));\n    }\n    function parseChlist(dataView, buffer2, offset2, size) {\n      var startOffset = offset2.value;\n      var channels = [];\n      while (offset2.value < startOffset + size - 1) {\n        var name = parseNullTerminatedString(buffer2, offset2);\n        var pixelType = parseInt32(dataView, offset2);\n        var pLinear = parseUint8(dataView, offset2);\n        offset2.value += 3;\n        var xSampling = parseInt32(dataView, offset2);\n        var ySampling = parseInt32(dataView, offset2);\n        channels.push({\n          name,\n          pixelType,\n          pLinear,\n          xSampling,\n          ySampling\n        });\n      }\n      offset2.value += 1;\n      return channels;\n    }\n    function parseChromaticities(dataView, offset2) {\n      var redX = parseFloat32(dataView, offset2);\n      var redY = parseFloat32(dataView, offset2);\n      var greenX = parseFloat32(dataView, offset2);\n      var greenY = parseFloat32(dataView, offset2);\n      var blueX = parseFloat32(dataView, offset2);\n      var blueY = parseFloat32(dataView, offset2);\n      var whiteX = parseFloat32(dataView, offset2);\n      var whiteY = parseFloat32(dataView, offset2);\n      return {\n        redX,\n        redY,\n        greenX,\n        greenY,\n        blueX,\n        blueY,\n        whiteX,\n        whiteY\n      };\n    }\n    function parseCompression(dataView, offset2) {\n      var compressionCodes = [\n        \"NO_COMPRESSION\",\n        \"RLE_COMPRESSION\",\n        \"ZIPS_COMPRESSION\",\n        \"ZIP_COMPRESSION\",\n        \"PIZ_COMPRESSION\",\n        \"PXR24_COMPRESSION\",\n        \"B44_COMPRESSION\",\n        \"B44A_COMPRESSION\",\n        \"DWAA_COMPRESSION\",\n        \"DWAB_COMPRESSION\"\n      ];\n      var compression = parseUint8(dataView, offset2);\n      return compressionCodes[compression];\n    }\n    function parseBox2i(dataView, offset2) {\n      var xMin = parseUint32(dataView, offset2);\n      var yMin = parseUint32(dataView, offset2);\n      var xMax = parseUint32(dataView, offset2);\n      var yMax = parseUint32(dataView, offset2);\n      return { xMin, yMin, xMax, yMax };\n    }\n    function parseLineOrder(dataView, offset2) {\n      var lineOrders = [\"INCREASING_Y\"];\n      var lineOrder = parseUint8(dataView, offset2);\n      return lineOrders[lineOrder];\n    }\n    function parseV2f(dataView, offset2) {\n      var x2 = parseFloat32(dataView, offset2);\n      var y2 = parseFloat32(dataView, offset2);\n      return [x2, y2];\n    }\n    function parseV3f(dataView, offset2) {\n      var x2 = parseFloat32(dataView, offset2);\n      var y2 = parseFloat32(dataView, offset2);\n      var z2 = parseFloat32(dataView, offset2);\n      return [x2, y2, z2];\n    }\n    function parseValue(dataView, buffer2, offset2, type, size) {\n      if (type === \"string\" || type === \"stringvector\" || type === \"iccProfile\") {\n        return parseFixedLengthString(buffer2, offset2, size);\n      } else if (type === \"chlist\") {\n        return parseChlist(dataView, buffer2, offset2, size);\n      } else if (type === \"chromaticities\") {\n        return parseChromaticities(dataView, offset2);\n      } else if (type === \"compression\") {\n        return parseCompression(dataView, offset2);\n      } else if (type === \"box2i\") {\n        return parseBox2i(dataView, offset2);\n      } else if (type === \"lineOrder\") {\n        return parseLineOrder(dataView, offset2);\n      } else if (type === \"float\") {\n        return parseFloat32(dataView, offset2);\n      } else if (type === \"v2f\") {\n        return parseV2f(dataView, offset2);\n      } else if (type === \"v3f\") {\n        return parseV3f(dataView, offset2);\n      } else if (type === \"int\") {\n        return parseInt32(dataView, offset2);\n      } else if (type === \"rational\") {\n        return parseRational(dataView, offset2);\n      } else if (type === \"timecode\") {\n        return parseTimecode(dataView, offset2);\n      } else if (type === \"preview\") {\n        offset2.value += size;\n        return \"skipped\";\n      } else {\n        offset2.value += size;\n        return void 0;\n      }\n    }\n    function parseHeader(dataView, buffer2, offset2) {\n      const EXRHeader2 = {};\n      if (dataView.getUint32(0, true) != 20000630) {\n        throw \"THREE.EXRLoader: provided file doesn't appear to be in OpenEXR format.\";\n      }\n      EXRHeader2.version = dataView.getUint8(4);\n      const spec = dataView.getUint8(5);\n      EXRHeader2.spec = {\n        singleTile: !!(spec & 2),\n        longName: !!(spec & 4),\n        deepFormat: !!(spec & 8),\n        multiPart: !!(spec & 16)\n      };\n      offset2.value = 8;\n      var keepReading = true;\n      while (keepReading) {\n        var attributeName = parseNullTerminatedString(buffer2, offset2);\n        if (attributeName == 0) {\n          keepReading = false;\n        } else {\n          var attributeType = parseNullTerminatedString(buffer2, offset2);\n          var attributeSize = parseUint32(dataView, offset2);\n          var attributeValue = parseValue(dataView, buffer2, offset2, attributeType, attributeSize);\n          if (attributeValue === void 0) {\n            console.warn(`EXRLoader.parse: skipped unknown header attribute type '${attributeType}'.`);\n          } else {\n            EXRHeader2[attributeName] = attributeValue;\n          }\n        }\n      }\n      if ((spec & -5) != 0) {\n        console.error(\"EXRHeader:\", EXRHeader2);\n        throw \"THREE.EXRLoader: provided file is currently unsupported.\";\n      }\n      return EXRHeader2;\n    }\n    function setupDecoder(EXRHeader2, dataView, uInt8Array2, offset2, outputType) {\n      const EXRDecoder2 = {\n        size: 0,\n        viewer: dataView,\n        array: uInt8Array2,\n        offset: offset2,\n        width: EXRHeader2.dataWindow.xMax - EXRHeader2.dataWindow.xMin + 1,\n        height: EXRHeader2.dataWindow.yMax - EXRHeader2.dataWindow.yMin + 1,\n        channels: EXRHeader2.channels.length,\n        bytesPerLine: null,\n        lines: null,\n        inputSize: null,\n        type: EXRHeader2.channels[0].pixelType,\n        uncompress: null,\n        getter: null,\n        format: null,\n        [hasColorSpace ? \"colorSpace\" : \"encoding\"]: null\n      };\n      switch (EXRHeader2.compression) {\n        case \"NO_COMPRESSION\":\n          EXRDecoder2.lines = 1;\n          EXRDecoder2.uncompress = uncompressRAW;\n          break;\n        case \"RLE_COMPRESSION\":\n          EXRDecoder2.lines = 1;\n          EXRDecoder2.uncompress = uncompressRLE;\n          break;\n        case \"ZIPS_COMPRESSION\":\n          EXRDecoder2.lines = 1;\n          EXRDecoder2.uncompress = uncompressZIP;\n          break;\n        case \"ZIP_COMPRESSION\":\n          EXRDecoder2.lines = 16;\n          EXRDecoder2.uncompress = uncompressZIP;\n          break;\n        case \"PIZ_COMPRESSION\":\n          EXRDecoder2.lines = 32;\n          EXRDecoder2.uncompress = uncompressPIZ;\n          break;\n        case \"PXR24_COMPRESSION\":\n          EXRDecoder2.lines = 16;\n          EXRDecoder2.uncompress = uncompressPXR;\n          break;\n        case \"DWAA_COMPRESSION\":\n          EXRDecoder2.lines = 32;\n          EXRDecoder2.uncompress = uncompressDWA;\n          break;\n        case \"DWAB_COMPRESSION\":\n          EXRDecoder2.lines = 256;\n          EXRDecoder2.uncompress = uncompressDWA;\n          break;\n        default:\n          throw \"EXRLoader.parse: \" + EXRHeader2.compression + \" is unsupported\";\n      }\n      EXRDecoder2.scanlineBlockSize = EXRDecoder2.lines;\n      if (EXRDecoder2.type == 1) {\n        switch (outputType) {\n          case FloatType:\n            EXRDecoder2.getter = parseFloat16;\n            EXRDecoder2.inputSize = INT16_SIZE;\n            break;\n          case HalfFloatType:\n            EXRDecoder2.getter = parseUint16;\n            EXRDecoder2.inputSize = INT16_SIZE;\n            break;\n        }\n      } else if (EXRDecoder2.type == 2) {\n        switch (outputType) {\n          case FloatType:\n            EXRDecoder2.getter = parseFloat32;\n            EXRDecoder2.inputSize = FLOAT32_SIZE;\n            break;\n          case HalfFloatType:\n            EXRDecoder2.getter = decodeFloat32;\n            EXRDecoder2.inputSize = FLOAT32_SIZE;\n        }\n      } else {\n        throw \"EXRLoader.parse: unsupported pixelType \" + EXRDecoder2.type + \" for \" + EXRHeader2.compression + \".\";\n      }\n      EXRDecoder2.blockCount = (EXRHeader2.dataWindow.yMax + 1) / EXRDecoder2.scanlineBlockSize;\n      for (var i2 = 0; i2 < EXRDecoder2.blockCount; i2++)\n        parseInt64(dataView, offset2);\n      EXRDecoder2.outputChannels = EXRDecoder2.channels == 3 ? 4 : EXRDecoder2.channels;\n      const size = EXRDecoder2.width * EXRDecoder2.height * EXRDecoder2.outputChannels;\n      switch (outputType) {\n        case FloatType:\n          EXRDecoder2.byteArray = new Float32Array(size);\n          if (EXRDecoder2.channels < EXRDecoder2.outputChannels)\n            EXRDecoder2.byteArray.fill(1, 0, size);\n          break;\n        case HalfFloatType:\n          EXRDecoder2.byteArray = new Uint16Array(size);\n          if (EXRDecoder2.channels < EXRDecoder2.outputChannels)\n            EXRDecoder2.byteArray.fill(15360, 0, size);\n          break;\n        default:\n          console.error(\"THREE.EXRLoader: unsupported type: \", outputType);\n          break;\n      }\n      EXRDecoder2.bytesPerLine = EXRDecoder2.width * EXRDecoder2.inputSize * EXRDecoder2.channels;\n      if (EXRDecoder2.outputChannels == 4)\n        EXRDecoder2.format = RGBAFormat;\n      else\n        EXRDecoder2.format = RedFormat;\n      if (hasColorSpace)\n        EXRDecoder2.colorSpace = \"srgb-linear\";\n      else\n        EXRDecoder2.encoding = 3e3;\n      return EXRDecoder2;\n    }\n    const bufferDataView = new DataView(buffer);\n    const uInt8Array = new Uint8Array(buffer);\n    const offset = { value: 0 };\n    const EXRHeader = parseHeader(bufferDataView, buffer, offset);\n    const EXRDecoder = setupDecoder(EXRHeader, bufferDataView, uInt8Array, offset, this.type);\n    const tmpOffset = { value: 0 };\n    const channelOffsets = { R: 0, G: 1, B: 2, A: 3, Y: 0 };\n    for (let scanlineBlockIdx = 0; scanlineBlockIdx < EXRDecoder.height / EXRDecoder.scanlineBlockSize; scanlineBlockIdx++) {\n      const line = parseUint32(bufferDataView, offset);\n      EXRDecoder.size = parseUint32(bufferDataView, offset);\n      EXRDecoder.lines = line + EXRDecoder.scanlineBlockSize > EXRDecoder.height ? EXRDecoder.height - line : EXRDecoder.scanlineBlockSize;\n      const isCompressed = EXRDecoder.size < EXRDecoder.lines * EXRDecoder.bytesPerLine;\n      const viewer = isCompressed ? EXRDecoder.uncompress(EXRDecoder) : uncompressRAW(EXRDecoder);\n      offset.value += EXRDecoder.size;\n      for (let line_y = 0; line_y < EXRDecoder.scanlineBlockSize; line_y++) {\n        const true_y = line_y + scanlineBlockIdx * EXRDecoder.scanlineBlockSize;\n        if (true_y >= EXRDecoder.height)\n          break;\n        for (let channelID = 0; channelID < EXRDecoder.channels; channelID++) {\n          const cOff = channelOffsets[EXRHeader.channels[channelID].name];\n          for (let x2 = 0; x2 < EXRDecoder.width; x2++) {\n            tmpOffset.value = (line_y * (EXRDecoder.channels * EXRDecoder.width) + channelID * EXRDecoder.width + x2) * EXRDecoder.inputSize;\n            const outIndex = (EXRDecoder.height - 1 - true_y) * (EXRDecoder.width * EXRDecoder.outputChannels) + x2 * EXRDecoder.outputChannels + cOff;\n            EXRDecoder.byteArray[outIndex] = EXRDecoder.getter(viewer, tmpOffset);\n          }\n        }\n      }\n    }\n    return {\n      header: EXRHeader,\n      width: EXRDecoder.width,\n      height: EXRDecoder.height,\n      data: EXRDecoder.byteArray,\n      format: EXRDecoder.format,\n      [hasColorSpace ? \"colorSpace\" : \"encoding\"]: EXRDecoder[hasColorSpace ? \"colorSpace\" : \"encoding\"],\n      type: this.type\n    };\n  }\n  setDataType(value) {\n    this.type = value;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    function onLoadCallback(texture, texData) {\n      if (hasColorSpace)\n        texture.colorSpace = texData.colorSpace;\n      else\n        texture.encoding = texData.encoding;\n      texture.minFilter = LinearFilter;\n      texture.magFilter = LinearFilter;\n      texture.generateMipmaps = false;\n      texture.flipY = false;\n      if (onLoad)\n        onLoad(texture, texData);\n    }\n    return super.load(url, onLoadCallback, onProgress, onError);\n  }\n}\nconst _taskCache = /* @__PURE__ */ new WeakMap();\nclass DRACOLoader extends Loader {\n  constructor(manager) {\n    super(manager);\n    this.decoderPath = \"\";\n    this.decoderConfig = {};\n    this.decoderBinary = null;\n    this.decoderPending = null;\n    this.workerLimit = 4;\n    this.workerPool = [];\n    this.workerNextTaskID = 1;\n    this.workerSourceURL = \"\";\n    this.defaultAttributeIDs = {\n      position: \"POSITION\",\n      normal: \"NORMAL\",\n      color: \"COLOR\",\n      uv: \"TEX_COORD\"\n    };\n    this.defaultAttributeTypes = {\n      position: \"Float32Array\",\n      normal: \"Float32Array\",\n      color: \"Float32Array\",\n      uv: \"Float32Array\"\n    };\n  }\n  setDecoderPath(path) {\n    this.decoderPath = path;\n    return this;\n  }\n  setDecoderConfig(config) {\n    this.decoderConfig = config;\n    return this;\n  }\n  setWorkerLimit(workerLimit) {\n    this.workerLimit = workerLimit;\n    return this;\n  }\n  load(url, onLoad, onProgress, onError) {\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.path);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setWithCredentials(this.withCredentials);\n    loader.load(\n      url,\n      (buffer) => {\n        const taskConfig = {\n          attributeIDs: this.defaultAttributeIDs,\n          attributeTypes: this.defaultAttributeTypes,\n          useUniqueIDs: false\n        };\n        this.decodeGeometry(buffer, taskConfig).then(onLoad).catch(onError);\n      },\n      onProgress,\n      onError\n    );\n  }\n  /** @deprecated Kept for backward-compatibility with previous DRACOLoader versions. */\n  decodeDracoFile(buffer, callback, attributeIDs, attributeTypes) {\n    const taskConfig = {\n      attributeIDs: attributeIDs || this.defaultAttributeIDs,\n      attributeTypes: attributeTypes || this.defaultAttributeTypes,\n      useUniqueIDs: !!attributeIDs\n    };\n    this.decodeGeometry(buffer, taskConfig).then(callback);\n  }\n  decodeGeometry(buffer, taskConfig) {\n    for (const attribute in taskConfig.attributeTypes) {\n      const type = taskConfig.attributeTypes[attribute];\n      if (type.BYTES_PER_ELEMENT !== void 0) {\n        taskConfig.attributeTypes[attribute] = type.name;\n      }\n    }\n    const taskKey = JSON.stringify(taskConfig);\n    if (_taskCache.has(buffer)) {\n      const cachedTask = _taskCache.get(buffer);\n      if (cachedTask.key === taskKey) {\n        return cachedTask.promise;\n      } else if (buffer.byteLength === 0) {\n        throw new Error(\n          \"THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.\"\n        );\n      }\n    }\n    let worker;\n    const taskID = this.workerNextTaskID++;\n    const taskCost = buffer.byteLength;\n    const geometryPending = this._getWorker(taskID, taskCost).then((_worker) => {\n      worker = _worker;\n      return new Promise((resolve2, reject) => {\n        worker._callbacks[taskID] = { resolve: resolve2, reject };\n        worker.postMessage({ type: \"decode\", id: taskID, taskConfig, buffer }, [buffer]);\n      });\n    }).then((message) => this._createGeometry(message.geometry));\n    geometryPending.catch(() => true).then(() => {\n      if (worker && taskID) {\n        this._releaseTask(worker, taskID);\n      }\n    });\n    _taskCache.set(buffer, {\n      key: taskKey,\n      promise: geometryPending\n    });\n    return geometryPending;\n  }\n  _createGeometry(geometryData) {\n    const geometry = new BufferGeometry();\n    if (geometryData.index) {\n      geometry.setIndex(new BufferAttribute(geometryData.index.array, 1));\n    }\n    for (let i2 = 0; i2 < geometryData.attributes.length; i2++) {\n      const attribute = geometryData.attributes[i2];\n      const name = attribute.name;\n      const array = attribute.array;\n      const itemSize = attribute.itemSize;\n      geometry.setAttribute(name, new BufferAttribute(array, itemSize));\n    }\n    return geometry;\n  }\n  _loadLibrary(url, responseType) {\n    const loader = new FileLoader(this.manager);\n    loader.setPath(this.decoderPath);\n    loader.setResponseType(responseType);\n    loader.setWithCredentials(this.withCredentials);\n    return new Promise((resolve2, reject) => {\n      loader.load(url, resolve2, void 0, reject);\n    });\n  }\n  preload() {\n    this._initDecoder();\n    return this;\n  }\n  _initDecoder() {\n    if (this.decoderPending)\n      return this.decoderPending;\n    const useJS = typeof WebAssembly !== \"object\" || this.decoderConfig.type === \"js\";\n    const librariesPending = [];\n    if (useJS) {\n      librariesPending.push(this._loadLibrary(\"draco_decoder.js\", \"text\"));\n    } else {\n      librariesPending.push(this._loadLibrary(\"draco_wasm_wrapper.js\", \"text\"));\n      librariesPending.push(this._loadLibrary(\"draco_decoder.wasm\", \"arraybuffer\"));\n    }\n    this.decoderPending = Promise.all(librariesPending).then((libraries) => {\n      const jsContent = libraries[0];\n      if (!useJS) {\n        this.decoderConfig.wasmBinary = libraries[1];\n      }\n      const fn = DRACOWorker.toString();\n      const body = [\n        \"/* draco decoder */\",\n        jsContent,\n        \"\",\n        \"/* worker */\",\n        fn.substring(fn.indexOf(\"{\") + 1, fn.lastIndexOf(\"}\"))\n      ].join(\"\\n\");\n      this.workerSourceURL = URL.createObjectURL(new Blob([body]));\n    });\n    return this.decoderPending;\n  }\n  _getWorker(taskID, taskCost) {\n    return this._initDecoder().then(() => {\n      if (this.workerPool.length < this.workerLimit) {\n        const worker2 = new Worker(this.workerSourceURL);\n        worker2._callbacks = {};\n        worker2._taskCosts = {};\n        worker2._taskLoad = 0;\n        worker2.postMessage({ type: \"init\", decoderConfig: this.decoderConfig });\n        worker2.onmessage = function(e2) {\n          const message = e2.data;\n          switch (message.type) {\n            case \"decode\":\n              worker2._callbacks[message.id].resolve(message);\n              break;\n            case \"error\":\n              worker2._callbacks[message.id].reject(message);\n              break;\n            default:\n              console.error('THREE.DRACOLoader: Unexpected message, \"' + message.type + '\"');\n          }\n        };\n        this.workerPool.push(worker2);\n      } else {\n        this.workerPool.sort(function(a2, b2) {\n          return a2._taskLoad > b2._taskLoad ? -1 : 1;\n        });\n      }\n      const worker = this.workerPool[this.workerPool.length - 1];\n      worker._taskCosts[taskID] = taskCost;\n      worker._taskLoad += taskCost;\n      return worker;\n    });\n  }\n  _releaseTask(worker, taskID) {\n    worker._taskLoad -= worker._taskCosts[taskID];\n    delete worker._callbacks[taskID];\n    delete worker._taskCosts[taskID];\n  }\n  debug() {\n    console.log(\n      \"Task load: \",\n      this.workerPool.map((worker) => worker._taskLoad)\n    );\n  }\n  dispose() {\n    for (let i2 = 0; i2 < this.workerPool.length; ++i2) {\n      this.workerPool[i2].terminate();\n    }\n    this.workerPool.length = 0;\n    return this;\n  }\n}\nfunction DRACOWorker() {\n  let decoderConfig;\n  let decoderPending;\n  onmessage = function(e2) {\n    const message = e2.data;\n    switch (message.type) {\n      case \"init\":\n        decoderConfig = message.decoderConfig;\n        decoderPending = new Promise(function(resolve2) {\n          decoderConfig.onModuleLoaded = function(draco) {\n            resolve2({ draco });\n          };\n          DracoDecoderModule(decoderConfig);\n        });\n        break;\n      case \"decode\":\n        const buffer = message.buffer;\n        const taskConfig = message.taskConfig;\n        decoderPending.then((module) => {\n          const draco = module.draco;\n          const decoder = new draco.Decoder();\n          const decoderBuffer = new draco.DecoderBuffer();\n          decoderBuffer.Init(new Int8Array(buffer), buffer.byteLength);\n          try {\n            const geometry = decodeGeometry(draco, decoder, decoderBuffer, taskConfig);\n            const buffers = geometry.attributes.map((attr) => attr.array.buffer);\n            if (geometry.index)\n              buffers.push(geometry.index.array.buffer);\n            self.postMessage({ type: \"decode\", id: message.id, geometry }, buffers);\n          } catch (error2) {\n            console.error(error2);\n            self.postMessage({ type: \"error\", id: message.id, error: error2.message });\n          } finally {\n            draco.destroy(decoderBuffer);\n            draco.destroy(decoder);\n          }\n        });\n        break;\n    }\n  };\n  function decodeGeometry(draco, decoder, decoderBuffer, taskConfig) {\n    const attributeIDs = taskConfig.attributeIDs;\n    const attributeTypes = taskConfig.attributeTypes;\n    let dracoGeometry;\n    let decodingStatus;\n    const geometryType = decoder.GetEncodedGeometryType(decoderBuffer);\n    if (geometryType === draco.TRIANGULAR_MESH) {\n      dracoGeometry = new draco.Mesh();\n      decodingStatus = decoder.DecodeBufferToMesh(decoderBuffer, dracoGeometry);\n    } else if (geometryType === draco.POINT_CLOUD) {\n      dracoGeometry = new draco.PointCloud();\n      decodingStatus = decoder.DecodeBufferToPointCloud(decoderBuffer, dracoGeometry);\n    } else {\n      throw new Error(\"THREE.DRACOLoader: Unexpected geometry type.\");\n    }\n    if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {\n      throw new Error(\"THREE.DRACOLoader: Decoding failed: \" + decodingStatus.error_msg());\n    }\n    const geometry = { index: null, attributes: [] };\n    for (const attributeName in attributeIDs) {\n      const attributeType = self[attributeTypes[attributeName]];\n      let attribute;\n      let attributeID;\n      if (taskConfig.useUniqueIDs) {\n        attributeID = attributeIDs[attributeName];\n        attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID);\n      } else {\n        attributeID = decoder.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]);\n        if (attributeID === -1)\n          continue;\n        attribute = decoder.GetAttribute(dracoGeometry, attributeID);\n      }\n      geometry.attributes.push(decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute));\n    }\n    if (geometryType === draco.TRIANGULAR_MESH) {\n      geometry.index = decodeIndex(draco, decoder, dracoGeometry);\n    }\n    draco.destroy(dracoGeometry);\n    return geometry;\n  }\n  function decodeIndex(draco, decoder, dracoGeometry) {\n    const numFaces = dracoGeometry.num_faces();\n    const numIndices = numFaces * 3;\n    const byteLength = numIndices * 4;\n    const ptr = draco._malloc(byteLength);\n    decoder.GetTrianglesUInt32Array(dracoGeometry, byteLength, ptr);\n    const index = new Uint32Array(draco.HEAPF32.buffer, ptr, numIndices).slice();\n    draco._free(ptr);\n    return { array: index, itemSize: 1 };\n  }\n  function decodeAttribute(draco, decoder, dracoGeometry, attributeName, attributeType, attribute) {\n    const numComponents = attribute.num_components();\n    const numPoints = dracoGeometry.num_points();\n    const numValues = numPoints * numComponents;\n    const byteLength = numValues * attributeType.BYTES_PER_ELEMENT;\n    const dataType = getDracoDataType(draco, attributeType);\n    const ptr = draco._malloc(byteLength);\n    decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, attribute, dataType, byteLength, ptr);\n    const array = new attributeType(draco.HEAPF32.buffer, ptr, numValues).slice();\n    draco._free(ptr);\n    return {\n      name: attributeName,\n      array,\n      itemSize: numComponents\n    };\n  }\n  function getDracoDataType(draco, attributeType) {\n    switch (attributeType) {\n      case Float32Array:\n        return draco.DT_FLOAT32;\n      case Int8Array:\n        return draco.DT_INT8;\n      case Int16Array:\n        return draco.DT_INT16;\n      case Int32Array:\n        return draco.DT_INT32;\n      case Uint8Array:\n        return draco.DT_UINT8;\n      case Uint16Array:\n        return draco.DT_UINT16;\n      case Uint32Array:\n        return draco.DT_UINT32;\n    }\n  }\n}\nlet generated;\nconst MeshoptDecoder = () => {\n  if (generated)\n    return generated;\n  const wasm_base = \"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\";\n  const wasm_simd = \"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\";\n  const detector = new Uint8Array([\n    0,\n    97,\n    115,\n    109,\n    1,\n    0,\n    0,\n    0,\n    1,\n    4,\n    1,\n    96,\n    0,\n    0,\n    3,\n    3,\n    2,\n    0,\n    0,\n    5,\n    3,\n    1,\n    0,\n    1,\n    12,\n    1,\n    0,\n    10,\n    22,\n    2,\n    12,\n    0,\n    65,\n    0,\n    65,\n    0,\n    65,\n    0,\n    252,\n    10,\n    0,\n    0,\n    11,\n    7,\n    0,\n    65,\n    0,\n    253,\n    15,\n    26,\n    11\n  ]);\n  const wasmpack = new Uint8Array([\n    32,\n    0,\n    65,\n    253,\n    3,\n    1,\n    2,\n    34,\n    4,\n    106,\n    6,\n    5,\n    11,\n    8,\n    7,\n    20,\n    13,\n    33,\n    12,\n    16,\n    128,\n    9,\n    116,\n    64,\n    19,\n    113,\n    127,\n    15,\n    10,\n    21,\n    22,\n    14,\n    255,\n    66,\n    24,\n    54,\n    136,\n    107,\n    18,\n    23,\n    192,\n    26,\n    114,\n    118,\n    132,\n    17,\n    77,\n    101,\n    130,\n    144,\n    27,\n    87,\n    131,\n    44,\n    45,\n    74,\n    156,\n    154,\n    70,\n    167\n  ]);\n  if (typeof WebAssembly !== \"object\") {\n    return {\n      supported: false\n    };\n  }\n  let wasm = wasm_base;\n  if (WebAssembly.validate(detector)) {\n    wasm = wasm_simd;\n  }\n  let instance;\n  const promise = WebAssembly.instantiate(unpack(wasm), {}).then((result) => {\n    instance = result.instance;\n    instance.exports.__wasm_call_ctors();\n  });\n  function unpack(data) {\n    const result = new Uint8Array(data.length);\n    for (let i2 = 0; i2 < data.length; ++i2) {\n      const ch = data.charCodeAt(i2);\n      result[i2] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62;\n    }\n    let write = 0;\n    for (let i2 = 0; i2 < data.length; ++i2) {\n      result[write++] = result[i2] < 60 ? wasmpack[result[i2]] : (result[i2] - 60) * 64 + result[++i2];\n    }\n    return result.buffer.slice(0, write);\n  }\n  function decode(fun, target, count, size, source, filter) {\n    const sbrk = instance.exports.sbrk;\n    const count4 = count + 3 & -4;\n    const tp = sbrk(count4 * size);\n    const sp = sbrk(source.length);\n    const heap = new Uint8Array(instance.exports.memory.buffer);\n    heap.set(source, sp);\n    const res = fun(tp, count, size, sp, source.length);\n    if (res === 0 && filter) {\n      filter(tp, count4, size);\n    }\n    target.set(heap.subarray(tp, tp + count * size));\n    sbrk(tp - sbrk(0));\n    if (res !== 0) {\n      throw new Error(`Malformed buffer data: ${res}`);\n    }\n  }\n  const filters = {\n    // legacy index-based enums for glTF\n    0: \"\",\n    1: \"meshopt_decodeFilterOct\",\n    2: \"meshopt_decodeFilterQuat\",\n    3: \"meshopt_decodeFilterExp\",\n    // string-based enums for glTF\n    NONE: \"\",\n    OCTAHEDRAL: \"meshopt_decodeFilterOct\",\n    QUATERNION: \"meshopt_decodeFilterQuat\",\n    EXPONENTIAL: \"meshopt_decodeFilterExp\"\n  };\n  const decoders = {\n    // legacy index-based enums for glTF\n    0: \"meshopt_decodeVertexBuffer\",\n    1: \"meshopt_decodeIndexBuffer\",\n    2: \"meshopt_decodeIndexSequence\",\n    // string-based enums for glTF\n    ATTRIBUTES: \"meshopt_decodeVertexBuffer\",\n    TRIANGLES: \"meshopt_decodeIndexBuffer\",\n    INDICES: \"meshopt_decodeIndexSequence\"\n  };\n  generated = {\n    ready: promise,\n    supported: true,\n    decodeVertexBuffer(target, count, size, source, filter) {\n      decode(\n        instance.exports.meshopt_decodeVertexBuffer,\n        target,\n        count,\n        size,\n        source,\n        instance.exports[filters[filter]]\n      );\n    },\n    decodeIndexBuffer(target, count, size, source) {\n      decode(instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n    },\n    decodeIndexSequence(target, count, size, source) {\n      decode(instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n    },\n    decodeGltfBuffer(target, count, size, source, mode, filter) {\n      decode(\n        instance.exports[decoders[mode]],\n        target,\n        count,\n        size,\n        source,\n        instance.exports[filters[filter]]\n      );\n    }\n  };\n  return generated;\n};\nconst IsObject = (url) => url === Object(url) && !Array.isArray(url) && typeof url !== \"function\";\nfunction useTexture(input, onLoad) {\n  const gl = useThree((state) => state.gl);\n  const textures = useLoader(TextureLoader, IsObject(input) ? Object.values(input) : input);\n  useLayoutEffect(() => {\n    onLoad == null || onLoad(textures);\n  }, [onLoad]);\n  useEffect(() => {\n    if (\"initTexture\" in gl) {\n      let textureArray = [];\n      if (Array.isArray(textures)) {\n        textureArray = textures;\n      } else if (textures instanceof Texture) {\n        textureArray = [textures];\n      } else if (IsObject(textures)) {\n        textureArray = Object.values(textures);\n      }\n      textureArray.forEach((texture) => {\n        if (texture instanceof Texture) {\n          gl.initTexture(texture);\n        }\n      });\n    }\n  }, [gl, textures]);\n  const mappedTextures = useMemo(() => {\n    if (IsObject(input)) {\n      const keyed = {};\n      let i2 = 0;\n      for (const key in input) keyed[key] = textures[i2++];\n      return keyed;\n    } else {\n      return textures;\n    }\n  }, [input, textures]);\n  return mappedTextures;\n}\nuseTexture.preload = (url) => useLoader.preload(TextureLoader, url);\nuseTexture.clear = (input) => useLoader.clear(TextureLoader, input);\nvar __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => {\n  __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n  return value;\n};\nfunction memcpy(src, srcOffset, dst, dstOffset, length) {\n  let i2;\n  src = src.subarray || src.slice ? src : src.buffer;\n  dst = dst.subarray || dst.slice ? dst : dst.buffer;\n  src = srcOffset ? src.subarray ? src.subarray(srcOffset, length && srcOffset + length) : src.slice(srcOffset, length && srcOffset + length) : src;\n  if (dst.set) {\n    dst.set(src, dstOffset);\n  } else {\n    for (i2 = 0; i2 < src.length; i2++)\n      dst[i2 + dstOffset] = src[i2];\n  }\n  return dst;\n}\nfunction convertPoints(points) {\n  if (points instanceof Float32Array)\n    return points;\n  if (points instanceof BufferGeometry)\n    return points.getAttribute(\"position\").array;\n  return points.map((p2) => {\n    const isArray2 = Array.isArray(p2);\n    return p2 instanceof Vector3 ? [p2.x, p2.y, p2.z] : p2 instanceof Vector2 ? [p2.x, p2.y, 0] : isArray2 && p2.length === 3 ? [p2[0], p2[1], p2[2]] : isArray2 && p2.length === 2 ? [p2[0], p2[1], 0] : p2;\n  }).flat();\n}\nclass MeshLineGeometry extends BufferGeometry {\n  constructor() {\n    super();\n    __publicField(this, \"type\", \"MeshLine\");\n    __publicField(this, \"isMeshLine\", true);\n    __publicField(this, \"positions\", []);\n    __publicField(this, \"previous\", []);\n    __publicField(this, \"next\", []);\n    __publicField(this, \"side\", []);\n    __publicField(this, \"width\", []);\n    __publicField(this, \"indices_array\", []);\n    __publicField(this, \"uvs\", []);\n    __publicField(this, \"counters\", []);\n    __publicField(this, \"widthCallback\", null);\n    __publicField(this, \"_attributes\");\n    __publicField(this, \"_points\", []);\n    __publicField(this, \"points\");\n    __publicField(this, \"matrixWorld\", new Matrix4());\n    Object.defineProperties(this, {\n      points: {\n        enumerable: true,\n        get() {\n          return this._points;\n        },\n        set(value) {\n          this.setPoints(value, this.widthCallback);\n        }\n      }\n    });\n  }\n  setMatrixWorld(matrixWorld) {\n    this.matrixWorld = matrixWorld;\n  }\n  setPoints(points, wcb) {\n    points = convertPoints(points);\n    this._points = points;\n    this.widthCallback = wcb != null ? wcb : null;\n    this.positions = [];\n    this.counters = [];\n    if (points.length && points[0] instanceof Vector3) {\n      for (let j2 = 0; j2 < points.length; j2++) {\n        const p2 = points[j2];\n        const c2 = j2 / (points.length - 1);\n        this.positions.push(p2.x, p2.y, p2.z);\n        this.positions.push(p2.x, p2.y, p2.z);\n        this.counters.push(c2);\n        this.counters.push(c2);\n      }\n    } else {\n      for (let j2 = 0; j2 < points.length; j2 += 3) {\n        const c2 = j2 / (points.length - 1);\n        this.positions.push(points[j2], points[j2 + 1], points[j2 + 2]);\n        this.positions.push(points[j2], points[j2 + 1], points[j2 + 2]);\n        this.counters.push(c2);\n        this.counters.push(c2);\n      }\n    }\n    this.process();\n  }\n  compareV3(a2, b2) {\n    const aa = a2 * 6;\n    const ab = b2 * 6;\n    return this.positions[aa] === this.positions[ab] && this.positions[aa + 1] === this.positions[ab + 1] && this.positions[aa + 2] === this.positions[ab + 2];\n  }\n  copyV3(a2) {\n    const aa = a2 * 6;\n    return [this.positions[aa], this.positions[aa + 1], this.positions[aa + 2]];\n  }\n  process() {\n    const l2 = this.positions.length / 6;\n    this.previous = [];\n    this.next = [];\n    this.side = [];\n    this.width = [];\n    this.indices_array = [];\n    this.uvs = [];\n    let w2;\n    let v2;\n    if (this.compareV3(0, l2 - 1)) {\n      v2 = this.copyV3(l2 - 2);\n    } else {\n      v2 = this.copyV3(0);\n    }\n    this.previous.push(v2[0], v2[1], v2[2]);\n    this.previous.push(v2[0], v2[1], v2[2]);\n    for (let j2 = 0; j2 < l2; j2++) {\n      this.side.push(1);\n      this.side.push(-1);\n      if (this.widthCallback)\n        w2 = this.widthCallback(j2 / (l2 - 1));\n      else\n        w2 = 1;\n      this.width.push(w2);\n      this.width.push(w2);\n      this.uvs.push(j2 / (l2 - 1), 0);\n      this.uvs.push(j2 / (l2 - 1), 1);\n      if (j2 < l2 - 1) {\n        v2 = this.copyV3(j2);\n        this.previous.push(v2[0], v2[1], v2[2]);\n        this.previous.push(v2[0], v2[1], v2[2]);\n        const n2 = j2 * 2;\n        this.indices_array.push(n2, n2 + 1, n2 + 2);\n        this.indices_array.push(n2 + 2, n2 + 1, n2 + 3);\n      }\n      if (j2 > 0) {\n        v2 = this.copyV3(j2);\n        this.next.push(v2[0], v2[1], v2[2]);\n        this.next.push(v2[0], v2[1], v2[2]);\n      }\n    }\n    if (this.compareV3(l2 - 1, 0)) {\n      v2 = this.copyV3(1);\n    } else {\n      v2 = this.copyV3(l2 - 1);\n    }\n    this.next.push(v2[0], v2[1], v2[2]);\n    this.next.push(v2[0], v2[1], v2[2]);\n    if (!this._attributes || this._attributes.position.count !== this.counters.length) {\n      this._attributes = {\n        position: new BufferAttribute(new Float32Array(this.positions), 3),\n        previous: new BufferAttribute(new Float32Array(this.previous), 3),\n        next: new BufferAttribute(new Float32Array(this.next), 3),\n        side: new BufferAttribute(new Float32Array(this.side), 1),\n        width: new BufferAttribute(new Float32Array(this.width), 1),\n        uv: new BufferAttribute(new Float32Array(this.uvs), 2),\n        index: new BufferAttribute(new Uint16Array(this.indices_array), 1),\n        counters: new BufferAttribute(new Float32Array(this.counters), 1)\n      };\n    } else {\n      this._attributes.position.copyArray(new Float32Array(this.positions));\n      this._attributes.position.needsUpdate = true;\n      this._attributes.previous.copyArray(new Float32Array(this.previous));\n      this._attributes.previous.needsUpdate = true;\n      this._attributes.next.copyArray(new Float32Array(this.next));\n      this._attributes.next.needsUpdate = true;\n      this._attributes.side.copyArray(new Float32Array(this.side));\n      this._attributes.side.needsUpdate = true;\n      this._attributes.width.copyArray(new Float32Array(this.width));\n      this._attributes.width.needsUpdate = true;\n      this._attributes.uv.copyArray(new Float32Array(this.uvs));\n      this._attributes.uv.needsUpdate = true;\n      this._attributes.index.copyArray(new Uint16Array(this.indices_array));\n      this._attributes.index.needsUpdate = true;\n    }\n    this.setAttribute(\"position\", this._attributes.position);\n    this.setAttribute(\"previous\", this._attributes.previous);\n    this.setAttribute(\"next\", this._attributes.next);\n    this.setAttribute(\"side\", this._attributes.side);\n    this.setAttribute(\"width\", this._attributes.width);\n    this.setAttribute(\"uv\", this._attributes.uv);\n    this.setAttribute(\"counters\", this._attributes.counters);\n    this.setAttribute(\"position\", this._attributes.position);\n    this.setAttribute(\"previous\", this._attributes.previous);\n    this.setAttribute(\"next\", this._attributes.next);\n    this.setAttribute(\"side\", this._attributes.side);\n    this.setAttribute(\"width\", this._attributes.width);\n    this.setAttribute(\"uv\", this._attributes.uv);\n    this.setAttribute(\"counters\", this._attributes.counters);\n    this.setIndex(this._attributes.index);\n    this.computeBoundingSphere();\n    this.computeBoundingBox();\n  }\n  advance({ x: x2, y: y2, z: z2 }) {\n    const positions = this._attributes.position.array;\n    const previous = this._attributes.previous.array;\n    const next = this._attributes.next.array;\n    const l2 = positions.length;\n    memcpy(positions, 0, previous, 0, l2);\n    memcpy(positions, 6, positions, 0, l2 - 6);\n    positions[l2 - 6] = x2;\n    positions[l2 - 5] = y2;\n    positions[l2 - 4] = z2;\n    positions[l2 - 3] = x2;\n    positions[l2 - 2] = y2;\n    positions[l2 - 1] = z2;\n    memcpy(positions, 6, next, 0, l2 - 6);\n    next[l2 - 6] = x2;\n    next[l2 - 5] = y2;\n    next[l2 - 4] = z2;\n    next[l2 - 3] = x2;\n    next[l2 - 2] = y2;\n    next[l2 - 1] = z2;\n    this._attributes.position.needsUpdate = true;\n    this._attributes.previous.needsUpdate = true;\n    this._attributes.next.needsUpdate = true;\n  }\n}\nconst vertexShader$1 = `\n  #include <common>\n  #include <logdepthbuf_pars_vertex>\n  #include <fog_pars_vertex>\n  #include <clipping_planes_pars_vertex>\n\n  attribute vec3 previous;\n  attribute vec3 next;\n  attribute float side;\n  attribute float width;\n  attribute float counters;\n  \n  uniform vec2 resolution;\n  uniform float lineWidth;\n  uniform vec3 color;\n  uniform float opacity;\n  uniform float sizeAttenuation;\n  \n  varying vec2 vUV;\n  varying vec4 vColor;\n  varying float vCounters;\n  \n  vec2 fix(vec4 i, float aspect) {\n    vec2 res = i.xy / i.w;\n    res.x *= aspect;\n    return res;\n  }\n  \n  void main() {\n    float aspect = resolution.x / resolution.y;\n    vColor = vec4(color, opacity);\n    vUV = uv;\n    vCounters = counters;\n  \n    mat4 m = projectionMatrix * modelViewMatrix;\n    vec4 finalPosition = m * vec4(position, 1.0) * aspect;\n    vec4 prevPos = m * vec4(previous, 1.0);\n    vec4 nextPos = m * vec4(next, 1.0);\n  \n    vec2 currentP = fix(finalPosition, aspect);\n    vec2 prevP = fix(prevPos, aspect);\n    vec2 nextP = fix(nextPos, aspect);\n  \n    float w = lineWidth * width;\n  \n    vec2 dir;\n    if (nextP == currentP) dir = normalize(currentP - prevP);\n    else if (prevP == currentP) dir = normalize(nextP - currentP);\n    else {\n      vec2 dir1 = normalize(currentP - prevP);\n      vec2 dir2 = normalize(nextP - currentP);\n      dir = normalize(dir1 + dir2);\n  \n      vec2 perp = vec2(-dir1.y, dir1.x);\n      vec2 miter = vec2(-dir.y, dir.x);\n      //w = clamp(w / dot(miter, perp), 0., 4. * lineWidth * width);\n    }\n  \n    //vec2 normal = (cross(vec3(dir, 0.), vec3(0., 0., 1.))).xy;\n    vec4 normal = vec4(-dir.y, dir.x, 0., 1.);\n    normal.xy *= .5 * w;\n    //normal *= projectionMatrix;\n    if (sizeAttenuation == 0.) {\n      normal.xy *= finalPosition.w;\n      normal.xy /= (vec4(resolution, 0., 1.) * projectionMatrix).xy * aspect;\n    }\n  \n    finalPosition.xy += normal.xy * side;\n    gl_Position = finalPosition;\n    #include <logdepthbuf_vertex>\n    #include <fog_vertex>\n    vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n    #include <clipping_planes_vertex>\n    #include <fog_vertex>\n  }\n`;\nconst version = /* @__PURE__ */ (() => parseInt(REVISION.replace(/\\D+/g, \"\")))();\nconst colorspace_fragment = version >= 154 ? \"colorspace_fragment\" : \"encodings_fragment\";\nconst fragmentShader$1 = `\n  #include <fog_pars_fragment>\n  #include <logdepthbuf_pars_fragment>\n  #include <clipping_planes_pars_fragment>\n  \n  uniform sampler2D map;\n  uniform sampler2D alphaMap;\n  uniform float useGradient;\n  uniform float useMap;\n  uniform float useAlphaMap;\n  uniform float useDash;\n  uniform float dashArray;\n  uniform float dashOffset;\n  uniform float dashRatio;\n  uniform float visibility;\n  uniform float alphaTest;\n  uniform vec2 repeat;\n  uniform vec3 gradient[2];\n  \n  varying vec2 vUV;\n  varying vec4 vColor;\n  varying float vCounters;\n  \n  void main() {\n    #include <logdepthbuf_fragment>\n    vec4 diffuseColor = vColor;\n    if (useGradient == 1.) diffuseColor = vec4(mix(gradient[0], gradient[1], vCounters), 1.0);\n    if (useMap == 1.) diffuseColor *= texture2D(map, vUV * repeat);\n    if (useAlphaMap == 1.) diffuseColor.a *= texture2D(alphaMap, vUV * repeat).a;\n    if (diffuseColor.a < alphaTest) discard;\n    if (useDash == 1.) diffuseColor.a *= ceil(mod(vCounters + dashOffset, dashArray) - (dashArray * dashRatio));\n    diffuseColor.a *= step(vCounters, visibility);\n    #include <clipping_planes_fragment>\n    gl_FragColor = diffuseColor;     \n    #include <fog_fragment>\n    #include <tonemapping_fragment>\n    #include <${colorspace_fragment}>\n  }\n`;\nclass MeshLineMaterial extends ShaderMaterial {\n  constructor(parameters) {\n    super({\n      uniforms: {\n        ...UniformsLib.fog,\n        lineWidth: { value: 1 },\n        map: { value: null },\n        useMap: { value: 0 },\n        alphaMap: { value: null },\n        useAlphaMap: { value: 0 },\n        color: { value: new Color(16777215) },\n        gradient: { value: [new Color(16711680), new Color(65280)] },\n        opacity: { value: 1 },\n        resolution: { value: new Vector2(1, 1) },\n        sizeAttenuation: { value: 1 },\n        dashArray: { value: 0 },\n        dashOffset: { value: 0 },\n        dashRatio: { value: 0.5 },\n        useDash: { value: 0 },\n        useGradient: { value: 0 },\n        visibility: { value: 1 },\n        alphaTest: { value: 0 },\n        repeat: { value: new Vector2(1, 1) }\n      },\n      vertexShader: vertexShader$1,\n      fragmentShader: fragmentShader$1\n    });\n    __publicField(this, \"lineWidth\");\n    __publicField(this, \"map\");\n    __publicField(this, \"useMap\");\n    __publicField(this, \"alphaMap\");\n    __publicField(this, \"useAlphaMap\");\n    __publicField(this, \"color\");\n    __publicField(this, \"gradient\");\n    __publicField(this, \"resolution\");\n    __publicField(this, \"sizeAttenuation\");\n    __publicField(this, \"dashArray\");\n    __publicField(this, \"dashOffset\");\n    __publicField(this, \"dashRatio\");\n    __publicField(this, \"useDash\");\n    __publicField(this, \"useGradient\");\n    __publicField(this, \"visibility\");\n    __publicField(this, \"repeat\");\n    this.type = \"MeshLineMaterial\";\n    Object.defineProperties(this, {\n      lineWidth: {\n        enumerable: true,\n        get() {\n          return this.uniforms.lineWidth.value;\n        },\n        set(value) {\n          this.uniforms.lineWidth.value = value;\n        }\n      },\n      map: {\n        enumerable: true,\n        get() {\n          return this.uniforms.map.value;\n        },\n        set(value) {\n          this.uniforms.map.value = value;\n        }\n      },\n      useMap: {\n        enumerable: true,\n        get() {\n          return this.uniforms.useMap.value;\n        },\n        set(value) {\n          this.uniforms.useMap.value = value;\n        }\n      },\n      alphaMap: {\n        enumerable: true,\n        get() {\n          return this.uniforms.alphaMap.value;\n        },\n        set(value) {\n          this.uniforms.alphaMap.value = value;\n        }\n      },\n      useAlphaMap: {\n        enumerable: true,\n        get() {\n          return this.uniforms.useAlphaMap.value;\n        },\n        set(value) {\n          this.uniforms.useAlphaMap.value = value;\n        }\n      },\n      color: {\n        enumerable: true,\n        get() {\n          return this.uniforms.color.value;\n        },\n        set(value) {\n          this.uniforms.color.value = value;\n        }\n      },\n      gradient: {\n        enumerable: true,\n        get() {\n          return this.uniforms.gradient.value;\n        },\n        set(value) {\n          this.uniforms.gradient.value = value;\n        }\n      },\n      opacity: {\n        enumerable: true,\n        get() {\n          return this.uniforms.opacity.value;\n        },\n        set(value) {\n          this.uniforms.opacity.value = value;\n        }\n      },\n      resolution: {\n        enumerable: true,\n        get() {\n          return this.uniforms.resolution.value;\n        },\n        set(value) {\n          this.uniforms.resolution.value.copy(value);\n        }\n      },\n      sizeAttenuation: {\n        enumerable: true,\n        get() {\n          return this.uniforms.sizeAttenuation.value;\n        },\n        set(value) {\n          this.uniforms.sizeAttenuation.value = value;\n        }\n      },\n      dashArray: {\n        enumerable: true,\n        get() {\n          return this.uniforms.dashArray.value;\n        },\n        set(value) {\n          this.uniforms.dashArray.value = value;\n          this.useDash = value !== 0 ? 1 : 0;\n        }\n      },\n      dashOffset: {\n        enumerable: true,\n        get() {\n          return this.uniforms.dashOffset.value;\n        },\n        set(value) {\n          this.uniforms.dashOffset.value = value;\n        }\n      },\n      dashRatio: {\n        enumerable: true,\n        get() {\n          return this.uniforms.dashRatio.value;\n        },\n        set(value) {\n          this.uniforms.dashRatio.value = value;\n        }\n      },\n      useDash: {\n        enumerable: true,\n        get() {\n          return this.uniforms.useDash.value;\n        },\n        set(value) {\n          this.uniforms.useDash.value = value;\n        }\n      },\n      useGradient: {\n        enumerable: true,\n        get() {\n          return this.uniforms.useGradient.value;\n        },\n        set(value) {\n          this.uniforms.useGradient.value = value;\n        }\n      },\n      visibility: {\n        enumerable: true,\n        get() {\n          return this.uniforms.visibility.value;\n        },\n        set(value) {\n          this.uniforms.visibility.value = value;\n        }\n      },\n      alphaTest: {\n        enumerable: true,\n        get() {\n          return this.uniforms.alphaTest.value;\n        },\n        set(value) {\n          this.uniforms.alphaTest.value = value;\n        }\n      },\n      repeat: {\n        enumerable: true,\n        get() {\n          return this.uniforms.repeat.value;\n        },\n        set(value) {\n          this.uniforms.repeat.value.copy(value);\n        }\n      }\n    });\n    this.setValues(parameters);\n  }\n  copy(source) {\n    super.copy(source);\n    this.lineWidth = source.lineWidth;\n    this.map = source.map;\n    this.useMap = source.useMap;\n    this.alphaMap = source.alphaMap;\n    this.useAlphaMap = source.useAlphaMap;\n    this.color.copy(source.color);\n    this.gradient = source.gradient;\n    this.opacity = source.opacity;\n    this.resolution.copy(source.resolution);\n    this.sizeAttenuation = source.sizeAttenuation;\n    this.dashArray = source.dashArray;\n    this.dashOffset = source.dashOffset;\n    this.dashRatio = source.dashRatio;\n    this.useDash = source.useDash;\n    this.useGradient = source.useGradient;\n    this.visibility = source.visibility;\n    this.alphaTest = source.alphaTest;\n    this.repeat.copy(source.repeat);\n    return this;\n  }\n}\nlet dracoLoader = null;\nlet decoderPath = \"https://www.gstatic.com/draco/versioned/decoders/1.5.5/\";\nfunction extensions(useDraco = true, useMeshopt = true, extendLoader) {\n  return (loader) => {\n    if (extendLoader) {\n      extendLoader(loader);\n    }\n    if (useDraco) {\n      if (!dracoLoader) {\n        dracoLoader = new DRACOLoader();\n      }\n      dracoLoader.setDecoderPath(typeof useDraco === \"string\" ? useDraco : decoderPath);\n      loader.setDRACOLoader(dracoLoader);\n    }\n    if (useMeshopt) {\n      loader.setMeshoptDecoder(typeof MeshoptDecoder === \"function\" ? MeshoptDecoder() : MeshoptDecoder);\n    }\n  };\n}\nconst useGLTF = (path, useDraco, useMeshopt, extendLoader) => useLoader(GLTFLoader, path, extensions(useDraco, useMeshopt, extendLoader));\nuseGLTF.preload = (path, useDraco, useMeshopt, extendLoader) => useLoader.preload(GLTFLoader, path, extensions(useDraco, useMeshopt, extendLoader));\nuseGLTF.clear = (path) => useLoader.clear(GLTFLoader, path);\nuseGLTF.setDecoderPath = (path) => {\n  decoderPath = path;\n};\nconst LinearEncoding = 3e3;\nconst sRGBEncoding = 3001;\nconst getBufferForType = (type, width, height) => {\n  let out;\n  switch (type) {\n    case UnsignedByteType:\n      out = new Uint8ClampedArray(width * height * 4);\n      break;\n    case HalfFloatType:\n      out = new Uint16Array(width * height * 4);\n      break;\n    case UnsignedIntType:\n      out = new Uint32Array(width * height * 4);\n      break;\n    case ByteType:\n      out = new Int8Array(width * height * 4);\n      break;\n    case ShortType:\n      out = new Int16Array(width * height * 4);\n      break;\n    case IntType:\n      out = new Int32Array(width * height * 4);\n      break;\n    case FloatType:\n      out = new Float32Array(width * height * 4);\n      break;\n    default:\n      throw new Error(\"Unsupported data type\");\n  }\n  return out;\n};\nlet _canReadPixelsResult;\nconst canReadPixels = (type, renderer, camera, renderTargetOptions) => {\n  if (_canReadPixelsResult !== void 0)\n    return _canReadPixelsResult;\n  const testRT = new WebGLRenderTarget(1, 1, renderTargetOptions);\n  renderer.setRenderTarget(testRT);\n  const mesh = new Mesh(new PlaneGeometry(), new MeshBasicMaterial({ color: 16777215 }));\n  renderer.render(mesh, camera);\n  renderer.setRenderTarget(null);\n  const out = getBufferForType(type, testRT.width, testRT.height);\n  renderer.readRenderTargetPixels(testRT, 0, 0, testRT.width, testRT.height, out);\n  testRT.dispose();\n  mesh.geometry.dispose();\n  mesh.material.dispose();\n  _canReadPixelsResult = out[0] !== 0;\n  return _canReadPixelsResult;\n};\nclass QuadRenderer {\n  /**\n   * Constructs a new QuadRenderer\n   *\n   * @param options Parameters for this QuadRenderer\n   */\n  constructor(options) {\n    var _a2, _b2, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q2, _r;\n    this._rendererIsDisposable = false;\n    this._supportsReadPixels = true;\n    this.render = () => {\n      this._renderer.setRenderTarget(this._renderTarget);\n      try {\n        this._renderer.render(this._scene, this._camera);\n      } catch (e2) {\n        this._renderer.setRenderTarget(null);\n        throw e2;\n      }\n      this._renderer.setRenderTarget(null);\n    };\n    this._width = options.width;\n    this._height = options.height;\n    this._type = options.type;\n    this._colorSpace = options.colorSpace;\n    const rtOptions = {\n      // fixed options\n      format: RGBAFormat,\n      depthBuffer: false,\n      stencilBuffer: false,\n      // user options\n      type: this._type,\n      // set in class property\n      colorSpace: this._colorSpace,\n      // set in class property\n      anisotropy: ((_a2 = options.renderTargetOptions) === null || _a2 === void 0 ? void 0 : _a2.anisotropy) !== void 0 ? (_b2 = options.renderTargetOptions) === null || _b2 === void 0 ? void 0 : _b2.anisotropy : 1,\n      generateMipmaps: ((_c = options.renderTargetOptions) === null || _c === void 0 ? void 0 : _c.generateMipmaps) !== void 0 ? (_d = options.renderTargetOptions) === null || _d === void 0 ? void 0 : _d.generateMipmaps : false,\n      magFilter: ((_e = options.renderTargetOptions) === null || _e === void 0 ? void 0 : _e.magFilter) !== void 0 ? (_f = options.renderTargetOptions) === null || _f === void 0 ? void 0 : _f.magFilter : LinearFilter,\n      minFilter: ((_g = options.renderTargetOptions) === null || _g === void 0 ? void 0 : _g.minFilter) !== void 0 ? (_h = options.renderTargetOptions) === null || _h === void 0 ? void 0 : _h.minFilter : LinearFilter,\n      samples: ((_j = options.renderTargetOptions) === null || _j === void 0 ? void 0 : _j.samples) !== void 0 ? (_k = options.renderTargetOptions) === null || _k === void 0 ? void 0 : _k.samples : void 0,\n      wrapS: ((_l = options.renderTargetOptions) === null || _l === void 0 ? void 0 : _l.wrapS) !== void 0 ? (_m = options.renderTargetOptions) === null || _m === void 0 ? void 0 : _m.wrapS : ClampToEdgeWrapping,\n      wrapT: ((_o = options.renderTargetOptions) === null || _o === void 0 ? void 0 : _o.wrapT) !== void 0 ? (_p = options.renderTargetOptions) === null || _p === void 0 ? void 0 : _p.wrapT : ClampToEdgeWrapping\n    };\n    this._material = options.material;\n    if (options.renderer) {\n      this._renderer = options.renderer;\n    } else {\n      this._renderer = QuadRenderer.instantiateRenderer();\n      this._rendererIsDisposable = true;\n    }\n    this._scene = new Scene();\n    this._camera = new OrthographicCamera();\n    this._camera.position.set(0, 0, 10);\n    this._camera.left = -0.5;\n    this._camera.right = 0.5;\n    this._camera.top = 0.5;\n    this._camera.bottom = -0.5;\n    this._camera.updateProjectionMatrix();\n    if (!canReadPixels(this._type, this._renderer, this._camera, rtOptions)) {\n      let alternativeType;\n      switch (this._type) {\n        case HalfFloatType:\n          alternativeType = this._renderer.extensions.has(\"EXT_color_buffer_float\") ? FloatType : void 0;\n          break;\n      }\n      if (alternativeType !== void 0) {\n        console.warn(`This browser does not support reading pixels from ${this._type} RenderTargets, switching to ${FloatType}`);\n        this._type = alternativeType;\n      } else {\n        this._supportsReadPixels = false;\n        console.warn(\"This browser dos not support toArray or toDataTexture, calls to those methods will result in an error thrown\");\n      }\n    }\n    this._quad = new Mesh(new PlaneGeometry(), this._material);\n    this._quad.geometry.computeBoundingBox();\n    this._scene.add(this._quad);\n    this._renderTarget = new WebGLRenderTarget(this.width, this.height, rtOptions);\n    this._renderTarget.texture.mapping = ((_q2 = options.renderTargetOptions) === null || _q2 === void 0 ? void 0 : _q2.mapping) !== void 0 ? (_r = options.renderTargetOptions) === null || _r === void 0 ? void 0 : _r.mapping : UVMapping;\n  }\n  /**\n   * Instantiates a temporary renderer\n   *\n   * @returns\n   */\n  static instantiateRenderer() {\n    const renderer = new WebGLRenderer();\n    renderer.setSize(128, 128);\n    return renderer;\n  }\n  /**\n   * Obtains a Buffer containing the rendered texture.\n   *\n   * @throws Error if the browser cannot read pixels from this RenderTarget type.\n   * @returns a TypedArray containing RGBA values from this renderer\n   */\n  toArray() {\n    if (!this._supportsReadPixels)\n      throw new Error(\"Can't read pixels in this browser\");\n    const out = getBufferForType(this._type, this._width, this._height);\n    this._renderer.readRenderTargetPixels(this._renderTarget, 0, 0, this._width, this._height, out);\n    return out;\n  }\n  /**\n   * Performs a readPixel operation in the renderTarget\n   * and returns a DataTexture containing the read data\n   *\n   * @param options options\n   * @returns\n   */\n  toDataTexture(options) {\n    const returnValue = new DataTexture(\n      // fixed values\n      this.toArray(),\n      this.width,\n      this.height,\n      RGBAFormat,\n      this._type,\n      // user values\n      (options === null || options === void 0 ? void 0 : options.mapping) || UVMapping,\n      (options === null || options === void 0 ? void 0 : options.wrapS) || ClampToEdgeWrapping,\n      (options === null || options === void 0 ? void 0 : options.wrapT) || ClampToEdgeWrapping,\n      (options === null || options === void 0 ? void 0 : options.magFilter) || LinearFilter,\n      (options === null || options === void 0 ? void 0 : options.minFilter) || LinearFilter,\n      (options === null || options === void 0 ? void 0 : options.anisotropy) || 1,\n      // fixed value\n      LinearSRGBColorSpace$1\n    );\n    returnValue.generateMipmaps = (options === null || options === void 0 ? void 0 : options.generateMipmaps) !== void 0 ? options === null || options === void 0 ? void 0 : options.generateMipmaps : false;\n    return returnValue;\n  }\n  /**\n   * If using a disposable renderer, it will dispose it.\n   */\n  disposeOnDemandRenderer() {\n    this._renderer.setRenderTarget(null);\n    if (this._rendererIsDisposable) {\n      this._renderer.dispose();\n      this._renderer.forceContextLoss();\n    }\n  }\n  /**\n   * Will dispose of **all** assets used by this renderer.\n   *\n   *\n   * @param disposeRenderTarget will dispose of the renderTarget which will not be usable later\n   * set this to true if you passed the `renderTarget.texture` to a `PMREMGenerator`\n   * or are otherwise done with it.\n   *\n   * @example\n   * ```js\n   * const loader = new HDRJPGLoader(renderer)\n   * const result = await loader.loadAsync('gainmap.jpeg')\n   * const mesh = new Mesh(geometry, new MeshBasicMaterial({ map: result.renderTarget.texture }) )\n   * // DO NOT dispose the renderTarget here,\n   * // it is used directly in the material\n   * result.dispose()\n   * ```\n   *\n   * @example\n   * ```js\n   * const loader = new HDRJPGLoader(renderer)\n   * const pmremGenerator = new PMREMGenerator( renderer );\n   * const result = await loader.loadAsync('gainmap.jpeg')\n   * const envMap = pmremGenerator.fromEquirectangular(result.renderTarget.texture)\n   * const mesh = new Mesh(geometry, new MeshStandardMaterial({ envMap }) )\n   * // renderTarget can be disposed here\n   * // because it was used to generate a PMREM texture\n   * result.dispose(true)\n   * ```\n   */\n  dispose(disposeRenderTarget) {\n    this.disposeOnDemandRenderer();\n    if (disposeRenderTarget) {\n      this.renderTarget.dispose();\n    }\n    if (this.material instanceof ShaderMaterial) {\n      Object.values(this.material.uniforms).forEach((v2) => {\n        if (v2.value instanceof Texture)\n          v2.value.dispose();\n      });\n    }\n    Object.values(this.material).forEach((value) => {\n      if (value instanceof Texture)\n        value.dispose();\n    });\n    this.material.dispose();\n    this._quad.geometry.dispose();\n  }\n  /**\n   * Width of the texture\n   */\n  get width() {\n    return this._width;\n  }\n  set width(value) {\n    this._width = value;\n    this._renderTarget.setSize(this._width, this._height);\n  }\n  /**\n   * Height of the texture\n   */\n  get height() {\n    return this._height;\n  }\n  set height(value) {\n    this._height = value;\n    this._renderTarget.setSize(this._width, this._height);\n  }\n  /**\n   * The renderer used\n   */\n  get renderer() {\n    return this._renderer;\n  }\n  /**\n   * The `WebGLRenderTarget` used.\n   */\n  get renderTarget() {\n    return this._renderTarget;\n  }\n  set renderTarget(value) {\n    this._renderTarget = value;\n    this._width = value.width;\n    this._height = value.height;\n  }\n  /**\n   * The `Material` used.\n   */\n  get material() {\n    return this._material;\n  }\n  /**\n   *\n   */\n  get type() {\n    return this._type;\n  }\n  get colorSpace() {\n    return this._colorSpace;\n  }\n}\nconst vertexShader = (\n  /* glsl */\n  `\nvarying vec2 vUv;\n\nvoid main() {\n  vUv = uv;\n  gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n}\n`\n);\nconst fragmentShader = (\n  /* glsl */\n  `\n// min half float value\n#define HALF_FLOAT_MIN vec3( -65504, -65504, -65504 )\n// max half float value\n#define HALF_FLOAT_MAX vec3( 65504, 65504, 65504 )\n\nuniform sampler2D sdr;\nuniform sampler2D gainMap;\nuniform vec3 gamma;\nuniform vec3 offsetHdr;\nuniform vec3 offsetSdr;\nuniform vec3 gainMapMin;\nuniform vec3 gainMapMax;\nuniform float weightFactor;\n\nvarying vec2 vUv;\n\nvoid main() {\n  vec3 rgb = texture2D( sdr, vUv ).rgb;\n  vec3 recovery = texture2D( gainMap, vUv ).rgb;\n  vec3 logRecovery = pow( recovery, gamma );\n  vec3 logBoost = gainMapMin * ( 1.0 - logRecovery ) + gainMapMax * logRecovery;\n  vec3 hdrColor = (rgb + offsetSdr) * exp2( logBoost * weightFactor ) - offsetHdr;\n  vec3 clampedHdrColor = max( HALF_FLOAT_MIN, min( HALF_FLOAT_MAX, hdrColor ));\n  gl_FragColor = vec4( clampedHdrColor , 1.0 );\n}\n`\n);\nclass GainMapDecoderMaterial extends ShaderMaterial {\n  /**\n   *\n   * @param params\n   */\n  constructor({ gamma, offsetHdr, offsetSdr, gainMapMin, gainMapMax, maxDisplayBoost, hdrCapacityMin, hdrCapacityMax, sdr, gainMap }) {\n    super({\n      name: \"GainMapDecoderMaterial\",\n      vertexShader,\n      fragmentShader,\n      uniforms: {\n        sdr: { value: sdr },\n        gainMap: { value: gainMap },\n        gamma: { value: new Vector3(1 / gamma[0], 1 / gamma[1], 1 / gamma[2]) },\n        offsetHdr: { value: new Vector3().fromArray(offsetHdr) },\n        offsetSdr: { value: new Vector3().fromArray(offsetSdr) },\n        gainMapMin: { value: new Vector3().fromArray(gainMapMin) },\n        gainMapMax: { value: new Vector3().fromArray(gainMapMax) },\n        weightFactor: {\n          value: (Math.log2(maxDisplayBoost) - hdrCapacityMin) / (hdrCapacityMax - hdrCapacityMin)\n        }\n      },\n      blending: NoBlending,\n      depthTest: false,\n      depthWrite: false\n    });\n    this._maxDisplayBoost = maxDisplayBoost;\n    this._hdrCapacityMin = hdrCapacityMin;\n    this._hdrCapacityMax = hdrCapacityMax;\n    this.needsUpdate = true;\n    this.uniformsNeedUpdate = true;\n  }\n  get sdr() {\n    return this.uniforms.sdr.value;\n  }\n  set sdr(value) {\n    this.uniforms.sdr.value = value;\n  }\n  get gainMap() {\n    return this.uniforms.gainMap.value;\n  }\n  set gainMap(value) {\n    this.uniforms.gainMap.value = value;\n  }\n  /**\n   * @see {@link GainMapMetadata.offsetHdr}\n   */\n  get offsetHdr() {\n    return this.uniforms.offsetHdr.value.toArray();\n  }\n  set offsetHdr(value) {\n    this.uniforms.offsetHdr.value.fromArray(value);\n  }\n  /**\n   * @see {@link GainMapMetadata.offsetSdr}\n   */\n  get offsetSdr() {\n    return this.uniforms.offsetSdr.value.toArray();\n  }\n  set offsetSdr(value) {\n    this.uniforms.offsetSdr.value.fromArray(value);\n  }\n  /**\n   * @see {@link GainMapMetadata.gainMapMin}\n   */\n  get gainMapMin() {\n    return this.uniforms.gainMapMin.value.toArray();\n  }\n  set gainMapMin(value) {\n    this.uniforms.gainMapMin.value.fromArray(value);\n  }\n  /**\n   * @see {@link GainMapMetadata.gainMapMax}\n   */\n  get gainMapMax() {\n    return this.uniforms.gainMapMax.value.toArray();\n  }\n  set gainMapMax(value) {\n    this.uniforms.gainMapMax.value.fromArray(value);\n  }\n  /**\n   * @see {@link GainMapMetadata.gamma}\n   */\n  get gamma() {\n    const g2 = this.uniforms.gamma.value;\n    return [1 / g2.x, 1 / g2.y, 1 / g2.z];\n  }\n  set gamma(value) {\n    const g2 = this.uniforms.gamma.value;\n    g2.x = 1 / value[0];\n    g2.y = 1 / value[1];\n    g2.z = 1 / value[2];\n  }\n  /**\n   * @see {@link GainMapMetadata.hdrCapacityMin}\n   * @remarks Logarithmic space\n   */\n  get hdrCapacityMin() {\n    return this._hdrCapacityMin;\n  }\n  set hdrCapacityMin(value) {\n    this._hdrCapacityMin = value;\n    this.calculateWeight();\n  }\n  /**\n   * @see {@link GainMapMetadata.hdrCapacityMin}\n   * @remarks Logarithmic space\n   */\n  get hdrCapacityMax() {\n    return this._hdrCapacityMax;\n  }\n  set hdrCapacityMax(value) {\n    this._hdrCapacityMax = value;\n    this.calculateWeight();\n  }\n  /**\n   * @see {@link GainmapDecodingParameters.maxDisplayBoost}\n   * @remarks Non Logarithmic space\n   */\n  get maxDisplayBoost() {\n    return this._maxDisplayBoost;\n  }\n  set maxDisplayBoost(value) {\n    this._maxDisplayBoost = Math.max(1, Math.min(65504, value));\n    this.calculateWeight();\n  }\n  calculateWeight() {\n    const val = (Math.log2(this._maxDisplayBoost) - this._hdrCapacityMin) / (this._hdrCapacityMax - this._hdrCapacityMin);\n    this.uniforms.weightFactor.value = Math.max(0, Math.min(1, val));\n  }\n}\nclass GainMapNotFoundError extends Error {\n}\nclass XMPMetadataNotFoundError extends Error {\n}\nconst getXMLValue = (xml, tag, defaultValue) => {\n  const attributeMatch = new RegExp(`${tag}=\"([^\"]*)\"`, \"i\").exec(xml);\n  if (attributeMatch)\n    return attributeMatch[1];\n  const tagMatch = new RegExp(`<${tag}[^>]*>([\\\\s\\\\S]*?)</${tag}>`, \"i\").exec(xml);\n  if (tagMatch) {\n    const liValues = tagMatch[1].match(/<rdf:li>([^<]*)<\\/rdf:li>/g);\n    if (liValues && liValues.length === 3) {\n      return liValues.map((v2) => v2.replace(/<\\/?rdf:li>/g, \"\"));\n    }\n    return tagMatch[1].trim();\n  }\n  if (defaultValue !== void 0)\n    return defaultValue;\n  throw new Error(`Can't find ${tag} in gainmap metadata`);\n};\nconst extractXMP = (input) => {\n  let str;\n  if (typeof TextDecoder !== \"undefined\")\n    str = new TextDecoder().decode(input);\n  else\n    str = input.toString();\n  let start = str.indexOf(\"<x:xmpmeta\");\n  while (start !== -1) {\n    const end = str.indexOf(\"x:xmpmeta>\", start);\n    const xmpBlock = str.slice(start, end + 10);\n    try {\n      const gainMapMin = getXMLValue(xmpBlock, \"hdrgm:GainMapMin\", \"0\");\n      const gainMapMax = getXMLValue(xmpBlock, \"hdrgm:GainMapMax\");\n      const gamma = getXMLValue(xmpBlock, \"hdrgm:Gamma\", \"1\");\n      const offsetSDR = getXMLValue(xmpBlock, \"hdrgm:OffsetSDR\", \"0.015625\");\n      const offsetHDR = getXMLValue(xmpBlock, \"hdrgm:OffsetHDR\", \"0.015625\");\n      const hdrCapacityMinMatch = /hdrgm:HDRCapacityMin=\"([^\"]*)\"/.exec(xmpBlock);\n      const hdrCapacityMin = hdrCapacityMinMatch ? hdrCapacityMinMatch[1] : \"0\";\n      const hdrCapacityMaxMatch = /hdrgm:HDRCapacityMax=\"([^\"]*)\"/.exec(xmpBlock);\n      if (!hdrCapacityMaxMatch)\n        throw new Error(\"Incomplete gainmap metadata\");\n      const hdrCapacityMax = hdrCapacityMaxMatch[1];\n      return {\n        gainMapMin: Array.isArray(gainMapMin) ? gainMapMin.map((v2) => parseFloat(v2)) : [parseFloat(gainMapMin), parseFloat(gainMapMin), parseFloat(gainMapMin)],\n        gainMapMax: Array.isArray(gainMapMax) ? gainMapMax.map((v2) => parseFloat(v2)) : [parseFloat(gainMapMax), parseFloat(gainMapMax), parseFloat(gainMapMax)],\n        gamma: Array.isArray(gamma) ? gamma.map((v2) => parseFloat(v2)) : [parseFloat(gamma), parseFloat(gamma), parseFloat(gamma)],\n        offsetSdr: Array.isArray(offsetSDR) ? offsetSDR.map((v2) => parseFloat(v2)) : [parseFloat(offsetSDR), parseFloat(offsetSDR), parseFloat(offsetSDR)],\n        offsetHdr: Array.isArray(offsetHDR) ? offsetHDR.map((v2) => parseFloat(v2)) : [parseFloat(offsetHDR), parseFloat(offsetHDR), parseFloat(offsetHDR)],\n        hdrCapacityMin: parseFloat(hdrCapacityMin),\n        hdrCapacityMax: parseFloat(hdrCapacityMax)\n      };\n    } catch (e2) {\n    }\n    start = str.indexOf(\"<x:xmpmeta\", end);\n  }\n};\nclass MPFExtractor {\n  constructor(options) {\n    this.options = {\n      debug: options && options.debug !== void 0 ? options.debug : false,\n      extractFII: options && options.extractFII !== void 0 ? options.extractFII : true,\n      extractNonFII: options && options.extractNonFII !== void 0 ? options.extractNonFII : true\n    };\n  }\n  extract(imageArrayBuffer) {\n    return new Promise((resolve2, reject) => {\n      const debug = this.options.debug;\n      const dataView = new DataView(imageArrayBuffer.buffer);\n      if (dataView.getUint16(0) !== 65496) {\n        reject(new Error(\"Not a valid jpeg\"));\n        return;\n      }\n      const length = dataView.byteLength;\n      let offset = 2;\n      let loops = 0;\n      let marker;\n      while (offset < length) {\n        if (++loops > 250) {\n          reject(new Error(`Found no marker after ${loops} loops 😵`));\n          return;\n        }\n        if (dataView.getUint8(offset) !== 255) {\n          reject(new Error(`Not a valid marker at offset 0x${offset.toString(16)}, found: 0x${dataView.getUint8(offset).toString(16)}`));\n          return;\n        }\n        marker = dataView.getUint8(offset + 1);\n        if (debug)\n          console.log(`Marker: ${marker.toString(16)}`);\n        if (marker === 226) {\n          if (debug)\n            console.log(\"Found APP2 marker (0xffe2)\");\n          const formatPt = offset + 4;\n          if (dataView.getUint32(formatPt) === 1297106432) {\n            const tiffOffset = formatPt + 4;\n            let bigEnd;\n            if (dataView.getUint16(tiffOffset) === 18761) {\n              bigEnd = false;\n            } else if (dataView.getUint16(tiffOffset) === 19789) {\n              bigEnd = true;\n            } else {\n              reject(new Error(\"No valid endianness marker found in TIFF header\"));\n              return;\n            }\n            if (dataView.getUint16(tiffOffset + 2, !bigEnd) !== 42) {\n              reject(new Error(\"Not valid TIFF data! (no 0x002A marker)\"));\n              return;\n            }\n            const firstIFDOffset = dataView.getUint32(tiffOffset + 4, !bigEnd);\n            if (firstIFDOffset < 8) {\n              reject(new Error(\"Not valid TIFF data! (First offset less than 8)\"));\n              return;\n            }\n            const dirStart = tiffOffset + firstIFDOffset;\n            const count = dataView.getUint16(dirStart, !bigEnd);\n            const entriesStart = dirStart + 2;\n            let numberOfImages = 0;\n            for (let i2 = entriesStart; i2 < entriesStart + 12 * count; i2 += 12) {\n              if (dataView.getUint16(i2, !bigEnd) === 45057) {\n                numberOfImages = dataView.getUint32(i2 + 8, !bigEnd);\n              }\n            }\n            const nextIFDOffsetLen = 4;\n            const MPImageListValPt = dirStart + 2 + count * 12 + nextIFDOffsetLen;\n            const images = [];\n            for (let i2 = MPImageListValPt; i2 < MPImageListValPt + numberOfImages * 16; i2 += 16) {\n              const image = {\n                MPType: dataView.getUint32(i2, !bigEnd),\n                size: dataView.getUint32(i2 + 4, !bigEnd),\n                // This offset is specified relative to the address of the MP Endian\n                // field in the MP Header, unless the image is a First Individual Image,\n                // in which case the value of the offset shall be NULL (0x00000000).\n                dataOffset: dataView.getUint32(i2 + 8, !bigEnd),\n                dependantImages: dataView.getUint32(i2 + 12, !bigEnd),\n                start: -1,\n                end: -1,\n                isFII: false\n              };\n              if (!image.dataOffset) {\n                image.start = 0;\n                image.isFII = true;\n              } else {\n                image.start = tiffOffset + image.dataOffset;\n                image.isFII = false;\n              }\n              image.end = image.start + image.size;\n              images.push(image);\n            }\n            if (this.options.extractNonFII && images.length) {\n              const bufferBlob = new Blob([dataView]);\n              const imgs = [];\n              for (const image of images) {\n                if (image.isFII && !this.options.extractFII) {\n                  continue;\n                }\n                const imageBlob = bufferBlob.slice(image.start, image.end + 1, \"image/jpeg\");\n                imgs.push(imageBlob);\n              }\n              resolve2(imgs);\n            }\n          }\n        }\n        offset += 2 + dataView.getUint16(offset + 2);\n      }\n    });\n  }\n}\nconst extractGainmapFromJPEG = async (jpegFile) => {\n  const metadata = extractXMP(jpegFile);\n  if (!metadata)\n    throw new XMPMetadataNotFoundError(\"Gain map XMP metadata not found\");\n  const mpfExtractor = new MPFExtractor({ extractFII: true, extractNonFII: true });\n  const images = await mpfExtractor.extract(jpegFile);\n  if (images.length !== 2)\n    throw new GainMapNotFoundError(\"Gain map recovery image not found\");\n  return {\n    sdr: new Uint8Array(await images[0].arrayBuffer()),\n    gainMap: new Uint8Array(await images[1].arrayBuffer()),\n    metadata\n  };\n};\nconst getHTMLImageFromBlob = (blob) => {\n  return new Promise((resolve2, reject) => {\n    const img = document.createElement(\"img\");\n    img.onload = () => {\n      resolve2(img);\n    };\n    img.onerror = (e2) => {\n      reject(e2);\n    };\n    img.src = URL.createObjectURL(blob);\n  });\n};\nclass LoaderBase extends Loader {\n  /**\n   *\n   * @param renderer\n   * @param manager\n   */\n  constructor(renderer, manager) {\n    super(manager);\n    if (renderer)\n      this._renderer = renderer;\n    this._internalLoadingManager = new LoadingManager();\n  }\n  /**\n   * Specify the renderer to use when rendering the gain map\n   *\n   * @param renderer\n   * @returns\n   */\n  setRenderer(renderer) {\n    this._renderer = renderer;\n    return this;\n  }\n  /**\n   * Specify the renderTarget options to use when rendering the gain map\n   *\n   * @param options\n   * @returns\n   */\n  setRenderTargetOptions(options) {\n    this._renderTargetOptions = options;\n    return this;\n  }\n  /**\n   * @private\n   * @returns\n   */\n  prepareQuadRenderer() {\n    if (!this._renderer)\n      console.warn(\"WARNING: An existing WebGL Renderer was not passed to this Loader constructor or in setRenderer, the result of this Loader will need to be converted to a Data Texture with toDataTexture() before you can use it in your renderer.\");\n    const material = new GainMapDecoderMaterial({\n      gainMapMax: [1, 1, 1],\n      gainMapMin: [0, 0, 0],\n      gamma: [1, 1, 1],\n      offsetHdr: [1, 1, 1],\n      offsetSdr: [1, 1, 1],\n      hdrCapacityMax: 1,\n      hdrCapacityMin: 0,\n      maxDisplayBoost: 1,\n      gainMap: new Texture(),\n      sdr: new Texture()\n    });\n    return new QuadRenderer({\n      width: 16,\n      height: 16,\n      type: HalfFloatType,\n      colorSpace: LinearSRGBColorSpace$1,\n      material,\n      renderer: this._renderer,\n      renderTargetOptions: this._renderTargetOptions\n    });\n  }\n  /**\n  * @private\n  * @param quadRenderer\n  * @param metadata\n  * @param sdrBuffer\n  * @param gainMapBuffer\n  */\n  async render(quadRenderer, metadata, sdrBuffer, gainMapBuffer) {\n    const gainMapBlob = gainMapBuffer ? new Blob([gainMapBuffer], { type: \"image/jpeg\" }) : void 0;\n    const sdrBlob = new Blob([sdrBuffer], { type: \"image/jpeg\" });\n    let sdrImage;\n    let gainMapImage;\n    let needsFlip = false;\n    if (typeof createImageBitmap === \"undefined\") {\n      const res = await Promise.all([\n        gainMapBlob ? getHTMLImageFromBlob(gainMapBlob) : Promise.resolve(void 0),\n        getHTMLImageFromBlob(sdrBlob)\n      ]);\n      gainMapImage = res[0];\n      sdrImage = res[1];\n      needsFlip = true;\n    } else {\n      const res = await Promise.all([\n        gainMapBlob ? createImageBitmap(gainMapBlob, { imageOrientation: \"flipY\" }) : Promise.resolve(void 0),\n        createImageBitmap(sdrBlob, { imageOrientation: \"flipY\" })\n      ]);\n      gainMapImage = res[0];\n      sdrImage = res[1];\n    }\n    const gainMap = new Texture(gainMapImage || new ImageData(2, 2), UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, LinearMipMapLinearFilter, RGBAFormat, UnsignedByteType, 1, LinearSRGBColorSpace$1);\n    gainMap.flipY = needsFlip;\n    gainMap.needsUpdate = true;\n    const sdr = new Texture(sdrImage, UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping, LinearFilter, LinearMipMapLinearFilter, RGBAFormat, UnsignedByteType, 1, SRGBColorSpace$1);\n    sdr.flipY = needsFlip;\n    sdr.needsUpdate = true;\n    quadRenderer.width = sdrImage.width;\n    quadRenderer.height = sdrImage.height;\n    quadRenderer.material.gainMap = gainMap;\n    quadRenderer.material.sdr = sdr;\n    quadRenderer.material.gainMapMin = metadata.gainMapMin;\n    quadRenderer.material.gainMapMax = metadata.gainMapMax;\n    quadRenderer.material.offsetHdr = metadata.offsetHdr;\n    quadRenderer.material.offsetSdr = metadata.offsetSdr;\n    quadRenderer.material.gamma = metadata.gamma;\n    quadRenderer.material.hdrCapacityMin = metadata.hdrCapacityMin;\n    quadRenderer.material.hdrCapacityMax = metadata.hdrCapacityMax;\n    quadRenderer.material.maxDisplayBoost = Math.pow(2, metadata.hdrCapacityMax);\n    quadRenderer.material.needsUpdate = true;\n    quadRenderer.render();\n  }\n}\nclass GainMapLoader extends LoaderBase {\n  /**\n   * Loads a gainmap using separate data\n   * * sdr image\n   * * gain map image\n   * * metadata json\n   *\n   * useful for webp gain maps\n   *\n   * @param urls An array in the form of [sdr.jpg, gainmap.jpg, metadata.json]\n   * @param onLoad Load complete callback, will receive the result\n   * @param onProgress Progress callback, will receive a {@link ProgressEvent}\n   * @param onError Error callback\n   * @returns\n   */\n  load([sdrUrl, gainMapUrl, metadataUrl], onLoad, onProgress, onError) {\n    const quadRenderer = this.prepareQuadRenderer();\n    let sdr;\n    let gainMap;\n    let metadata;\n    const loadCheck = async () => {\n      if (sdr && gainMap && metadata) {\n        try {\n          await this.render(quadRenderer, metadata, sdr, gainMap);\n        } catch (error2) {\n          this.manager.itemError(sdrUrl);\n          this.manager.itemError(gainMapUrl);\n          this.manager.itemError(metadataUrl);\n          if (typeof onError === \"function\")\n            onError(error2);\n          quadRenderer.disposeOnDemandRenderer();\n          return;\n        }\n        if (typeof onLoad === \"function\")\n          onLoad(quadRenderer);\n        this.manager.itemEnd(sdrUrl);\n        this.manager.itemEnd(gainMapUrl);\n        this.manager.itemEnd(metadataUrl);\n        quadRenderer.disposeOnDemandRenderer();\n      }\n    };\n    let sdrLengthComputable = true;\n    let sdrTotal = 0;\n    let sdrLoaded = 0;\n    let gainMapLengthComputable = true;\n    let gainMapTotal = 0;\n    let gainMapLoaded = 0;\n    let metadataLengthComputable = true;\n    let metadataTotal = 0;\n    let metadataLoaded = 0;\n    const progressHandler = () => {\n      if (typeof onProgress === \"function\") {\n        const total = sdrTotal + gainMapTotal + metadataTotal;\n        const loaded = sdrLoaded + gainMapLoaded + metadataLoaded;\n        const lengthComputable = sdrLengthComputable && gainMapLengthComputable && metadataLengthComputable;\n        onProgress(new ProgressEvent(\"progress\", { lengthComputable, loaded, total }));\n      }\n    };\n    this.manager.itemStart(sdrUrl);\n    this.manager.itemStart(gainMapUrl);\n    this.manager.itemStart(metadataUrl);\n    const sdrLoader = new FileLoader(this._internalLoadingManager);\n    sdrLoader.setResponseType(\"arraybuffer\");\n    sdrLoader.setRequestHeader(this.requestHeader);\n    sdrLoader.setPath(this.path);\n    sdrLoader.setWithCredentials(this.withCredentials);\n    sdrLoader.load(sdrUrl, async (buffer) => {\n      if (typeof buffer === \"string\")\n        throw new Error(\"Invalid sdr buffer\");\n      sdr = buffer;\n      await loadCheck();\n    }, (e2) => {\n      sdrLengthComputable = e2.lengthComputable;\n      sdrLoaded = e2.loaded;\n      sdrTotal = e2.total;\n      progressHandler();\n    }, (error2) => {\n      this.manager.itemError(sdrUrl);\n      if (typeof onError === \"function\")\n        onError(error2);\n    });\n    const gainMapLoader = new FileLoader(this._internalLoadingManager);\n    gainMapLoader.setResponseType(\"arraybuffer\");\n    gainMapLoader.setRequestHeader(this.requestHeader);\n    gainMapLoader.setPath(this.path);\n    gainMapLoader.setWithCredentials(this.withCredentials);\n    gainMapLoader.load(gainMapUrl, async (buffer) => {\n      if (typeof buffer === \"string\")\n        throw new Error(\"Invalid gainmap buffer\");\n      gainMap = buffer;\n      await loadCheck();\n    }, (e2) => {\n      gainMapLengthComputable = e2.lengthComputable;\n      gainMapLoaded = e2.loaded;\n      gainMapTotal = e2.total;\n      progressHandler();\n    }, (error2) => {\n      this.manager.itemError(gainMapUrl);\n      if (typeof onError === \"function\")\n        onError(error2);\n    });\n    const metadataLoader = new FileLoader(this._internalLoadingManager);\n    metadataLoader.setRequestHeader(this.requestHeader);\n    metadataLoader.setPath(this.path);\n    metadataLoader.setWithCredentials(this.withCredentials);\n    metadataLoader.load(metadataUrl, async (json) => {\n      if (typeof json !== \"string\")\n        throw new Error(\"Invalid metadata string\");\n      metadata = JSON.parse(json);\n      await loadCheck();\n    }, (e2) => {\n      metadataLengthComputable = e2.lengthComputable;\n      metadataLoaded = e2.loaded;\n      metadataTotal = e2.total;\n      progressHandler();\n    }, (error2) => {\n      this.manager.itemError(metadataUrl);\n      if (typeof onError === \"function\")\n        onError(error2);\n    });\n    return quadRenderer;\n  }\n}\nclass HDRJPGLoader extends LoaderBase {\n  /**\n   * Loads a JPEG containing gain map metadata\n   * Renders a normal SDR image if gainmap data is not found\n   *\n   * @param url An array in the form of [sdr.jpg, gainmap.jpg, metadata.json]\n   * @param onLoad Load complete callback, will receive the result\n   * @param onProgress Progress callback, will receive a {@link ProgressEvent}\n   * @param onError Error callback\n   * @returns\n   */\n  load(url, onLoad, onProgress, onError) {\n    const quadRenderer = this.prepareQuadRenderer();\n    const loader = new FileLoader(this._internalLoadingManager);\n    loader.setResponseType(\"arraybuffer\");\n    loader.setRequestHeader(this.requestHeader);\n    loader.setPath(this.path);\n    loader.setWithCredentials(this.withCredentials);\n    this.manager.itemStart(url);\n    loader.load(url, async (jpeg) => {\n      if (typeof jpeg === \"string\")\n        throw new Error(\"Invalid buffer, received [string], was expecting [ArrayBuffer]\");\n      const jpegBuffer = new Uint8Array(jpeg);\n      let sdrJPEG;\n      let gainMapJPEG;\n      let metadata;\n      try {\n        const extractionResult = await extractGainmapFromJPEG(jpegBuffer);\n        sdrJPEG = extractionResult.sdr;\n        gainMapJPEG = extractionResult.gainMap;\n        metadata = extractionResult.metadata;\n      } catch (e2) {\n        if (e2 instanceof XMPMetadataNotFoundError || e2 instanceof GainMapNotFoundError) {\n          console.warn(`Failure to reconstruct an HDR image from ${url}: Gain map metadata not found in the file, HDRJPGLoader will render the SDR jpeg`);\n          metadata = {\n            gainMapMin: [0, 0, 0],\n            gainMapMax: [1, 1, 1],\n            gamma: [1, 1, 1],\n            hdrCapacityMin: 0,\n            hdrCapacityMax: 1,\n            offsetHdr: [0, 0, 0],\n            offsetSdr: [0, 0, 0]\n          };\n          sdrJPEG = jpegBuffer;\n        } else {\n          throw e2;\n        }\n      }\n      try {\n        await this.render(quadRenderer, metadata, sdrJPEG, gainMapJPEG);\n      } catch (error2) {\n        this.manager.itemError(url);\n        if (typeof onError === \"function\")\n          onError(error2);\n        quadRenderer.disposeOnDemandRenderer();\n        return;\n      }\n      if (typeof onLoad === \"function\")\n        onLoad(quadRenderer);\n      this.manager.itemEnd(url);\n      quadRenderer.disposeOnDemandRenderer();\n    }, onProgress, (error2) => {\n      this.manager.itemError(url);\n      if (typeof onError === \"function\")\n        onError(error2);\n    });\n    return quadRenderer;\n  }\n}\nconst presetsObj = {\n  apartment: \"lebombo_1k.hdr\",\n  city: \"potsdamer_platz_1k.hdr\",\n  dawn: \"kiara_1_dawn_1k.hdr\",\n  forest: \"forest_slope_1k.hdr\",\n  lobby: \"st_fagans_interior_1k.hdr\",\n  night: \"dikhololo_night_1k.hdr\",\n  park: \"rooitou_park_1k.hdr\",\n  studio: \"studio_small_03_1k.hdr\",\n  sunset: \"venice_sunset_1k.hdr\",\n  warehouse: \"empty_warehouse_01_1k.hdr\"\n};\nconst CUBEMAP_ROOT = \"https://raw.githack.com/pmndrs/drei-assets/456060a26bbeb8fdf79326f224b6d99b8bcce736/hdri/\";\nconst isArray = (arr) => Array.isArray(arr);\nconst defaultFiles = [\"/px.png\", \"/nx.png\", \"/py.png\", \"/ny.png\", \"/pz.png\", \"/nz.png\"];\nfunction useEnvironment({\n  files = defaultFiles,\n  path = \"\",\n  preset = void 0,\n  encoding = void 0,\n  extensions: extensions2\n} = {}) {\n  let loader = null;\n  let multiFile = false;\n  if (preset) {\n    validatePreset(preset);\n    files = presetsObj[preset];\n    path = CUBEMAP_ROOT;\n  }\n  multiFile = isArray(files);\n  const {\n    extension,\n    isCubemap\n  } = getExtension(files);\n  loader = getLoader(extension);\n  if (!loader) throw new Error(\"useEnvironment: Unrecognized file extension: \" + files);\n  const gl = useThree((state) => state.gl);\n  useLayoutEffect(() => {\n    if (extension !== \"webp\" && extension !== \"jpg\" && extension !== \"jpeg\") return;\n    function clearGainmapTexture() {\n      useLoader.clear(\n        // @ts-expect-error\n        loader,\n        multiFile ? [files] : files\n      );\n    }\n    gl.domElement.addEventListener(\"webglcontextlost\", clearGainmapTexture, {\n      once: true\n    });\n  }, [files, gl.domElement]);\n  const loaderResult = useLoader(\n    // @ts-expect-error\n    loader,\n    multiFile ? [files] : files,\n    (loader2) => {\n      if (extension === \"webp\" || extension === \"jpg\" || extension === \"jpeg\") {\n        loader2.setRenderer(gl);\n      }\n      loader2.setPath == null || loader2.setPath(path);\n      if (extensions2) extensions2(loader2);\n    }\n  );\n  let texture = multiFile ? (\n    // @ts-ignore\n    loaderResult[0]\n  ) : loaderResult;\n  if (extension === \"jpg\" || extension === \"jpeg\" || extension === \"webp\") {\n    var _renderTarget;\n    texture = (_renderTarget = texture.renderTarget) == null ? void 0 : _renderTarget.texture;\n  }\n  texture.mapping = isCubemap ? CubeReflectionMapping : EquirectangularReflectionMapping;\n  if (\"colorSpace\" in texture) texture.colorSpace = (encoding !== null && encoding !== void 0 ? encoding : isCubemap) ? \"srgb\" : \"srgb-linear\";\n  else texture.encoding = (encoding !== null && encoding !== void 0 ? encoding : isCubemap) ? sRGBEncoding : LinearEncoding;\n  return texture;\n}\nconst preloadDefaultOptions = {\n  files: defaultFiles,\n  path: \"\",\n  preset: void 0,\n  extensions: void 0\n};\nuseEnvironment.preload = (preloadOptions) => {\n  const options = {\n    ...preloadDefaultOptions,\n    ...preloadOptions\n  };\n  let {\n    files,\n    path = \"\"\n  } = options;\n  const {\n    preset,\n    extensions: extensions2\n  } = options;\n  if (preset) {\n    validatePreset(preset);\n    files = presetsObj[preset];\n    path = CUBEMAP_ROOT;\n  }\n  const {\n    extension\n  } = getExtension(files);\n  if (extension === \"webp\" || extension === \"jpg\" || extension === \"jpeg\") {\n    throw new Error(\"useEnvironment: Preloading gainmaps is not supported\");\n  }\n  const loader = getLoader(extension);\n  if (!loader) throw new Error(\"useEnvironment: Unrecognized file extension: \" + files);\n  useLoader.preload(\n    // @ts-expect-error\n    loader,\n    isArray(files) ? [files] : files,\n    (loader2) => {\n      loader2.setPath == null || loader2.setPath(path);\n      if (extensions2) extensions2(loader2);\n    }\n  );\n};\nconst clearDefaultOptins = {\n  files: defaultFiles,\n  preset: void 0\n};\nuseEnvironment.clear = (clearOptions) => {\n  const options = {\n    ...clearDefaultOptins,\n    ...clearOptions\n  };\n  let {\n    files\n  } = options;\n  const {\n    preset\n  } = options;\n  if (preset) {\n    validatePreset(preset);\n    files = presetsObj[preset];\n  }\n  const {\n    extension\n  } = getExtension(files);\n  const loader = getLoader(extension);\n  if (!loader) throw new Error(\"useEnvironment: Unrecognized file extension: \" + files);\n  useLoader.clear(\n    // @ts-expect-error\n    loader,\n    isArray(files) ? [files] : files\n  );\n};\nfunction validatePreset(preset) {\n  if (!(preset in presetsObj)) throw new Error(\"Preset must be one of: \" + Object.keys(presetsObj).join(\", \"));\n}\nfunction getExtension(files) {\n  var _firstEntry$split$pop;\n  const isCubemap = isArray(files) && files.length === 6;\n  const isGainmap = isArray(files) && files.length === 3 && files.some((file) => file.endsWith(\"json\"));\n  const firstEntry = isArray(files) ? files[0] : files;\n  const extension = isCubemap ? \"cube\" : isGainmap ? \"webp\" : firstEntry.startsWith(\"data:application/exr\") ? \"exr\" : firstEntry.startsWith(\"data:application/hdr\") ? \"hdr\" : firstEntry.startsWith(\"data:image/jpeg\") ? \"jpg\" : (_firstEntry$split$pop = firstEntry.split(\".\").pop()) == null || (_firstEntry$split$pop = _firstEntry$split$pop.split(\"?\")) == null || (_firstEntry$split$pop = _firstEntry$split$pop.shift()) == null ? void 0 : _firstEntry$split$pop.toLowerCase();\n  return {\n    extension,\n    isCubemap,\n    isGainmap\n  };\n}\nfunction getLoader(extension) {\n  const loader = extension === \"cube\" ? CubeTextureLoader : extension === \"hdr\" ? RGBELoader : extension === \"exr\" ? EXRLoader : extension === \"jpg\" || extension === \"jpeg\" ? HDRJPGLoader : extension === \"webp\" ? GainMapLoader : null;\n  return loader;\n}\nconst isRef = (obj) => obj.current && obj.current.isScene;\nconst resolveScene = (scene) => isRef(scene) ? scene.current : scene;\nfunction setEnvProps(background, scene, defaultScene, texture, sceneProps = {}) {\n  var _target$backgroundRot, _target$backgroundRot2, _target$environmentRo, _target$environmentRo2;\n  sceneProps = {\n    backgroundBlurriness: 0,\n    backgroundIntensity: 1,\n    backgroundRotation: [0, 0, 0],\n    environmentIntensity: 1,\n    environmentRotation: [0, 0, 0],\n    ...sceneProps\n  };\n  const target = resolveScene(scene || defaultScene);\n  const oldbg = target.background;\n  const oldenv = target.environment;\n  const oldSceneProps = {\n    // @ts-ignore\n    backgroundBlurriness: target.backgroundBlurriness,\n    // @ts-ignore\n    backgroundIntensity: target.backgroundIntensity,\n    // @ts-ignore\n    backgroundRotation: (_target$backgroundRot = (_target$backgroundRot2 = target.backgroundRotation) == null || _target$backgroundRot2.clone == null ? void 0 : _target$backgroundRot2.clone()) !== null && _target$backgroundRot !== void 0 ? _target$backgroundRot : [0, 0, 0],\n    // @ts-ignore\n    environmentIntensity: target.environmentIntensity,\n    // @ts-ignore\n    environmentRotation: (_target$environmentRo = (_target$environmentRo2 = target.environmentRotation) == null || _target$environmentRo2.clone == null ? void 0 : _target$environmentRo2.clone()) !== null && _target$environmentRo !== void 0 ? _target$environmentRo : [0, 0, 0]\n  };\n  if (background !== \"only\") target.environment = texture;\n  if (background) target.background = texture;\n  applyProps(target, sceneProps);\n  return () => {\n    if (background !== \"only\") target.environment = oldenv;\n    if (background) target.background = oldbg;\n    applyProps(target, oldSceneProps);\n  };\n}\nfunction EnvironmentMap({\n  scene,\n  background = false,\n  map,\n  ...config\n}) {\n  const defaultScene = useThree((state) => state.scene);\n  React.useLayoutEffect(() => {\n    if (map) return setEnvProps(background, scene, defaultScene, map, config);\n  });\n  return null;\n}\nfunction EnvironmentCube({\n  background = false,\n  scene,\n  blur,\n  backgroundBlurriness,\n  backgroundIntensity,\n  backgroundRotation,\n  environmentIntensity,\n  environmentRotation,\n  ...rest\n}) {\n  const texture = useEnvironment(rest);\n  const defaultScene = useThree((state) => state.scene);\n  React.useLayoutEffect(() => {\n    return setEnvProps(background, scene, defaultScene, texture, {\n      backgroundBlurriness: blur !== null && blur !== void 0 ? blur : backgroundBlurriness,\n      backgroundIntensity,\n      backgroundRotation,\n      environmentIntensity,\n      environmentRotation\n    });\n  });\n  React.useEffect(() => {\n    return () => {\n      texture.dispose();\n    };\n  }, [texture]);\n  return null;\n}\nfunction EnvironmentPortal({\n  children,\n  near = 0.1,\n  far = 1e3,\n  resolution = 256,\n  frames = 1,\n  map,\n  background = false,\n  blur,\n  backgroundBlurriness,\n  backgroundIntensity,\n  backgroundRotation,\n  environmentIntensity,\n  environmentRotation,\n  scene,\n  files,\n  path,\n  preset = void 0,\n  extensions: extensions2\n}) {\n  const gl = useThree((state) => state.gl);\n  const defaultScene = useThree((state) => state.scene);\n  const camera = React.useRef(null);\n  const [virtualScene] = React.useState(() => new Scene());\n  const fbo = React.useMemo(() => {\n    const fbo2 = new WebGLCubeRenderTarget(resolution);\n    fbo2.texture.type = HalfFloatType;\n    return fbo2;\n  }, [resolution]);\n  React.useEffect(() => {\n    return () => {\n      fbo.dispose();\n    };\n  }, [fbo]);\n  React.useLayoutEffect(() => {\n    if (frames === 1) {\n      const autoClear = gl.autoClear;\n      gl.autoClear = true;\n      camera.current.update(gl, virtualScene);\n      gl.autoClear = autoClear;\n    }\n    return setEnvProps(background, scene, defaultScene, fbo.texture, {\n      backgroundBlurriness: blur !== null && blur !== void 0 ? blur : backgroundBlurriness,\n      backgroundIntensity,\n      backgroundRotation,\n      environmentIntensity,\n      environmentRotation\n    });\n  }, [children, virtualScene, fbo.texture, scene, defaultScene, background, frames, gl]);\n  let count = 1;\n  useFrame(() => {\n    if (frames === Infinity || count < frames) {\n      const autoClear = gl.autoClear;\n      gl.autoClear = true;\n      camera.current.update(gl, virtualScene);\n      gl.autoClear = autoClear;\n      count++;\n    }\n  });\n  return /* @__PURE__ */ React.createElement(React.Fragment, null, createPortal(/* @__PURE__ */ React.createElement(React.Fragment, null, children, /* @__PURE__ */ React.createElement(\"cubeCamera\", {\n    ref: camera,\n    args: [near, far, fbo]\n  }), files || preset ? /* @__PURE__ */ React.createElement(EnvironmentCube, {\n    background: true,\n    files,\n    preset,\n    path,\n    extensions: extensions2\n  }) : map ? /* @__PURE__ */ React.createElement(EnvironmentMap, {\n    background: true,\n    map,\n    extensions: extensions2\n  }) : null), virtualScene));\n}\nfunction EnvironmentGround(props) {\n  var _props$ground, _props$ground2, _scale2, _props$ground3;\n  const textureDefault = useEnvironment(props);\n  const texture = props.map || textureDefault;\n  React.useMemo(() => extend({\n    GroundProjectedEnvImpl: GroundProjectedEnv\n  }), []);\n  React.useEffect(() => {\n    return () => {\n      textureDefault.dispose();\n    };\n  }, [textureDefault]);\n  const args = React.useMemo(() => [texture], [texture]);\n  const height = (_props$ground = props.ground) == null ? void 0 : _props$ground.height;\n  const radius = (_props$ground2 = props.ground) == null ? void 0 : _props$ground2.radius;\n  const scale = (_scale2 = (_props$ground3 = props.ground) == null ? void 0 : _props$ground3.scale) !== null && _scale2 !== void 0 ? _scale2 : 1e3;\n  return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(EnvironmentMap, _extends$1({}, props, {\n    map: texture\n  })), /* @__PURE__ */ React.createElement(\"groundProjectedEnvImpl\", {\n    args,\n    scale,\n    height,\n    radius\n  }));\n}\nfunction Environment(props) {\n  return props.ground ? /* @__PURE__ */ React.createElement(EnvironmentGround, props) : props.map ? /* @__PURE__ */ React.createElement(EnvironmentMap, props) : props.children ? /* @__PURE__ */ React.createElement(EnvironmentPortal, props) : /* @__PURE__ */ React.createElement(EnvironmentCube, props);\n}\nconst Lightformer = /* @__PURE__ */ React.forwardRef(({\n  light,\n  args,\n  map,\n  toneMapped = false,\n  color = \"white\",\n  form: Form = \"rect\",\n  intensity = 1,\n  scale = 1,\n  target = [0, 0, 0],\n  children,\n  ...props\n}, forwardRef2) => {\n  const ref = React.useRef(null);\n  React.useImperativeHandle(forwardRef2, () => ref.current, []);\n  React.useLayoutEffect(() => {\n    if (!children && !props.material) {\n      applyProps(ref.current.material, {\n        color\n      });\n      ref.current.material.color.multiplyScalar(intensity);\n    }\n  }, [color, intensity, children, props.material]);\n  React.useLayoutEffect(() => {\n    if (!props.rotation) ref.current.quaternion.identity();\n    if (target && !props.rotation) {\n      \"boolean\" === typeof target ? ref.current.lookAt(0, 0, 0) : ref.current.lookAt(Array.isArray(target) ? new Vector3(...target) : target);\n    }\n  }, [target, props.rotation]);\n  scale = Array.isArray(scale) && scale.length === 2 ? [scale[0], scale[1], 1] : scale;\n  return /* @__PURE__ */ React.createElement(\"mesh\", _extends$1({\n    ref,\n    scale\n  }, props), Form === \"circle\" ? /* @__PURE__ */ React.createElement(\"ringGeometry\", {\n    args: args ? args : [0, 0.5, 64]\n  }) : Form === \"ring\" ? /* @__PURE__ */ React.createElement(\"ringGeometry\", {\n    args: args ? args : [0.25, 0.5, 64]\n  }) : Form === \"rect\" || Form === \"plane\" ? /* @__PURE__ */ React.createElement(\"planeGeometry\", {\n    args: args ? args : [1, 1]\n  }) : Form === \"box\" ? /* @__PURE__ */ React.createElement(\"boxGeometry\", {\n    args: args ? args : [1, 1, 1]\n  }) : /* @__PURE__ */ React.createElement(Form, {\n    args\n  }), children ? children : /* @__PURE__ */ React.createElement(\"meshBasicMaterial\", {\n    toneMapped,\n    map,\n    side: DoubleSide\n  }), light && /* @__PURE__ */ React.createElement(\"pointLight\", _extends$1({\n    castShadow: true\n  }, light)));\n});\nlet A;\nconst I = new Array(128).fill(void 0);\nI.push(void 0, null, true, false);\nlet g = I.length;\nfunction C(A2) {\n  g === I.length && I.push(I.length + 1);\n  const C2 = g;\n  return g = I[C2], I[C2] = A2, C2;\n}\nfunction B(A2) {\n  return I[A2];\n}\nfunction Q(A2) {\n  const C2 = B(A2);\n  return function(A3) {\n    A3 < 132 || (I[A3] = g, g = A3);\n  }(A2), C2;\n}\nfunction E(A2) {\n  return null == A2;\n}\nlet i = null;\nfunction D() {\n  return null !== i && 0 !== i.byteLength || (i = new Float64Array(A.memory.buffer)), i;\n}\nlet o = null;\nfunction S() {\n  return null !== o && 0 !== o.byteLength || (o = new Int32Array(A.memory.buffer)), o;\n}\nconst w = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true }) : { decode: () => {\n  throw Error(\"TextDecoder not available\");\n} };\n\"undefined\" != typeof TextDecoder && w.decode();\nlet G = null;\nfunction k(I2, g2) {\n  return I2 >>>= 0, w.decode((null !== G && 0 !== G.byteLength || (G = new Uint8Array(A.memory.buffer)), G).subarray(I2, I2 + g2));\n}\nfunction K(A2, I2) {\n  if (!(A2 instanceof I2)) throw new Error(`expected instance of ${I2.name}`);\n  return A2.ptr;\n}\nlet J = null;\nfunction U() {\n  return null !== J && 0 !== J.byteLength || (J = new Float32Array(A.memory.buffer)), J;\n}\nlet h = 128;\nfunction y(A2) {\n  if (1 == h) throw new Error(\"out of js stack\");\n  return I[--h] = A2, h;\n}\nfunction N(A2, I2) {\n  return A2 >>>= 0, U().subarray(A2 / 4, A2 / 4 + I2);\n}\nlet M = null;\nfunction F() {\n  return null !== M && 0 !== M.byteLength || (M = new Uint32Array(A.memory.buffer)), M;\n}\nlet a = 0;\nfunction s(A2, I2) {\n  const g2 = I2(4 * A2.length, 4) >>> 0;\n  return U().set(A2, g2 / 4), a = A2.length, g2;\n}\nfunction R(A2, I2) {\n  const g2 = I2(4 * A2.length, 4) >>> 0;\n  return F().set(A2, g2 / 4), a = A2.length, g2;\n}\nfunction c(I2, g2) {\n  try {\n    return I2.apply(this, g2);\n  } catch (I3) {\n    A.__wbindgen_exn_store(C(I3));\n  }\n}\nconst q = Object.freeze({ LinX: 0, 0: \"LinX\", LinY: 1, 1: \"LinY\", LinZ: 2, 2: \"LinZ\", AngX: 3, 3: \"AngX\", AngY: 4, 4: \"AngY\", AngZ: 5, 5: \"AngZ\" });\nconst Y = Object.freeze({ Revolute: 0, 0: \"Revolute\", Fixed: 1, 1: \"Fixed\", Prismatic: 2, 2: \"Prismatic\", Rope: 3, 3: \"Rope\", Spring: 4, 4: \"Spring\", Spherical: 5, 5: \"Spherical\", Generic: 6, 6: \"Generic\" });\nconst l = Object.freeze({ Ball: 0, 0: \"Ball\", Cuboid: 1, 1: \"Cuboid\", Capsule: 2, 2: \"Capsule\", Segment: 3, 3: \"Segment\", Polyline: 4, 4: \"Polyline\", Triangle: 5, 5: \"Triangle\", TriMesh: 6, 6: \"TriMesh\", HeightField: 7, 7: \"HeightField\", Compound: 8, 8: \"Compound\", ConvexPolyhedron: 9, 9: \"ConvexPolyhedron\", Cylinder: 10, 10: \"Cylinder\", Cone: 11, 11: \"Cone\", RoundCuboid: 12, 12: \"RoundCuboid\", RoundTriangle: 13, 13: \"RoundTriangle\", RoundCylinder: 14, 14: \"RoundCylinder\", RoundCone: 15, 15: \"RoundCone\", RoundConvexPolyhedron: 16, 16: \"RoundConvexPolyhedron\", HalfSpace: 17, 17: \"HalfSpace\" }), L = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawbroadphase_free(I2 >>> 0));\nclass H {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(H.prototype);\n    return I2.__wbg_ptr = A2, L.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, L.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawbroadphase_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawbroadphase_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n}\nconst t = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawccdsolver_free(I2 >>> 0));\nclass p {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, t.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawccdsolver_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawccdsolver_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n}\nconst e = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawcharactercollision_free(I2 >>> 0));\nclass r {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, e.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawcharactercollision_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawcharactercollision_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  handle() {\n    return A.rawcharactercollision_handle(this.__wbg_ptr);\n  }\n  translationDeltaApplied() {\n    const I2 = A.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  translationDeltaRemaining() {\n    const I2 = A.rawcharactercollision_translationDeltaRemaining(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  toi() {\n    return A.rawcharactercollision_toi(this.__wbg_ptr);\n  }\n  worldWitness1() {\n    const I2 = A.rawcharactercollision_worldWitness1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  worldWitness2() {\n    const I2 = A.rawcharactercollision_worldWitness2(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  worldNormal1() {\n    const I2 = A.rawcharactercollision_worldNormal1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  worldNormal2() {\n    const I2 = A.rawcharactercollision_worldNormal2(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n}\nconst n = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawcolliderset_free(I2 >>> 0));\nclass d {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(d.prototype);\n    return I2.__wbg_ptr = A2, n.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, n.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawcolliderset_free(I2);\n  }\n  coTranslation(I2) {\n    const g2 = A.rawcolliderset_coTranslation(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  coRotation(I2) {\n    const g2 = A.rawcolliderset_coRotation(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  coSetTranslation(I2, g2, C2, B2) {\n    A.rawcolliderset_coSetTranslation(this.__wbg_ptr, I2, g2, C2, B2);\n  }\n  coSetTranslationWrtParent(I2, g2, C2, B2) {\n    A.rawcolliderset_coSetTranslationWrtParent(this.__wbg_ptr, I2, g2, C2, B2);\n  }\n  coSetRotation(I2, g2, C2, B2, Q2) {\n    A.rawcolliderset_coSetRotation(this.__wbg_ptr, I2, g2, C2, B2, Q2);\n  }\n  coSetRotationWrtParent(I2, g2, C2, B2, Q2) {\n    A.rawcolliderset_coSetRotationWrtParent(this.__wbg_ptr, I2, g2, C2, B2, Q2);\n  }\n  coIsSensor(I2) {\n    return 0 !== A.rawcolliderset_coIsSensor(this.__wbg_ptr, I2);\n  }\n  coShapeType(I2) {\n    return A.rawcolliderset_coShapeType(this.__wbg_ptr, I2);\n  }\n  coHalfspaceNormal(I2) {\n    const g2 = A.rawcolliderset_coHalfspaceNormal(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  coHalfExtents(I2) {\n    const g2 = A.rawcolliderset_coHalfExtents(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  coSetHalfExtents(I2, g2) {\n    K(g2, xA), A.rawcolliderset_coSetHalfExtents(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  coRadius(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coRadius(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coSetRadius(I2, g2) {\n    A.rawcolliderset_coSetRadius(this.__wbg_ptr, I2, g2);\n  }\n  coHalfHeight(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coHalfHeight(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coSetHalfHeight(I2, g2) {\n    A.rawcolliderset_coSetHalfHeight(this.__wbg_ptr, I2, g2);\n  }\n  coRoundRadius(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coRoundRadius(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coSetRoundRadius(I2, g2) {\n    A.rawcolliderset_coSetRoundRadius(this.__wbg_ptr, I2, g2);\n  }\n  coVertices(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coVertices(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = S()[B2 / 4 + 1];\n      let Q2;\n      return 0 !== g2 && (Q2 = N(g2, C2).slice(), A.__wbindgen_free(g2, 4 * C2, 4)), Q2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coIndices(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coIndices(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = S()[B2 / 4 + 1];\n      let Q2;\n      return 0 !== g2 && (Q2 = function(A2, I3) {\n        return A2 >>>= 0, F().subarray(A2 / 4, A2 / 4 + I3);\n      }(g2, C2).slice(), A.__wbindgen_free(g2, 4 * C2, 4)), Q2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coTriMeshFlags(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coTriMeshFlags(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = S()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2 >>> 0;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coHeightFieldFlags(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coHeightFieldFlags(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = S()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2 >>> 0;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coHeightfieldHeights(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coHeightfieldHeights(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = S()[B2 / 4 + 1];\n      let Q2;\n      return 0 !== g2 && (Q2 = N(g2, C2).slice(), A.__wbindgen_free(g2, 4 * C2, 4)), Q2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coHeightfieldScale(I2) {\n    const g2 = A.rawcolliderset_coHeightfieldScale(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  coHeightfieldNRows(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coHeightfieldNRows(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = S()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2 >>> 0;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coHeightfieldNCols(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coHeightfieldNCols(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = S()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2 >>> 0;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coParent(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawcolliderset_coParent(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = D()[B2 / 8 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  coSetEnabled(I2, g2) {\n    A.rawcolliderset_coSetEnabled(this.__wbg_ptr, I2, g2);\n  }\n  coIsEnabled(I2) {\n    return 0 !== A.rawcolliderset_coIsEnabled(this.__wbg_ptr, I2);\n  }\n  coSetContactSkin(I2, g2) {\n    A.rawcolliderset_coSetContactSkin(this.__wbg_ptr, I2, g2);\n  }\n  coContactSkin(I2) {\n    return A.rawcolliderset_coContactSkin(this.__wbg_ptr, I2);\n  }\n  coFriction(I2) {\n    return A.rawcolliderset_coFriction(this.__wbg_ptr, I2);\n  }\n  coRestitution(I2) {\n    return A.rawcolliderset_coRestitution(this.__wbg_ptr, I2);\n  }\n  coDensity(I2) {\n    return A.rawcolliderset_coDensity(this.__wbg_ptr, I2);\n  }\n  coMass(I2) {\n    return A.rawcolliderset_coMass(this.__wbg_ptr, I2);\n  }\n  coVolume(I2) {\n    return A.rawcolliderset_coVolume(this.__wbg_ptr, I2);\n  }\n  coCollisionGroups(I2) {\n    return A.rawcolliderset_coCollisionGroups(this.__wbg_ptr, I2) >>> 0;\n  }\n  coSolverGroups(I2) {\n    return A.rawcolliderset_coSolverGroups(this.__wbg_ptr, I2) >>> 0;\n  }\n  coActiveHooks(I2) {\n    return A.rawcolliderset_coActiveHooks(this.__wbg_ptr, I2) >>> 0;\n  }\n  coActiveCollisionTypes(I2) {\n    return A.rawcolliderset_coActiveCollisionTypes(this.__wbg_ptr, I2);\n  }\n  coActiveEvents(I2) {\n    return A.rawcolliderset_coActiveEvents(this.__wbg_ptr, I2) >>> 0;\n  }\n  coContactForceEventThreshold(I2) {\n    return A.rawcolliderset_coContactForceEventThreshold(this.__wbg_ptr, I2);\n  }\n  coContainsPoint(I2, g2) {\n    K(g2, xA);\n    return 0 !== A.rawcolliderset_coContainsPoint(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  coCastShape(I2, g2, C2, B2, Q2, E2, i2, D2, o2) {\n    K(g2, xA), K(C2, dA), K(B2, xA), K(Q2, HA), K(E2, xA);\n    const S2 = A.rawcolliderset_coCastShape(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, E2.__wbg_ptr, i2, D2, o2);\n    return 0 === S2 ? void 0 : OA.__wrap(S2);\n  }\n  coCastCollider(I2, g2, C2, B2, Q2, E2, i2) {\n    K(g2, xA), K(B2, xA);\n    const D2 = A.rawcolliderset_coCastCollider(this.__wbg_ptr, I2, g2.__wbg_ptr, C2, B2.__wbg_ptr, Q2, E2, i2);\n    return 0 === D2 ? void 0 : O.__wrap(D2);\n  }\n  coIntersectsShape(I2, g2, C2, B2) {\n    K(g2, dA), K(C2, xA), K(B2, HA);\n    return 0 !== A.rawcolliderset_coIntersectsShape(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr);\n  }\n  coContactShape(I2, g2, C2, B2, Q2) {\n    K(g2, dA), K(C2, xA), K(B2, HA);\n    const E2 = A.rawcolliderset_coContactShape(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2);\n    return 0 === E2 ? void 0 : bA.__wrap(E2);\n  }\n  coContactCollider(I2, g2, C2) {\n    const B2 = A.rawcolliderset_coContactCollider(this.__wbg_ptr, I2, g2, C2);\n    return 0 === B2 ? void 0 : bA.__wrap(B2);\n  }\n  coProjectPoint(I2, g2, C2) {\n    K(g2, xA);\n    const B2 = A.rawcolliderset_coProjectPoint(this.__wbg_ptr, I2, g2.__wbg_ptr, C2);\n    return yA.__wrap(B2);\n  }\n  coIntersectsRay(I2, g2, C2, B2) {\n    K(g2, xA), K(C2, xA);\n    return 0 !== A.rawcolliderset_coIntersectsRay(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2);\n  }\n  coCastRay(I2, g2, C2, B2, Q2) {\n    K(g2, xA), K(C2, xA);\n    return A.rawcolliderset_coCastRay(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2, Q2);\n  }\n  coCastRayAndGetNormal(I2, g2, C2, B2, Q2) {\n    K(g2, xA), K(C2, xA);\n    const E2 = A.rawcolliderset_coCastRayAndGetNormal(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2, Q2);\n    return 0 === E2 ? void 0 : qA.__wrap(E2);\n  }\n  coSetSensor(I2, g2) {\n    A.rawcolliderset_coSetSensor(this.__wbg_ptr, I2, g2);\n  }\n  coSetRestitution(I2, g2) {\n    A.rawcolliderset_coSetRestitution(this.__wbg_ptr, I2, g2);\n  }\n  coSetFriction(I2, g2) {\n    A.rawcolliderset_coSetFriction(this.__wbg_ptr, I2, g2);\n  }\n  coFrictionCombineRule(I2) {\n    return A.rawcolliderset_coFrictionCombineRule(this.__wbg_ptr, I2) >>> 0;\n  }\n  coSetFrictionCombineRule(I2, g2) {\n    A.rawcolliderset_coSetFrictionCombineRule(this.__wbg_ptr, I2, g2);\n  }\n  coRestitutionCombineRule(I2) {\n    return A.rawcolliderset_coRestitutionCombineRule(this.__wbg_ptr, I2) >>> 0;\n  }\n  coSetRestitutionCombineRule(I2, g2) {\n    A.rawcolliderset_coSetRestitutionCombineRule(this.__wbg_ptr, I2, g2);\n  }\n  coSetCollisionGroups(I2, g2) {\n    A.rawcolliderset_coSetCollisionGroups(this.__wbg_ptr, I2, g2);\n  }\n  coSetSolverGroups(I2, g2) {\n    A.rawcolliderset_coSetSolverGroups(this.__wbg_ptr, I2, g2);\n  }\n  coSetActiveHooks(I2, g2) {\n    A.rawcolliderset_coSetActiveHooks(this.__wbg_ptr, I2, g2);\n  }\n  coSetActiveEvents(I2, g2) {\n    A.rawcolliderset_coSetActiveEvents(this.__wbg_ptr, I2, g2);\n  }\n  coSetActiveCollisionTypes(I2, g2) {\n    A.rawcolliderset_coSetActiveCollisionTypes(this.__wbg_ptr, I2, g2);\n  }\n  coSetShape(I2, g2) {\n    K(g2, dA), A.rawcolliderset_coSetShape(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  coSetContactForceEventThreshold(I2, g2) {\n    A.rawcolliderset_coSetContactForceEventThreshold(this.__wbg_ptr, I2, g2);\n  }\n  coSetDensity(I2, g2) {\n    A.rawcolliderset_coSetDensity(this.__wbg_ptr, I2, g2);\n  }\n  coSetMass(I2, g2) {\n    A.rawcolliderset_coSetMass(this.__wbg_ptr, I2, g2);\n  }\n  coSetMassProperties(I2, g2, C2, B2, Q2) {\n    K(C2, xA), K(B2, xA), K(Q2, HA), A.rawcolliderset_coSetMassProperties(this.__wbg_ptr, I2, g2, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr);\n  }\n  constructor() {\n    const I2 = A.rawcolliderset_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  len() {\n    return A.rawcolliderset_len(this.__wbg_ptr) >>> 0;\n  }\n  contains(I2) {\n    return 0 !== A.rawcolliderset_contains(this.__wbg_ptr, I2);\n  }\n  createCollider(I2, g2, C2, B2, Q2, E2, i2, o2, w2, G2, k2, J2, U2, h2, y2, N2, M2, F2, a2, s2, R2, c2, q2, Y2, l2) {\n    try {\n      const t2 = A.__wbindgen_add_to_stack_pointer(-16);\n      K(g2, dA), K(C2, xA), K(B2, HA), K(i2, xA), K(o2, xA), K(w2, HA), K(l2, lA), A.rawcolliderset_createCollider(t2, this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2, E2, i2.__wbg_ptr, o2.__wbg_ptr, w2.__wbg_ptr, G2, k2, J2, U2, h2, y2, N2, M2, F2, a2, s2, R2, c2, q2, Y2, l2.__wbg_ptr);\n      var L2 = S()[t2 / 4 + 0], H2 = D()[t2 / 8 + 1];\n      return 0 === L2 ? void 0 : H2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  remove(I2, g2, C2, B2) {\n    K(g2, EA), K(C2, lA), A.rawcolliderset_remove(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2);\n  }\n  isHandleValid(I2) {\n    return 0 !== A.rawcolliderset_contains(this.__wbg_ptr, I2);\n  }\n  forEachColliderHandle(g2) {\n    try {\n      A.rawcolliderset_forEachColliderHandle(this.__wbg_ptr, y(g2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n}\nconst T = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawcollidershapecasthit_free(I2 >>> 0));\nclass O {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(O.prototype);\n    return I2.__wbg_ptr = A2, T.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, T.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawcollidershapecasthit_free(I2);\n  }\n  colliderHandle() {\n    return A.rawcharactercollision_handle(this.__wbg_ptr);\n  }\n  time_of_impact() {\n    return A.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr);\n  }\n  witness1() {\n    const I2 = A.rawcollidershapecasthit_witness1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  witness2() {\n    const I2 = A.rawcollidershapecasthit_witness2(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  normal1() {\n    const I2 = A.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  normal2() {\n    const I2 = A.rawcharactercollision_translationDeltaRemaining(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n}\nconst Z = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawcontactforceevent_free(I2 >>> 0));\nclass b {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(b.prototype);\n    return I2.__wbg_ptr = A2, Z.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, Z.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawcontactforceevent_free(I2);\n  }\n  collider1() {\n    return A.rawcharactercollision_handle(this.__wbg_ptr);\n  }\n  collider2() {\n    return A.rawcontactforceevent_collider2(this.__wbg_ptr);\n  }\n  total_force() {\n    const I2 = A.rawcontactforceevent_total_force(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  total_force_magnitude() {\n    return A.rawcontactforceevent_total_force_magnitude(this.__wbg_ptr);\n  }\n  max_force_direction() {\n    const I2 = A.rawcontactforceevent_max_force_direction(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  max_force_magnitude() {\n    return A.rawcontactforceevent_max_force_magnitude(this.__wbg_ptr);\n  }\n}\nconst W = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawcontactmanifold_free(I2 >>> 0));\nclass x {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(x.prototype);\n    return I2.__wbg_ptr = A2, W.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, W.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawcontactmanifold_free(I2);\n  }\n  normal() {\n    const I2 = A.rawcontactmanifold_normal(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  local_n1() {\n    const I2 = A.rawcontactmanifold_local_n1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  local_n2() {\n    const I2 = A.rawcontactmanifold_local_n2(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  subshape1() {\n    return A.rawcontactmanifold_subshape1(this.__wbg_ptr) >>> 0;\n  }\n  subshape2() {\n    return A.rawcontactmanifold_subshape2(this.__wbg_ptr) >>> 0;\n  }\n  num_contacts() {\n    return A.rawcontactmanifold_num_contacts(this.__wbg_ptr) >>> 0;\n  }\n  contact_local_p1(I2) {\n    const g2 = A.rawcontactmanifold_contact_local_p1(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  contact_local_p2(I2) {\n    const g2 = A.rawcontactmanifold_contact_local_p2(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  contact_dist(I2) {\n    return A.rawcontactmanifold_contact_dist(this.__wbg_ptr, I2);\n  }\n  contact_fid1(I2) {\n    return A.rawcontactmanifold_contact_fid1(this.__wbg_ptr, I2) >>> 0;\n  }\n  contact_fid2(I2) {\n    return A.rawcontactmanifold_contact_fid2(this.__wbg_ptr, I2) >>> 0;\n  }\n  contact_impulse(I2) {\n    return A.rawcontactmanifold_contact_impulse(this.__wbg_ptr, I2);\n  }\n  contact_tangent_impulse_x(I2) {\n    return A.rawcontactmanifold_contact_tangent_impulse_x(this.__wbg_ptr, I2);\n  }\n  contact_tangent_impulse_y(I2) {\n    return A.rawcontactmanifold_contact_tangent_impulse_y(this.__wbg_ptr, I2);\n  }\n  num_solver_contacts() {\n    return A.rawcontactmanifold_num_solver_contacts(this.__wbg_ptr) >>> 0;\n  }\n  solver_contact_point(I2) {\n    const g2 = A.rawcontactmanifold_solver_contact_point(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  solver_contact_dist(I2) {\n    return A.rawcontactmanifold_solver_contact_dist(this.__wbg_ptr, I2);\n  }\n  solver_contact_friction(I2) {\n    return A.rawcontactmanifold_solver_contact_friction(this.__wbg_ptr, I2);\n  }\n  solver_contact_restitution(I2) {\n    return A.rawcontactmanifold_solver_contact_restitution(this.__wbg_ptr, I2);\n  }\n  solver_contact_tangent_velocity(I2) {\n    const g2 = A.rawcontactmanifold_solver_contact_tangent_velocity(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n}\nconst m = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawcontactpair_free(I2 >>> 0));\nclass j {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(j.prototype);\n    return I2.__wbg_ptr = A2, m.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, m.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawcontactpair_free(I2);\n  }\n  collider1() {\n    return A.rawcontactpair_collider1(this.__wbg_ptr);\n  }\n  collider2() {\n    return A.rawcontactpair_collider2(this.__wbg_ptr);\n  }\n  numContactManifolds() {\n    return A.rawcontactpair_numContactManifolds(this.__wbg_ptr) >>> 0;\n  }\n  contactManifold(I2) {\n    const g2 = A.rawcontactpair_contactManifold(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : x.__wrap(g2);\n  }\n}\nconst f = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawdebugrenderpipeline_free(I2 >>> 0));\nclass V {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, f.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawdebugrenderpipeline_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawdebugrenderpipeline_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  vertices() {\n    return Q(A.rawdebugrenderpipeline_vertices(this.__wbg_ptr));\n  }\n  colors() {\n    return Q(A.rawdebugrenderpipeline_colors(this.__wbg_ptr));\n  }\n  render(I2, g2, C2, B2, Q2) {\n    K(I2, lA), K(g2, d), K(C2, gA), K(B2, SA), K(Q2, GA), A.rawdebugrenderpipeline_render(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr);\n  }\n}\nconst X = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawdeserializedworld_free(I2 >>> 0));\nclass P {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(P.prototype);\n    return I2.__wbg_ptr = A2, X.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, X.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawdeserializedworld_free(I2);\n  }\n  takeGravity() {\n    const I2 = A.rawdeserializedworld_takeGravity(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : xA.__wrap(I2);\n  }\n  takeIntegrationParameters() {\n    const I2 = A.rawdeserializedworld_takeIntegrationParameters(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : BA.__wrap(I2);\n  }\n  takeIslandManager() {\n    const I2 = A.rawdeserializedworld_takeIslandManager(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : EA.__wrap(I2);\n  }\n  takeBroadPhase() {\n    const I2 = A.rawdeserializedworld_takeBroadPhase(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : H.__wrap(I2);\n  }\n  takeNarrowPhase() {\n    const I2 = A.rawdeserializedworld_takeNarrowPhase(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : GA.__wrap(I2);\n  }\n  takeBodies() {\n    const I2 = A.rawdeserializedworld_takeBodies(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : lA.__wrap(I2);\n  }\n  takeColliders() {\n    const I2 = A.rawdeserializedworld_takeColliders(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : d.__wrap(I2);\n  }\n  takeImpulseJoints() {\n    const I2 = A.rawdeserializedworld_takeImpulseJoints(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : gA.__wrap(I2);\n  }\n  takeMultibodyJoints() {\n    const I2 = A.rawdeserializedworld_takeMultibodyJoints(this.__wbg_ptr);\n    return 0 === I2 ? void 0 : SA.__wrap(I2);\n  }\n}\nconst u = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawdynamicraycastvehiclecontroller_free(I2 >>> 0));\nclass v {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, u.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawdynamicraycastvehiclecontroller_free(I2);\n  }\n  constructor(I2) {\n    const g2 = A.rawdynamicraycastvehiclecontroller_new(I2);\n    return this.__wbg_ptr = g2 >>> 0, this;\n  }\n  current_vehicle_speed() {\n    return A.rawdynamicraycastvehiclecontroller_current_vehicle_speed(this.__wbg_ptr);\n  }\n  chassis() {\n    return A.rawdynamicraycastvehiclecontroller_chassis(this.__wbg_ptr);\n  }\n  index_up_axis() {\n    return A.rawdynamicraycastvehiclecontroller_index_up_axis(this.__wbg_ptr) >>> 0;\n  }\n  set_index_up_axis(I2) {\n    A.rawdynamicraycastvehiclecontroller_set_index_up_axis(this.__wbg_ptr, I2);\n  }\n  index_forward_axis() {\n    return A.rawdynamicraycastvehiclecontroller_index_forward_axis(this.__wbg_ptr) >>> 0;\n  }\n  set_index_forward_axis(I2) {\n    A.rawdynamicraycastvehiclecontroller_set_index_forward_axis(this.__wbg_ptr, I2);\n  }\n  add_wheel(I2, g2, C2, B2, Q2) {\n    K(I2, xA), K(g2, xA), K(C2, xA), A.rawdynamicraycastvehiclecontroller_add_wheel(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2, Q2);\n  }\n  num_wheels() {\n    return A.rawdynamicraycastvehiclecontroller_num_wheels(this.__wbg_ptr) >>> 0;\n  }\n  update_vehicle(g2, C2, B2, Q2, i2, D2, o2) {\n    try {\n      K(C2, lA), K(B2, d), K(Q2, MA), A.rawdynamicraycastvehiclecontroller_update_vehicle(this.__wbg_ptr, g2, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2, !E(D2), E(D2) ? 0 : D2, y(o2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  wheel_chassis_connection_point_cs(I2) {\n    const g2 = A.rawdynamicraycastvehiclecontroller_wheel_chassis_connection_point_cs(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  set_wheel_chassis_connection_point_cs(I2, g2) {\n    K(g2, xA), A.rawdynamicraycastvehiclecontroller_set_wheel_chassis_connection_point_cs(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  wheel_suspension_rest_length(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_suspension_rest_length(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_suspension_rest_length(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_suspension_rest_length(this.__wbg_ptr, I2, g2);\n  }\n  wheel_max_suspension_travel(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_max_suspension_travel(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_max_suspension_travel(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_max_suspension_travel(this.__wbg_ptr, I2, g2);\n  }\n  wheel_radius(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_radius(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_radius(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_radius(this.__wbg_ptr, I2, g2);\n  }\n  wheel_suspension_stiffness(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_suspension_stiffness(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_suspension_stiffness(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_suspension_stiffness(this.__wbg_ptr, I2, g2);\n  }\n  wheel_suspension_compression(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_suspension_compression(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_suspension_compression(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_suspension_compression(this.__wbg_ptr, I2, g2);\n  }\n  wheel_suspension_relaxation(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_suspension_relaxation(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_suspension_relaxation(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_suspension_relaxation(this.__wbg_ptr, I2, g2);\n  }\n  wheel_max_suspension_force(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_max_suspension_force(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_max_suspension_force(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_max_suspension_force(this.__wbg_ptr, I2, g2);\n  }\n  wheel_brake(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_brake(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_brake(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_brake(this.__wbg_ptr, I2, g2);\n  }\n  wheel_steering(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_steering(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_steering(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_steering(this.__wbg_ptr, I2, g2);\n  }\n  wheel_engine_force(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_engine_force(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_engine_force(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_engine_force(this.__wbg_ptr, I2, g2);\n  }\n  wheel_direction_cs(I2) {\n    const g2 = A.rawdynamicraycastvehiclecontroller_wheel_direction_cs(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  set_wheel_direction_cs(I2, g2) {\n    K(g2, xA), A.rawdynamicraycastvehiclecontroller_set_wheel_direction_cs(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  wheel_axle_cs(I2) {\n    const g2 = A.rawdynamicraycastvehiclecontroller_wheel_axle_cs(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  set_wheel_axle_cs(I2, g2) {\n    K(g2, xA), A.rawdynamicraycastvehiclecontroller_set_wheel_axle_cs(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  wheel_friction_slip(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_friction_slip(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_friction_slip(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_friction_slip(this.__wbg_ptr, I2, g2);\n  }\n  wheel_side_friction_stiffness(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_side_friction_stiffness(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  set_wheel_side_friction_stiffness(I2, g2) {\n    A.rawdynamicraycastvehiclecontroller_set_wheel_side_friction_stiffness(this.__wbg_ptr, I2, g2);\n  }\n  wheel_rotation(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_rotation(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  wheel_forward_impulse(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_forward_impulse(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  wheel_side_impulse(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_side_impulse(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  wheel_suspension_force(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_suspension_force(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  wheel_contact_normal_ws(I2) {\n    const g2 = A.rawdynamicraycastvehiclecontroller_wheel_contact_normal_ws(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  wheel_contact_point_ws(I2) {\n    const g2 = A.rawdynamicraycastvehiclecontroller_wheel_contact_point_ws(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  wheel_suspension_length(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_suspension_length(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = U()[B2 / 4 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  wheel_hard_point_ws(I2) {\n    const g2 = A.rawdynamicraycastvehiclecontroller_wheel_hard_point_ws(this.__wbg_ptr, I2);\n    return 0 === g2 ? void 0 : xA.__wrap(g2);\n  }\n  wheel_is_in_contact(I2) {\n    return 0 !== A.rawdynamicraycastvehiclecontroller_wheel_is_in_contact(this.__wbg_ptr, I2);\n  }\n  wheel_ground_object(I2) {\n    try {\n      const B2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawdynamicraycastvehiclecontroller_wheel_ground_object(B2, this.__wbg_ptr, I2);\n      var g2 = S()[B2 / 4 + 0], C2 = D()[B2 / 8 + 1];\n      return 0 === g2 ? void 0 : C2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n}\nconst z = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_raweventqueue_free(I2 >>> 0));\nclass _ {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, z.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_raweventqueue_free(I2);\n  }\n  constructor(I2) {\n    const g2 = A.raweventqueue_new(I2);\n    return this.__wbg_ptr = g2 >>> 0, this;\n  }\n  drainCollisionEvents(g2) {\n    try {\n      A.raweventqueue_drainCollisionEvents(this.__wbg_ptr, y(g2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  drainContactForceEvents(g2) {\n    try {\n      A.raweventqueue_drainContactForceEvents(this.__wbg_ptr, y(g2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  clear() {\n    A.raweventqueue_clear(this.__wbg_ptr);\n  }\n}\nconst $ = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawgenericjoint_free(I2 >>> 0));\nclass AA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(AA.prototype);\n    return I2.__wbg_ptr = A2, $.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, $.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawgenericjoint_free(I2);\n  }\n  static generic(I2, g2, C2, B2) {\n    K(I2, xA), K(g2, xA), K(C2, xA);\n    const Q2 = A.rawgenericjoint_generic(I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2);\n    return 0 === Q2 ? void 0 : AA.__wrap(Q2);\n  }\n  static spring(I2, g2, C2, B2, Q2) {\n    K(B2, xA), K(Q2, xA);\n    const E2 = A.rawgenericjoint_spring(I2, g2, C2, B2.__wbg_ptr, Q2.__wbg_ptr);\n    return AA.__wrap(E2);\n  }\n  static rope(I2, g2, C2) {\n    K(g2, xA), K(C2, xA);\n    const B2 = A.rawgenericjoint_rope(I2, g2.__wbg_ptr, C2.__wbg_ptr);\n    return AA.__wrap(B2);\n  }\n  static spherical(I2, g2) {\n    K(I2, xA), K(g2, xA);\n    const C2 = A.rawgenericjoint_spherical(I2.__wbg_ptr, g2.__wbg_ptr);\n    return AA.__wrap(C2);\n  }\n  static prismatic(I2, g2, C2, B2, Q2, E2) {\n    K(I2, xA), K(g2, xA), K(C2, xA);\n    const i2 = A.rawgenericjoint_prismatic(I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2, Q2, E2);\n    return 0 === i2 ? void 0 : AA.__wrap(i2);\n  }\n  static fixed(I2, g2, C2, B2) {\n    K(I2, xA), K(g2, HA), K(C2, xA), K(B2, HA);\n    const Q2 = A.rawgenericjoint_fixed(I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr);\n    return AA.__wrap(Q2);\n  }\n  static revolute(I2, g2, C2) {\n    K(I2, xA), K(g2, xA), K(C2, xA);\n    const B2 = A.rawgenericjoint_revolute(I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr);\n    return 0 === B2 ? void 0 : AA.__wrap(B2);\n  }\n}\nconst IA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawimpulsejointset_free(I2 >>> 0));\nclass gA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(gA.prototype);\n    return I2.__wbg_ptr = A2, IA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, IA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawimpulsejointset_free(I2);\n  }\n  jointType(I2) {\n    return A.rawimpulsejointset_jointType(this.__wbg_ptr, I2);\n  }\n  jointBodyHandle1(I2) {\n    return A.rawimpulsejointset_jointBodyHandle1(this.__wbg_ptr, I2);\n  }\n  jointBodyHandle2(I2) {\n    return A.rawimpulsejointset_jointBodyHandle2(this.__wbg_ptr, I2);\n  }\n  jointFrameX1(I2) {\n    const g2 = A.rawimpulsejointset_jointFrameX1(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  jointFrameX2(I2) {\n    const g2 = A.rawimpulsejointset_jointFrameX2(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  jointAnchor1(I2) {\n    const g2 = A.rawimpulsejointset_jointAnchor1(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  jointAnchor2(I2) {\n    const g2 = A.rawimpulsejointset_jointAnchor2(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  jointSetAnchor1(I2, g2) {\n    K(g2, xA), A.rawimpulsejointset_jointSetAnchor1(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  jointSetAnchor2(I2, g2) {\n    K(g2, xA), A.rawimpulsejointset_jointSetAnchor2(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  jointContactsEnabled(I2) {\n    return 0 !== A.rawimpulsejointset_jointContactsEnabled(this.__wbg_ptr, I2);\n  }\n  jointSetContactsEnabled(I2, g2) {\n    A.rawimpulsejointset_jointSetContactsEnabled(this.__wbg_ptr, I2, g2);\n  }\n  jointLimitsEnabled(I2, g2) {\n    return 0 !== A.rawimpulsejointset_jointLimitsEnabled(this.__wbg_ptr, I2, g2);\n  }\n  jointLimitsMin(I2, g2) {\n    return A.rawimpulsejointset_jointLimitsMin(this.__wbg_ptr, I2, g2);\n  }\n  jointLimitsMax(I2, g2) {\n    return A.rawimpulsejointset_jointLimitsMax(this.__wbg_ptr, I2, g2);\n  }\n  jointSetLimits(I2, g2, C2, B2) {\n    A.rawimpulsejointset_jointSetLimits(this.__wbg_ptr, I2, g2, C2, B2);\n  }\n  jointConfigureMotorModel(I2, g2, C2) {\n    A.rawimpulsejointset_jointConfigureMotorModel(this.__wbg_ptr, I2, g2, C2);\n  }\n  jointConfigureMotorVelocity(I2, g2, C2, B2) {\n    A.rawimpulsejointset_jointConfigureMotorVelocity(this.__wbg_ptr, I2, g2, C2, B2);\n  }\n  jointConfigureMotorPosition(I2, g2, C2, B2, Q2) {\n    A.rawimpulsejointset_jointConfigureMotorPosition(this.__wbg_ptr, I2, g2, C2, B2, Q2);\n  }\n  jointConfigureMotor(I2, g2, C2, B2, Q2, E2) {\n    A.rawimpulsejointset_jointConfigureMotor(this.__wbg_ptr, I2, g2, C2, B2, Q2, E2);\n  }\n  constructor() {\n    const I2 = A.rawimpulsejointset_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  createJoint(I2, g2, C2, B2) {\n    K(I2, AA);\n    return A.rawimpulsejointset_createJoint(this.__wbg_ptr, I2.__wbg_ptr, g2, C2, B2);\n  }\n  remove(I2, g2) {\n    A.rawimpulsejointset_remove(this.__wbg_ptr, I2, g2);\n  }\n  len() {\n    return A.rawimpulsejointset_len(this.__wbg_ptr) >>> 0;\n  }\n  contains(I2) {\n    return 0 !== A.rawimpulsejointset_contains(this.__wbg_ptr, I2);\n  }\n  forEachJointHandle(g2) {\n    try {\n      A.rawimpulsejointset_forEachJointHandle(this.__wbg_ptr, y(g2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  forEachJointAttachedToRigidBody(g2, C2) {\n    try {\n      A.rawimpulsejointset_forEachJointAttachedToRigidBody(this.__wbg_ptr, g2, y(C2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n}\nconst CA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawintegrationparameters_free(I2 >>> 0));\nclass BA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(BA.prototype);\n    return I2.__wbg_ptr = A2, CA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, CA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawintegrationparameters_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawintegrationparameters_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  get dt() {\n    return A.rawintegrationparameters_dt(this.__wbg_ptr);\n  }\n  get contact_erp() {\n    return A.rawintegrationparameters_contact_erp(this.__wbg_ptr);\n  }\n  get normalizedAllowedLinearError() {\n    return A.rawdynamicraycastvehiclecontroller_current_vehicle_speed(this.__wbg_ptr);\n  }\n  get normalizedPredictionDistance() {\n    return A.rawcontactforceevent_max_force_magnitude(this.__wbg_ptr);\n  }\n  get numSolverIterations() {\n    return A.rawintegrationparameters_numSolverIterations(this.__wbg_ptr) >>> 0;\n  }\n  get numAdditionalFrictionIterations() {\n    return A.rawdynamicraycastvehiclecontroller_index_up_axis(this.__wbg_ptr) >>> 0;\n  }\n  get numInternalPgsIterations() {\n    return A.rawdynamicraycastvehiclecontroller_index_forward_axis(this.__wbg_ptr) >>> 0;\n  }\n  get minIslandSize() {\n    return A.rawimpulsejointset_len(this.__wbg_ptr) >>> 0;\n  }\n  get maxCcdSubsteps() {\n    return A.rawintegrationparameters_maxCcdSubsteps(this.__wbg_ptr) >>> 0;\n  }\n  get lengthUnit() {\n    return A.rawintegrationparameters_lengthUnit(this.__wbg_ptr);\n  }\n  set dt(I2) {\n    A.rawintegrationparameters_set_dt(this.__wbg_ptr, I2);\n  }\n  set contact_natural_frequency(I2) {\n    A.rawintegrationparameters_set_contact_natural_frequency(this.__wbg_ptr, I2);\n  }\n  set normalizedAllowedLinearError(I2) {\n    A.rawintegrationparameters_set_normalizedAllowedLinearError(this.__wbg_ptr, I2);\n  }\n  set normalizedPredictionDistance(I2) {\n    A.rawintegrationparameters_set_normalizedPredictionDistance(this.__wbg_ptr, I2);\n  }\n  set numSolverIterations(I2) {\n    A.rawintegrationparameters_set_numSolverIterations(this.__wbg_ptr, I2);\n  }\n  set numAdditionalFrictionIterations(I2) {\n    A.rawdynamicraycastvehiclecontroller_set_index_up_axis(this.__wbg_ptr, I2);\n  }\n  set numInternalPgsIterations(I2) {\n    A.rawdynamicraycastvehiclecontroller_set_index_forward_axis(this.__wbg_ptr, I2);\n  }\n  set minIslandSize(I2) {\n    A.rawintegrationparameters_set_minIslandSize(this.__wbg_ptr, I2);\n  }\n  set maxCcdSubsteps(I2) {\n    A.rawintegrationparameters_set_maxCcdSubsteps(this.__wbg_ptr, I2);\n  }\n  set lengthUnit(I2) {\n    A.rawintegrationparameters_set_lengthUnit(this.__wbg_ptr, I2);\n  }\n  switchToStandardPgsSolver() {\n    A.rawintegrationparameters_switchToStandardPgsSolver(this.__wbg_ptr);\n  }\n  switchToSmallStepsPgsSolver() {\n    A.rawintegrationparameters_switchToSmallStepsPgsSolver(this.__wbg_ptr);\n  }\n  switchToSmallStepsPgsSolverWithoutWarmstart() {\n    A.rawintegrationparameters_switchToSmallStepsPgsSolverWithoutWarmstart(this.__wbg_ptr);\n  }\n}\nconst QA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawislandmanager_free(I2 >>> 0));\nclass EA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(EA.prototype);\n    return I2.__wbg_ptr = A2, QA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, QA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawislandmanager_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawislandmanager_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  forEachActiveRigidBodyHandle(g2) {\n    try {\n      A.rawislandmanager_forEachActiveRigidBodyHandle(this.__wbg_ptr, y(g2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n}\nconst iA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawkinematiccharactercontroller_free(I2 >>> 0));\nclass DA {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, iA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawkinematiccharactercontroller_free(I2);\n  }\n  constructor(I2) {\n    const g2 = A.rawkinematiccharactercontroller_new(I2);\n    return this.__wbg_ptr = g2 >>> 0, this;\n  }\n  up() {\n    const I2 = A.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  setUp(I2) {\n    K(I2, xA), A.rawkinematiccharactercontroller_setUp(this.__wbg_ptr, I2.__wbg_ptr);\n  }\n  normalNudgeFactor() {\n    return A.rawkinematiccharactercontroller_normalNudgeFactor(this.__wbg_ptr);\n  }\n  setNormalNudgeFactor(I2) {\n    A.rawkinematiccharactercontroller_setNormalNudgeFactor(this.__wbg_ptr, I2);\n  }\n  offset() {\n    return A.rawintegrationparameters_dt(this.__wbg_ptr);\n  }\n  setOffset(I2) {\n    A.rawkinematiccharactercontroller_setOffset(this.__wbg_ptr, I2);\n  }\n  slideEnabled() {\n    return 0 !== A.rawkinematiccharactercontroller_slideEnabled(this.__wbg_ptr);\n  }\n  setSlideEnabled(I2) {\n    A.rawkinematiccharactercontroller_setSlideEnabled(this.__wbg_ptr, I2);\n  }\n  autostepMaxHeight() {\n    try {\n      const C2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawkinematiccharactercontroller_autostepMaxHeight(C2, this.__wbg_ptr);\n      var I2 = S()[C2 / 4 + 0], g2 = U()[C2 / 4 + 1];\n      return 0 === I2 ? void 0 : g2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  autostepMinWidth() {\n    try {\n      const C2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawkinematiccharactercontroller_autostepMinWidth(C2, this.__wbg_ptr);\n      var I2 = S()[C2 / 4 + 0], g2 = U()[C2 / 4 + 1];\n      return 0 === I2 ? void 0 : g2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  autostepIncludesDynamicBodies() {\n    const I2 = A.rawkinematiccharactercontroller_autostepIncludesDynamicBodies(this.__wbg_ptr);\n    return 16777215 === I2 ? void 0 : 0 !== I2;\n  }\n  autostepEnabled() {\n    return 0 !== A.rawkinematiccharactercontroller_autostepEnabled(this.__wbg_ptr);\n  }\n  enableAutostep(I2, g2, C2) {\n    A.rawkinematiccharactercontroller_enableAutostep(this.__wbg_ptr, I2, g2, C2);\n  }\n  disableAutostep() {\n    A.rawkinematiccharactercontroller_disableAutostep(this.__wbg_ptr);\n  }\n  maxSlopeClimbAngle() {\n    return A.rawkinematiccharactercontroller_maxSlopeClimbAngle(this.__wbg_ptr);\n  }\n  setMaxSlopeClimbAngle(I2) {\n    A.rawkinematiccharactercontroller_setMaxSlopeClimbAngle(this.__wbg_ptr, I2);\n  }\n  minSlopeSlideAngle() {\n    return A.rawkinematiccharactercontroller_minSlopeSlideAngle(this.__wbg_ptr);\n  }\n  setMinSlopeSlideAngle(I2) {\n    A.rawkinematiccharactercontroller_setMinSlopeSlideAngle(this.__wbg_ptr, I2);\n  }\n  snapToGroundDistance() {\n    try {\n      const C2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawkinematiccharactercontroller_snapToGroundDistance(C2, this.__wbg_ptr);\n      var I2 = S()[C2 / 4 + 0], g2 = U()[C2 / 4 + 1];\n      return 0 === I2 ? void 0 : g2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n  enableSnapToGround(I2) {\n    A.rawkinematiccharactercontroller_enableSnapToGround(this.__wbg_ptr, I2);\n  }\n  disableSnapToGround() {\n    A.rawkinematiccharactercontroller_disableSnapToGround(this.__wbg_ptr);\n  }\n  snapToGroundEnabled() {\n    return 0 !== A.rawkinematiccharactercontroller_snapToGroundEnabled(this.__wbg_ptr);\n  }\n  computeColliderMovement(g2, C2, B2, Q2, i2, D2, o2, S2, w2, G2, k2) {\n    try {\n      K(C2, lA), K(B2, d), K(Q2, MA), K(D2, xA), A.rawkinematiccharactercontroller_computeColliderMovement(this.__wbg_ptr, g2, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2, D2.__wbg_ptr, o2, !E(S2), E(S2) ? 0 : S2, w2, !E(G2), E(G2) ? 0 : G2, y(k2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  computedMovement() {\n    const I2 = A.rawkinematiccharactercontroller_computedMovement(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  computedGrounded() {\n    return 0 !== A.rawkinematiccharactercontroller_computedGrounded(this.__wbg_ptr);\n  }\n  numComputedCollisions() {\n    return A.rawkinematiccharactercontroller_numComputedCollisions(this.__wbg_ptr) >>> 0;\n  }\n  computedCollision(I2, g2) {\n    K(g2, r);\n    return 0 !== A.rawkinematiccharactercontroller_computedCollision(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n}\nconst oA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawmultibodyjointset_free(I2 >>> 0));\nclass SA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(SA.prototype);\n    return I2.__wbg_ptr = A2, oA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, oA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawmultibodyjointset_free(I2);\n  }\n  jointType(I2) {\n    return A.rawmultibodyjointset_jointType(this.__wbg_ptr, I2);\n  }\n  jointFrameX1(I2) {\n    const g2 = A.rawmultibodyjointset_jointFrameX1(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  jointFrameX2(I2) {\n    const g2 = A.rawmultibodyjointset_jointFrameX2(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  jointAnchor1(I2) {\n    const g2 = A.rawmultibodyjointset_jointAnchor1(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  jointAnchor2(I2) {\n    const g2 = A.rawmultibodyjointset_jointAnchor2(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  jointContactsEnabled(I2) {\n    return 0 !== A.rawmultibodyjointset_jointContactsEnabled(this.__wbg_ptr, I2);\n  }\n  jointSetContactsEnabled(I2, g2) {\n    A.rawmultibodyjointset_jointSetContactsEnabled(this.__wbg_ptr, I2, g2);\n  }\n  jointLimitsEnabled(I2, g2) {\n    return 0 !== A.rawmultibodyjointset_jointLimitsEnabled(this.__wbg_ptr, I2, g2);\n  }\n  jointLimitsMin(I2, g2) {\n    return A.rawmultibodyjointset_jointLimitsMin(this.__wbg_ptr, I2, g2);\n  }\n  jointLimitsMax(I2, g2) {\n    return A.rawmultibodyjointset_jointLimitsMax(this.__wbg_ptr, I2, g2);\n  }\n  constructor() {\n    const I2 = A.rawmultibodyjointset_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  createJoint(I2, g2, C2, B2) {\n    K(I2, AA);\n    return A.rawmultibodyjointset_createJoint(this.__wbg_ptr, I2.__wbg_ptr, g2, C2, B2);\n  }\n  remove(I2, g2) {\n    A.rawmultibodyjointset_remove(this.__wbg_ptr, I2, g2);\n  }\n  contains(I2) {\n    return 0 !== A.rawmultibodyjointset_contains(this.__wbg_ptr, I2);\n  }\n  forEachJointHandle(g2) {\n    try {\n      A.rawmultibodyjointset_forEachJointHandle(this.__wbg_ptr, y(g2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  forEachJointAttachedToRigidBody(g2, C2) {\n    try {\n      A.rawmultibodyjointset_forEachJointAttachedToRigidBody(this.__wbg_ptr, g2, y(C2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n}\nconst wA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawnarrowphase_free(I2 >>> 0));\nclass GA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(GA.prototype);\n    return I2.__wbg_ptr = A2, wA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, wA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawnarrowphase_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawnarrowphase_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  contact_pairs_with(I2, g2) {\n    A.rawnarrowphase_contact_pairs_with(this.__wbg_ptr, I2, C(g2));\n  }\n  contact_pair(I2, g2) {\n    const C2 = A.rawnarrowphase_contact_pair(this.__wbg_ptr, I2, g2);\n    return 0 === C2 ? void 0 : j.__wrap(C2);\n  }\n  intersection_pairs_with(I2, g2) {\n    A.rawnarrowphase_intersection_pairs_with(this.__wbg_ptr, I2, C(g2));\n  }\n  intersection_pair(I2, g2) {\n    return 0 !== A.rawnarrowphase_intersection_pair(this.__wbg_ptr, I2, g2);\n  }\n}\nconst kA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawphysicspipeline_free(I2 >>> 0));\nclass KA {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, kA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawphysicspipeline_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawphysicspipeline_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  step(I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2) {\n    K(I2, xA), K(g2, BA), K(C2, EA), K(B2, H), K(Q2, GA), K(E2, lA), K(i2, d), K(D2, gA), K(o2, SA), K(S2, p), A.rawphysicspipeline_step(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, E2.__wbg_ptr, i2.__wbg_ptr, D2.__wbg_ptr, o2.__wbg_ptr, S2.__wbg_ptr);\n  }\n  stepWithEvents(I2, g2, B2, Q2, E2, i2, D2, o2, S2, w2, G2, k2, J2, U2) {\n    K(I2, xA), K(g2, BA), K(B2, EA), K(Q2, H), K(E2, GA), K(i2, lA), K(D2, d), K(o2, gA), K(S2, SA), K(w2, p), K(G2, _), A.rawphysicspipeline_stepWithEvents(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, E2.__wbg_ptr, i2.__wbg_ptr, D2.__wbg_ptr, o2.__wbg_ptr, S2.__wbg_ptr, w2.__wbg_ptr, G2.__wbg_ptr, C(k2), C(J2), C(U2));\n  }\n}\nconst JA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawpointcolliderprojection_free(I2 >>> 0));\nclass UA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(UA.prototype);\n    return I2.__wbg_ptr = A2, JA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, JA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawpointcolliderprojection_free(I2);\n  }\n  colliderHandle() {\n    return A.rawpointcolliderprojection_colliderHandle(this.__wbg_ptr);\n  }\n  point() {\n    const I2 = A.rawpointcolliderprojection_point(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  isInside() {\n    return 0 !== A.rawpointcolliderprojection_isInside(this.__wbg_ptr);\n  }\n  featureType() {\n    return A.rawpointcolliderprojection_featureType(this.__wbg_ptr);\n  }\n  featureId() {\n    try {\n      const C2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawpointcolliderprojection_featureId(C2, this.__wbg_ptr);\n      var I2 = S()[C2 / 4 + 0], g2 = S()[C2 / 4 + 1];\n      return 0 === I2 ? void 0 : g2 >>> 0;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n}\nconst hA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawpointprojection_free(I2 >>> 0));\nclass yA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(yA.prototype);\n    return I2.__wbg_ptr = A2, hA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, hA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawpointprojection_free(I2);\n  }\n  point() {\n    const I2 = A.rawpointprojection_point(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  isInside() {\n    return 0 !== A.rawpointprojection_isInside(this.__wbg_ptr);\n  }\n}\nconst NA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawquerypipeline_free(I2 >>> 0));\nclass MA {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, NA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawquerypipeline_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawquerypipeline_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  update(I2) {\n    K(I2, d), A.rawquerypipeline_update(this.__wbg_ptr, I2.__wbg_ptr);\n  }\n  castRay(g2, C2, B2, Q2, i2, D2, o2, S2, w2, G2, k2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA), K(Q2, xA);\n      const J2 = A.rawquerypipeline_castRay(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2, D2, o2, !E(S2), E(S2) ? 0 : S2, !E(w2), E(w2) ? 0 : w2, !E(G2), E(G2) ? 0 : G2, y(k2));\n      return 0 === J2 ? void 0 : aA.__wrap(J2);\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  castRayAndGetNormal(g2, C2, B2, Q2, i2, D2, o2, S2, w2, G2, k2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA), K(Q2, xA);\n      const J2 = A.rawquerypipeline_castRayAndGetNormal(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2, D2, o2, !E(S2), E(S2) ? 0 : S2, !E(w2), E(w2) ? 0 : w2, !E(G2), E(G2) ? 0 : G2, y(k2));\n      return 0 === J2 ? void 0 : RA.__wrap(J2);\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  intersectionsWithRay(g2, C2, B2, Q2, i2, D2, o2, S2, w2, G2, k2, J2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA), K(Q2, xA), A.rawquerypipeline_intersectionsWithRay(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2, D2, y(o2), S2, !E(w2), E(w2) ? 0 : w2, !E(G2), E(G2) ? 0 : G2, !E(k2), E(k2) ? 0 : k2, y(J2));\n    } finally {\n      I[h++] = void 0, I[h++] = void 0;\n    }\n  }\n  intersectionWithShape(g2, C2, B2, Q2, i2, o2, w2, G2, k2, J2) {\n    try {\n      const M2 = A.__wbindgen_add_to_stack_pointer(-16);\n      K(g2, lA), K(C2, d), K(B2, xA), K(Q2, HA), K(i2, dA), A.rawquerypipeline_intersectionWithShape(M2, this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2.__wbg_ptr, o2, !E(w2), E(w2) ? 0 : w2, !E(G2), E(G2) ? 0 : G2, !E(k2), E(k2) ? 0 : k2, y(J2));\n      var U2 = S()[M2 / 4 + 0], N2 = D()[M2 / 8 + 1];\n      return 0 === U2 ? void 0 : N2;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16), I[h++] = void 0;\n    }\n  }\n  projectPoint(g2, C2, B2, Q2, i2, D2, o2, S2, w2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA);\n      const G2 = A.rawquerypipeline_projectPoint(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2, i2, !E(D2), E(D2) ? 0 : D2, !E(o2), E(o2) ? 0 : o2, !E(S2), E(S2) ? 0 : S2, y(w2));\n      return 0 === G2 ? void 0 : UA.__wrap(G2);\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  projectPointAndGetFeature(g2, C2, B2, Q2, i2, D2, o2, S2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA);\n      const w2 = A.rawquerypipeline_projectPointAndGetFeature(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2, !E(i2), E(i2) ? 0 : i2, !E(D2), E(D2) ? 0 : D2, !E(o2), E(o2) ? 0 : o2, y(S2));\n      return 0 === w2 ? void 0 : UA.__wrap(w2);\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  intersectionsWithPoint(g2, C2, B2, Q2, i2, D2, o2, S2, w2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA), A.rawquerypipeline_intersectionsWithPoint(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, y(Q2), i2, !E(D2), E(D2) ? 0 : D2, !E(o2), E(o2) ? 0 : o2, !E(S2), E(S2) ? 0 : S2, y(w2));\n    } finally {\n      I[h++] = void 0, I[h++] = void 0;\n    }\n  }\n  castShape(g2, C2, B2, Q2, i2, D2, o2, S2, w2, G2, k2, J2, U2, N2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA), K(Q2, HA), K(i2, xA), K(D2, dA);\n      const M2 = A.rawquerypipeline_castShape(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2.__wbg_ptr, D2.__wbg_ptr, o2, S2, w2, G2, !E(k2), E(k2) ? 0 : k2, !E(J2), E(J2) ? 0 : J2, !E(U2), E(U2) ? 0 : U2, y(N2));\n      return 0 === M2 ? void 0 : O.__wrap(M2);\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  intersectionsWithShape(g2, C2, B2, Q2, i2, D2, o2, S2, w2, G2, k2) {\n    try {\n      K(g2, lA), K(C2, d), K(B2, xA), K(Q2, HA), K(i2, dA), A.rawquerypipeline_intersectionsWithShape(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, i2.__wbg_ptr, y(D2), o2, !E(S2), E(S2) ? 0 : S2, !E(w2), E(w2) ? 0 : w2, !E(G2), E(G2) ? 0 : G2, y(k2));\n    } finally {\n      I[h++] = void 0, I[h++] = void 0;\n    }\n  }\n  collidersWithAabbIntersectingAabb(g2, C2, B2) {\n    try {\n      K(g2, xA), K(C2, xA), A.rawquerypipeline_collidersWithAabbIntersectingAabb(this.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, y(B2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n}\nconst FA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawraycolliderhit_free(I2 >>> 0));\nclass aA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(aA.prototype);\n    return I2.__wbg_ptr = A2, FA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, FA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawraycolliderhit_free(I2);\n  }\n  colliderHandle() {\n    return A.rawcharactercollision_handle(this.__wbg_ptr);\n  }\n  timeOfImpact() {\n    return A.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr);\n  }\n}\nconst sA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawraycolliderintersection_free(I2 >>> 0));\nclass RA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(RA.prototype);\n    return I2.__wbg_ptr = A2, sA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, sA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawraycolliderintersection_free(I2);\n  }\n  colliderHandle() {\n    return A.rawpointcolliderprojection_colliderHandle(this.__wbg_ptr);\n  }\n  normal() {\n    const I2 = A.rawcollidershapecasthit_witness1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  time_of_impact() {\n    return A.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr);\n  }\n  featureType() {\n    return A.rawpointcolliderprojection_featureType(this.__wbg_ptr);\n  }\n  featureId() {\n    try {\n      const C2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawpointcolliderprojection_featureId(C2, this.__wbg_ptr);\n      var I2 = S()[C2 / 4 + 0], g2 = S()[C2 / 4 + 1];\n      return 0 === I2 ? void 0 : g2 >>> 0;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n}\nconst cA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawrayintersection_free(I2 >>> 0));\nclass qA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(qA.prototype);\n    return I2.__wbg_ptr = A2, cA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, cA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawrayintersection_free(I2);\n  }\n  normal() {\n    const I2 = A.rawcollidershapecasthit_witness1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  time_of_impact() {\n    return A.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr);\n  }\n  featureType() {\n    return A.rawpointcolliderprojection_featureType(this.__wbg_ptr);\n  }\n  featureId() {\n    try {\n      const C2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.rawpointcolliderprojection_featureId(C2, this.__wbg_ptr);\n      var I2 = S()[C2 / 4 + 0], g2 = S()[C2 / 4 + 1];\n      return 0 === I2 ? void 0 : g2 >>> 0;\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16);\n    }\n  }\n}\nconst YA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawrigidbodyset_free(I2 >>> 0));\nclass lA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(lA.prototype);\n    return I2.__wbg_ptr = A2, YA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, YA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawrigidbodyset_free(I2);\n  }\n  rbTranslation(I2) {\n    const g2 = A.rawrigidbodyset_rbTranslation(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbRotation(I2) {\n    const g2 = A.rawrigidbodyset_rbRotation(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  rbSleep(I2) {\n    A.rawrigidbodyset_rbSleep(this.__wbg_ptr, I2);\n  }\n  rbIsSleeping(I2) {\n    return 0 !== A.rawrigidbodyset_rbIsSleeping(this.__wbg_ptr, I2);\n  }\n  rbIsMoving(I2) {\n    return 0 !== A.rawrigidbodyset_rbIsMoving(this.__wbg_ptr, I2);\n  }\n  rbNextTranslation(I2) {\n    const g2 = A.rawrigidbodyset_rbNextTranslation(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbNextRotation(I2) {\n    const g2 = A.rawrigidbodyset_rbNextRotation(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  rbSetTranslation(I2, g2, C2, B2, Q2) {\n    A.rawrigidbodyset_rbSetTranslation(this.__wbg_ptr, I2, g2, C2, B2, Q2);\n  }\n  rbSetRotation(I2, g2, C2, B2, Q2, E2) {\n    A.rawrigidbodyset_rbSetRotation(this.__wbg_ptr, I2, g2, C2, B2, Q2, E2);\n  }\n  rbSetLinvel(I2, g2, C2) {\n    K(g2, xA), A.rawrigidbodyset_rbSetLinvel(this.__wbg_ptr, I2, g2.__wbg_ptr, C2);\n  }\n  rbSetAngvel(I2, g2, C2) {\n    K(g2, xA), A.rawrigidbodyset_rbSetAngvel(this.__wbg_ptr, I2, g2.__wbg_ptr, C2);\n  }\n  rbSetNextKinematicTranslation(I2, g2, C2, B2) {\n    A.rawrigidbodyset_rbSetNextKinematicTranslation(this.__wbg_ptr, I2, g2, C2, B2);\n  }\n  rbSetNextKinematicRotation(I2, g2, C2, B2, Q2) {\n    A.rawrigidbodyset_rbSetNextKinematicRotation(this.__wbg_ptr, I2, g2, C2, B2, Q2);\n  }\n  rbRecomputeMassPropertiesFromColliders(I2, g2) {\n    K(g2, d), A.rawrigidbodyset_rbRecomputeMassPropertiesFromColliders(this.__wbg_ptr, I2, g2.__wbg_ptr);\n  }\n  rbSetAdditionalMass(I2, g2, C2) {\n    A.rawrigidbodyset_rbSetAdditionalMass(this.__wbg_ptr, I2, g2, C2);\n  }\n  rbSetAdditionalMassProperties(I2, g2, C2, B2, Q2, E2) {\n    K(C2, xA), K(B2, xA), K(Q2, HA), A.rawrigidbodyset_rbSetAdditionalMassProperties(this.__wbg_ptr, I2, g2, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, E2);\n  }\n  rbLinvel(I2) {\n    const g2 = A.rawrigidbodyset_rbLinvel(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbAngvel(I2) {\n    const g2 = A.rawrigidbodyset_rbAngvel(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbLockTranslations(I2, g2, C2) {\n    A.rawrigidbodyset_rbLockTranslations(this.__wbg_ptr, I2, g2, C2);\n  }\n  rbSetEnabledTranslations(I2, g2, C2, B2, Q2) {\n    A.rawrigidbodyset_rbSetEnabledTranslations(this.__wbg_ptr, I2, g2, C2, B2, Q2);\n  }\n  rbLockRotations(I2, g2, C2) {\n    A.rawrigidbodyset_rbLockRotations(this.__wbg_ptr, I2, g2, C2);\n  }\n  rbSetEnabledRotations(I2, g2, C2, B2, Q2) {\n    A.rawrigidbodyset_rbSetEnabledRotations(this.__wbg_ptr, I2, g2, C2, B2, Q2);\n  }\n  rbDominanceGroup(I2) {\n    return A.rawrigidbodyset_rbDominanceGroup(this.__wbg_ptr, I2);\n  }\n  rbSetDominanceGroup(I2, g2) {\n    A.rawrigidbodyset_rbSetDominanceGroup(this.__wbg_ptr, I2, g2);\n  }\n  rbEnableCcd(I2, g2) {\n    A.rawrigidbodyset_rbEnableCcd(this.__wbg_ptr, I2, g2);\n  }\n  rbSetSoftCcdPrediction(I2, g2) {\n    A.rawrigidbodyset_rbSetSoftCcdPrediction(this.__wbg_ptr, I2, g2);\n  }\n  rbMass(I2) {\n    return A.rawrigidbodyset_rbMass(this.__wbg_ptr, I2);\n  }\n  rbInvMass(I2) {\n    return A.rawrigidbodyset_rbInvMass(this.__wbg_ptr, I2);\n  }\n  rbEffectiveInvMass(I2) {\n    const g2 = A.rawrigidbodyset_rbEffectiveInvMass(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbLocalCom(I2) {\n    const g2 = A.rawrigidbodyset_rbLocalCom(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbWorldCom(I2) {\n    const g2 = A.rawrigidbodyset_rbWorldCom(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbInvPrincipalInertiaSqrt(I2) {\n    const g2 = A.rawrigidbodyset_rbInvPrincipalInertiaSqrt(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbPrincipalInertiaLocalFrame(I2) {\n    const g2 = A.rawrigidbodyset_rbPrincipalInertiaLocalFrame(this.__wbg_ptr, I2);\n    return HA.__wrap(g2);\n  }\n  rbPrincipalInertia(I2) {\n    const g2 = A.rawrigidbodyset_rbPrincipalInertia(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbEffectiveWorldInvInertiaSqrt(I2) {\n    const g2 = A.rawrigidbodyset_rbEffectiveWorldInvInertiaSqrt(this.__wbg_ptr, I2);\n    return pA.__wrap(g2);\n  }\n  rbEffectiveAngularInertia(I2) {\n    const g2 = A.rawrigidbodyset_rbEffectiveAngularInertia(this.__wbg_ptr, I2);\n    return pA.__wrap(g2);\n  }\n  rbWakeUp(I2) {\n    A.rawrigidbodyset_rbWakeUp(this.__wbg_ptr, I2);\n  }\n  rbIsCcdEnabled(I2) {\n    return 0 !== A.rawrigidbodyset_rbIsCcdEnabled(this.__wbg_ptr, I2);\n  }\n  rbSoftCcdPrediction(I2) {\n    return A.rawrigidbodyset_rbSoftCcdPrediction(this.__wbg_ptr, I2);\n  }\n  rbNumColliders(I2) {\n    return A.rawrigidbodyset_rbNumColliders(this.__wbg_ptr, I2) >>> 0;\n  }\n  rbCollider(I2, g2) {\n    return A.rawrigidbodyset_rbCollider(this.__wbg_ptr, I2, g2);\n  }\n  rbBodyType(I2) {\n    return A.rawrigidbodyset_rbBodyType(this.__wbg_ptr, I2);\n  }\n  rbSetBodyType(I2, g2, C2) {\n    A.rawrigidbodyset_rbSetBodyType(this.__wbg_ptr, I2, g2, C2);\n  }\n  rbIsFixed(I2) {\n    return 0 !== A.rawrigidbodyset_rbIsFixed(this.__wbg_ptr, I2);\n  }\n  rbIsKinematic(I2) {\n    return 0 !== A.rawrigidbodyset_rbIsKinematic(this.__wbg_ptr, I2);\n  }\n  rbIsDynamic(I2) {\n    return 0 !== A.rawrigidbodyset_rbIsDynamic(this.__wbg_ptr, I2);\n  }\n  rbLinearDamping(I2) {\n    return A.rawrigidbodyset_rbLinearDamping(this.__wbg_ptr, I2);\n  }\n  rbAngularDamping(I2) {\n    return A.rawrigidbodyset_rbAngularDamping(this.__wbg_ptr, I2);\n  }\n  rbSetLinearDamping(I2, g2) {\n    A.rawrigidbodyset_rbSetLinearDamping(this.__wbg_ptr, I2, g2);\n  }\n  rbSetAngularDamping(I2, g2) {\n    A.rawrigidbodyset_rbSetAngularDamping(this.__wbg_ptr, I2, g2);\n  }\n  rbSetEnabled(I2, g2) {\n    A.rawrigidbodyset_rbSetEnabled(this.__wbg_ptr, I2, g2);\n  }\n  rbIsEnabled(I2) {\n    return 0 !== A.rawrigidbodyset_rbIsEnabled(this.__wbg_ptr, I2);\n  }\n  rbGravityScale(I2) {\n    return A.rawrigidbodyset_rbGravityScale(this.__wbg_ptr, I2);\n  }\n  rbSetGravityScale(I2, g2, C2) {\n    A.rawrigidbodyset_rbSetGravityScale(this.__wbg_ptr, I2, g2, C2);\n  }\n  rbResetForces(I2, g2) {\n    A.rawrigidbodyset_rbResetForces(this.__wbg_ptr, I2, g2);\n  }\n  rbResetTorques(I2, g2) {\n    A.rawrigidbodyset_rbResetTorques(this.__wbg_ptr, I2, g2);\n  }\n  rbAddForce(I2, g2, C2) {\n    K(g2, xA), A.rawrigidbodyset_rbAddForce(this.__wbg_ptr, I2, g2.__wbg_ptr, C2);\n  }\n  rbApplyImpulse(I2, g2, C2) {\n    K(g2, xA), A.rawrigidbodyset_rbApplyImpulse(this.__wbg_ptr, I2, g2.__wbg_ptr, C2);\n  }\n  rbAddTorque(I2, g2, C2) {\n    K(g2, xA), A.rawrigidbodyset_rbAddTorque(this.__wbg_ptr, I2, g2.__wbg_ptr, C2);\n  }\n  rbApplyTorqueImpulse(I2, g2, C2) {\n    K(g2, xA), A.rawrigidbodyset_rbApplyTorqueImpulse(this.__wbg_ptr, I2, g2.__wbg_ptr, C2);\n  }\n  rbAddForceAtPoint(I2, g2, C2, B2) {\n    K(g2, xA), K(C2, xA), A.rawrigidbodyset_rbAddForceAtPoint(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2);\n  }\n  rbApplyImpulseAtPoint(I2, g2, C2, B2) {\n    K(g2, xA), K(C2, xA), A.rawrigidbodyset_rbApplyImpulseAtPoint(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2);\n  }\n  rbAdditionalSolverIterations(I2) {\n    return A.rawrigidbodyset_rbAdditionalSolverIterations(this.__wbg_ptr, I2) >>> 0;\n  }\n  rbSetAdditionalSolverIterations(I2, g2) {\n    A.rawrigidbodyset_rbSetAdditionalSolverIterations(this.__wbg_ptr, I2, g2);\n  }\n  rbUserData(I2) {\n    return A.rawrigidbodyset_rbUserData(this.__wbg_ptr, I2) >>> 0;\n  }\n  rbSetUserData(I2, g2) {\n    A.rawrigidbodyset_rbSetUserData(this.__wbg_ptr, I2, g2);\n  }\n  rbUserForce(I2) {\n    const g2 = A.rawrigidbodyset_rbUserForce(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  rbUserTorque(I2) {\n    const g2 = A.rawrigidbodyset_rbUserTorque(this.__wbg_ptr, I2);\n    return xA.__wrap(g2);\n  }\n  constructor() {\n    const I2 = A.rawrigidbodyset_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  createRigidBody(I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2, w2, G2, k2, J2, U2, h2, y2, N2, M2, F2, a2, s2, R2, c2, q2, Y2) {\n    K(g2, xA), K(C2, HA), K(i2, xA), K(D2, xA), K(o2, xA), K(S2, xA), K(w2, HA);\n    return A.rawrigidbodyset_createRigidBody(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2, Q2, E2, i2.__wbg_ptr, D2.__wbg_ptr, o2.__wbg_ptr, S2.__wbg_ptr, w2.__wbg_ptr, G2, k2, J2, U2, h2, y2, N2, M2, F2, a2, s2, R2, c2, q2, Y2);\n  }\n  remove(I2, g2, C2, B2, Q2) {\n    K(g2, EA), K(C2, d), K(B2, gA), K(Q2, SA), A.rawrigidbodyset_remove(this.__wbg_ptr, I2, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr);\n  }\n  len() {\n    return A.rawcolliderset_len(this.__wbg_ptr) >>> 0;\n  }\n  contains(I2) {\n    return 0 !== A.rawrigidbodyset_contains(this.__wbg_ptr, I2);\n  }\n  forEachRigidBodyHandle(g2) {\n    try {\n      A.rawrigidbodyset_forEachRigidBodyHandle(this.__wbg_ptr, y(g2));\n    } finally {\n      I[h++] = void 0;\n    }\n  }\n  propagateModifiedBodyPositionsToColliders(I2) {\n    K(I2, d), A.rawrigidbodyset_propagateModifiedBodyPositionsToColliders(this.__wbg_ptr, I2.__wbg_ptr);\n  }\n}\nconst LA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawrotation_free(I2 >>> 0));\nclass HA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(HA.prototype);\n    return I2.__wbg_ptr = A2, LA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, LA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawrotation_free(I2);\n  }\n  constructor(I2, g2, C2, B2) {\n    const Q2 = A.rawrotation_new(I2, g2, C2, B2);\n    return this.__wbg_ptr = Q2 >>> 0, this;\n  }\n  static identity() {\n    const I2 = A.rawrotation_identity();\n    return HA.__wrap(I2);\n  }\n  get x() {\n    return A.rawrotation_x(this.__wbg_ptr);\n  }\n  get y() {\n    return A.rawintegrationparameters_dt(this.__wbg_ptr);\n  }\n  get z() {\n    return A.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr);\n  }\n  get w() {\n    return A.rawrotation_w(this.__wbg_ptr);\n  }\n}\nconst tA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawsdpmatrix3_free(I2 >>> 0));\nclass pA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(pA.prototype);\n    return I2.__wbg_ptr = A2, tA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, tA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawsdpmatrix3_free(I2);\n  }\n  elements() {\n    return Q(A.rawsdpmatrix3_elements(this.__wbg_ptr));\n  }\n}\nconst eA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawserializationpipeline_free(I2 >>> 0));\nclass rA {\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, eA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawserializationpipeline_free(I2);\n  }\n  constructor() {\n    const I2 = A.rawserializationpipeline_new();\n    return this.__wbg_ptr = I2 >>> 0, this;\n  }\n  serializeAll(I2, g2, C2, B2, E2, i2, D2, o2, S2) {\n    K(I2, xA), K(g2, BA), K(C2, EA), K(B2, H), K(E2, GA), K(i2, lA), K(D2, d), K(o2, gA), K(S2, SA);\n    return Q(A.rawserializationpipeline_serializeAll(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, E2.__wbg_ptr, i2.__wbg_ptr, D2.__wbg_ptr, o2.__wbg_ptr, S2.__wbg_ptr));\n  }\n  deserializeAll(I2) {\n    const g2 = A.rawserializationpipeline_deserializeAll(this.__wbg_ptr, C(I2));\n    return 0 === g2 ? void 0 : P.__wrap(g2);\n  }\n}\nconst nA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawshape_free(I2 >>> 0));\nclass dA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(dA.prototype);\n    return I2.__wbg_ptr = A2, nA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, nA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawshape_free(I2);\n  }\n  static cuboid(I2, g2, C2) {\n    const B2 = A.rawshape_cuboid(I2, g2, C2);\n    return dA.__wrap(B2);\n  }\n  static roundCuboid(I2, g2, C2, B2) {\n    const Q2 = A.rawshape_roundCuboid(I2, g2, C2, B2);\n    return dA.__wrap(Q2);\n  }\n  static ball(I2) {\n    const g2 = A.rawshape_ball(I2);\n    return dA.__wrap(g2);\n  }\n  static halfspace(I2) {\n    K(I2, xA);\n    const g2 = A.rawshape_halfspace(I2.__wbg_ptr);\n    return dA.__wrap(g2);\n  }\n  static capsule(I2, g2) {\n    const C2 = A.rawshape_capsule(I2, g2);\n    return dA.__wrap(C2);\n  }\n  static cylinder(I2, g2) {\n    const C2 = A.rawshape_cylinder(I2, g2);\n    return dA.__wrap(C2);\n  }\n  static roundCylinder(I2, g2, C2) {\n    const B2 = A.rawshape_roundCylinder(I2, g2, C2);\n    return dA.__wrap(B2);\n  }\n  static cone(I2, g2) {\n    const C2 = A.rawshape_cone(I2, g2);\n    return dA.__wrap(C2);\n  }\n  static roundCone(I2, g2, C2) {\n    const B2 = A.rawshape_roundCone(I2, g2, C2);\n    return dA.__wrap(B2);\n  }\n  static polyline(I2, g2) {\n    const C2 = s(I2, A.__wbindgen_malloc), B2 = a, Q2 = R(g2, A.__wbindgen_malloc), E2 = a, i2 = A.rawshape_polyline(C2, B2, Q2, E2);\n    return dA.__wrap(i2);\n  }\n  static trimesh(I2, g2, C2) {\n    const B2 = s(I2, A.__wbindgen_malloc), Q2 = a, E2 = R(g2, A.__wbindgen_malloc), i2 = a, D2 = A.rawshape_trimesh(B2, Q2, E2, i2, C2);\n    return dA.__wrap(D2);\n  }\n  static heightfield(I2, g2, C2, B2, Q2) {\n    const E2 = s(C2, A.__wbindgen_malloc), i2 = a;\n    K(B2, xA);\n    const D2 = A.rawshape_heightfield(I2, g2, E2, i2, B2.__wbg_ptr, Q2);\n    return dA.__wrap(D2);\n  }\n  static segment(I2, g2) {\n    K(I2, xA), K(g2, xA);\n    const C2 = A.rawshape_segment(I2.__wbg_ptr, g2.__wbg_ptr);\n    return dA.__wrap(C2);\n  }\n  static triangle(I2, g2, C2) {\n    K(I2, xA), K(g2, xA), K(C2, xA);\n    const B2 = A.rawshape_triangle(I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr);\n    return dA.__wrap(B2);\n  }\n  static roundTriangle(I2, g2, C2, B2) {\n    K(I2, xA), K(g2, xA), K(C2, xA);\n    const Q2 = A.rawshape_roundTriangle(I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2);\n    return dA.__wrap(Q2);\n  }\n  static convexHull(I2) {\n    const g2 = s(I2, A.__wbindgen_malloc), C2 = a, B2 = A.rawshape_convexHull(g2, C2);\n    return 0 === B2 ? void 0 : dA.__wrap(B2);\n  }\n  static roundConvexHull(I2, g2) {\n    const C2 = s(I2, A.__wbindgen_malloc), B2 = a, Q2 = A.rawshape_roundConvexHull(C2, B2, g2);\n    return 0 === Q2 ? void 0 : dA.__wrap(Q2);\n  }\n  static convexMesh(I2, g2) {\n    const C2 = s(I2, A.__wbindgen_malloc), B2 = a, Q2 = R(g2, A.__wbindgen_malloc), E2 = a, i2 = A.rawshape_convexMesh(C2, B2, Q2, E2);\n    return 0 === i2 ? void 0 : dA.__wrap(i2);\n  }\n  static roundConvexMesh(I2, g2, C2) {\n    const B2 = s(I2, A.__wbindgen_malloc), Q2 = a, E2 = R(g2, A.__wbindgen_malloc), i2 = a, D2 = A.rawshape_roundConvexMesh(B2, Q2, E2, i2, C2);\n    return 0 === D2 ? void 0 : dA.__wrap(D2);\n  }\n  castShape(I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2) {\n    K(I2, xA), K(g2, HA), K(C2, xA), K(B2, dA), K(Q2, xA), K(E2, HA), K(i2, xA);\n    const w2 = A.rawshape_castShape(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, E2.__wbg_ptr, i2.__wbg_ptr, D2, o2, S2);\n    return 0 === w2 ? void 0 : OA.__wrap(w2);\n  }\n  intersectsShape(I2, g2, C2, B2, Q2) {\n    K(I2, xA), K(g2, HA), K(C2, dA), K(B2, xA), K(Q2, HA);\n    return 0 !== A.rawshape_intersectsShape(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr);\n  }\n  contactShape(I2, g2, C2, B2, Q2, E2) {\n    K(I2, xA), K(g2, HA), K(C2, dA), K(B2, xA), K(Q2, HA);\n    const i2 = A.rawshape_contactShape(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2.__wbg_ptr, E2);\n    return 0 === i2 ? void 0 : bA.__wrap(i2);\n  }\n  containsPoint(I2, g2, C2) {\n    K(I2, xA), K(g2, HA), K(C2, xA);\n    return 0 !== A.rawshape_containsPoint(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr);\n  }\n  projectPoint(I2, g2, C2, B2) {\n    K(I2, xA), K(g2, HA), K(C2, xA);\n    const Q2 = A.rawshape_projectPoint(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2);\n    return yA.__wrap(Q2);\n  }\n  intersectsRay(I2, g2, C2, B2, Q2) {\n    K(I2, xA), K(g2, HA), K(C2, xA), K(B2, xA);\n    return 0 !== A.rawshape_intersectsRay(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2);\n  }\n  castRay(I2, g2, C2, B2, Q2, E2) {\n    K(I2, xA), K(g2, HA), K(C2, xA), K(B2, xA);\n    return A.rawshape_castRay(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2, E2);\n  }\n  castRayAndGetNormal(I2, g2, C2, B2, Q2, E2) {\n    K(I2, xA), K(g2, HA), K(C2, xA), K(B2, xA);\n    const i2 = A.rawshape_castRayAndGetNormal(this.__wbg_ptr, I2.__wbg_ptr, g2.__wbg_ptr, C2.__wbg_ptr, B2.__wbg_ptr, Q2, E2);\n    return 0 === i2 ? void 0 : qA.__wrap(i2);\n  }\n}\nconst TA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawshapecasthit_free(I2 >>> 0));\nclass OA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(OA.prototype);\n    return I2.__wbg_ptr = A2, TA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, TA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawshapecasthit_free(I2);\n  }\n  time_of_impact() {\n    return A.rawrotation_x(this.__wbg_ptr);\n  }\n  witness1() {\n    const I2 = A.rawshapecasthit_witness1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  witness2() {\n    const I2 = A.rawcontactforceevent_total_force(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  normal1() {\n    const I2 = A.rawshapecasthit_normal1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  normal2() {\n    const I2 = A.rawshapecasthit_normal2(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n}\nconst ZA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawshapecontact_free(I2 >>> 0));\nclass bA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(bA.prototype);\n    return I2.__wbg_ptr = A2, ZA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, ZA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawshapecontact_free(I2);\n  }\n  distance() {\n    return A.rawkinematiccharactercontroller_maxSlopeClimbAngle(this.__wbg_ptr);\n  }\n  point1() {\n    const I2 = A.rawpointprojection_point(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  point2() {\n    const I2 = A.rawcollidershapecasthit_witness1(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  normal1() {\n    const I2 = A.rawcollidershapecasthit_witness2(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  normal2() {\n    const I2 = A.rawcharactercollision_translationDeltaApplied(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n}\nconst WA = \"undefined\" == typeof FinalizationRegistry ? { register: () => {\n}, unregister: () => {\n} } : new FinalizationRegistry((I2) => A.__wbg_rawvector_free(I2 >>> 0));\nclass xA {\n  static __wrap(A2) {\n    A2 >>>= 0;\n    const I2 = Object.create(xA.prototype);\n    return I2.__wbg_ptr = A2, WA.register(I2, I2.__wbg_ptr, I2), I2;\n  }\n  __destroy_into_raw() {\n    const A2 = this.__wbg_ptr;\n    return this.__wbg_ptr = 0, WA.unregister(this), A2;\n  }\n  free() {\n    const I2 = this.__destroy_into_raw();\n    A.__wbg_rawvector_free(I2);\n  }\n  static zero() {\n    const I2 = A.rawvector_zero();\n    return xA.__wrap(I2);\n  }\n  constructor(I2, g2, C2) {\n    const B2 = A.rawvector_new(I2, g2, C2);\n    return this.__wbg_ptr = B2 >>> 0, this;\n  }\n  get x() {\n    return A.rawrotation_x(this.__wbg_ptr);\n  }\n  set x(I2) {\n    A.rawvector_set_x(this.__wbg_ptr, I2);\n  }\n  get y() {\n    return A.rawintegrationparameters_dt(this.__wbg_ptr);\n  }\n  set y(I2) {\n    A.rawintegrationparameters_set_dt(this.__wbg_ptr, I2);\n  }\n  get z() {\n    return A.rawcollidershapecasthit_time_of_impact(this.__wbg_ptr);\n  }\n  set z(I2) {\n    A.rawvector_set_z(this.__wbg_ptr, I2);\n  }\n  xyz() {\n    const I2 = A.rawvector_xyz(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  yxz() {\n    const I2 = A.rawvector_yxz(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  zxy() {\n    const I2 = A.rawvector_zxy(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  xzy() {\n    const I2 = A.rawvector_xzy(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  yzx() {\n    const I2 = A.rawvector_yzx(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n  zyx() {\n    const I2 = A.rawvector_zyx(this.__wbg_ptr);\n    return xA.__wrap(I2);\n  }\n}\nasync function mA(I2) {\n  if (void 0 !== A) return A;\n  void 0 === I2 && (I2 = new URL(\"rapier_wasm3d_bg.wasm\", \"<deleted>\"));\n  const g2 = function() {\n    const I3 = { wbg: {} };\n    return I3.wbg.__wbindgen_number_new = function(A2) {\n      return C(A2);\n    }, I3.wbg.__wbindgen_boolean_get = function(A2) {\n      const I4 = B(A2);\n      return \"boolean\" == typeof I4 ? I4 ? 1 : 0 : 2;\n    }, I3.wbg.__wbindgen_object_drop_ref = function(A2) {\n      Q(A2);\n    }, I3.wbg.__wbindgen_number_get = function(A2, I4) {\n      const g3 = B(I4), C2 = \"number\" == typeof g3 ? g3 : void 0;\n      D()[A2 / 8 + 1] = E(C2) ? 0 : C2, S()[A2 / 4 + 0] = !E(C2);\n    }, I3.wbg.__wbindgen_is_function = function(A2) {\n      return \"function\" == typeof B(A2);\n    }, I3.wbg.__wbg_rawraycolliderintersection_new = function(A2) {\n      return C(RA.__wrap(A2));\n    }, I3.wbg.__wbg_rawcontactforceevent_new = function(A2) {\n      return C(b.__wrap(A2));\n    }, I3.wbg.__wbg_call_b3ca7c6051f9bec1 = function() {\n      return c(function(A2, I4, g3) {\n        return C(B(A2).call(B(I4), B(g3)));\n      }, arguments);\n    }, I3.wbg.__wbg_call_8e7cb608789c2528 = function() {\n      return c(function(A2, I4, g3, Q2) {\n        return C(B(A2).call(B(I4), B(g3), B(Q2)));\n      }, arguments);\n    }, I3.wbg.__wbg_call_938992c832f74314 = function() {\n      return c(function(A2, I4, g3, Q2, E2) {\n        return C(B(A2).call(B(I4), B(g3), B(Q2), B(E2)));\n      }, arguments);\n    }, I3.wbg.__wbg_bind_4d857b598695205e = function(A2, I4, g3, Q2) {\n      return C(B(A2).bind(B(I4), B(g3), B(Q2)));\n    }, I3.wbg.__wbg_buffer_12d079cc21e14bdb = function(A2) {\n      return C(B(A2).buffer);\n    }, I3.wbg.__wbg_newwithbyteoffsetandlength_aa4a17c33a06e5cb = function(A2, I4, g3) {\n      return C(new Uint8Array(B(A2), I4 >>> 0, g3 >>> 0));\n    }, I3.wbg.__wbg_new_63b92bc8671ed464 = function(A2) {\n      return C(new Uint8Array(B(A2)));\n    }, I3.wbg.__wbg_set_a47bac70306a19a7 = function(A2, I4, g3) {\n      B(A2).set(B(I4), g3 >>> 0);\n    }, I3.wbg.__wbg_length_c20a40f15020d68a = function(A2) {\n      return B(A2).length;\n    }, I3.wbg.__wbg_newwithbyteoffsetandlength_4a659d079a1650e0 = function(A2, I4, g3) {\n      return C(new Float32Array(B(A2), I4 >>> 0, g3 >>> 0));\n    }, I3.wbg.__wbg_set_bd975934d1b1fddb = function(A2, I4, g3) {\n      B(A2).set(B(I4), g3 >>> 0);\n    }, I3.wbg.__wbg_length_d25bbcbc3367f684 = function(A2) {\n      return B(A2).length;\n    }, I3.wbg.__wbg_newwithlength_1e8b839a06de01c5 = function(A2) {\n      return C(new Float32Array(A2 >>> 0));\n    }, I3.wbg.__wbindgen_throw = function(A2, I4) {\n      throw new Error(k(A2, I4));\n    }, I3.wbg.__wbindgen_memory = function() {\n      return C(A.memory);\n    }, I3;\n  }();\n  (\"string\" == typeof I2 || \"function\" == typeof Request && I2 instanceof Request || \"function\" == typeof URL && I2 instanceof URL) && (I2 = fetch(I2));\n  const { instance: w2, module: K2 } = await async function(A2, I3) {\n    if (\"function\" == typeof Response && A2 instanceof Response) {\n      if (\"function\" == typeof WebAssembly.instantiateStreaming) try {\n        return await WebAssembly.instantiateStreaming(A2, I3);\n      } catch (I4) {\n        if (\"application/wasm\" == A2.headers.get(\"Content-Type\")) throw I4;\n        console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", I4);\n      }\n      const g3 = await A2.arrayBuffer();\n      return await WebAssembly.instantiate(g3, I3);\n    }\n    {\n      const g3 = await WebAssembly.instantiate(A2, I3);\n      return g3 instanceof WebAssembly.Instance ? { instance: g3, module: A2 } : g3;\n    }\n  }(await I2, g2);\n  return function(I3, g3) {\n    return A = I3.exports, mA.__wbindgen_wasm_module = g3, J = null, i = null, o = null, M = null, G = null, A;\n  }(w2, K2);\n}\nclass jA {\n  constructor(A2, I2, g2) {\n    this.x = A2, this.y = I2, this.z = g2;\n  }\n}\nclass fA {\n  static new(A2, I2, g2) {\n    return new jA(A2, I2, g2);\n  }\n  static intoRaw(A2) {\n    return new xA(A2.x, A2.y, A2.z);\n  }\n  static zeros() {\n    return fA.new(0, 0, 0);\n  }\n  static fromRaw(A2) {\n    if (!A2) return null;\n    let I2 = fA.new(A2.x, A2.y, A2.z);\n    return A2.free(), I2;\n  }\n  static copy(A2, I2) {\n    A2.x = I2.x, A2.y = I2.y, A2.z = I2.z;\n  }\n}\nclass VA {\n  constructor(A2, I2, g2, C2) {\n    this.x = A2, this.y = I2, this.z = g2, this.w = C2;\n  }\n}\nclass XA {\n  static identity() {\n    return new VA(0, 0, 0, 1);\n  }\n  static fromRaw(A2) {\n    if (!A2) return null;\n    let I2 = new VA(A2.x, A2.y, A2.z, A2.w);\n    return A2.free(), I2;\n  }\n  static intoRaw(A2) {\n    return new HA(A2.x, A2.y, A2.z, A2.w);\n  }\n  static copy(A2, I2) {\n    A2.x = I2.x, A2.y = I2.y, A2.z = I2.z, A2.w = I2.w;\n  }\n}\nclass PA {\n  constructor(A2) {\n    this.elements = A2;\n  }\n  get m11() {\n    return this.elements[0];\n  }\n  get m12() {\n    return this.elements[1];\n  }\n  get m21() {\n    return this.m12;\n  }\n  get m13() {\n    return this.elements[2];\n  }\n  get m31() {\n    return this.m13;\n  }\n  get m22() {\n    return this.elements[3];\n  }\n  get m23() {\n    return this.elements[4];\n  }\n  get m32() {\n    return this.m23;\n  }\n  get m33() {\n    return this.elements[5];\n  }\n}\nclass uA {\n  static fromRaw(A2) {\n    const I2 = new PA(A2.elements());\n    return A2.free(), I2;\n  }\n}\nvar vA, zA, _A, $A, AI, II, gI, CI, BI, QI, EI, iI, DI, oI, SI;\n!function(A2) {\n  A2[A2.Dynamic = 0] = \"Dynamic\", A2[A2.Fixed = 1] = \"Fixed\", A2[A2.KinematicPositionBased = 2] = \"KinematicPositionBased\", A2[A2.KinematicVelocityBased = 3] = \"KinematicVelocityBased\";\n}(vA || (vA = {}));\nclass wI {\n  constructor(A2, I2, g2) {\n    this.rawSet = A2, this.colliderSet = I2, this.handle = g2;\n  }\n  finalizeDeserialization(A2) {\n    this.colliderSet = A2;\n  }\n  isValid() {\n    return this.rawSet.contains(this.handle);\n  }\n  lockTranslations(A2, I2) {\n    return this.rawSet.rbLockTranslations(this.handle, A2, I2);\n  }\n  lockRotations(A2, I2) {\n    return this.rawSet.rbLockRotations(this.handle, A2, I2);\n  }\n  setEnabledTranslations(A2, I2, g2, C2) {\n    return this.rawSet.rbSetEnabledTranslations(this.handle, A2, I2, g2, C2);\n  }\n  restrictTranslations(A2, I2, g2, C2) {\n    this.setEnabledTranslations(A2, I2, g2, C2);\n  }\n  setEnabledRotations(A2, I2, g2, C2) {\n    return this.rawSet.rbSetEnabledRotations(this.handle, A2, I2, g2, C2);\n  }\n  restrictRotations(A2, I2, g2, C2) {\n    this.setEnabledRotations(A2, I2, g2, C2);\n  }\n  dominanceGroup() {\n    return this.rawSet.rbDominanceGroup(this.handle);\n  }\n  setDominanceGroup(A2) {\n    this.rawSet.rbSetDominanceGroup(this.handle, A2);\n  }\n  additionalSolverIterations() {\n    return this.rawSet.rbAdditionalSolverIterations(this.handle);\n  }\n  setAdditionalSolverIterations(A2) {\n    this.rawSet.rbSetAdditionalSolverIterations(this.handle, A2);\n  }\n  enableCcd(A2) {\n    this.rawSet.rbEnableCcd(this.handle, A2);\n  }\n  setSoftCcdPrediction(A2) {\n    this.rawSet.rbSetSoftCcdPrediction(this.handle, A2);\n  }\n  softCcdPrediction() {\n    return this.rawSet.rbSoftCcdPrediction(this.handle);\n  }\n  translation() {\n    let A2 = this.rawSet.rbTranslation(this.handle);\n    return fA.fromRaw(A2);\n  }\n  rotation() {\n    let A2 = this.rawSet.rbRotation(this.handle);\n    return XA.fromRaw(A2);\n  }\n  nextTranslation() {\n    let A2 = this.rawSet.rbNextTranslation(this.handle);\n    return fA.fromRaw(A2);\n  }\n  nextRotation() {\n    let A2 = this.rawSet.rbNextRotation(this.handle);\n    return XA.fromRaw(A2);\n  }\n  setTranslation(A2, I2) {\n    this.rawSet.rbSetTranslation(this.handle, A2.x, A2.y, A2.z, I2);\n  }\n  setLinvel(A2, I2) {\n    let g2 = fA.intoRaw(A2);\n    this.rawSet.rbSetLinvel(this.handle, g2, I2), g2.free();\n  }\n  gravityScale() {\n    return this.rawSet.rbGravityScale(this.handle);\n  }\n  setGravityScale(A2, I2) {\n    this.rawSet.rbSetGravityScale(this.handle, A2, I2);\n  }\n  setRotation(A2, I2) {\n    this.rawSet.rbSetRotation(this.handle, A2.x, A2.y, A2.z, A2.w, I2);\n  }\n  setAngvel(A2, I2) {\n    let g2 = fA.intoRaw(A2);\n    this.rawSet.rbSetAngvel(this.handle, g2, I2), g2.free();\n  }\n  setNextKinematicTranslation(A2) {\n    this.rawSet.rbSetNextKinematicTranslation(this.handle, A2.x, A2.y, A2.z);\n  }\n  setNextKinematicRotation(A2) {\n    this.rawSet.rbSetNextKinematicRotation(this.handle, A2.x, A2.y, A2.z, A2.w);\n  }\n  linvel() {\n    return fA.fromRaw(this.rawSet.rbLinvel(this.handle));\n  }\n  angvel() {\n    return fA.fromRaw(this.rawSet.rbAngvel(this.handle));\n  }\n  mass() {\n    return this.rawSet.rbMass(this.handle);\n  }\n  effectiveInvMass() {\n    return fA.fromRaw(this.rawSet.rbEffectiveInvMass(this.handle));\n  }\n  invMass() {\n    return this.rawSet.rbInvMass(this.handle);\n  }\n  localCom() {\n    return fA.fromRaw(this.rawSet.rbLocalCom(this.handle));\n  }\n  worldCom() {\n    return fA.fromRaw(this.rawSet.rbWorldCom(this.handle));\n  }\n  invPrincipalInertiaSqrt() {\n    return fA.fromRaw(this.rawSet.rbInvPrincipalInertiaSqrt(this.handle));\n  }\n  principalInertia() {\n    return fA.fromRaw(this.rawSet.rbPrincipalInertia(this.handle));\n  }\n  principalInertiaLocalFrame() {\n    return XA.fromRaw(this.rawSet.rbPrincipalInertiaLocalFrame(this.handle));\n  }\n  effectiveWorldInvInertiaSqrt() {\n    return uA.fromRaw(this.rawSet.rbEffectiveWorldInvInertiaSqrt(this.handle));\n  }\n  effectiveAngularInertia() {\n    return uA.fromRaw(this.rawSet.rbEffectiveAngularInertia(this.handle));\n  }\n  sleep() {\n    this.rawSet.rbSleep(this.handle);\n  }\n  wakeUp() {\n    this.rawSet.rbWakeUp(this.handle);\n  }\n  isCcdEnabled() {\n    return this.rawSet.rbIsCcdEnabled(this.handle);\n  }\n  numColliders() {\n    return this.rawSet.rbNumColliders(this.handle);\n  }\n  collider(A2) {\n    return this.colliderSet.get(this.rawSet.rbCollider(this.handle, A2));\n  }\n  setEnabled(A2) {\n    this.rawSet.rbSetEnabled(this.handle, A2);\n  }\n  isEnabled() {\n    return this.rawSet.rbIsEnabled(this.handle);\n  }\n  bodyType() {\n    return this.rawSet.rbBodyType(this.handle);\n  }\n  setBodyType(A2, I2) {\n    return this.rawSet.rbSetBodyType(this.handle, A2, I2);\n  }\n  isSleeping() {\n    return this.rawSet.rbIsSleeping(this.handle);\n  }\n  isMoving() {\n    return this.rawSet.rbIsMoving(this.handle);\n  }\n  isFixed() {\n    return this.rawSet.rbIsFixed(this.handle);\n  }\n  isKinematic() {\n    return this.rawSet.rbIsKinematic(this.handle);\n  }\n  isDynamic() {\n    return this.rawSet.rbIsDynamic(this.handle);\n  }\n  linearDamping() {\n    return this.rawSet.rbLinearDamping(this.handle);\n  }\n  angularDamping() {\n    return this.rawSet.rbAngularDamping(this.handle);\n  }\n  setLinearDamping(A2) {\n    this.rawSet.rbSetLinearDamping(this.handle, A2);\n  }\n  recomputeMassPropertiesFromColliders() {\n    this.rawSet.rbRecomputeMassPropertiesFromColliders(this.handle, this.colliderSet.raw);\n  }\n  setAdditionalMass(A2, I2) {\n    this.rawSet.rbSetAdditionalMass(this.handle, A2, I2);\n  }\n  setAdditionalMassProperties(A2, I2, g2, C2, B2) {\n    let Q2 = fA.intoRaw(I2), E2 = fA.intoRaw(g2), i2 = XA.intoRaw(C2);\n    this.rawSet.rbSetAdditionalMassProperties(this.handle, A2, Q2, E2, i2, B2), Q2.free(), E2.free(), i2.free();\n  }\n  setAngularDamping(A2) {\n    this.rawSet.rbSetAngularDamping(this.handle, A2);\n  }\n  resetForces(A2) {\n    this.rawSet.rbResetForces(this.handle, A2);\n  }\n  resetTorques(A2) {\n    this.rawSet.rbResetTorques(this.handle, A2);\n  }\n  addForce(A2, I2) {\n    const g2 = fA.intoRaw(A2);\n    this.rawSet.rbAddForce(this.handle, g2, I2), g2.free();\n  }\n  applyImpulse(A2, I2) {\n    const g2 = fA.intoRaw(A2);\n    this.rawSet.rbApplyImpulse(this.handle, g2, I2), g2.free();\n  }\n  addTorque(A2, I2) {\n    const g2 = fA.intoRaw(A2);\n    this.rawSet.rbAddTorque(this.handle, g2, I2), g2.free();\n  }\n  applyTorqueImpulse(A2, I2) {\n    const g2 = fA.intoRaw(A2);\n    this.rawSet.rbApplyTorqueImpulse(this.handle, g2, I2), g2.free();\n  }\n  addForceAtPoint(A2, I2, g2) {\n    const C2 = fA.intoRaw(A2), B2 = fA.intoRaw(I2);\n    this.rawSet.rbAddForceAtPoint(this.handle, C2, B2, g2), C2.free(), B2.free();\n  }\n  applyImpulseAtPoint(A2, I2, g2) {\n    const C2 = fA.intoRaw(A2), B2 = fA.intoRaw(I2);\n    this.rawSet.rbApplyImpulseAtPoint(this.handle, C2, B2, g2), C2.free(), B2.free();\n  }\n  userForce() {\n    return fA.fromRaw(this.rawSet.rbUserForce(this.handle));\n  }\n  userTorque() {\n    return fA.fromRaw(this.rawSet.rbUserTorque(this.handle));\n  }\n}\nclass GI {\n  constructor(A2) {\n    this.enabled = true, this.status = A2, this.translation = fA.zeros(), this.rotation = XA.identity(), this.gravityScale = 1, this.linvel = fA.zeros(), this.mass = 0, this.massOnly = false, this.centerOfMass = fA.zeros(), this.translationsEnabledX = true, this.translationsEnabledY = true, this.angvel = fA.zeros(), this.principalAngularInertia = fA.zeros(), this.angularInertiaLocalFrame = XA.identity(), this.translationsEnabledZ = true, this.rotationsEnabledX = true, this.rotationsEnabledY = true, this.rotationsEnabledZ = true, this.linearDamping = 0, this.angularDamping = 0, this.canSleep = true, this.sleeping = false, this.ccdEnabled = false, this.softCcdPrediction = 0, this.dominanceGroup = 0, this.additionalSolverIterations = 0;\n  }\n  static dynamic() {\n    return new GI(vA.Dynamic);\n  }\n  static kinematicPositionBased() {\n    return new GI(vA.KinematicPositionBased);\n  }\n  static kinematicVelocityBased() {\n    return new GI(vA.KinematicVelocityBased);\n  }\n  static fixed() {\n    return new GI(vA.Fixed);\n  }\n  static newDynamic() {\n    return new GI(vA.Dynamic);\n  }\n  static newKinematicPositionBased() {\n    return new GI(vA.KinematicPositionBased);\n  }\n  static newKinematicVelocityBased() {\n    return new GI(vA.KinematicVelocityBased);\n  }\n  static newStatic() {\n    return new GI(vA.Fixed);\n  }\n  setDominanceGroup(A2) {\n    return this.dominanceGroup = A2, this;\n  }\n  setAdditionalSolverIterations(A2) {\n    return this.additionalSolverIterations = A2, this;\n  }\n  setEnabled(A2) {\n    return this.enabled = A2, this;\n  }\n  setTranslation(A2, I2, g2) {\n    if (\"number\" != typeof A2 || \"number\" != typeof I2 || \"number\" != typeof g2) throw TypeError(\"The translation components must be numbers.\");\n    return this.translation = { x: A2, y: I2, z: g2 }, this;\n  }\n  setRotation(A2) {\n    return XA.copy(this.rotation, A2), this;\n  }\n  setGravityScale(A2) {\n    return this.gravityScale = A2, this;\n  }\n  setAdditionalMass(A2) {\n    return this.mass = A2, this.massOnly = true, this;\n  }\n  setLinvel(A2, I2, g2) {\n    if (\"number\" != typeof A2 || \"number\" != typeof I2 || \"number\" != typeof g2) throw TypeError(\"The linvel components must be numbers.\");\n    return this.linvel = { x: A2, y: I2, z: g2 }, this;\n  }\n  setAngvel(A2) {\n    return fA.copy(this.angvel, A2), this;\n  }\n  setAdditionalMassProperties(A2, I2, g2, C2) {\n    return this.mass = A2, fA.copy(this.centerOfMass, I2), fA.copy(this.principalAngularInertia, g2), XA.copy(this.angularInertiaLocalFrame, C2), this.massOnly = false, this;\n  }\n  enabledTranslations(A2, I2, g2) {\n    return this.translationsEnabledX = A2, this.translationsEnabledY = I2, this.translationsEnabledZ = g2, this;\n  }\n  restrictTranslations(A2, I2, g2) {\n    return this.enabledTranslations(A2, I2, g2);\n  }\n  lockTranslations() {\n    return this.enabledTranslations(false, false, false);\n  }\n  enabledRotations(A2, I2, g2) {\n    return this.rotationsEnabledX = A2, this.rotationsEnabledY = I2, this.rotationsEnabledZ = g2, this;\n  }\n  restrictRotations(A2, I2, g2) {\n    return this.enabledRotations(A2, I2, g2);\n  }\n  lockRotations() {\n    return this.restrictRotations(false, false, false);\n  }\n  setLinearDamping(A2) {\n    return this.linearDamping = A2, this;\n  }\n  setAngularDamping(A2) {\n    return this.angularDamping = A2, this;\n  }\n  setCanSleep(A2) {\n    return this.canSleep = A2, this;\n  }\n  setSleeping(A2) {\n    return this.sleeping = A2, this;\n  }\n  setCcdEnabled(A2) {\n    return this.ccdEnabled = A2, this;\n  }\n  setSoftCcdPrediction(A2) {\n    return this.softCcdPrediction = A2, this;\n  }\n  setUserData(A2) {\n    return this.userData = A2, this;\n  }\n}\nclass kI {\n  constructor() {\n    this.fconv = new Float64Array(1), this.uconv = new Uint32Array(this.fconv.buffer), this.data = new Array(), this.size = 0;\n  }\n  set(A2, I2) {\n    let g2 = this.index(A2);\n    for (; this.data.length <= g2; ) this.data.push(null);\n    null == this.data[g2] && (this.size += 1), this.data[g2] = I2;\n  }\n  len() {\n    return this.size;\n  }\n  delete(A2) {\n    let I2 = this.index(A2);\n    I2 < this.data.length && (null != this.data[I2] && (this.size -= 1), this.data[I2] = null);\n  }\n  clear() {\n    this.data = new Array();\n  }\n  get(A2) {\n    let I2 = this.index(A2);\n    return I2 < this.data.length ? this.data[I2] : null;\n  }\n  forEach(A2) {\n    for (const I2 of this.data) null != I2 && A2(I2);\n  }\n  getAll() {\n    return this.data.filter((A2) => null != A2);\n  }\n  index(A2) {\n    return this.fconv[0] = A2, this.uconv[0];\n  }\n}\nclass KI {\n  constructor(A2) {\n    this.raw = A2 || new lA(), this.map = new kI(), A2 && A2.forEachRigidBodyHandle((I2) => {\n      this.map.set(I2, new wI(A2, null, I2));\n    });\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0, this.map && this.map.clear(), this.map = void 0;\n  }\n  finalizeDeserialization(A2) {\n    this.map.forEach((I2) => I2.finalizeDeserialization(A2));\n  }\n  createRigidBody(A2, I2) {\n    let g2 = fA.intoRaw(I2.translation), C2 = XA.intoRaw(I2.rotation), B2 = fA.intoRaw(I2.linvel), Q2 = fA.intoRaw(I2.centerOfMass), E2 = fA.intoRaw(I2.angvel), i2 = fA.intoRaw(I2.principalAngularInertia), D2 = XA.intoRaw(I2.angularInertiaLocalFrame), o2 = this.raw.createRigidBody(I2.enabled, g2, C2, I2.gravityScale, I2.mass, I2.massOnly, Q2, B2, E2, i2, D2, I2.translationsEnabledX, I2.translationsEnabledY, I2.translationsEnabledZ, I2.rotationsEnabledX, I2.rotationsEnabledY, I2.rotationsEnabledZ, I2.linearDamping, I2.angularDamping, I2.status, I2.canSleep, I2.sleeping, I2.softCcdPrediction, I2.ccdEnabled, I2.dominanceGroup, I2.additionalSolverIterations);\n    g2.free(), C2.free(), B2.free(), Q2.free(), E2.free(), i2.free(), D2.free();\n    const S2 = new wI(this.raw, A2, o2);\n    return S2.userData = I2.userData, this.map.set(o2, S2), S2;\n  }\n  remove(A2, I2, g2, C2, B2) {\n    for (let I3 = 0; I3 < this.raw.rbNumColliders(A2); I3 += 1) g2.unmap(this.raw.rbCollider(A2, I3));\n    C2.forEachJointHandleAttachedToRigidBody(A2, (A3) => C2.unmap(A3)), B2.forEachJointHandleAttachedToRigidBody(A2, (A3) => B2.unmap(A3)), this.raw.remove(A2, I2.raw, g2.raw, C2.raw, B2.raw), this.map.delete(A2);\n  }\n  len() {\n    return this.map.len();\n  }\n  contains(A2) {\n    return null != this.get(A2);\n  }\n  get(A2) {\n    return this.map.get(A2);\n  }\n  forEach(A2) {\n    this.map.forEach(A2);\n  }\n  forEachActiveRigidBody(A2, I2) {\n    A2.forEachActiveRigidBodyHandle((A3) => {\n      I2(this.get(A3));\n    });\n  }\n  getAll() {\n    return this.map.getAll();\n  }\n}\nclass JI {\n  constructor(A2) {\n    this.raw = A2 || new BA();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  get dt() {\n    return this.raw.dt;\n  }\n  get contact_erp() {\n    return this.raw.contact_erp;\n  }\n  get lengthUnit() {\n    return this.raw.lengthUnit;\n  }\n  get normalizedAllowedLinearError() {\n    return this.raw.normalizedAllowedLinearError;\n  }\n  get normalizedPredictionDistance() {\n    return this.raw.normalizedPredictionDistance;\n  }\n  get numSolverIterations() {\n    return this.raw.numSolverIterations;\n  }\n  get numAdditionalFrictionIterations() {\n    return this.raw.numAdditionalFrictionIterations;\n  }\n  get numInternalPgsIterations() {\n    return this.raw.numInternalPgsIterations;\n  }\n  get minIslandSize() {\n    return this.raw.minIslandSize;\n  }\n  get maxCcdSubsteps() {\n    return this.raw.maxCcdSubsteps;\n  }\n  set dt(A2) {\n    this.raw.dt = A2;\n  }\n  set contact_natural_frequency(A2) {\n    this.raw.contact_natural_frequency = A2;\n  }\n  set lengthUnit(A2) {\n    this.raw.lengthUnit = A2;\n  }\n  set normalizedAllowedLinearError(A2) {\n    this.raw.normalizedAllowedLinearError = A2;\n  }\n  set normalizedPredictionDistance(A2) {\n    this.raw.normalizedPredictionDistance = A2;\n  }\n  set numSolverIterations(A2) {\n    this.raw.numSolverIterations = A2;\n  }\n  set numAdditionalFrictionIterations(A2) {\n    this.raw.numAdditionalFrictionIterations = A2;\n  }\n  set numInternalPgsIterations(A2) {\n    this.raw.numInternalPgsIterations = A2;\n  }\n  set minIslandSize(A2) {\n    this.raw.minIslandSize = A2;\n  }\n  set maxCcdSubsteps(A2) {\n    this.raw.maxCcdSubsteps = A2;\n  }\n  switchToStandardPgsSolver() {\n    this.raw.switchToStandardPgsSolver();\n  }\n  switchToSmallStepsPgsSolver() {\n    this.raw.switchToSmallStepsPgsSolver();\n  }\n  switchToSmallStepsPgsSolverWithoutWarmstart() {\n    this.raw.switchToSmallStepsPgsSolverWithoutWarmstart();\n  }\n}\n!function(A2) {\n  A2[A2.Revolute = 0] = \"Revolute\", A2[A2.Fixed = 1] = \"Fixed\", A2[A2.Prismatic = 2] = \"Prismatic\", A2[A2.Rope = 3] = \"Rope\", A2[A2.Spring = 4] = \"Spring\", A2[A2.Spherical = 5] = \"Spherical\", A2[A2.Generic = 6] = \"Generic\";\n}(zA || (zA = {})), function(A2) {\n  A2[A2.AccelerationBased = 0] = \"AccelerationBased\", A2[A2.ForceBased = 1] = \"ForceBased\";\n}(_A || (_A = {})), function(A2) {\n  A2[A2.LinX = 1] = \"LinX\", A2[A2.LinY = 2] = \"LinY\", A2[A2.LinZ = 4] = \"LinZ\", A2[A2.AngX = 8] = \"AngX\", A2[A2.AngY = 16] = \"AngY\", A2[A2.AngZ = 32] = \"AngZ\";\n}($A || ($A = {}));\nclass UI {\n  constructor(A2, I2, g2) {\n    this.rawSet = A2, this.bodySet = I2, this.handle = g2;\n  }\n  static newTyped(A2, I2, g2) {\n    switch (A2.jointType(g2)) {\n      case Y.Revolute:\n        return new aI(A2, I2, g2);\n      case Y.Prismatic:\n        return new FI(A2, I2, g2);\n      case Y.Fixed:\n        return new yI(A2, I2, g2);\n      case Y.Spring:\n        return new MI(A2, I2, g2);\n      case Y.Rope:\n        return new NI(A2, I2, g2);\n      case Y.Spherical:\n        return new RI(A2, I2, g2);\n      case Y.Generic:\n        return new sI(A2, I2, g2);\n      default:\n        return new UI(A2, I2, g2);\n    }\n  }\n  finalizeDeserialization(A2) {\n    this.bodySet = A2;\n  }\n  isValid() {\n    return this.rawSet.contains(this.handle);\n  }\n  body1() {\n    return this.bodySet.get(this.rawSet.jointBodyHandle1(this.handle));\n  }\n  body2() {\n    return this.bodySet.get(this.rawSet.jointBodyHandle2(this.handle));\n  }\n  type() {\n    return this.rawSet.jointType(this.handle);\n  }\n  frameX1() {\n    return XA.fromRaw(this.rawSet.jointFrameX1(this.handle));\n  }\n  frameX2() {\n    return XA.fromRaw(this.rawSet.jointFrameX2(this.handle));\n  }\n  anchor1() {\n    return fA.fromRaw(this.rawSet.jointAnchor1(this.handle));\n  }\n  anchor2() {\n    return fA.fromRaw(this.rawSet.jointAnchor2(this.handle));\n  }\n  setAnchor1(A2) {\n    const I2 = fA.intoRaw(A2);\n    this.rawSet.jointSetAnchor1(this.handle, I2), I2.free();\n  }\n  setAnchor2(A2) {\n    const I2 = fA.intoRaw(A2);\n    this.rawSet.jointSetAnchor2(this.handle, I2), I2.free();\n  }\n  setContactsEnabled(A2) {\n    this.rawSet.jointSetContactsEnabled(this.handle, A2);\n  }\n  contactsEnabled() {\n    return this.rawSet.jointContactsEnabled(this.handle);\n  }\n}\nclass hI extends UI {\n  limitsEnabled() {\n    return this.rawSet.jointLimitsEnabled(this.handle, this.rawAxis());\n  }\n  limitsMin() {\n    return this.rawSet.jointLimitsMin(this.handle, this.rawAxis());\n  }\n  limitsMax() {\n    return this.rawSet.jointLimitsMax(this.handle, this.rawAxis());\n  }\n  setLimits(A2, I2) {\n    this.rawSet.jointSetLimits(this.handle, this.rawAxis(), A2, I2);\n  }\n  configureMotorModel(A2) {\n    this.rawSet.jointConfigureMotorModel(this.handle, this.rawAxis(), A2);\n  }\n  configureMotorVelocity(A2, I2) {\n    this.rawSet.jointConfigureMotorVelocity(this.handle, this.rawAxis(), A2, I2);\n  }\n  configureMotorPosition(A2, I2, g2) {\n    this.rawSet.jointConfigureMotorPosition(this.handle, this.rawAxis(), A2, I2, g2);\n  }\n  configureMotor(A2, I2, g2, C2) {\n    this.rawSet.jointConfigureMotor(this.handle, this.rawAxis(), A2, I2, g2, C2);\n  }\n}\nclass yI extends UI {\n}\nclass NI extends UI {\n}\nclass MI extends UI {\n}\nclass FI extends hI {\n  rawAxis() {\n    return q.LinX;\n  }\n}\nclass aI extends hI {\n  rawAxis() {\n    return q.AngX;\n  }\n}\nclass sI extends UI {\n}\nclass RI extends UI {\n}\nclass cI {\n  constructor() {\n  }\n  static fixed(A2, I2, g2, C2) {\n    let B2 = new cI();\n    return B2.anchor1 = A2, B2.anchor2 = g2, B2.frame1 = I2, B2.frame2 = C2, B2.jointType = zA.Fixed, B2;\n  }\n  static spring(A2, I2, g2, C2, B2) {\n    let Q2 = new cI();\n    return Q2.anchor1 = C2, Q2.anchor2 = B2, Q2.length = A2, Q2.stiffness = I2, Q2.damping = g2, Q2.jointType = zA.Spring, Q2;\n  }\n  static rope(A2, I2, g2) {\n    let C2 = new cI();\n    return C2.anchor1 = I2, C2.anchor2 = g2, C2.length = A2, C2.jointType = zA.Rope, C2;\n  }\n  static generic(A2, I2, g2, C2) {\n    let B2 = new cI();\n    return B2.anchor1 = A2, B2.anchor2 = I2, B2.axis = g2, B2.axesMask = C2, B2.jointType = zA.Generic, B2;\n  }\n  static spherical(A2, I2) {\n    let g2 = new cI();\n    return g2.anchor1 = A2, g2.anchor2 = I2, g2.jointType = zA.Spherical, g2;\n  }\n  static prismatic(A2, I2, g2) {\n    let C2 = new cI();\n    return C2.anchor1 = A2, C2.anchor2 = I2, C2.axis = g2, C2.jointType = zA.Prismatic, C2;\n  }\n  static revolute(A2, I2, g2) {\n    let C2 = new cI();\n    return C2.anchor1 = A2, C2.anchor2 = I2, C2.axis = g2, C2.jointType = zA.Revolute, C2;\n  }\n  intoRaw() {\n    let A2, I2, g2 = fA.intoRaw(this.anchor1), C2 = fA.intoRaw(this.anchor2), B2 = false, Q2 = 0, E2 = 0;\n    switch (this.jointType) {\n      case zA.Fixed:\n        let i2 = XA.intoRaw(this.frame1), D2 = XA.intoRaw(this.frame2);\n        I2 = AA.fixed(g2, i2, C2, D2), i2.free(), D2.free();\n        break;\n      case zA.Spring:\n        I2 = AA.spring(this.length, this.stiffness, this.damping, g2, C2);\n        break;\n      case zA.Rope:\n        I2 = AA.rope(this.length, g2, C2);\n        break;\n      case zA.Prismatic:\n        A2 = fA.intoRaw(this.axis), this.limitsEnabled && (B2 = true, Q2 = this.limits[0], E2 = this.limits[1]), I2 = AA.prismatic(g2, C2, A2, B2, Q2, E2), A2.free();\n        break;\n      case zA.Generic:\n        A2 = fA.intoRaw(this.axis);\n        let o2 = this.axesMask;\n        I2 = AA.generic(g2, C2, A2, o2);\n        break;\n      case zA.Spherical:\n        I2 = AA.spherical(g2, C2);\n        break;\n      case zA.Revolute:\n        A2 = fA.intoRaw(this.axis), I2 = AA.revolute(g2, C2, A2), A2.free();\n    }\n    return g2.free(), C2.free(), I2;\n  }\n}\nclass qI {\n  constructor(A2) {\n    this.raw = A2 || new gA(), this.map = new kI(), A2 && A2.forEachJointHandle((I2) => {\n      this.map.set(I2, UI.newTyped(A2, null, I2));\n    });\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0, this.map && this.map.clear(), this.map = void 0;\n  }\n  finalizeDeserialization(A2) {\n    this.map.forEach((I2) => I2.finalizeDeserialization(A2));\n  }\n  createJoint(A2, I2, g2, C2, B2) {\n    const Q2 = I2.intoRaw(), E2 = this.raw.createJoint(Q2, g2, C2, B2);\n    Q2.free();\n    let i2 = UI.newTyped(this.raw, A2, E2);\n    return this.map.set(E2, i2), i2;\n  }\n  remove(A2, I2) {\n    this.raw.remove(A2, I2), this.unmap(A2);\n  }\n  forEachJointHandleAttachedToRigidBody(A2, I2) {\n    this.raw.forEachJointAttachedToRigidBody(A2, I2);\n  }\n  unmap(A2) {\n    this.map.delete(A2);\n  }\n  len() {\n    return this.map.len();\n  }\n  contains(A2) {\n    return null != this.get(A2);\n  }\n  get(A2) {\n    return this.map.get(A2);\n  }\n  forEach(A2) {\n    this.map.forEach(A2);\n  }\n  getAll() {\n    return this.map.getAll();\n  }\n}\nclass YI {\n  constructor(A2, I2) {\n    this.rawSet = A2, this.handle = I2;\n  }\n  static newTyped(A2, I2) {\n    switch (A2.jointType(I2)) {\n      case Y.Revolute:\n        return new tI(A2, I2);\n      case Y.Prismatic:\n        return new HI(A2, I2);\n      case Y.Fixed:\n        return new LI(A2, I2);\n      case Y.Spherical:\n        return new pI(A2, I2);\n      default:\n        return new YI(A2, I2);\n    }\n  }\n  isValid() {\n    return this.rawSet.contains(this.handle);\n  }\n  setContactsEnabled(A2) {\n    this.rawSet.jointSetContactsEnabled(this.handle, A2);\n  }\n  contactsEnabled() {\n    return this.rawSet.jointContactsEnabled(this.handle);\n  }\n}\nclass lI extends YI {\n}\nclass LI extends YI {\n}\nclass HI extends lI {\n  rawAxis() {\n    return q.LinX;\n  }\n}\nclass tI extends lI {\n  rawAxis() {\n    return q.AngX;\n  }\n}\nclass pI extends YI {\n}\nclass eI {\n  constructor(A2) {\n    this.raw = A2 || new SA(), this.map = new kI(), A2 && A2.forEachJointHandle((A3) => {\n      this.map.set(A3, YI.newTyped(this.raw, A3));\n    });\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0, this.map && this.map.clear(), this.map = void 0;\n  }\n  createJoint(A2, I2, g2, C2) {\n    const B2 = A2.intoRaw(), Q2 = this.raw.createJoint(B2, I2, g2, C2);\n    B2.free();\n    let E2 = YI.newTyped(this.raw, Q2);\n    return this.map.set(Q2, E2), E2;\n  }\n  remove(A2, I2) {\n    this.raw.remove(A2, I2), this.map.delete(A2);\n  }\n  unmap(A2) {\n    this.map.delete(A2);\n  }\n  len() {\n    return this.map.len();\n  }\n  contains(A2) {\n    return null != this.get(A2);\n  }\n  get(A2) {\n    return this.map.get(A2);\n  }\n  forEach(A2) {\n    this.map.forEach(A2);\n  }\n  forEachJointHandleAttachedToRigidBody(A2, I2) {\n    this.raw.forEachJointAttachedToRigidBody(A2, I2);\n  }\n  getAll() {\n    return this.map.getAll();\n  }\n}\n!function(A2) {\n  A2[A2.Average = 0] = \"Average\", A2[A2.Min = 1] = \"Min\", A2[A2.Multiply = 2] = \"Multiply\", A2[A2.Max = 3] = \"Max\";\n}(AI || (AI = {}));\nclass rI {\n  constructor(A2) {\n    this.raw = A2 || new p();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n}\nclass nI {\n  constructor(A2) {\n    this.raw = A2 || new EA();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  forEachActiveRigidBodyHandle(A2) {\n    this.raw.forEachActiveRigidBodyHandle(A2);\n  }\n}\nclass dI {\n  constructor(A2) {\n    this.raw = A2 || new H();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n}\nclass TI {\n  constructor(A2) {\n    this.raw = A2 || new GA(), this.tempManifold = new OI(null);\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  contactPairsWith(A2, I2) {\n    this.raw.contact_pairs_with(A2, I2);\n  }\n  intersectionPairsWith(A2, I2) {\n    this.raw.intersection_pairs_with(A2, I2);\n  }\n  contactPair(A2, I2, g2) {\n    const C2 = this.raw.contact_pair(A2, I2);\n    if (C2) {\n      const I3 = C2.collider1() != A2;\n      let B2;\n      for (B2 = 0; B2 < C2.numContactManifolds(); ++B2) this.tempManifold.raw = C2.contactManifold(B2), this.tempManifold.raw && g2(this.tempManifold, I3), this.tempManifold.free();\n      C2.free();\n    }\n  }\n  intersectionPair(A2, I2) {\n    return this.raw.intersection_pair(A2, I2);\n  }\n}\nclass OI {\n  constructor(A2) {\n    this.raw = A2;\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  normal() {\n    return fA.fromRaw(this.raw.normal());\n  }\n  localNormal1() {\n    return fA.fromRaw(this.raw.local_n1());\n  }\n  localNormal2() {\n    return fA.fromRaw(this.raw.local_n2());\n  }\n  subshape1() {\n    return this.raw.subshape1();\n  }\n  subshape2() {\n    return this.raw.subshape2();\n  }\n  numContacts() {\n    return this.raw.num_contacts();\n  }\n  localContactPoint1(A2) {\n    return fA.fromRaw(this.raw.contact_local_p1(A2));\n  }\n  localContactPoint2(A2) {\n    return fA.fromRaw(this.raw.contact_local_p2(A2));\n  }\n  contactDist(A2) {\n    return this.raw.contact_dist(A2);\n  }\n  contactFid1(A2) {\n    return this.raw.contact_fid1(A2);\n  }\n  contactFid2(A2) {\n    return this.raw.contact_fid2(A2);\n  }\n  contactImpulse(A2) {\n    return this.raw.contact_impulse(A2);\n  }\n  contactTangentImpulseX(A2) {\n    return this.raw.contact_tangent_impulse_x(A2);\n  }\n  contactTangentImpulseY(A2) {\n    return this.raw.contact_tangent_impulse_y(A2);\n  }\n  numSolverContacts() {\n    return this.raw.num_solver_contacts();\n  }\n  solverContactPoint(A2) {\n    return fA.fromRaw(this.raw.solver_contact_point(A2));\n  }\n  solverContactDist(A2) {\n    return this.raw.solver_contact_dist(A2);\n  }\n  solverContactFriction(A2) {\n    return this.raw.solver_contact_friction(A2);\n  }\n  solverContactRestitution(A2) {\n    return this.raw.solver_contact_restitution(A2);\n  }\n  solverContactTangentVelocity(A2) {\n    return fA.fromRaw(this.raw.solver_contact_tangent_velocity(A2));\n  }\n}\nclass ZI {\n  constructor(A2, I2, g2, C2, B2) {\n    this.distance = A2, this.point1 = I2, this.point2 = g2, this.normal1 = C2, this.normal2 = B2;\n  }\n  static fromRaw(A2) {\n    if (!A2) return null;\n    const I2 = new ZI(A2.distance(), fA.fromRaw(A2.point1()), fA.fromRaw(A2.point2()), fA.fromRaw(A2.normal1()), fA.fromRaw(A2.normal2()));\n    return A2.free(), I2;\n  }\n}\n!function(A2) {\n  A2[A2.Vertex = 0] = \"Vertex\", A2[A2.Edge = 1] = \"Edge\", A2[A2.Face = 2] = \"Face\", A2[A2.Unknown = 3] = \"Unknown\";\n}(II || (II = {}));\nclass bI {\n  constructor(A2, I2) {\n    this.point = A2, this.isInside = I2;\n  }\n  static fromRaw(A2) {\n    if (!A2) return null;\n    const I2 = new bI(fA.fromRaw(A2.point()), A2.isInside());\n    return A2.free(), I2;\n  }\n}\nclass WI {\n  constructor(A2, I2, g2, C2, B2) {\n    this.featureType = II.Unknown, this.featureId = void 0, this.collider = A2, this.point = I2, this.isInside = g2, void 0 !== B2 && (this.featureId = B2), void 0 !== C2 && (this.featureType = C2);\n  }\n  static fromRaw(A2, I2) {\n    if (!I2) return null;\n    const g2 = new WI(A2.get(I2.colliderHandle()), fA.fromRaw(I2.point()), I2.isInside(), I2.featureType(), I2.featureId());\n    return I2.free(), g2;\n  }\n}\nclass xI {\n  constructor(A2, I2) {\n    this.origin = A2, this.dir = I2;\n  }\n  pointAt(A2) {\n    return { x: this.origin.x + this.dir.x * A2, y: this.origin.y + this.dir.y * A2, z: this.origin.z + this.dir.z * A2 };\n  }\n}\nclass mI {\n  constructor(A2, I2, g2, C2) {\n    this.featureType = II.Unknown, this.featureId = void 0, this.timeOfImpact = A2, this.normal = I2, void 0 !== C2 && (this.featureId = C2), void 0 !== g2 && (this.featureType = g2);\n  }\n  static fromRaw(A2) {\n    if (!A2) return null;\n    const I2 = new mI(A2.time_of_impact(), fA.fromRaw(A2.normal()), A2.featureType(), A2.featureId());\n    return A2.free(), I2;\n  }\n}\nclass jI {\n  constructor(A2, I2, g2, C2, B2) {\n    this.featureType = II.Unknown, this.featureId = void 0, this.collider = A2, this.timeOfImpact = I2, this.normal = g2, void 0 !== B2 && (this.featureId = B2), void 0 !== C2 && (this.featureType = C2);\n  }\n  static fromRaw(A2, I2) {\n    if (!I2) return null;\n    const g2 = new jI(A2.get(I2.colliderHandle()), I2.time_of_impact(), fA.fromRaw(I2.normal()), I2.featureType(), I2.featureId());\n    return I2.free(), g2;\n  }\n}\nclass fI {\n  constructor(A2, I2) {\n    this.collider = A2, this.timeOfImpact = I2;\n  }\n  static fromRaw(A2, I2) {\n    if (!I2) return null;\n    const g2 = new fI(A2.get(I2.colliderHandle()), I2.timeOfImpact());\n    return I2.free(), g2;\n  }\n}\nclass VI {\n  constructor(A2, I2, g2, C2, B2) {\n    this.time_of_impact = A2, this.witness1 = I2, this.witness2 = g2, this.normal1 = C2, this.normal2 = B2;\n  }\n  static fromRaw(A2, I2) {\n    if (!I2) return null;\n    const g2 = new VI(I2.time_of_impact(), fA.fromRaw(I2.witness1()), fA.fromRaw(I2.witness2()), fA.fromRaw(I2.normal1()), fA.fromRaw(I2.normal2()));\n    return I2.free(), g2;\n  }\n}\nclass XI extends VI {\n  constructor(A2, I2, g2, C2, B2, Q2) {\n    super(I2, g2, C2, B2, Q2), this.collider = A2;\n  }\n  static fromRaw(A2, I2) {\n    if (!I2) return null;\n    const g2 = new XI(A2.get(I2.colliderHandle()), I2.time_of_impact(), fA.fromRaw(I2.witness1()), fA.fromRaw(I2.witness2()), fA.fromRaw(I2.normal1()), fA.fromRaw(I2.normal2()));\n    return I2.free(), g2;\n  }\n}\nclass PI {\n  static fromRaw(A2, I2) {\n    const g2 = A2.coShapeType(I2);\n    let C2, B2, Q2, E2, i2, D2, o2;\n    switch (g2) {\n      case l.Ball:\n        return new uI(A2.coRadius(I2));\n      case l.Cuboid:\n        return C2 = A2.coHalfExtents(I2), new zI(C2.x, C2.y, C2.z);\n      case l.RoundCuboid:\n        return C2 = A2.coHalfExtents(I2), B2 = A2.coRoundRadius(I2), new _I(C2.x, C2.y, C2.z, B2);\n      case l.Capsule:\n        return i2 = A2.coHalfHeight(I2), D2 = A2.coRadius(I2), new $I(i2, D2);\n      case l.Segment:\n        return Q2 = A2.coVertices(I2), new Ag(fA.new(Q2[0], Q2[1], Q2[2]), fA.new(Q2[3], Q2[4], Q2[5]));\n      case l.Polyline:\n        return Q2 = A2.coVertices(I2), E2 = A2.coIndices(I2), new Cg(Q2, E2);\n      case l.Triangle:\n        return Q2 = A2.coVertices(I2), new Ig(fA.new(Q2[0], Q2[1], Q2[2]), fA.new(Q2[3], Q2[4], Q2[5]), fA.new(Q2[6], Q2[7], Q2[8]));\n      case l.RoundTriangle:\n        return Q2 = A2.coVertices(I2), B2 = A2.coRoundRadius(I2), new gg(fA.new(Q2[0], Q2[1], Q2[2]), fA.new(Q2[3], Q2[4], Q2[5]), fA.new(Q2[6], Q2[7], Q2[8]), B2);\n      case l.HalfSpace:\n        return o2 = fA.fromRaw(A2.coHalfspaceNormal(I2)), new vI(o2);\n      case l.TriMesh:\n        Q2 = A2.coVertices(I2), E2 = A2.coIndices(I2);\n        const S2 = A2.coTriMeshFlags(I2);\n        return new Bg(Q2, E2, S2);\n      case l.HeightField:\n        const w2 = A2.coHeightfieldScale(I2), G2 = A2.coHeightfieldHeights(I2), k2 = A2.coHeightfieldNRows(I2), K2 = A2.coHeightfieldNCols(I2), J2 = A2.coHeightFieldFlags(I2);\n        return new ig(k2, K2, G2, w2, J2);\n      case l.ConvexPolyhedron:\n        return Q2 = A2.coVertices(I2), E2 = A2.coIndices(I2), new Qg(Q2, E2);\n      case l.RoundConvexPolyhedron:\n        return Q2 = A2.coVertices(I2), E2 = A2.coIndices(I2), B2 = A2.coRoundRadius(I2), new Eg(Q2, E2, B2);\n      case l.Cylinder:\n        return i2 = A2.coHalfHeight(I2), D2 = A2.coRadius(I2), new Dg(i2, D2);\n      case l.RoundCylinder:\n        return i2 = A2.coHalfHeight(I2), D2 = A2.coRadius(I2), B2 = A2.coRoundRadius(I2), new og(i2, D2, B2);\n      case l.Cone:\n        return i2 = A2.coHalfHeight(I2), D2 = A2.coRadius(I2), new Sg(i2, D2);\n      case l.RoundCone:\n        return i2 = A2.coHalfHeight(I2), D2 = A2.coRadius(I2), B2 = A2.coRoundRadius(I2), new wg(i2, D2, B2);\n      default:\n        throw new Error(\"unknown shape type: \" + g2);\n    }\n  }\n  castShape(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2) {\n    let S2 = fA.intoRaw(A2), w2 = XA.intoRaw(I2), G2 = fA.intoRaw(g2), k2 = fA.intoRaw(B2), K2 = XA.intoRaw(Q2), J2 = fA.intoRaw(E2), U2 = this.intoRaw(), h2 = C2.intoRaw(), y2 = VI.fromRaw(null, U2.castShape(S2, w2, G2, h2, k2, K2, J2, i2, D2, o2));\n    return S2.free(), w2.free(), G2.free(), k2.free(), K2.free(), J2.free(), U2.free(), h2.free(), y2;\n  }\n  intersectsShape(A2, I2, g2, C2, B2) {\n    let Q2 = fA.intoRaw(A2), E2 = XA.intoRaw(I2), i2 = fA.intoRaw(C2), D2 = XA.intoRaw(B2), o2 = this.intoRaw(), S2 = g2.intoRaw(), w2 = o2.intersectsShape(Q2, E2, S2, i2, D2);\n    return Q2.free(), E2.free(), i2.free(), D2.free(), o2.free(), S2.free(), w2;\n  }\n  contactShape(A2, I2, g2, C2, B2, Q2) {\n    let E2 = fA.intoRaw(A2), i2 = XA.intoRaw(I2), D2 = fA.intoRaw(C2), o2 = XA.intoRaw(B2), S2 = this.intoRaw(), w2 = g2.intoRaw(), G2 = ZI.fromRaw(S2.contactShape(E2, i2, w2, D2, o2, Q2));\n    return E2.free(), i2.free(), D2.free(), o2.free(), S2.free(), w2.free(), G2;\n  }\n  containsPoint(A2, I2, g2) {\n    let C2 = fA.intoRaw(A2), B2 = XA.intoRaw(I2), Q2 = fA.intoRaw(g2), E2 = this.intoRaw(), i2 = E2.containsPoint(C2, B2, Q2);\n    return C2.free(), B2.free(), Q2.free(), E2.free(), i2;\n  }\n  projectPoint(A2, I2, g2, C2) {\n    let B2 = fA.intoRaw(A2), Q2 = XA.intoRaw(I2), E2 = fA.intoRaw(g2), i2 = this.intoRaw(), D2 = bI.fromRaw(i2.projectPoint(B2, Q2, E2, C2));\n    return B2.free(), Q2.free(), E2.free(), i2.free(), D2;\n  }\n  intersectsRay(A2, I2, g2, C2) {\n    let B2 = fA.intoRaw(I2), Q2 = XA.intoRaw(g2), E2 = fA.intoRaw(A2.origin), i2 = fA.intoRaw(A2.dir), D2 = this.intoRaw(), o2 = D2.intersectsRay(B2, Q2, E2, i2, C2);\n    return B2.free(), Q2.free(), E2.free(), i2.free(), D2.free(), o2;\n  }\n  castRay(A2, I2, g2, C2, B2) {\n    let Q2 = fA.intoRaw(I2), E2 = XA.intoRaw(g2), i2 = fA.intoRaw(A2.origin), D2 = fA.intoRaw(A2.dir), o2 = this.intoRaw(), S2 = o2.castRay(Q2, E2, i2, D2, C2, B2);\n    return Q2.free(), E2.free(), i2.free(), D2.free(), o2.free(), S2;\n  }\n  castRayAndGetNormal(A2, I2, g2, C2, B2) {\n    let Q2 = fA.intoRaw(I2), E2 = XA.intoRaw(g2), i2 = fA.intoRaw(A2.origin), D2 = fA.intoRaw(A2.dir), o2 = this.intoRaw(), S2 = mI.fromRaw(o2.castRayAndGetNormal(Q2, E2, i2, D2, C2, B2));\n    return Q2.free(), E2.free(), i2.free(), D2.free(), o2.free(), S2;\n  }\n}\n!function(A2) {\n  A2[A2.Ball = 0] = \"Ball\", A2[A2.Cuboid = 1] = \"Cuboid\", A2[A2.Capsule = 2] = \"Capsule\", A2[A2.Segment = 3] = \"Segment\", A2[A2.Polyline = 4] = \"Polyline\", A2[A2.Triangle = 5] = \"Triangle\", A2[A2.TriMesh = 6] = \"TriMesh\", A2[A2.HeightField = 7] = \"HeightField\", A2[A2.ConvexPolyhedron = 9] = \"ConvexPolyhedron\", A2[A2.Cylinder = 10] = \"Cylinder\", A2[A2.Cone = 11] = \"Cone\", A2[A2.RoundCuboid = 12] = \"RoundCuboid\", A2[A2.RoundTriangle = 13] = \"RoundTriangle\", A2[A2.RoundCylinder = 14] = \"RoundCylinder\", A2[A2.RoundCone = 15] = \"RoundCone\", A2[A2.RoundConvexPolyhedron = 16] = \"RoundConvexPolyhedron\", A2[A2.HalfSpace = 17] = \"HalfSpace\";\n}(gI || (gI = {})), function(A2) {\n  A2[A2.FIX_INTERNAL_EDGES = 1] = \"FIX_INTERNAL_EDGES\";\n}(CI || (CI = {})), function(A2) {\n  A2[A2.DELETE_BAD_TOPOLOGY_TRIANGLES = 4] = \"DELETE_BAD_TOPOLOGY_TRIANGLES\", A2[A2.ORIENTED = 8] = \"ORIENTED\", A2[A2.MERGE_DUPLICATE_VERTICES = 16] = \"MERGE_DUPLICATE_VERTICES\", A2[A2.DELETE_DEGENERATE_TRIANGLES = 32] = \"DELETE_DEGENERATE_TRIANGLES\", A2[A2.DELETE_DUPLICATE_TRIANGLES = 64] = \"DELETE_DUPLICATE_TRIANGLES\", A2[A2.FIX_INTERNAL_EDGES = 152] = \"FIX_INTERNAL_EDGES\";\n}(BI || (BI = {}));\nclass uI extends PI {\n  constructor(A2) {\n    super(), this.type = gI.Ball, this.radius = A2;\n  }\n  intoRaw() {\n    return dA.ball(this.radius);\n  }\n}\nclass vI extends PI {\n  constructor(A2) {\n    super(), this.type = gI.HalfSpace, this.normal = A2;\n  }\n  intoRaw() {\n    let A2 = fA.intoRaw(this.normal), I2 = dA.halfspace(A2);\n    return A2.free(), I2;\n  }\n}\nclass zI extends PI {\n  constructor(A2, I2, g2) {\n    super(), this.type = gI.Cuboid, this.halfExtents = fA.new(A2, I2, g2);\n  }\n  intoRaw() {\n    return dA.cuboid(this.halfExtents.x, this.halfExtents.y, this.halfExtents.z);\n  }\n}\nclass _I extends PI {\n  constructor(A2, I2, g2, C2) {\n    super(), this.type = gI.RoundCuboid, this.halfExtents = fA.new(A2, I2, g2), this.borderRadius = C2;\n  }\n  intoRaw() {\n    return dA.roundCuboid(this.halfExtents.x, this.halfExtents.y, this.halfExtents.z, this.borderRadius);\n  }\n}\nclass $I extends PI {\n  constructor(A2, I2) {\n    super(), this.type = gI.Capsule, this.halfHeight = A2, this.radius = I2;\n  }\n  intoRaw() {\n    return dA.capsule(this.halfHeight, this.radius);\n  }\n}\nclass Ag extends PI {\n  constructor(A2, I2) {\n    super(), this.type = gI.Segment, this.a = A2, this.b = I2;\n  }\n  intoRaw() {\n    let A2 = fA.intoRaw(this.a), I2 = fA.intoRaw(this.b), g2 = dA.segment(A2, I2);\n    return A2.free(), I2.free(), g2;\n  }\n}\nclass Ig extends PI {\n  constructor(A2, I2, g2) {\n    super(), this.type = gI.Triangle, this.a = A2, this.b = I2, this.c = g2;\n  }\n  intoRaw() {\n    let A2 = fA.intoRaw(this.a), I2 = fA.intoRaw(this.b), g2 = fA.intoRaw(this.c), C2 = dA.triangle(A2, I2, g2);\n    return A2.free(), I2.free(), g2.free(), C2;\n  }\n}\nclass gg extends PI {\n  constructor(A2, I2, g2, C2) {\n    super(), this.type = gI.RoundTriangle, this.a = A2, this.b = I2, this.c = g2, this.borderRadius = C2;\n  }\n  intoRaw() {\n    let A2 = fA.intoRaw(this.a), I2 = fA.intoRaw(this.b), g2 = fA.intoRaw(this.c), C2 = dA.roundTriangle(A2, I2, g2, this.borderRadius);\n    return A2.free(), I2.free(), g2.free(), C2;\n  }\n}\nclass Cg extends PI {\n  constructor(A2, I2) {\n    super(), this.type = gI.Polyline, this.vertices = A2, this.indices = null != I2 ? I2 : new Uint32Array(0);\n  }\n  intoRaw() {\n    return dA.polyline(this.vertices, this.indices);\n  }\n}\nclass Bg extends PI {\n  constructor(A2, I2, g2) {\n    super(), this.type = gI.TriMesh, this.vertices = A2, this.indices = I2, this.flags = g2;\n  }\n  intoRaw() {\n    return dA.trimesh(this.vertices, this.indices, this.flags);\n  }\n}\nclass Qg extends PI {\n  constructor(A2, I2) {\n    super(), this.type = gI.ConvexPolyhedron, this.vertices = A2, this.indices = I2;\n  }\n  intoRaw() {\n    return this.indices ? dA.convexMesh(this.vertices, this.indices) : dA.convexHull(this.vertices);\n  }\n}\nclass Eg extends PI {\n  constructor(A2, I2, g2) {\n    super(), this.type = gI.RoundConvexPolyhedron, this.vertices = A2, this.indices = I2, this.borderRadius = g2;\n  }\n  intoRaw() {\n    return this.indices ? dA.roundConvexMesh(this.vertices, this.indices, this.borderRadius) : dA.roundConvexHull(this.vertices, this.borderRadius);\n  }\n}\nclass ig extends PI {\n  constructor(A2, I2, g2, C2, B2) {\n    super(), this.type = gI.HeightField, this.nrows = A2, this.ncols = I2, this.heights = g2, this.scale = C2, this.flags = B2;\n  }\n  intoRaw() {\n    let A2 = fA.intoRaw(this.scale), I2 = dA.heightfield(this.nrows, this.ncols, this.heights, A2, this.flags);\n    return A2.free(), I2;\n  }\n}\nclass Dg extends PI {\n  constructor(A2, I2) {\n    super(), this.type = gI.Cylinder, this.halfHeight = A2, this.radius = I2;\n  }\n  intoRaw() {\n    return dA.cylinder(this.halfHeight, this.radius);\n  }\n}\nclass og extends PI {\n  constructor(A2, I2, g2) {\n    super(), this.type = gI.RoundCylinder, this.borderRadius = g2, this.halfHeight = A2, this.radius = I2;\n  }\n  intoRaw() {\n    return dA.roundCylinder(this.halfHeight, this.radius, this.borderRadius);\n  }\n}\nclass Sg extends PI {\n  constructor(A2, I2) {\n    super(), this.type = gI.Cone, this.halfHeight = A2, this.radius = I2;\n  }\n  intoRaw() {\n    return dA.cone(this.halfHeight, this.radius);\n  }\n}\nclass wg extends PI {\n  constructor(A2, I2, g2) {\n    super(), this.type = gI.RoundCone, this.halfHeight = A2, this.radius = I2, this.borderRadius = g2;\n  }\n  intoRaw() {\n    return dA.roundCone(this.halfHeight, this.radius, this.borderRadius);\n  }\n}\nclass Gg {\n  constructor(A2) {\n    this.raw = A2 || new KA();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  step(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2, w2) {\n    let G2 = fA.intoRaw(A2);\n    S2 ? this.raw.stepWithEvents(G2, I2.raw, g2.raw, C2.raw, B2.raw, Q2.raw, E2.raw, i2.raw, D2.raw, o2.raw, S2.raw, w2, w2 ? w2.filterContactPair : null, w2 ? w2.filterIntersectionPair : null) : this.raw.step(G2, I2.raw, g2.raw, C2.raw, B2.raw, Q2.raw, E2.raw, i2.raw, D2.raw, o2.raw), G2.free();\n  }\n}\n!function(A2) {\n  A2[A2.EXCLUDE_FIXED = 1] = \"EXCLUDE_FIXED\", A2[A2.EXCLUDE_KINEMATIC = 2] = \"EXCLUDE_KINEMATIC\", A2[A2.EXCLUDE_DYNAMIC = 4] = \"EXCLUDE_DYNAMIC\", A2[A2.EXCLUDE_SENSORS = 8] = \"EXCLUDE_SENSORS\", A2[A2.EXCLUDE_SOLIDS = 16] = \"EXCLUDE_SOLIDS\", A2[A2.ONLY_DYNAMIC = 3] = \"ONLY_DYNAMIC\", A2[A2.ONLY_KINEMATIC = 5] = \"ONLY_KINEMATIC\", A2[A2.ONLY_FIXED = 6] = \"ONLY_FIXED\";\n}(QI || (QI = {}));\nclass kg {\n  constructor(A2) {\n    this.raw = A2 || new MA();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  update(A2) {\n    this.raw.update(A2.raw);\n  }\n  castRay(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2) {\n    let S2 = fA.intoRaw(g2.origin), w2 = fA.intoRaw(g2.dir), G2 = fI.fromRaw(I2, this.raw.castRay(A2.raw, I2.raw, S2, w2, C2, B2, Q2, E2, i2, D2, o2));\n    return S2.free(), w2.free(), G2;\n  }\n  castRayAndGetNormal(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2) {\n    let S2 = fA.intoRaw(g2.origin), w2 = fA.intoRaw(g2.dir), G2 = jI.fromRaw(I2, this.raw.castRayAndGetNormal(A2.raw, I2.raw, S2, w2, C2, B2, Q2, E2, i2, D2, o2));\n    return S2.free(), w2.free(), G2;\n  }\n  intersectionsWithRay(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2) {\n    let w2 = fA.intoRaw(g2.origin), G2 = fA.intoRaw(g2.dir);\n    this.raw.intersectionsWithRay(A2.raw, I2.raw, w2, G2, C2, B2, (A3) => Q2(jI.fromRaw(I2, A3)), E2, i2, D2, o2, S2), w2.free(), G2.free();\n  }\n  intersectionWithShape(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2) {\n    let S2 = fA.intoRaw(g2), w2 = XA.intoRaw(C2), G2 = B2.intoRaw(), k2 = this.raw.intersectionWithShape(A2.raw, I2.raw, S2, w2, G2, Q2, E2, i2, D2, o2);\n    return S2.free(), w2.free(), G2.free(), k2;\n  }\n  projectPoint(A2, I2, g2, C2, B2, Q2, E2, i2, D2) {\n    let o2 = fA.intoRaw(g2), S2 = WI.fromRaw(I2, this.raw.projectPoint(A2.raw, I2.raw, o2, C2, B2, Q2, E2, i2, D2));\n    return o2.free(), S2;\n  }\n  projectPointAndGetFeature(A2, I2, g2, C2, B2, Q2, E2, i2) {\n    let D2 = fA.intoRaw(g2), o2 = WI.fromRaw(I2, this.raw.projectPointAndGetFeature(A2.raw, I2.raw, D2, C2, B2, Q2, E2, i2));\n    return D2.free(), o2;\n  }\n  intersectionsWithPoint(A2, I2, g2, C2, B2, Q2, E2, i2, D2) {\n    let o2 = fA.intoRaw(g2);\n    this.raw.intersectionsWithPoint(A2.raw, I2.raw, o2, C2, B2, Q2, E2, i2, D2), o2.free();\n  }\n  castShape(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2, w2, G2, k2) {\n    let K2 = fA.intoRaw(g2), J2 = XA.intoRaw(C2), U2 = fA.intoRaw(B2), h2 = Q2.intoRaw(), y2 = XI.fromRaw(I2, this.raw.castShape(A2.raw, I2.raw, K2, J2, U2, h2, E2, i2, D2, o2, S2, w2, G2, k2));\n    return K2.free(), J2.free(), U2.free(), h2.free(), y2;\n  }\n  intersectionsWithShape(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2) {\n    let w2 = fA.intoRaw(g2), G2 = XA.intoRaw(C2), k2 = B2.intoRaw();\n    this.raw.intersectionsWithShape(A2.raw, I2.raw, w2, G2, k2, Q2, E2, i2, D2, o2, S2), w2.free(), G2.free(), k2.free();\n  }\n  collidersWithAabbIntersectingAabb(A2, I2, g2) {\n    let C2 = fA.intoRaw(A2), B2 = fA.intoRaw(I2);\n    this.raw.collidersWithAabbIntersectingAabb(C2, B2, g2), C2.free(), B2.free();\n  }\n}\nclass Kg {\n  constructor(A2) {\n    this.raw = A2 || new rA();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  serializeAll(A2, I2, g2, C2, B2, Q2, E2, i2, D2) {\n    let o2 = fA.intoRaw(A2);\n    const S2 = this.raw.serializeAll(o2, I2.raw, g2.raw, C2.raw, B2.raw, Q2.raw, E2.raw, i2.raw, D2.raw);\n    return o2.free(), S2;\n  }\n  deserializeAll(A2) {\n    return Mg.fromRaw(this.raw.deserializeAll(A2));\n  }\n}\nclass Jg {\n  constructor(A2, I2) {\n    this.vertices = A2, this.colors = I2;\n  }\n}\nclass Ug {\n  constructor(A2) {\n    this.raw = A2 || new V();\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0, this.vertices = void 0, this.colors = void 0;\n  }\n  render(A2, I2, g2, C2, B2) {\n    this.raw.render(A2.raw, I2.raw, g2.raw, C2.raw, B2.raw), this.vertices = this.raw.vertices(), this.colors = this.raw.colors();\n  }\n}\nclass hg {\n}\nclass yg {\n  constructor(A2, I2, g2, C2, B2) {\n    this.params = I2, this.bodies = g2, this.colliders = C2, this.queries = B2, this.raw = new DA(A2), this.rawCharacterCollision = new r(), this._applyImpulsesToDynamicBodies = false, this._characterMass = null;\n  }\n  free() {\n    this.raw && (this.raw.free(), this.rawCharacterCollision.free()), this.raw = void 0, this.rawCharacterCollision = void 0;\n  }\n  up() {\n    return this.raw.up();\n  }\n  setUp(A2) {\n    let I2 = fA.intoRaw(A2);\n    return this.raw.setUp(I2);\n  }\n  applyImpulsesToDynamicBodies() {\n    return this._applyImpulsesToDynamicBodies;\n  }\n  setApplyImpulsesToDynamicBodies(A2) {\n    this._applyImpulsesToDynamicBodies = A2;\n  }\n  characterMass() {\n    return this._characterMass;\n  }\n  setCharacterMass(A2) {\n    this._characterMass = A2;\n  }\n  offset() {\n    return this.raw.offset();\n  }\n  setOffset(A2) {\n    this.raw.setOffset(A2);\n  }\n  normalNudgeFactor() {\n    return this.raw.normalNudgeFactor();\n  }\n  setNormalNudgeFactor(A2) {\n    this.raw.setNormalNudgeFactor(A2);\n  }\n  slideEnabled() {\n    return this.raw.slideEnabled();\n  }\n  setSlideEnabled(A2) {\n    this.raw.setSlideEnabled(A2);\n  }\n  autostepMaxHeight() {\n    return this.raw.autostepMaxHeight();\n  }\n  autostepMinWidth() {\n    return this.raw.autostepMinWidth();\n  }\n  autostepIncludesDynamicBodies() {\n    return this.raw.autostepIncludesDynamicBodies();\n  }\n  autostepEnabled() {\n    return this.raw.autostepEnabled();\n  }\n  enableAutostep(A2, I2, g2) {\n    this.raw.enableAutostep(A2, I2, g2);\n  }\n  disableAutostep() {\n    return this.raw.disableAutostep();\n  }\n  maxSlopeClimbAngle() {\n    return this.raw.maxSlopeClimbAngle();\n  }\n  setMaxSlopeClimbAngle(A2) {\n    this.raw.setMaxSlopeClimbAngle(A2);\n  }\n  minSlopeSlideAngle() {\n    return this.raw.minSlopeSlideAngle();\n  }\n  setMinSlopeSlideAngle(A2) {\n    this.raw.setMinSlopeSlideAngle(A2);\n  }\n  snapToGroundDistance() {\n    return this.raw.snapToGroundDistance();\n  }\n  enableSnapToGround(A2) {\n    this.raw.enableSnapToGround(A2);\n  }\n  disableSnapToGround() {\n    this.raw.disableSnapToGround();\n  }\n  snapToGroundEnabled() {\n    return this.raw.snapToGroundEnabled();\n  }\n  computeColliderMovement(A2, I2, g2, C2, B2) {\n    let Q2 = fA.intoRaw(I2);\n    this.raw.computeColliderMovement(this.params.dt, this.bodies.raw, this.colliders.raw, this.queries.raw, A2.handle, Q2, this._applyImpulsesToDynamicBodies, this._characterMass, g2, C2, this.colliders.castClosure(B2)), Q2.free();\n  }\n  computedMovement() {\n    return fA.fromRaw(this.raw.computedMovement());\n  }\n  computedGrounded() {\n    return this.raw.computedGrounded();\n  }\n  numComputedCollisions() {\n    return this.raw.numComputedCollisions();\n  }\n  computedCollision(A2, I2) {\n    if (this.raw.computedCollision(A2, this.rawCharacterCollision)) {\n      let A3 = this.rawCharacterCollision;\n      return (I2 = null != I2 ? I2 : new hg()).translationDeltaApplied = fA.fromRaw(A3.translationDeltaApplied()), I2.translationDeltaRemaining = fA.fromRaw(A3.translationDeltaRemaining()), I2.toi = A3.toi(), I2.witness1 = fA.fromRaw(A3.worldWitness1()), I2.witness2 = fA.fromRaw(A3.worldWitness2()), I2.normal1 = fA.fromRaw(A3.worldNormal1()), I2.normal2 = fA.fromRaw(A3.worldNormal2()), I2.collider = this.colliders.get(A3.handle()), I2;\n    }\n    return null;\n  }\n}\nclass Ng {\n  constructor(A2, I2, g2, C2) {\n    this.raw = new v(A2.handle), this.bodies = I2, this.colliders = g2, this.queries = C2, this._chassis = A2;\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  updateVehicle(A2, I2, g2, C2) {\n    this.raw.update_vehicle(A2, this.bodies.raw, this.colliders.raw, this.queries.raw, I2, g2, this.colliders.castClosure(C2));\n  }\n  currentVehicleSpeed() {\n    return this.raw.current_vehicle_speed();\n  }\n  chassis() {\n    return this._chassis;\n  }\n  get indexUpAxis() {\n    return this.raw.index_up_axis();\n  }\n  set indexUpAxis(A2) {\n    this.raw.set_index_up_axis(A2);\n  }\n  get indexForwardAxis() {\n    return this.raw.index_forward_axis();\n  }\n  set setIndexForwardAxis(A2) {\n    this.raw.set_index_forward_axis(A2);\n  }\n  addWheel(A2, I2, g2, C2, B2) {\n    let Q2 = fA.intoRaw(A2), E2 = fA.intoRaw(I2), i2 = fA.intoRaw(g2);\n    this.raw.add_wheel(Q2, E2, i2, C2, B2), Q2.free(), E2.free(), i2.free();\n  }\n  numWheels() {\n    return this.raw.num_wheels();\n  }\n  wheelChassisConnectionPointCs(A2) {\n    return fA.fromRaw(this.raw.wheel_chassis_connection_point_cs(A2));\n  }\n  setWheelChassisConnectionPointCs(A2, I2) {\n    let g2 = fA.intoRaw(I2);\n    this.raw.set_wheel_chassis_connection_point_cs(A2, g2), g2.free();\n  }\n  wheelSuspensionRestLength(A2) {\n    return this.raw.wheel_suspension_rest_length(A2);\n  }\n  setWheelSuspensionRestLength(A2, I2) {\n    this.raw.set_wheel_suspension_rest_length(A2, I2);\n  }\n  wheelMaxSuspensionTravel(A2) {\n    return this.raw.wheel_max_suspension_travel(A2);\n  }\n  setWheelMaxSuspensionTravel(A2, I2) {\n    this.raw.set_wheel_max_suspension_travel(A2, I2);\n  }\n  wheelRadius(A2) {\n    return this.raw.wheel_radius(A2);\n  }\n  setWheelRadius(A2, I2) {\n    this.raw.set_wheel_radius(A2, I2);\n  }\n  wheelSuspensionStiffness(A2) {\n    return this.raw.wheel_suspension_stiffness(A2);\n  }\n  setWheelSuspensionStiffness(A2, I2) {\n    this.raw.set_wheel_suspension_stiffness(A2, I2);\n  }\n  wheelSuspensionCompression(A2) {\n    return this.raw.wheel_suspension_compression(A2);\n  }\n  setWheelSuspensionCompression(A2, I2) {\n    this.raw.set_wheel_suspension_compression(A2, I2);\n  }\n  wheelSuspensionRelaxation(A2) {\n    return this.raw.wheel_suspension_relaxation(A2);\n  }\n  setWheelSuspensionRelaxation(A2, I2) {\n    this.raw.set_wheel_suspension_relaxation(A2, I2);\n  }\n  wheelMaxSuspensionForce(A2) {\n    return this.raw.wheel_max_suspension_force(A2);\n  }\n  setWheelMaxSuspensionForce(A2, I2) {\n    this.raw.set_wheel_max_suspension_force(A2, I2);\n  }\n  wheelBrake(A2) {\n    return this.raw.wheel_brake(A2);\n  }\n  setWheelBrake(A2, I2) {\n    this.raw.set_wheel_brake(A2, I2);\n  }\n  wheelSteering(A2) {\n    return this.raw.wheel_steering(A2);\n  }\n  setWheelSteering(A2, I2) {\n    this.raw.set_wheel_steering(A2, I2);\n  }\n  wheelEngineForce(A2) {\n    return this.raw.wheel_engine_force(A2);\n  }\n  setWheelEngineForce(A2, I2) {\n    this.raw.set_wheel_engine_force(A2, I2);\n  }\n  wheelDirectionCs(A2) {\n    return fA.fromRaw(this.raw.wheel_direction_cs(A2));\n  }\n  setWheelDirectionCs(A2, I2) {\n    let g2 = fA.intoRaw(I2);\n    this.raw.set_wheel_direction_cs(A2, g2), g2.free();\n  }\n  wheelAxleCs(A2) {\n    return fA.fromRaw(this.raw.wheel_axle_cs(A2));\n  }\n  setWheelAxleCs(A2, I2) {\n    let g2 = fA.intoRaw(I2);\n    this.raw.set_wheel_axle_cs(A2, g2), g2.free();\n  }\n  wheelFrictionSlip(A2) {\n    return this.raw.wheel_friction_slip(A2);\n  }\n  setWheelFrictionSlip(A2, I2) {\n    this.raw.set_wheel_friction_slip(A2, I2);\n  }\n  wheelSideFrictionStiffness(A2) {\n    return this.raw.wheel_side_friction_stiffness(A2);\n  }\n  setWheelSideFrictionStiffness(A2, I2) {\n    this.raw.set_wheel_side_friction_stiffness(A2, I2);\n  }\n  wheelRotation(A2) {\n    return this.raw.wheel_rotation(A2);\n  }\n  wheelForwardImpulse(A2) {\n    return this.raw.wheel_forward_impulse(A2);\n  }\n  wheelSideImpulse(A2) {\n    return this.raw.wheel_side_impulse(A2);\n  }\n  wheelSuspensionForce(A2) {\n    return this.raw.wheel_suspension_force(A2);\n  }\n  wheelContactNormal(A2) {\n    return fA.fromRaw(this.raw.wheel_contact_normal_ws(A2));\n  }\n  wheelContactPoint(A2) {\n    return fA.fromRaw(this.raw.wheel_contact_point_ws(A2));\n  }\n  wheelSuspensionLength(A2) {\n    return this.raw.wheel_suspension_length(A2);\n  }\n  wheelHardPoint(A2) {\n    return fA.fromRaw(this.raw.wheel_hard_point_ws(A2));\n  }\n  wheelIsInContact(A2) {\n    return this.raw.wheel_is_in_contact(A2);\n  }\n  wheelGroundObject(A2) {\n    return this.colliders.get(this.raw.wheel_ground_object(A2));\n  }\n}\nclass Mg {\n  constructor(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2, w2, G2, k2) {\n    this.gravity = A2, this.integrationParameters = new JI(I2), this.islands = new nI(g2), this.broadPhase = new dI(C2), this.narrowPhase = new TI(B2), this.bodies = new KI(Q2), this.colliders = new cg(E2), this.impulseJoints = new qI(i2), this.multibodyJoints = new eI(D2), this.ccdSolver = new rI(o2), this.queryPipeline = new kg(S2), this.physicsPipeline = new Gg(w2), this.serializationPipeline = new Kg(G2), this.debugRenderPipeline = new Ug(k2), this.characterControllers = /* @__PURE__ */ new Set(), this.vehicleControllers = /* @__PURE__ */ new Set(), this.impulseJoints.finalizeDeserialization(this.bodies), this.bodies.finalizeDeserialization(this.colliders), this.colliders.finalizeDeserialization(this.bodies);\n  }\n  free() {\n    this.integrationParameters.free(), this.islands.free(), this.broadPhase.free(), this.narrowPhase.free(), this.bodies.free(), this.colliders.free(), this.impulseJoints.free(), this.multibodyJoints.free(), this.ccdSolver.free(), this.queryPipeline.free(), this.physicsPipeline.free(), this.serializationPipeline.free(), this.debugRenderPipeline.free(), this.characterControllers.forEach((A2) => A2.free()), this.vehicleControllers.forEach((A2) => A2.free()), this.integrationParameters = void 0, this.islands = void 0, this.broadPhase = void 0, this.narrowPhase = void 0, this.bodies = void 0, this.colliders = void 0, this.ccdSolver = void 0, this.impulseJoints = void 0, this.multibodyJoints = void 0, this.queryPipeline = void 0, this.physicsPipeline = void 0, this.serializationPipeline = void 0, this.debugRenderPipeline = void 0, this.characterControllers = void 0, this.vehicleControllers = void 0;\n  }\n  static fromRaw(A2) {\n    return A2 ? new Mg(fA.fromRaw(A2.takeGravity()), A2.takeIntegrationParameters(), A2.takeIslandManager(), A2.takeBroadPhase(), A2.takeNarrowPhase(), A2.takeBodies(), A2.takeColliders(), A2.takeImpulseJoints(), A2.takeMultibodyJoints()) : null;\n  }\n  takeSnapshot() {\n    return this.serializationPipeline.serializeAll(this.gravity, this.integrationParameters, this.islands, this.broadPhase, this.narrowPhase, this.bodies, this.colliders, this.impulseJoints, this.multibodyJoints);\n  }\n  static restoreSnapshot(A2) {\n    return new Kg().deserializeAll(A2);\n  }\n  debugRender() {\n    return this.debugRenderPipeline.render(this.bodies, this.colliders, this.impulseJoints, this.multibodyJoints, this.narrowPhase), new Jg(this.debugRenderPipeline.vertices, this.debugRenderPipeline.colors);\n  }\n  step(A2, I2) {\n    this.physicsPipeline.step(this.gravity, this.integrationParameters, this.islands, this.broadPhase, this.narrowPhase, this.bodies, this.colliders, this.impulseJoints, this.multibodyJoints, this.ccdSolver, A2, I2), this.queryPipeline.update(this.colliders);\n  }\n  propagateModifiedBodyPositionsToColliders() {\n    this.bodies.raw.propagateModifiedBodyPositionsToColliders(this.colliders.raw);\n  }\n  updateSceneQueries() {\n    this.propagateModifiedBodyPositionsToColliders(), this.queryPipeline.update(this.colliders);\n  }\n  get timestep() {\n    return this.integrationParameters.dt;\n  }\n  set timestep(A2) {\n    this.integrationParameters.dt = A2;\n  }\n  get lengthUnit() {\n    return this.integrationParameters.lengthUnit;\n  }\n  set lengthUnit(A2) {\n    this.integrationParameters.lengthUnit = A2;\n  }\n  get numSolverIterations() {\n    return this.integrationParameters.numSolverIterations;\n  }\n  set numSolverIterations(A2) {\n    this.integrationParameters.numSolverIterations = A2;\n  }\n  get numAdditionalFrictionIterations() {\n    return this.integrationParameters.numAdditionalFrictionIterations;\n  }\n  set numAdditionalFrictionIterations(A2) {\n    this.integrationParameters.numAdditionalFrictionIterations = A2;\n  }\n  get numInternalPgsIterations() {\n    return this.integrationParameters.numInternalPgsIterations;\n  }\n  set numInternalPgsIterations(A2) {\n    this.integrationParameters.numInternalPgsIterations = A2;\n  }\n  switchToStandardPgsSolver() {\n    this.integrationParameters.switchToStandardPgsSolver();\n  }\n  switchToSmallStepsPgsSolver() {\n    this.integrationParameters.switchToSmallStepsPgsSolver();\n  }\n  switchToSmallStepsPgsSolverWithoutWarmstart() {\n    this.integrationParameters.switchToSmallStepsPgsSolverWithoutWarmstart();\n  }\n  createRigidBody(A2) {\n    return this.bodies.createRigidBody(this.colliders, A2);\n  }\n  createCharacterController(A2) {\n    let I2 = new yg(A2, this.integrationParameters, this.bodies, this.colliders, this.queryPipeline);\n    return this.characterControllers.add(I2), I2;\n  }\n  removeCharacterController(A2) {\n    this.characterControllers.delete(A2), A2.free();\n  }\n  createVehicleController(A2) {\n    let I2 = new Ng(A2, this.bodies, this.colliders, this.queryPipeline);\n    return this.vehicleControllers.add(I2), I2;\n  }\n  removeVehicleController(A2) {\n    this.vehicleControllers.delete(A2), A2.free();\n  }\n  createCollider(A2, I2) {\n    let g2 = I2 ? I2.handle : void 0;\n    return this.colliders.createCollider(this.bodies, A2, g2);\n  }\n  createImpulseJoint(A2, I2, g2, C2) {\n    return this.impulseJoints.createJoint(this.bodies, A2, I2.handle, g2.handle, C2);\n  }\n  createMultibodyJoint(A2, I2, g2, C2) {\n    return this.multibodyJoints.createJoint(A2, I2.handle, g2.handle, C2);\n  }\n  getRigidBody(A2) {\n    return this.bodies.get(A2);\n  }\n  getCollider(A2) {\n    return this.colliders.get(A2);\n  }\n  getImpulseJoint(A2) {\n    return this.impulseJoints.get(A2);\n  }\n  getMultibodyJoint(A2) {\n    return this.multibodyJoints.get(A2);\n  }\n  removeRigidBody(A2) {\n    this.bodies && this.bodies.remove(A2.handle, this.islands, this.colliders, this.impulseJoints, this.multibodyJoints);\n  }\n  removeCollider(A2, I2) {\n    this.colliders && this.colliders.remove(A2.handle, this.islands, this.bodies, I2);\n  }\n  removeImpulseJoint(A2, I2) {\n    this.impulseJoints && this.impulseJoints.remove(A2.handle, I2);\n  }\n  removeMultibodyJoint(A2, I2) {\n    this.impulseJoints && this.multibodyJoints.remove(A2.handle, I2);\n  }\n  forEachCollider(A2) {\n    this.colliders.forEach(A2);\n  }\n  forEachRigidBody(A2) {\n    this.bodies.forEach(A2);\n  }\n  forEachActiveRigidBody(A2) {\n    this.bodies.forEachActiveRigidBody(this.islands, A2);\n  }\n  castRay(A2, I2, g2, C2, B2, Q2, E2, i2) {\n    return this.queryPipeline.castRay(this.bodies, this.colliders, A2, I2, g2, C2, B2, Q2 ? Q2.handle : null, E2 ? E2.handle : null, this.colliders.castClosure(i2));\n  }\n  castRayAndGetNormal(A2, I2, g2, C2, B2, Q2, E2, i2) {\n    return this.queryPipeline.castRayAndGetNormal(this.bodies, this.colliders, A2, I2, g2, C2, B2, Q2 ? Q2.handle : null, E2 ? E2.handle : null, this.colliders.castClosure(i2));\n  }\n  intersectionsWithRay(A2, I2, g2, C2, B2, Q2, E2, i2, D2) {\n    this.queryPipeline.intersectionsWithRay(this.bodies, this.colliders, A2, I2, g2, C2, B2, Q2, E2 ? E2.handle : null, i2 ? i2.handle : null, this.colliders.castClosure(D2));\n  }\n  intersectionWithShape(A2, I2, g2, C2, B2, Q2, E2, i2) {\n    let D2 = this.queryPipeline.intersectionWithShape(this.bodies, this.colliders, A2, I2, g2, C2, B2, Q2 ? Q2.handle : null, E2 ? E2.handle : null, this.colliders.castClosure(i2));\n    return null != D2 ? this.colliders.get(D2) : null;\n  }\n  projectPoint(A2, I2, g2, C2, B2, Q2, E2) {\n    return this.queryPipeline.projectPoint(this.bodies, this.colliders, A2, I2, g2, C2, B2 ? B2.handle : null, Q2 ? Q2.handle : null, this.colliders.castClosure(E2));\n  }\n  projectPointAndGetFeature(A2, I2, g2, C2, B2, Q2) {\n    return this.queryPipeline.projectPointAndGetFeature(this.bodies, this.colliders, A2, I2, g2, C2 ? C2.handle : null, B2 ? B2.handle : null, this.colliders.castClosure(Q2));\n  }\n  intersectionsWithPoint(A2, I2, g2, C2, B2, Q2, E2) {\n    this.queryPipeline.intersectionsWithPoint(this.bodies, this.colliders, A2, this.colliders.castClosure(I2), g2, C2, B2 ? B2.handle : null, Q2 ? Q2.handle : null, this.colliders.castClosure(E2));\n  }\n  castShape(A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2, S2, w2) {\n    return this.queryPipeline.castShape(this.bodies, this.colliders, A2, I2, g2, C2, B2, Q2, E2, i2, D2, o2 ? o2.handle : null, S2 ? S2.handle : null, this.colliders.castClosure(w2));\n  }\n  intersectionsWithShape(A2, I2, g2, C2, B2, Q2, E2, i2, D2) {\n    this.queryPipeline.intersectionsWithShape(this.bodies, this.colliders, A2, I2, g2, this.colliders.castClosure(C2), B2, Q2, E2 ? E2.handle : null, i2 ? i2.handle : null, this.colliders.castClosure(D2));\n  }\n  collidersWithAabbIntersectingAabb(A2, I2, g2) {\n    this.queryPipeline.collidersWithAabbIntersectingAabb(A2, I2, this.colliders.castClosure(g2));\n  }\n  contactPairsWith(A2, I2) {\n    this.narrowPhase.contactPairsWith(A2.handle, this.colliders.castClosure(I2));\n  }\n  intersectionPairsWith(A2, I2) {\n    this.narrowPhase.intersectionPairsWith(A2.handle, this.colliders.castClosure(I2));\n  }\n  contactPair(A2, I2, g2) {\n    this.narrowPhase.contactPair(A2.handle, I2.handle, g2);\n  }\n  intersectionPair(A2, I2) {\n    return this.narrowPhase.intersectionPair(A2.handle, I2.handle);\n  }\n}\n!function(A2) {\n  A2[A2.NONE = 0] = \"NONE\", A2[A2.COLLISION_EVENTS = 1] = \"COLLISION_EVENTS\", A2[A2.CONTACT_FORCE_EVENTS = 2] = \"CONTACT_FORCE_EVENTS\";\n}(EI || (EI = {}));\nclass Fg {\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  collider1() {\n    return this.raw.collider1();\n  }\n  collider2() {\n    return this.raw.collider2();\n  }\n  totalForce() {\n    return fA.fromRaw(this.raw.total_force());\n  }\n  totalForceMagnitude() {\n    return this.raw.total_force_magnitude();\n  }\n  maxForceDirection() {\n    return fA.fromRaw(this.raw.max_force_direction());\n  }\n  maxForceMagnitude() {\n    return this.raw.max_force_magnitude();\n  }\n}\nclass ag {\n  constructor(A2, I2) {\n    this.raw = I2 || new _(A2);\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0;\n  }\n  drainCollisionEvents(A2) {\n    this.raw.drainCollisionEvents(A2);\n  }\n  drainContactForceEvents(A2) {\n    let I2 = new Fg();\n    this.raw.drainContactForceEvents((g2) => {\n      I2.raw = g2, A2(I2), I2.free();\n    });\n  }\n  clear() {\n    this.raw.clear();\n  }\n}\n!function(A2) {\n  A2[A2.NONE = 0] = \"NONE\", A2[A2.FILTER_CONTACT_PAIRS = 1] = \"FILTER_CONTACT_PAIRS\", A2[A2.FILTER_INTERSECTION_PAIRS = 2] = \"FILTER_INTERSECTION_PAIRS\";\n}(iI || (iI = {})), function(A2) {\n  A2[A2.EMPTY = 0] = \"EMPTY\", A2[A2.COMPUTE_IMPULSE = 1] = \"COMPUTE_IMPULSE\";\n}(DI || (DI = {})), function(A2) {\n  A2[A2.DYNAMIC_DYNAMIC = 1] = \"DYNAMIC_DYNAMIC\", A2[A2.DYNAMIC_KINEMATIC = 12] = \"DYNAMIC_KINEMATIC\", A2[A2.DYNAMIC_FIXED = 2] = \"DYNAMIC_FIXED\", A2[A2.KINEMATIC_KINEMATIC = 52224] = \"KINEMATIC_KINEMATIC\", A2[A2.KINEMATIC_FIXED = 8704] = \"KINEMATIC_FIXED\", A2[A2.FIXED_FIXED = 32] = \"FIXED_FIXED\", A2[A2.DEFAULT = 15] = \"DEFAULT\", A2[A2.ALL = 60943] = \"ALL\";\n}(oI || (oI = {}));\nclass sg {\n  constructor(A2, I2, g2, C2) {\n    this.colliderSet = A2, this.handle = I2, this._parent = g2, this._shape = C2;\n  }\n  finalizeDeserialization(A2) {\n    null != this.handle && (this._parent = A2.get(this.colliderSet.raw.coParent(this.handle)));\n  }\n  ensureShapeIsCached() {\n    this._shape || (this._shape = PI.fromRaw(this.colliderSet.raw, this.handle));\n  }\n  get shape() {\n    return this.ensureShapeIsCached(), this._shape;\n  }\n  isValid() {\n    return this.colliderSet.raw.contains(this.handle);\n  }\n  translation() {\n    return fA.fromRaw(this.colliderSet.raw.coTranslation(this.handle));\n  }\n  rotation() {\n    return XA.fromRaw(this.colliderSet.raw.coRotation(this.handle));\n  }\n  isSensor() {\n    return this.colliderSet.raw.coIsSensor(this.handle);\n  }\n  setSensor(A2) {\n    this.colliderSet.raw.coSetSensor(this.handle, A2);\n  }\n  setShape(A2) {\n    let I2 = A2.intoRaw();\n    this.colliderSet.raw.coSetShape(this.handle, I2), I2.free(), this._shape = A2;\n  }\n  setEnabled(A2) {\n    this.colliderSet.raw.coSetEnabled(this.handle, A2);\n  }\n  isEnabled() {\n    return this.colliderSet.raw.coIsEnabled(this.handle);\n  }\n  setRestitution(A2) {\n    this.colliderSet.raw.coSetRestitution(this.handle, A2);\n  }\n  setFriction(A2) {\n    this.colliderSet.raw.coSetFriction(this.handle, A2);\n  }\n  frictionCombineRule() {\n    return this.colliderSet.raw.coFrictionCombineRule(this.handle);\n  }\n  setFrictionCombineRule(A2) {\n    this.colliderSet.raw.coSetFrictionCombineRule(this.handle, A2);\n  }\n  restitutionCombineRule() {\n    return this.colliderSet.raw.coRestitutionCombineRule(this.handle);\n  }\n  setRestitutionCombineRule(A2) {\n    this.colliderSet.raw.coSetRestitutionCombineRule(this.handle, A2);\n  }\n  setCollisionGroups(A2) {\n    this.colliderSet.raw.coSetCollisionGroups(this.handle, A2);\n  }\n  setSolverGroups(A2) {\n    this.colliderSet.raw.coSetSolverGroups(this.handle, A2);\n  }\n  contactSkin() {\n    return this.colliderSet.raw.coContactSkin(this.handle);\n  }\n  setContactSkin(A2) {\n    return this.colliderSet.raw.coSetContactSkin(this.handle, A2);\n  }\n  activeHooks() {\n    return this.colliderSet.raw.coActiveHooks(this.handle);\n  }\n  setActiveHooks(A2) {\n    this.colliderSet.raw.coSetActiveHooks(this.handle, A2);\n  }\n  activeEvents() {\n    return this.colliderSet.raw.coActiveEvents(this.handle);\n  }\n  setActiveEvents(A2) {\n    this.colliderSet.raw.coSetActiveEvents(this.handle, A2);\n  }\n  activeCollisionTypes() {\n    return this.colliderSet.raw.coActiveCollisionTypes(this.handle);\n  }\n  setContactForceEventThreshold(A2) {\n    return this.colliderSet.raw.coSetContactForceEventThreshold(this.handle, A2);\n  }\n  contactForceEventThreshold() {\n    return this.colliderSet.raw.coContactForceEventThreshold(this.handle);\n  }\n  setActiveCollisionTypes(A2) {\n    this.colliderSet.raw.coSetActiveCollisionTypes(this.handle, A2);\n  }\n  setDensity(A2) {\n    this.colliderSet.raw.coSetDensity(this.handle, A2);\n  }\n  setMass(A2) {\n    this.colliderSet.raw.coSetMass(this.handle, A2);\n  }\n  setMassProperties(A2, I2, g2, C2) {\n    let B2 = fA.intoRaw(I2), Q2 = fA.intoRaw(g2), E2 = XA.intoRaw(C2);\n    this.colliderSet.raw.coSetMassProperties(this.handle, A2, B2, Q2, E2), B2.free(), Q2.free(), E2.free();\n  }\n  setTranslation(A2) {\n    this.colliderSet.raw.coSetTranslation(this.handle, A2.x, A2.y, A2.z);\n  }\n  setTranslationWrtParent(A2) {\n    this.colliderSet.raw.coSetTranslationWrtParent(this.handle, A2.x, A2.y, A2.z);\n  }\n  setRotation(A2) {\n    this.colliderSet.raw.coSetRotation(this.handle, A2.x, A2.y, A2.z, A2.w);\n  }\n  setRotationWrtParent(A2) {\n    this.colliderSet.raw.coSetRotationWrtParent(this.handle, A2.x, A2.y, A2.z, A2.w);\n  }\n  shapeType() {\n    return this.colliderSet.raw.coShapeType(this.handle);\n  }\n  halfExtents() {\n    return fA.fromRaw(this.colliderSet.raw.coHalfExtents(this.handle));\n  }\n  setHalfExtents(A2) {\n    const I2 = fA.intoRaw(A2);\n    this.colliderSet.raw.coSetHalfExtents(this.handle, I2);\n  }\n  radius() {\n    return this.colliderSet.raw.coRadius(this.handle);\n  }\n  setRadius(A2) {\n    this.colliderSet.raw.coSetRadius(this.handle, A2);\n  }\n  roundRadius() {\n    return this.colliderSet.raw.coRoundRadius(this.handle);\n  }\n  setRoundRadius(A2) {\n    this.colliderSet.raw.coSetRoundRadius(this.handle, A2);\n  }\n  halfHeight() {\n    return this.colliderSet.raw.coHalfHeight(this.handle);\n  }\n  setHalfHeight(A2) {\n    this.colliderSet.raw.coSetHalfHeight(this.handle, A2);\n  }\n  vertices() {\n    return this.colliderSet.raw.coVertices(this.handle);\n  }\n  indices() {\n    return this.colliderSet.raw.coIndices(this.handle);\n  }\n  heightfieldHeights() {\n    return this.colliderSet.raw.coHeightfieldHeights(this.handle);\n  }\n  heightfieldScale() {\n    let A2 = this.colliderSet.raw.coHeightfieldScale(this.handle);\n    return fA.fromRaw(A2);\n  }\n  heightfieldNRows() {\n    return this.colliderSet.raw.coHeightfieldNRows(this.handle);\n  }\n  heightfieldNCols() {\n    return this.colliderSet.raw.coHeightfieldNCols(this.handle);\n  }\n  parent() {\n    return this._parent;\n  }\n  friction() {\n    return this.colliderSet.raw.coFriction(this.handle);\n  }\n  restitution() {\n    return this.colliderSet.raw.coRestitution(this.handle);\n  }\n  density() {\n    return this.colliderSet.raw.coDensity(this.handle);\n  }\n  mass() {\n    return this.colliderSet.raw.coMass(this.handle);\n  }\n  volume() {\n    return this.colliderSet.raw.coVolume(this.handle);\n  }\n  collisionGroups() {\n    return this.colliderSet.raw.coCollisionGroups(this.handle);\n  }\n  solverGroups() {\n    return this.colliderSet.raw.coSolverGroups(this.handle);\n  }\n  containsPoint(A2) {\n    let I2 = fA.intoRaw(A2), g2 = this.colliderSet.raw.coContainsPoint(this.handle, I2);\n    return I2.free(), g2;\n  }\n  projectPoint(A2, I2) {\n    let g2 = fA.intoRaw(A2), C2 = bI.fromRaw(this.colliderSet.raw.coProjectPoint(this.handle, g2, I2));\n    return g2.free(), C2;\n  }\n  intersectsRay(A2, I2) {\n    let g2 = fA.intoRaw(A2.origin), C2 = fA.intoRaw(A2.dir), B2 = this.colliderSet.raw.coIntersectsRay(this.handle, g2, C2, I2);\n    return g2.free(), C2.free(), B2;\n  }\n  castShape(A2, I2, g2, C2, B2, Q2, E2, i2) {\n    let D2 = fA.intoRaw(A2), o2 = fA.intoRaw(g2), S2 = XA.intoRaw(C2), w2 = fA.intoRaw(B2), G2 = I2.intoRaw(), k2 = VI.fromRaw(this.colliderSet, this.colliderSet.raw.coCastShape(this.handle, D2, G2, o2, S2, w2, Q2, E2, i2));\n    return D2.free(), o2.free(), S2.free(), w2.free(), G2.free(), k2;\n  }\n  castCollider(A2, I2, g2, C2, B2, Q2) {\n    let E2 = fA.intoRaw(A2), i2 = fA.intoRaw(g2), D2 = XI.fromRaw(this.colliderSet, this.colliderSet.raw.coCastCollider(this.handle, E2, I2.handle, i2, C2, B2, Q2));\n    return E2.free(), i2.free(), D2;\n  }\n  intersectsShape(A2, I2, g2) {\n    let C2 = fA.intoRaw(I2), B2 = XA.intoRaw(g2), Q2 = A2.intoRaw(), E2 = this.colliderSet.raw.coIntersectsShape(this.handle, Q2, C2, B2);\n    return C2.free(), B2.free(), Q2.free(), E2;\n  }\n  contactShape(A2, I2, g2, C2) {\n    let B2 = fA.intoRaw(I2), Q2 = XA.intoRaw(g2), E2 = A2.intoRaw(), i2 = ZI.fromRaw(this.colliderSet.raw.coContactShape(this.handle, E2, B2, Q2, C2));\n    return B2.free(), Q2.free(), E2.free(), i2;\n  }\n  contactCollider(A2, I2) {\n    return ZI.fromRaw(this.colliderSet.raw.coContactCollider(this.handle, A2.handle, I2));\n  }\n  castRay(A2, I2, g2) {\n    let C2 = fA.intoRaw(A2.origin), B2 = fA.intoRaw(A2.dir), Q2 = this.colliderSet.raw.coCastRay(this.handle, C2, B2, I2, g2);\n    return C2.free(), B2.free(), Q2;\n  }\n  castRayAndGetNormal(A2, I2, g2) {\n    let C2 = fA.intoRaw(A2.origin), B2 = fA.intoRaw(A2.dir), Q2 = mI.fromRaw(this.colliderSet.raw.coCastRayAndGetNormal(this.handle, C2, B2, I2, g2));\n    return C2.free(), B2.free(), Q2;\n  }\n}\n!function(A2) {\n  A2[A2.Density = 0] = \"Density\", A2[A2.Mass = 1] = \"Mass\", A2[A2.MassProps = 2] = \"MassProps\";\n}(SI || (SI = {}));\nclass Rg {\n  constructor(A2) {\n    this.enabled = true, this.shape = A2, this.massPropsMode = SI.Density, this.density = 1, this.friction = 0.5, this.restitution = 0, this.rotation = XA.identity(), this.translation = fA.zeros(), this.isSensor = false, this.collisionGroups = 4294967295, this.solverGroups = 4294967295, this.frictionCombineRule = AI.Average, this.restitutionCombineRule = AI.Average, this.activeCollisionTypes = oI.DEFAULT, this.activeEvents = EI.NONE, this.activeHooks = iI.NONE, this.mass = 0, this.centerOfMass = fA.zeros(), this.contactForceEventThreshold = 0, this.contactSkin = 0, this.principalAngularInertia = fA.zeros(), this.angularInertiaLocalFrame = XA.identity();\n  }\n  static ball(A2) {\n    const I2 = new uI(A2);\n    return new Rg(I2);\n  }\n  static capsule(A2, I2) {\n    const g2 = new $I(A2, I2);\n    return new Rg(g2);\n  }\n  static segment(A2, I2) {\n    const g2 = new Ag(A2, I2);\n    return new Rg(g2);\n  }\n  static triangle(A2, I2, g2) {\n    const C2 = new Ig(A2, I2, g2);\n    return new Rg(C2);\n  }\n  static roundTriangle(A2, I2, g2, C2) {\n    const B2 = new gg(A2, I2, g2, C2);\n    return new Rg(B2);\n  }\n  static polyline(A2, I2) {\n    const g2 = new Cg(A2, I2);\n    return new Rg(g2);\n  }\n  static trimesh(A2, I2, g2) {\n    const C2 = new Bg(A2, I2, g2);\n    return new Rg(C2);\n  }\n  static cuboid(A2, I2, g2) {\n    const C2 = new zI(A2, I2, g2);\n    return new Rg(C2);\n  }\n  static roundCuboid(A2, I2, g2, C2) {\n    const B2 = new _I(A2, I2, g2, C2);\n    return new Rg(B2);\n  }\n  static heightfield(A2, I2, g2, C2, B2) {\n    const Q2 = new ig(A2, I2, g2, C2, B2);\n    return new Rg(Q2);\n  }\n  static cylinder(A2, I2) {\n    const g2 = new Dg(A2, I2);\n    return new Rg(g2);\n  }\n  static roundCylinder(A2, I2, g2) {\n    const C2 = new og(A2, I2, g2);\n    return new Rg(C2);\n  }\n  static cone(A2, I2) {\n    const g2 = new Sg(A2, I2);\n    return new Rg(g2);\n  }\n  static roundCone(A2, I2, g2) {\n    const C2 = new wg(A2, I2, g2);\n    return new Rg(C2);\n  }\n  static convexHull(A2) {\n    const I2 = new Qg(A2, null);\n    return new Rg(I2);\n  }\n  static convexMesh(A2, I2) {\n    const g2 = new Qg(A2, I2);\n    return new Rg(g2);\n  }\n  static roundConvexHull(A2, I2) {\n    const g2 = new Eg(A2, null, I2);\n    return new Rg(g2);\n  }\n  static roundConvexMesh(A2, I2, g2) {\n    const C2 = new Eg(A2, I2, g2);\n    return new Rg(C2);\n  }\n  setTranslation(A2, I2, g2) {\n    if (\"number\" != typeof A2 || \"number\" != typeof I2 || \"number\" != typeof g2) throw TypeError(\"The translation components must be numbers.\");\n    return this.translation = { x: A2, y: I2, z: g2 }, this;\n  }\n  setRotation(A2) {\n    return XA.copy(this.rotation, A2), this;\n  }\n  setSensor(A2) {\n    return this.isSensor = A2, this;\n  }\n  setEnabled(A2) {\n    return this.enabled = A2, this;\n  }\n  setContactSkin(A2) {\n    return this.contactSkin = A2, this;\n  }\n  setDensity(A2) {\n    return this.massPropsMode = SI.Density, this.density = A2, this;\n  }\n  setMass(A2) {\n    return this.massPropsMode = SI.Mass, this.mass = A2, this;\n  }\n  setMassProperties(A2, I2, g2, C2) {\n    return this.massPropsMode = SI.MassProps, this.mass = A2, fA.copy(this.centerOfMass, I2), fA.copy(this.principalAngularInertia, g2), XA.copy(this.angularInertiaLocalFrame, C2), this;\n  }\n  setRestitution(A2) {\n    return this.restitution = A2, this;\n  }\n  setFriction(A2) {\n    return this.friction = A2, this;\n  }\n  setFrictionCombineRule(A2) {\n    return this.frictionCombineRule = A2, this;\n  }\n  setRestitutionCombineRule(A2) {\n    return this.restitutionCombineRule = A2, this;\n  }\n  setCollisionGroups(A2) {\n    return this.collisionGroups = A2, this;\n  }\n  setSolverGroups(A2) {\n    return this.solverGroups = A2, this;\n  }\n  setActiveHooks(A2) {\n    return this.activeHooks = A2, this;\n  }\n  setActiveEvents(A2) {\n    return this.activeEvents = A2, this;\n  }\n  setActiveCollisionTypes(A2) {\n    return this.activeCollisionTypes = A2, this;\n  }\n  setContactForceEventThreshold(A2) {\n    return this.contactForceEventThreshold = A2, this;\n  }\n}\nclass cg {\n  constructor(A2) {\n    this.raw = A2 || new d(), this.map = new kI(), A2 && A2.forEachColliderHandle((A3) => {\n      this.map.set(A3, new sg(this, A3, null));\n    });\n  }\n  free() {\n    this.raw && this.raw.free(), this.raw = void 0, this.map && this.map.clear(), this.map = void 0;\n  }\n  castClosure(A2) {\n    return (I2) => A2 ? A2(this.get(I2)) : void 0;\n  }\n  finalizeDeserialization(A2) {\n    this.map.forEach((I2) => I2.finalizeDeserialization(A2));\n  }\n  createCollider(A2, I2, g2) {\n    let C2 = null != g2 && null != g2;\n    if (C2 && isNaN(g2)) throw Error(\"Cannot create a collider with a parent rigid-body handle that is not a number.\");\n    let B2 = I2.shape.intoRaw(), Q2 = fA.intoRaw(I2.translation), E2 = XA.intoRaw(I2.rotation), i2 = fA.intoRaw(I2.centerOfMass), D2 = fA.intoRaw(I2.principalAngularInertia), o2 = XA.intoRaw(I2.angularInertiaLocalFrame), S2 = this.raw.createCollider(I2.enabled, B2, Q2, E2, I2.massPropsMode, I2.mass, i2, D2, o2, I2.density, I2.friction, I2.restitution, I2.frictionCombineRule, I2.restitutionCombineRule, I2.isSensor, I2.collisionGroups, I2.solverGroups, I2.activeCollisionTypes, I2.activeHooks, I2.activeEvents, I2.contactForceEventThreshold, I2.contactSkin, C2, C2 ? g2 : 0, A2.raw);\n    B2.free(), Q2.free(), E2.free(), i2.free(), D2.free(), o2.free();\n    let w2 = C2 ? A2.get(g2) : null, G2 = new sg(this, S2, w2, I2.shape);\n    return this.map.set(S2, G2), G2;\n  }\n  remove(A2, I2, g2, C2) {\n    this.raw.remove(A2, I2.raw, g2.raw, C2), this.unmap(A2);\n  }\n  unmap(A2) {\n    this.map.delete(A2);\n  }\n  get(A2) {\n    return this.map.get(A2);\n  }\n  len() {\n    return this.map.len();\n  }\n  contains(A2) {\n    return null != this.get(A2);\n  }\n  forEach(A2) {\n    this.map.forEach(A2);\n  }\n  getAll() {\n    return this.map.getAll();\n  }\n}\nfunction qg(A2, I2, g2, C2) {\n  return new (g2 || (g2 = Promise))(function(B2, Q2) {\n    function E2(A3) {\n      try {\n        D2(C2.next(A3));\n      } catch (A4) {\n        Q2(A4);\n      }\n    }\n    function i2(A3) {\n      try {\n        D2(C2.throw(A3));\n      } catch (A4) {\n        Q2(A4);\n      }\n    }\n    function D2(A3) {\n      var I3;\n      A3.done ? B2(A3.value) : (I3 = A3.value, I3 instanceof g2 ? I3 : new g2(function(A4) {\n        A4(I3);\n      })).then(E2, i2);\n    }\n    D2((C2 = C2.apply(A2, [])).next());\n  });\n}\nfor (var Yg = { byteLength: function(A2) {\n  var I2 = rg(A2), g2 = I2[0], C2 = I2[1];\n  return 3 * (g2 + C2) / 4 - C2;\n}, toByteArray: function(A2) {\n  var I2, g2, C2 = rg(A2), B2 = C2[0], Q2 = C2[1], E2 = new Hg(function(A3, I3, g3) {\n    return 3 * (I3 + g3) / 4 - g3;\n  }(0, B2, Q2)), i2 = 0, D2 = Q2 > 0 ? B2 - 4 : B2;\n  for (g2 = 0; g2 < D2; g2 += 4) I2 = Lg[A2.charCodeAt(g2)] << 18 | Lg[A2.charCodeAt(g2 + 1)] << 12 | Lg[A2.charCodeAt(g2 + 2)] << 6 | Lg[A2.charCodeAt(g2 + 3)], E2[i2++] = I2 >> 16 & 255, E2[i2++] = I2 >> 8 & 255, E2[i2++] = 255 & I2;\n  2 === Q2 && (I2 = Lg[A2.charCodeAt(g2)] << 2 | Lg[A2.charCodeAt(g2 + 1)] >> 4, E2[i2++] = 255 & I2);\n  1 === Q2 && (I2 = Lg[A2.charCodeAt(g2)] << 10 | Lg[A2.charCodeAt(g2 + 1)] << 4 | Lg[A2.charCodeAt(g2 + 2)] >> 2, E2[i2++] = I2 >> 8 & 255, E2[i2++] = 255 & I2);\n  return E2;\n}, fromByteArray: function(A2) {\n  for (var I2, g2 = A2.length, C2 = g2 % 3, B2 = [], Q2 = 16383, E2 = 0, i2 = g2 - C2; E2 < i2; E2 += Q2) B2.push(ng(A2, E2, E2 + Q2 > i2 ? i2 : E2 + Q2));\n  1 === C2 ? (I2 = A2[g2 - 1], B2.push(lg[I2 >> 2] + lg[I2 << 4 & 63] + \"==\")) : 2 === C2 && (I2 = (A2[g2 - 2] << 8) + A2[g2 - 1], B2.push(lg[I2 >> 10] + lg[I2 >> 4 & 63] + lg[I2 << 2 & 63] + \"=\"));\n  return B2.join(\"\");\n} }, lg = [], Lg = [], Hg = \"undefined\" != typeof Uint8Array ? Uint8Array : Array, tg = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\", pg = 0, eg = tg.length; pg < eg; ++pg) lg[pg] = tg[pg], Lg[tg.charCodeAt(pg)] = pg;\nfunction rg(A2) {\n  var I2 = A2.length;\n  if (I2 % 4 > 0) throw new Error(\"Invalid string. Length must be a multiple of 4\");\n  var g2 = A2.indexOf(\"=\");\n  return -1 === g2 && (g2 = I2), [g2, g2 === I2 ? 0 : 4 - g2 % 4];\n}\nfunction ng(A2, I2, g2) {\n  for (var C2, B2, Q2 = [], E2 = I2; E2 < g2; E2 += 3) C2 = (A2[E2] << 16 & 16711680) + (A2[E2 + 1] << 8 & 65280) + (255 & A2[E2 + 2]), Q2.push(lg[(B2 = C2) >> 18 & 63] + lg[B2 >> 12 & 63] + lg[B2 >> 6 & 63] + lg[63 & B2]);\n  return Q2.join(\"\");\n}\nfunction dg() {\n  return qg(this, void 0, void 0, function* () {\n    yield mA(Yg.toByteArray(\"AGFzbQEAAAAB6QuXAWACf38AYAN/f38AYAR/f39/AGACf38Bf2ADf39/AX9gAX8Bf2ABfwBgBX9/f39/AGACf3wBf2AGf39/f31/AGABfwF9YAV/f399fwBgBn9/f39/fwBgA39/fQBgBX9/f399AGADf3x/AGAEf39/fwF/YAZ/f39/f30AYAR/f399AX9gBH9/f38BfWAAAX9gA39/fwF9YAN/f30Bf2ACf30AYAZ/f39/f38Bf2ACf3wBfWADf3x9AGADf398AGAEf3x/fwBgDH9/f39/f39/f399fwF/YAd/f39/f39/AGABfQF9YAh/f39/f39/fwBgAn9/AX1gBX9/f39/AX9gCX9/f39/f39/fwBgAX8BfGAIf39/f39/f30AYAN/f38BfmAAAGALf39/f39/f399fX8AYAV/f31/fwBgA35+fwF+YAN/fH8BfWADfX19AX9gD39/f39/f39/f39/f39/fwBgBn99f39/fQBgBn98f39/fwBgA398fwF/YAV/fH9/fwBgBn98fX19fQBgAn19AX9gBX98fX19AGABfAF/YAR/fX9/AGAKf319f39/f39/fwBgCn9/f39/f39/f38AYAl/f39/f399f38Bf2AKf39/f39/fX9/fwBgBn99fX9/fQBgC39/f39/f39/f39/AGAEf31/fwF/YAZ/f39/fX0AYA9/f39/f39/f39/f3x/fH8AYAV/fX1/fwBgA399fQBgD39/f39/fX9/f39/fH98fwF/YAF9AX9gA398fAF/YAV/fH99fQBgBH98fX8AYAJ/fABgAn98AXxgBX9/fHx/AXxgA319fwF/YAR9fX19AX9gDn9/f39/f39/f39/f39/AGAHf39/f39/fQBgC39/f39/f39/fX9/AGAPf39/f39/f39/f39/fX1/AGAMf31/f39/f39/f39/AX9gCH9/f399f39/AGAGf39/f39/AX1gCH9/f39/fX9/AGAHf39/f39/fwF9YAl/f39/f39/f30AYAl/f39/f31/f38AYBJ/f39/f39/f39/f399f319fX0AYAh/f39/fX1/fwBgCX9/f39/f31/fwBgC39/f31/f39/fX9/AGAGf399f39/AGALf39/f39/f399fX8Bf2AIf31/f39/f38AYAp/fX9/f39/f39/AGAMf39/f31/f39/f39/AGAHf39/f39/fQF/YAZ/fX9/f38AYAZ/fH9/f30Bf2AIf31/fX99f38AYAt/f39/fX9/f39/fwBgA39+fgF/YAR/f31/AGAFf39+fn8AYAd/f39/f31/AX9gEn9/f39/f399fX9/f39/fH98fwF/YBB/f39/f31/f39/f398f3x/AGAKf39/f39/f39/fwF/YAZ/f39/fX0Bf2AGf3x/f31/AX9gCn98f39/f399fX8Bf2Abf39/f319f39/f39/f39/f39/fX1/f399f39/AXxgDX9/f39/f399fX19fX0AYA1/f39/f39/f398f3x/AGAbf39/f39/f31/f399fX1/f39/f39/f319f3x/AGAHf39/f399fwF9YAl/f39/f39+fn4AYAZ/f39/f30Bf2ANf39/f39/f39/fH98fwF/YAx/f39/f39/f3x/fH8Bf2AGf399f399AGAHf39/f39/fwF/YAV/fH9/fwF/YAh/fH98f319fwF/YAN/fn8Bf2AGf3x/f31/AX1gA35/fwF/YAJ9fQF9YAV/fH9/fQF/YAR/fH9/AX9gDn99f39/fH9/f31/f39/AGAEf3x8fQF/YAV9fX1/fwF/YAN9f38Bf2AHf3x9f39/fwBgBn98fX9/fwBgBH9/f30AYBN/f39/f39/f39/f39/f39/f39/AGAJf31/f39/f39/AGACf34AYAN/fH8BfGAFf39/f30Bf2AGf3x/fX19AGAHf3x/fX19fQBgBn9/fX19fQBgBH99fX8AYAd/fH19fX1/AGAGf3x9fX1/AGAFf398f38AYAV/f35/fwBgBH9+f38AAoUGFgN3YmcVX193YmluZGdlbl9udW1iZXJfbmV3ADUDd2JnFl9fd2JpbmRnZW5fYm9vbGVhbl9nZXQABQN3YmcaX193YmluZGdlbl9vYmplY3RfZHJvcF9yZWYABgN3YmcVX193YmluZGdlbl9udW1iZXJfZ2V0AAADd2JnFl9fd2JpbmRnZW5faXNfZnVuY3Rpb24ABQN3YmckX193YmdfcmF3cmF5Y29sbGlkZXJpbnRlcnNlY3Rpb25fbmV3AAUDd2JnHl9fd2JnX3Jhd2NvbnRhY3Rmb3JjZWV2ZW50X25ldwAFA3diZxtfX3diZ19jYWxsX2IzY2E3YzYwNTFmOWJlYzEABAN3YmcbX193Ymdf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aW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX3NldFNsaWRlRW5hYmxlZADBCzFyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2F1dG9zdGVwTWF4SGVpZ2h0AKAKMHJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfYXV0b3N0ZXBNaW5XaWR0aAChCj1yYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2F1dG9zdGVwSW5jbHVkZXNEeW5hbWljQm9kaWVzAOIKL3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfYXV0b3N0ZXBFbmFibGVkANMLLnJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfZW5hYmxlQXV0b3N0ZXAAvQovcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9kaXNhYmxlQXV0b3N0ZXAA1AsycmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9tYXhTbG9wZUNsaW1iQW5nbGUA7As1cmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9zZXRNYXhTbG9wZUNsaW1iQW5nbGUA1QsycmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9taW5TbG9wZVNsaWRlQW5nbGUA7Qs1cmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9zZXRNaW5TbG9wZVNsaWRlQW5nbGUA1gs0cmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9zbmFwVG9Hcm91bmREaXN0YW5jZQDGCjJyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2VuYWJsZVNuYXBUb0dyb3VuZAC7CzNyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2Rpc2FibGVTbmFwVG9Hcm91bmQA1wszcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9zbmFwVG9Hcm91bmRFbmFibGVkANgLN3Jhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfY29tcHV0ZUNvbGxpZGVyTW92ZW1lbnQApgUwcmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl9jb21wdXRlZE1vdmVtZW50AOkHMHJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfY29tcHV0ZWRHcm91bmRlZADuCzVyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX251bUNvbXB1dGVkQ29sbGlzaW9ucwDvCzFyYXdraW5lbWF0aWNjaGFyYWN0ZXJjb250cm9sbGVyX2NvbXB1dGVkQ29sbGlzaW9uAJsIIF9fd2JnX3Jhd2NoYXJhY3RlcmNvbGxpc2lvbl9mcmVlAPALGXJhd2NoYXJhY3RlcmNvbGxpc2lvbl9uZXcAuAkccmF3Y2hhcmFjdGVyY29sbGlzaW9uX2hhbmRsZQDxCy1yYXdjaGFyYWN0ZXJjb2xsaXNpb25fdHJhbnNsYXRpb25EZWx0YUFwcGxpZWQA6gcvcmF3Y2hhcmFjdGVyY29sbGlzaW9uX3RyYW5zbGF0aW9uRGVsdGFSZW1haW5pbmcA6wcZcmF3Y2hhcmFjdGVyY29sbGlzaW9uX3RvaQDyCyNyYXdjaGFyYWN0ZXJjb2xsaXNpb25fd29ybGRXaXRuZXNzMQDsByNyYXdjaGFyYWN0ZXJjb2xsaXNpb25fd29ybGRXaXRuZXNzMgCNBSJyYXdjaGFyYWN0ZXJjb2xsaXNpb25fd29ybGROb3JtYWwxAO0HInJhd2NoYXJhY3RlcmNvbGxpc2lvbl93b3JsZE5vcm1hbDIAuQUtX193YmdfcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9mcmVlAO4HJnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfbmV3ALkJOHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfY3VycmVudF92ZWhpY2xlX3NwZWVkAPMLKnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfY2hhc3NpcwD0CzByYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX2luZGV4X3VwX2F4aXMA9Qs0cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfaW5kZXhfdXBfYXhpcwDZCzVyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX2luZGV4X2ZvcndhcmRfYXhpcwD2CzlyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF9pbmRleF9mb3J3YXJkX2F4aXMA2gsscmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9hZGRfd2hlZWwA0gUtcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9udW1fd2hlZWxzAPcLMXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfdXBkYXRlX3ZlaGljbGUAgQZEcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9jaGFzc2lzX2Nvbm5lY3Rpb25fcG9pbnRfY3MAvAZIcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfY2hhc3Npc19jb25uZWN0aW9uX3BvaW50X2NzAO8HP3Jhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc3VzcGVuc2lvbl9yZXN0X2xlbmd0aADpCENyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9zdXNwZW5zaW9uX3Jlc3RfbGVuZ3RoANAKPnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfbWF4X3N1c3BlbnNpb25fdHJhdmVsAOoIQnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX21heF9zdXNwZW5zaW9uX3RyYXZlbADRCi9yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3JhZGl1cwDrCDNyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9yYWRpdXMA0go9cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdXNwZW5zaW9uX3N0aWZmbmVzcwDsCEFyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9zdXNwZW5zaW9uX3N0aWZmbmVzcwDTCj9yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3N1c3BlbnNpb25fY29tcHJlc3Npb24A7QhDcmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfc3VzcGVuc2lvbl9jb21wcmVzc2lvbgDUCj5yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3N1c3BlbnNpb25fcmVsYXhhdGlvbgDuCEJyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9zdXNwZW5zaW9uX3JlbGF4YXRpb24A1Qo9cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9tYXhfc3VzcGVuc2lvbl9mb3JjZQDvCEFyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3NldF93aGVlbF9tYXhfc3VzcGVuc2lvbl9mb3JjZQDWCi5yYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2JyYWtlAPAIMnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX2JyYWtlANcKMXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc3RlZXJpbmcA8Qg1cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfc3RlZXJpbmcA2Ao1cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9lbmdpbmVfZm9yY2UA8gg5cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfZW5naW5lX2ZvcmNlANkKNXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfZGlyZWN0aW9uX2NzAL0GOXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX2RpcmVjdGlvbl9jcwDwBzByYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2F4bGVfY3MAvgY0cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfYXhsZV9jcwDxBzZyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2ZyaWN0aW9uX3NsaXAA8wg6cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl9zZXRfd2hlZWxfZnJpY3Rpb25fc2xpcADaCkByYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX3NpZGVfZnJpY3Rpb25fc3RpZmZuZXNzAPQIRHJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfc2V0X3doZWVsX3NpZGVfZnJpY3Rpb25fc3RpZmZuZXNzANsKMXJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfcm90YXRpb24A9Qg4cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9mb3J3YXJkX2ltcHVsc2UA9gg1cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zaWRlX2ltcHVsc2UA9wg5cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9zdXNwZW5zaW9uX2ZvcmNlAPgIOnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfY29udGFjdF9ub3JtYWxfd3MAvwY5cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9jb250YWN0X3BvaW50X3dzAMAGOnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfc3VzcGVuc2lvbl9sZW5ndGgA+Qg2cmF3ZHluYW1pY3JheWNhc3R2ZWhpY2xlY29udHJvbGxlcl93aGVlbF9oYXJkX3BvaW50X3dzAMEGNnJhd2R5bmFtaWNyYXljYXN0dmVoaWNsZWNvbnRyb2xsZXJfd2hlZWxfaXNfaW5fY29udGFjdACCCjZyYXdkeW5hbWljcmF5Y2FzdHZlaGljbGVjb250cm9sbGVyX3doZWVsX2dyb3VuZF9vYmplY3QAkggXX193YmdfcmF3Y2Nkc29sdmVyX2ZyZWUAjQoQcmF3Y2Nkc29sdmVyX25ldwCOChxyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRUeXBlAMUHI3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEJvZHlIYW5kbGUxAPoII3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEJvZHlIYW5kbGUyAMQIH3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEZyYW1lWDEAkQYfcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50RnJhbWVYMgCSBh9yYXdpbXB1bHNlam9pbnRzZXRfam9pbnRBbmNob3IxAJMGH3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludEFuY2hvcjIAlAYicmF3aW1wdWxzZWpvaW50c2V0X2pvaW50U2V0QW5jaG9yMQDCByJyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRTZXRBbmNob3IyAMMHJ3Jhd2ltcHVsc2Vqb2ludHNldF9qb2ludENvbnRhY3RzRW5hYmxlZADFCCpyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRTZXRDb250YWN0c0VuYWJsZWQAugklcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50TGltaXRzRW5hYmxlZAC7ByFyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRMaW1pdHNNaW4A3wchcmF3aW1wdWxzZWpvaW50c2V0X2pvaW50TGltaXRzTWF4AOAHIXJhd2ltcHVsc2Vqb2ludHNldF9qb2ludFNldExpbWl0cwC8BytyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRDb25maWd1cmVNb3Rvck1vZGVsAMYHLnJhd2ltcHVsc2Vqb2ludHNldF9qb2ludENvbmZpZ3VyZU1vdG9yVmVsb2NpdHkAqggucmF3aW1wdWxzZWpvaW50c2V0X2pvaW50Q29uZmlndXJlTW90b3JQb3NpdGlvbgCrCCZyYXdpbXB1bHNlam9pbnRzZXRfam9pbnRDb25maWd1cmVNb3RvcgCsCB1fX3diZ19yYXdpbXB1bHNlam9pbnRzZXRfZnJlZQCPChZyYXdpbXB1bHNlam9pbnRzZXRfbmV3AJAKHnJhd2ltcHVsc2Vqb2ludHNldF9jcmVhdGVKb2ludADfCBlyYXdpbXB1bHNlam9pbnRzZXRfcmVtb3ZlANcJFnJhd2ltcHVsc2Vqb2ludHNldF9sZW4A+AsbcmF3aW1wdWxzZWpvaW50c2V0X2NvbnRhaW5zAN0JJXJhd2ltcHVsc2Vqb2ludHNldF9mb3JFYWNoSm9pbnRIYW5kbGUA7AUycmF3aW1wdWxzZWpvaW50c2V0X2ZvckVhY2hKb2ludEF0dGFjaGVkVG9SaWdpZEJvZHkAqAkjX193YmdfcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX2ZyZWUA+QsccmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX25ldwCDChtyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfZHQA+gskcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX2NvbnRhY3RfZXJwALgKLHJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19udW1Tb2x2ZXJJdGVyYXRpb25zAPsLJ3Jhd2ludGVncmF0aW9ucGFyYW1ldGVyc19tYXhDY2RTdWJzdGVwcwD8CyNyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfbGVuZ3RoVW5pdAD9Cx9yYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X2R0ANsLNnJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19zZXRfY29udGFjdF9uYXR1cmFsX2ZyZXF1ZW5jeQDcCzlyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X25vcm1hbGl6ZWRBbGxvd2VkTGluZWFyRXJyb3IA3Qs5cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9ub3JtYWxpemVkUHJlZGljdGlvbkRpc3RhbmNlAN4LMHJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19zZXRfbnVtU29sdmVySXRlcmF0aW9ucwCXCypyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X21pbklzbGFuZFNpemUA3wsrcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9tYXhDY2RTdWJzdGVwcwDgCydyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X2xlbmd0aFVuaXQA4QsycmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3N3aXRjaFRvU3RhbmRhcmRQZ3NTb2x2ZXIAhwo0cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3N3aXRjaFRvU21hbGxTdGVwc1Bnc1NvbHZlcgCICkRyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc3dpdGNoVG9TbWFsbFN0ZXBzUGdzU29sdmVyV2l0aG91dFdhcm1zdGFydACJChtfX3diZ19yYXdpc2xhbmRtYW5hZ2VyX2ZyZWUAkQoUcmF3aXNsYW5kbWFuYWdlcl9uZXcA2AktcmF3aXNsYW5kbWFuYWdlcl9mb3JFYWNoQWN0aXZlUmlnaWRCb2R5SGFuZGxlAK8JGl9fd2JnX3Jhd2dlbmVyaWNqb2ludF9mcmVlAP4LF3Jhd2dlbmVyaWNqb2ludF9nZW5lcmljAPwCFnJhd2dlbmVyaWNqb2ludF9zcHJpbmcAqgUUcmF3Z2VuZXJpY2pvaW50X3JvcGUAsQUZcmF3Z2VuZXJpY2pvaW50X3NwaGVyaWNhbAC1BRlyYXdnZW5lcmljam9pbnRfcHJpc21hdGljAI4DFXJhd2dlbmVyaWNqb2ludF9maXhlZAD+AhhyYXdnZW5lcmljam9pbnRfcmV2b2x1dGUAyAMecmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRUeXBlAKcGIXJhd211bHRpYm9keWpvaW50c2V0X2pvaW50RnJhbWVYMQDABSFyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludEZyYW1lWDIAwQUhcmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRBbmNob3IxAMIFIXJhd211bHRpYm9keWpvaW50c2V0X2pvaW50QW5jaG9yMgDDBSlyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludENvbnRhY3RzRW5hYmxlZACPByxyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludFNldENvbnRhY3RzRW5hYmxlZACiBydyYXdtdWx0aWJvZHlqb2ludHNldF9qb2ludExpbWl0c0VuYWJsZWQAjQYjcmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRMaW1pdHNNaW4AwgYjcmF3bXVsdGlib2R5am9pbnRzZXRfam9pbnRMaW1pdHNNYXgAwwYfX193YmdfcmF3bXVsdGlib2R5am9pbnRzZXRfZnJlZQCSChhyYXdtdWx0aWJvZHlqb2ludHNldF9uZXcAkwogcmF3bXVsdGlib2R5am9pbnRzZXRfY3JlYXRlSm9pbnQA4AgbcmF3bXVsdGlib2R5am9pbnRzZXRfcmVtb3ZlALkKHXJhd211bHRpYm9keWpvaW50c2V0X2NvbnRhaW5zALQIJ3Jhd211bHRpYm9keWpvaW50c2V0X2ZvckVhY2hKb2ludEhhbmRsZQCwCTRyYXdtdWx0aWJvZHlqb2ludHNldF9mb3JFYWNoSm9pbnRBdHRhY2hlZFRvUmlnaWRCb2R5AKkJHXJhd3JpZ2lkYm9keXNldF9yYlRyYW5zbGF0aW9uAJUGGnJhd3JpZ2lkYm9keXNldF9yYlJvdGF0aW9uAJYGF3Jhd3JpZ2lkYm9keXNldF9yYlNsZWVwAPUJHHJhd3JpZ2lkYm9keXNldF9yYklzU2xlZXBpbmcAxggacmF3cmlnaWRib2R5c2V0X3JiSXNNb3ZpbmcA+wghcmF3cmlnaWRib2R5c2V0X3JiTmV4dFRyYW5zbGF0aW9uAJcGHnJhd3JpZ2lkYm9keXNldF9yYk5leHRSb3RhdGlvbgCYBiByYXdyaWdpZGJvZHlzZXRfcmJTZXRUcmFuc2xhdGlvbgDcCh1yYXdyaWdpZGJvZHlzZXRfcmJTZXRSb3RhdGlvbgDHChtyYXdyaWdpZGJvZHlzZXRfcmJTZXRMaW52ZWwA1QcbcmF3cmlnaWRib2R5c2V0X3JiU2V0QW5ndmVsANYHLXJhd3JpZ2lkYm9keXNldF9yYlNldE5leHRLaW5lbWF0aWNUcmFuc2xhdGlvbgC8CCpyYXdyaWdpZGJvZHlzZXRfcmJTZXROZXh0S2luZW1hdGljUm90YXRpb24A/QY2cmF3cmlnaWRib2R5c2V0X3JiUmVjb21wdXRlTWFzc1Byb3BlcnRpZXNGcm9tQ29sbGlkZXJzAPIHI3Jhd3JpZ2lkYm9keXNldF9yYlNldEFkZGl0aW9uYWxNYXNzAJwILXJhd3JpZ2lkYm9keXNldF9yYlNldEFkZGl0aW9uYWxNYXNzUHJvcGVydGllcwCyBRhyYXdyaWdpZGJvZHlzZXRfcmJMaW52ZWwAmQYYcmF3cmlnaWRib2R5c2V0X3JiQW5ndmVsAJoGInJhd3JpZ2lkYm9keXNldF9yYkxvY2tUcmFuc2xhdGlvbnMA7wYocmF3cmlnaWRib2R5c2V0X3JiU2V0RW5hYmxlZFRyYW5zbGF0aW9ucwCqCh9yYXdyaWdpZGJvZHlzZXRfcmJMb2NrUm90YXRpb25zAPAGJXJhd3JpZ2lkYm9keXNldF9yYlNldEVuYWJsZWRSb3RhdGlvbnMA0wUgcmF3cmlnaWRib2R5c2V0X3JiRG9taW5hbmNlR3JvdXAAxwgjcmF3cmlnaWRib2R5c2V0X3JiU2V0RG9taW5hbmNlR3JvdXAAtQgbcmF3cmlnaWRib2R5c2V0X3JiRW5hYmxlQ2NkALsJJnJhd3JpZ2lkYm9keXNldF9yYlNldFNvZnRDY2RQcmVkaWN0aW9uAN4JFnJhd3JpZ2lkYm9keXNldF9yYk1hc3MAnQgZcmF3cmlnaWRib2R5c2V0X3JiSW52TWFzcwDICCJyYXdyaWdpZGJvZHlzZXRfcmJFZmZlY3RpdmVJbnZNYXNzAJsGGnJhd3JpZ2lkYm9keXNldF9yYkxvY2FsQ29tAJwGGnJhd3JpZ2lkYm9keXNldF9yYldvcmxkQ29tAJ0GKXJhd3JpZ2lkYm9keXNldF9yYkludlByaW5jaXBhbEluZXJ0aWFTcXJ0AJ4GLHJhd3JpZ2lkYm9keXNldF9yYlByaW5jaXBhbEluZXJ0aWFMb2NhbEZyYW1lAJ8GInJhd3JpZ2lkYm9keXNldF9yYlByaW5jaXBhbEluZXJ0aWEA3wYucmF3cmlnaWRib2R5c2V0X3JiRWZmZWN0aXZlV29ybGRJbnZJbmVydGlhU3FydADUBSlyYXdyaWdpZGJvZHlzZXRfcmJFZmZlY3RpdmVBbmd1bGFySW5lcnRpYQCgBhhyYXdyaWdpZGJvZHlzZXRfcmJXYWtlVXAAtggecmF3cmlnaWRib2R5c2V0X3JiSXNDY2RFbmFibGVkAMkII3Jhd3JpZ2lkYm9keXNldF9yYlNvZnRDY2RQcmVkaWN0aW9uAMoIHnJhd3JpZ2lkYm9keXNldF9yYk51bUNvbGxpZGVycwDiBxpyYXdyaWdpZGJvZHlzZXRfcmJDb2xsaWRlcgCRBxpyYXdyaWdpZGJvZHlzZXRfcmJCb2R5VHlwZQDLCB1yYXdyaWdpZGJvZHlzZXRfcmJTZXRCb2R5VHlwZQC9CBlyYXdyaWdpZGJvZHlzZXRfcmJJc0ZpeGVkALcIHXJhd3JpZ2lkYm9keXNldF9yYklzS2luZW1hdGljALgIG3Jhd3JpZ2lkYm9keXNldF9yYklzRHluYW1pYwC+CB9yYXdyaWdpZGJvZHlzZXRfcmJMaW5lYXJEYW1waW5nAMwIIHJhd3JpZ2lkYm9keXNldF9yYkFuZ3VsYXJEYW1waW5nAM0IInJhd3JpZ2lkYm9keXNldF9yYlNldExpbmVhckRhbXBpbmcA3wkjcmF3cmlnaWRib2R5c2V0X3JiU2V0QW5ndWxhckRhbXBpbmcA4AkccmF3cmlnaWRib2R5c2V0X3JiU2V0RW5hYmxlZAC8CRtyYXdyaWdpZGJvZHlzZXRfcmJJc0VuYWJsZWQAzggecmF3cmlnaWRib2R5c2V0X3JiR3Jhdml0eVNjYWxlAM8IIXJhd3JpZ2lkYm9keXNldF9yYlNldEdyYXZpdHlTY2FsZQDjBx1yYXdyaWdpZGJvZHlzZXRfcmJSZXNldEZvcmNlcwC9CR5yYXdyaWdpZGJvZHlzZXRfcmJSZXNldFRvcnF1ZXMAvgkacmF3cmlnaWRib2R5c2V0X3JiQWRkRm9yY2UA1wcecmF3cmlnaWRib2R5c2V0X3JiQXBwbHlJbXB1bHNlANgHG3Jhd3JpZ2lkYm9keXNldF9yYkFkZFRvcnF1ZQDZByRyYXdyaWdpZGJvZHlzZXRfcmJBcHBseVRvcnF1ZUltcHVsc2UA2gchcmF3cmlnaWRib2R5c2V0X3JiQWRkRm9yY2VBdFBvaW50APEGJXJhd3JpZ2lkYm9keXNldF9yYkFwcGx5SW1wdWxzZUF0UG9pbnQA8gUscmF3cmlnaWRib2R5c2V0X3JiQWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMA0AgvcmF3cmlnaWRib2R5c2V0X3JiU2V0QWRkaXRpb25hbFNvbHZlckl0ZXJhdGlvbnMA4QkacmF3cmlnaWRib2R5c2V0X3JiVXNlckRhdGEA0QgdcmF3cmlnaWRib2R5c2V0X3JiU2V0VXNlckRhdGEAlgkbcmF3cmlnaWRib2R5c2V0X3JiVXNlckZvcmNlAOYGHHJhd3JpZ2lkYm9keXNldF9yYlVzZXJUb3JxdWUA5wYaX193YmdfcmF3cmlnaWRib2R5c2V0X2ZyZWUA5AcTcmF3cmlnaWRib2R5c2V0X25ldwDlBx9yYXdyaWdpZGJvZHlzZXRfY3JlYXRlUmlnaWRCb2R5ALMDFnJhd3JpZ2lkYm9keXNldF9yZW1vdmUAtgUYcmF3cmlnaWRib2R5c2V0X2NvbnRhaW5zAOIJJnJhd3JpZ2lkYm9keXNldF9mb3JFYWNoUmlnaWRCb2R5SGFuZGxlALEJOXJhd3JpZ2lkYm9keXNldF9wcm9wYWdhdGVNb2RpZmllZEJvZHlQb3NpdGlvbnNUb0NvbGxpZGVycwCiChhfX3diZ19yYXdicm9hZHBoYXNlX2ZyZWUAlAoRcmF3YnJvYWRwaGFzZV9uZXcAgwgccmF3Y29sbGlkZXJzZXRfY29UcmFuc2xhdGlvbgChBhlyYXdjb2xsaWRlcnNldF9jb1JvdGF0aW9uAKIGH3Jhd2NvbGxpZGVyc2V0X2NvU2V0VHJhbnNsYXRpb24AvwgocmF3Y29sbGlkZXJzZXRfY29TZXRUcmFuc2xhdGlvbldydFBhcmVudACjCBxyYXdjb2xsaWRlcnNldF9jb1NldFJvdGF0aW9uAPsGJXJhd2NvbGxpZGVyc2V0X2NvU2V0Um90YXRpb25XcnRQYXJlbnQA/QoZcmF3Y29sbGlkZXJzZXRfY29Jc1NlbnNvcgDSCBpyYXdjb2xsaWRlcnNldF9jb1NoYXBlVHlwZQCrCiByYXdjb2xsaWRlcnNldF9jb0hhbGZzcGFjZU5vcm1hbACoBRxyYXdjb2xsaWRlcnNldF9jb0hhbGZFeHRlbnRzAKQFH3Jhd2NvbGxpZGVyc2V0X2NvU2V0SGFsZkV4dGVudHMAqgkXcmF3Y29sbGlkZXJzZXRfY29SYWRpdXMAnggacmF3Y29sbGlkZXJzZXRfY29TZXRSYWRpdXMAiwsbcmF3Y29sbGlkZXJzZXRfY29IYWxmSGVpZ2h0AJ8IHnJhd2NvbGxpZGVyc2V0X2NvU2V0SGFsZkhlaWdodACMCxxyYXdjb2xsaWRlcnNldF9jb1JvdW5kUmFkaXVzAKAIH3Jhd2NvbGxpZGVyc2V0X2NvU2V0Um91bmRSYWRpdXMAjQsZcmF3Y29sbGlkZXJzZXRfY29WZXJ0aWNlcwCEBhhyYXdjb2xsaWRlcnNldF9jb0luZGljZXMAhQYdcmF3Y29sbGlkZXJzZXRfY29UcmlNZXNoRmxhZ3MAhAchcmF3Y29sbGlkZXJzZXRfY29IZWlnaHRGaWVsZEZsYWdzAIUHI3Jhd2NvbGxpZGVyc2V0X2NvSGVpZ2h0ZmllbGRIZWlnaHRzAIYGIXJhd2NvbGxpZGVyc2V0X2NvSGVpZ2h0ZmllbGRTY2FsZQCMBSFyYXdjb2xsaWRlcnNldF9jb0hlaWdodGZpZWxkTlJvd3MAhwYhcmF3Y29sbGlkZXJzZXRfY29IZWlnaHRmaWVsZE5Db2xzAIgGF3Jhd2NvbGxpZGVyc2V0X2NvUGFyZW50APMHG3Jhd2NvbGxpZGVyc2V0X2NvU2V0RW5hYmxlZADhBxpyYXdjb2xsaWRlcnNldF9jb0lzRW5hYmxlZADACB9yYXdjb2xsaWRlcnNldF9jb1NldENvbnRhY3RTa2luAOMJHHJhd2NvbGxpZGVyc2V0X2NvQ29udGFjdFNraW4A0wgZcmF3Y29sbGlkZXJzZXRfY29GcmljdGlvbgDUCBxyYXdjb2xsaWRlcnNldF9jb1Jlc3RpdHV0aW9uANUIGHJhd2NvbGxpZGVyc2V0X2NvRGVuc2l0eQD8CBVyYXdjb2xsaWRlcnNldF9jb01hc3MA/QgXcmF3Y29sbGlkZXJzZXRfY29Wb2x1bWUA/gggcmF3Y29sbGlkZXJzZXRfY29Db2xsaXNpb25Hcm91cHMAiwgdcmF3Y29sbGlkZXJzZXRfY29Tb2x2ZXJHcm91cHMAjAgccmF3Y29sbGlkZXJzZXRfY29BY3RpdmVIb29rcwDWCCVyYXdjb2xsaWRlcnNldF9jb0FjdGl2ZUNvbGxpc2lvblR5cGVzANcIHXJhd2NvbGxpZGVyc2V0X2NvQWN0aXZlRXZlbnRzANgIK3Jhd2NvbGxpZGVyc2V0X2NvQ29udGFjdEZvcmNlRXZlbnRUaHJlc2hvbGQA2QgecmF3Y29sbGlkZXJzZXRfY29Db250YWluc1BvaW50AO0FGnJhd2NvbGxpZGVyc2V0X2NvQ2FzdFNoYXBlAKIDHXJhd2NvbGxpZGVyc2V0X2NvQ2FzdENvbGxpZGVyAMsEIHJhd2NvbGxpZGVyc2V0X2NvSW50ZXJzZWN0c1NoYXBlAMYEHXJhd2NvbGxpZGVyc2V0X2NvQ29udGFjdFNoYXBlAPABIHJhd2NvbGxpZGVyc2V0X2NvQ29udGFjdENvbGxpZGVyAKcFHXJhd2NvbGxpZGVyc2V0X2NvUHJvamVjdFBvaW50AIcFHnJhd2NvbGxpZGVyc2V0X2NvSW50ZXJzZWN0c1JheQCCBRhyYXdjb2xsaWRlcnNldF9jb0Nhc3RSYXkA5wQkcmF3Y29sbGlkZXJzZXRfY29DYXN0UmF5QW5kR2V0Tm9ybWFsAJ0DGnJhd2NvbGxpZGVyc2V0X2NvU2V0U2Vuc29yAKQIH3Jhd2NvbGxpZGVyc2V0X2NvU2V0UmVzdGl0dXRpb24A5AkccmF3Y29sbGlkZXJzZXRfY29TZXRGcmljdGlvbgDlCSRyYXdjb2xsaWRlcnNldF9jb0ZyaWN0aW9uQ29tYmluZVJ1bGUA2ggncmF3Y29sbGlkZXJzZXRfY29TZXRGcmljdGlvbkNvbWJpbmVSdWxlAJsJJ3Jhd2NvbGxpZGVyc2V0X2NvUmVzdGl0dXRpb25Db21iaW5lUnVsZQDbCCpyYXdjb2xsaWRlcnNldF9jb1NldFJlc3RpdHV0aW9uQ29tYmluZVJ1bGUAnAkjcmF3Y29sbGlkZXJzZXRfY29TZXRDb2xsaXNpb25Hcm91cHMAxwcgcmF3Y29sbGlkZXJzZXRfY29TZXRTb2x2ZXJHcm91cHMAyAcfcmF3Y29sbGlkZXJzZXRfY29TZXRBY3RpdmVIb29rcwCdCSByYXdjb2xsaWRlcnNldF9jb1NldEFjdGl2ZUV2ZW50cwCeCShyYXdjb2xsaWRlcnNldF9jb1NldEFjdGl2ZUNvbGxpc2lvblR5cGVzAJ8JGXJhd2NvbGxpZGVyc2V0X2NvU2V0U2hhcGUAkgcucmF3Y29sbGlkZXJzZXRfY29TZXRDb250YWN0Rm9yY2VFdmVudFRocmVzaG9sZADmCRtyYXdjb2xsaWRlcnNldF9jb1NldERlbnNpdHkA5wkYcmF3Y29sbGlkZXJzZXRfY29TZXRNYXNzAOgJInJhd2NvbGxpZGVyc2V0X2NvU2V0TWFzc1Byb3BlcnRpZXMAugUZX193YmdfcmF3Y29sbGlkZXJzZXRfZnJlZQCTBxJyYXdjb2xsaWRlcnNldF9uZXcAlAcScmF3Y29sbGlkZXJzZXRfbGVuAP8LF3Jhd2NvbGxpZGVyc2V0X2NvbnRhaW5zAOkJHXJhd2NvbGxpZGVyc2V0X2NyZWF0ZUNvbGxpZGVyANYDFXJhd2NvbGxpZGVyc2V0X3JlbW92ZQD3BSRyYXdjb2xsaWRlcnNldF9mb3JFYWNoQ29sbGlkZXJIYW5kbGUAsgkaX193YmdfcmF3c2hhcGVjb250YWN0X2ZyZWUAgAwZX193YmdfcmF3bmFycm93cGhhc2VfZnJlZQCVChJyYXduYXJyb3dwaGFzZV9uZXcAlgohcmF3bmFycm93cGhhc2VfY29udGFjdF9wYWlyc193aXRoAL4KG3Jhd25hcnJvd3BoYXNlX2NvbnRhY3RfcGFpcgC4ByZyYXduYXJyb3dwaGFzZV9pbnRlcnNlY3Rpb25fcGFpcnNfd2l0aAC/CiByYXduYXJyb3dwaGFzZV9pbnRlcnNlY3Rpb25fcGFpcgCDCR1fX3diZ19yYXdjb250YWN0bWFuaWZvbGRfZnJlZQCBDBhyYXdjb250YWN0cGFpcl9jb2xsaWRlcjEA4woYcmF3Y29udGFjdHBhaXJfY29sbGlkZXIyAOQKInJhd2NvbnRhY3RwYWlyX251bUNvbnRhY3RNYW5pZm9sZHMA5QoecmF3Y29udGFjdHBhaXJfY29udGFjdE1hbmlmb2xkAIQIGXJhd2NvbnRhY3RtYW5pZm9sZF9ub3JtYWwAlwcbcmF3Y29udGFjdG1hbmlmb2xkX2xvY2FsX24xAJgHG3Jhd2NvbnRhY3RtYW5pZm9sZF9sb2NhbF9uMgCZBxxyYXdjb250YWN0bWFuaWZvbGRfc3Vic2hhcGUxAOYKHHJhd2NvbnRhY3RtYW5pZm9sZF9zdWJzaGFwZTIA5wofcmF3Y29udGFjdG1hbmlmb2xkX251bV9jb250YWN0cwDoCiNyYXdjb250YWN0bWFuaWZvbGRfY29udGFjdF9sb2NhbF9wMQCqBiNyYXdjb250YWN0bWFuaWZvbGRfY29udGFjdF9sb2NhbF9wMgCrBh9yYXdjb250YWN0bWFuaWZvbGRfY29udGFjdF9kaXN0AOoJH3Jhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X2ZpZDEA6wkfcmF3Y29udGFjdG1hbmlmb2xkX2NvbnRhY3RfZmlkMgDsCSJyYXdjb250YWN0bWFuaWZvbGRfY29udGFjdF9pbXB1bHNlAO0JLHJhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X3RhbmdlbnRfaW1wdWxzZV94AO4JLHJhd2NvbnRhY3RtYW5pZm9sZF9jb250YWN0X3RhbmdlbnRfaW1wdWxzZV95AO8JJnJhd2NvbnRhY3RtYW5pZm9sZF9udW1fc29sdmVyX2NvbnRhY3RzAOkKJ3Jhd2NvbnRhY3RtYW5pZm9sZF9zb2x2ZXJfY29udGFjdF9wb2ludACsBiZyYXdjb250YWN0bWFuaWZvbGRfc29sdmVyX2NvbnRhY3RfZGlzdADwCSpyYXdjb250YWN0bWFuaWZvbGRfc29sdmVyX2NvbnRhY3RfZnJpY3Rpb24AhAktcmF3Y29udGFjdG1hbmlmb2xkX3NvbHZlcl9jb250YWN0X3Jlc3RpdHV0aW9uAIUJMnJhd2NvbnRhY3RtYW5pZm9sZF9zb2x2ZXJfY29udGFjdF90YW5nZW50X3ZlbG9jaXR5AKMGHV9fd2JnX3Jhd3BvaW50cHJvamVjdGlvbl9mcmVlAIIMGHJhd3BvaW50cHJvamVjdGlvbl9wb2ludAD0BxtyYXdwb2ludHByb2plY3Rpb25faXNJbnNpZGUAgwwlX193YmdfcmF3cG9pbnRjb2xsaWRlcnByb2plY3Rpb25fZnJlZQCEDClyYXdwb2ludGNvbGxpZGVycHJvamVjdGlvbl9jb2xsaWRlckhhbmRsZQCFDCByYXdwb2ludGNvbGxpZGVycHJvamVjdGlvbl9wb2ludAD1ByNyYXdwb2ludGNvbGxpZGVycHJvamVjdGlvbl9pc0luc2lkZQCGDCZyYXdwb2ludGNvbGxpZGVycHJvamVjdGlvbl9mZWF0dXJlVHlwZQD7CyRyYXdwb2ludGNvbGxpZGVycHJvamVjdGlvbl9mZWF0dXJlSWQArAodX193YmdfcmF3cmF5aW50ZXJzZWN0aW9uX2ZyZWUAhwwcX193YmdfcmF3cmF5Y29sbGlkZXJoaXRfZnJlZQCIDBNfX3diZ19yYXdzaGFwZV9mcmVlANwID3Jhd3NoYXBlX2N1Ym9pZAC/CRRyYXdzaGFwZV9yb3VuZEN1Ym9pZACzCQ1yYXdzaGFwZV9iYWxsAPEJEnJhd3NoYXBlX2hhbGZzcGFjZQD6BRByYXdzaGFwZV9jYXBzdWxlAMkHEXJhd3NoYXBlX2N5bGluZGVyANkJFnJhd3NoYXBlX3JvdW5kQ3lsaW5kZXIAwAkNcmF3c2hhcGVfY29uZQDaCRJyYXdzaGFwZV9yb3VuZENvbmUAwQkRcmF3c2hhcGVfcG9seWxpbmUAhQgQcmF3c2hhcGVfdHJpbWVzaAD2BxRyYXdzaGFwZV9oZWlnaHRmaWVsZAC9BRByYXdzaGFwZV9zZWdtZW50ANoGEXJhd3NoYXBlX3RyaWFuZ2xlANUFFnJhd3NoYXBlX3JvdW5kVHJpYW5nbGUAzgUTcmF3c2hhcGVfY29udmV4SHVsbACTCBhyYXdzaGFwZV9yb3VuZENvbnZleEh1bGwAjQgTcmF3c2hhcGVfY29udmV4TWVzaADEBxhyYXdzaGFwZV9yb3VuZENvbnZleE1lc2gAvQcScmF3c2hhcGVfY2FzdFNoYXBlALUBGHJhd3NoYXBlX2ludGVyc2VjdHNTaGFwZQDJAxVyYXdzaGFwZV9jb250YWN0U2hhcGUA1wEWcmF3c2hhcGVfY29udGFpbnNQb2ludAD0BBVyYXdzaGFwZV9wcm9qZWN0UG9pbnQApAQWcmF3c2hhcGVfaW50ZXJzZWN0c1JheQClBBByYXdzaGFwZV9jYXN0UmF5APsDHHJhd3NoYXBlX2Nhc3RSYXlBbmRHZXROb3JtYWwAzwIaX193YmdfcmF3c2hhcGVjYXN0aGl0X2ZyZWUAiQwYcmF3c2hhcGVjYXN0aGl0X3dpdG5lc3MxAPcHF3Jhd3NoYXBlY2FzdGhpdF9ub3JtYWwxAPgHF3Jhd3NoYXBlY2FzdGhpdF9ub3JtYWwyAPkHIl9fd2JnX3Jhd2NvbGxpZGVyc2hhcGVjYXN0aGl0X2ZyZWUAigwmcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfdGltZV9vZl9pbXBhY3QAiwwgcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfd2l0bmVzczEA+gcgcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfd2l0bmVzczIA+wcPcmF3cm90YXRpb25fbmV3AOoKFHJhd3JvdGF0aW9uX2lkZW50aXR5AI4LDXJhd3JvdGF0aW9uX3gAjAwNcmF3cm90YXRpb25fdwCNDA5yYXd2ZWN0b3JfemVybwC8Cw1yYXd2ZWN0b3JfbmV3AIQLD3Jhd3ZlY3Rvcl9zZXRfeADiCw9yYXd2ZWN0b3Jfc2V0X3oA4wsNcmF3dmVjdG9yX3h5egCGCQ1yYXd2ZWN0b3JfeXh6AIcJDXJhd3ZlY3Rvcl96eHkAiAkNcmF3dmVjdG9yX3h6eQCJCQ1yYXd2ZWN0b3JfeXp4AIoJDXJhd3ZlY3Rvcl96eXgAiwkWcmF3c2RwbWF0cml4M19lbGVtZW50cwDbByFfX3diZ19yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX2ZyZWUAtQoacmF3ZGVidWdyZW5kZXJwaXBlbGluZV9uZXcArQgfcmF3ZGVidWdyZW5kZXJwaXBlbGluZV92ZXJ0aWNlcwCMCR1yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX2NvbG9ycwCNCR1yYXdkZWJ1Z3JlbmRlcnBpcGVsaW5lX3JlbmRlcgCjBRhfX3diZ19yYXdldmVudHF1ZXVlX2ZyZWUA5gcfX193YmdfcmF3Y29udGFjdGZvcmNlZXZlbnRfZnJlZQCODB5yYXdjb250YWN0Zm9yY2VldmVudF9jb2xsaWRlcjIAjwwgcmF3Y29udGFjdGZvcmNlZXZlbnRfdG90YWxfZm9yY2UA/AcqcmF3Y29udGFjdGZvcmNlZXZlbnRfdG90YWxfZm9yY2VfbWFnbml0dWRlAJAMKHJhd2NvbnRhY3Rmb3JjZWV2ZW50X21heF9mb3JjZV9kaXJlY3Rpb24A/QcocmF3Y29udGFjdGZvcmNlZXZlbnRfbWF4X2ZvcmNlX21hZ25pdHVkZQCRDBFyYXdldmVudHF1ZXVlX25ldwDPByJyYXdldmVudHF1ZXVlX2RyYWluQ29sbGlzaW9uRXZlbnRzAKMKJXJhd2V2ZW50cXVldWVfZHJhaW5Db250YWN0Rm9yY2VFdmVudHMApAoTcmF3ZXZlbnRxdWV1ZV9jbGVhcgCGCB1fX3diZ19yYXdwaHlzaWNzcGlwZWxpbmVfZnJlZQC2ChZyYXdwaHlzaWNzcGlwZWxpbmVfbmV3AIoEF3Jhd3BoeXNpY3NwaXBlbGluZV9zdGVwAKoEIXJhd3BoeXNpY3NwaXBlbGluZV9zdGVwV2l0aEV2ZW50cwCIBBRyYXdxdWVyeXBpcGVsaW5lX25ldwCXChdyYXdxdWVyeXBpcGVsaW5lX3VwZGF0ZQC0CRhyYXdxdWVyeXBpcGVsaW5lX2Nhc3RSYXkAogQkcmF3cXVlcnlwaXBlbGluZV9jYXN0UmF5QW5kR2V0Tm9ybWFsAOYDJXJhd3F1ZXJ5cGlwZWxpbmVfaW50ZXJzZWN0aW9uc1dpdGhSYXkA6wImcmF3cXVlcnlwaXBlbGluZV9pbnRlcnNlY3Rpb25XaXRoU2hhcGUApgQdcmF3cXVlcnlwaXBlbGluZV9wcm9qZWN0UG9pbnQAsgQqcmF3cXVlcnlwaXBlbGluZV9wcm9qZWN0UG9pbnRBbmRHZXRGZWF0dXJlALgEJ3Jhd3F1ZXJ5cGlwZWxpbmVfaW50ZXJzZWN0aW9uc1dpdGhQb2ludADLAxpyYXdxdWVyeXBpcGVsaW5lX2Nhc3RTaGFwZQDQAidyYXdxdWVyeXBpcGVsaW5lX2ludGVyc2VjdGlvbnNXaXRoU2hhcGUA3gIycmF3cXVlcnlwaXBlbGluZV9jb2xsaWRlcnNXaXRoQWFiYkludGVyc2VjdGluZ0FhYmIA6AYfX193YmdfcmF3ZGVzZXJpYWxpemVkd29ybGRfZnJlZQCYCiByYXdkZXNlcmlhbGl6ZWR3b3JsZF90YWtlR3Jhdml0eQCwBy5yYXdkZXNlcmlhbGl6ZWR3b3JsZF90YWtlSW50ZWdyYXRpb25QYXJhbWV0ZXJzAN4EJnJhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VJc2xhbmRNYW5hZ2VyAKMHI3Jhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VCcm9hZFBoYXNlAL4HJHJhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VOYXJyb3dQaGFzZQDdBB9yYXdkZXNlcmlhbGl6ZWR3b3JsZF90YWtlQm9kaWVzAK8FInJhd2Rlc2VyaWFsaXplZHdvcmxkX3Rha2VDb2xsaWRlcnMAmAUmcmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZUltcHVsc2VKb2ludHMApAcocmF3ZGVzZXJpYWxpemVkd29ybGRfdGFrZU11bHRpYm9keUpvaW50cwClBxxyYXdzZXJpYWxpemF0aW9ucGlwZWxpbmVfbmV3AJMMJXJhd3NlcmlhbGl6YXRpb25waXBlbGluZV9zZXJpYWxpemVBbGwAggMncmF3c2VyaWFsaXphdGlvbnBpcGVsaW5lX2Rlc2VyaWFsaXplQWxsAKYHJnJhd2tpbmVtYXRpY2NoYXJhY3RlcmNvbnRyb2xsZXJfb2Zmc2V0APoLNXJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19ub3JtYWxpemVkQWxsb3dlZExpbmVhckVycm9yAPMLOHJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19udW1BZGRpdGlvbmFsRnJpY3Rpb25JdGVyYXRpb25zAPULMXJhd2ludGVncmF0aW9ucGFyYW1ldGVyc19udW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMA9gsmcmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX21pbklzbGFuZFNpemUA+AsTcmF3cmlnaWRib2R5c2V0X2xlbgD/CxhyYXdzaGFwZWNvbnRhY3RfZGlzdGFuY2UA7AsecmF3cmF5aW50ZXJzZWN0aW9uX2ZlYXR1cmVUeXBlAPsLKXJhd3JheWNvbGxpZGVyaW50ZXJzZWN0aW9uX2NvbGxpZGVySGFuZGxlAIUMIXJhd3JheWludGVyc2VjdGlvbl90aW1lX29mX2ltcGFjdACLDCZyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9mZWF0dXJlVHlwZQD7CyByYXdyYXljb2xsaWRlcmhpdF9jb2xsaWRlckhhbmRsZQDxCylyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl90aW1lX29mX2ltcGFjdACLDCZyYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF9jb2xsaWRlckhhbmRsZQDxCx5yYXdyYXljb2xsaWRlcmhpdF90aW1lT2ZJbXBhY3QAiwwecmF3c2hhcGVjYXN0aGl0X3RpbWVfb2ZfaW1wYWN0AIwMDXJhd3JvdGF0aW9uX3kA+gsNcmF3cm90YXRpb25fegCLDAtyYXd2ZWN0b3JfeACMDAtyYXd2ZWN0b3JfeQD6CwtyYXd2ZWN0b3JfegCLDB5yYXdjb250YWN0Zm9yY2VldmVudF9jb2xsaWRlcjEA8Qs1cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX25vcm1hbGl6ZWRQcmVkaWN0aW9uRGlzdGFuY2UAkQwccmF3cmF5aW50ZXJzZWN0aW9uX2ZlYXR1cmVJZACsCiRyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9mZWF0dXJlSWQArAoccmF3Y29sbGlkZXJzZXRfaXNIYW5kbGVWYWxpZADpCTxyYXdpbnRlZ3JhdGlvbnBhcmFtZXRlcnNfc2V0X251bUFkZGl0aW9uYWxGcmljdGlvbkl0ZXJhdGlvbnMA2Qs1cmF3aW50ZWdyYXRpb25wYXJhbWV0ZXJzX3NldF9udW1JbnRlcm5hbFBnc0l0ZXJhdGlvbnMA2gsPcmF3dmVjdG9yX3NldF95ANsLGV9fd2JnX3Jhd2NvbnRhY3RwYWlyX2ZyZWUAgQwlX193YmdfcmF3cmF5Y29sbGlkZXJpbnRlcnNlY3Rpb25fZnJlZQCEDBZfX3diZ19yYXdyb3RhdGlvbl9mcmVlAIIMFF9fd2JnX3Jhd3ZlY3Rvcl9mcmVlAIgMGF9fd2JnX3Jhd3NkcG1hdHJpeDNfZnJlZQCHDCNfX3diZ19yYXdzZXJpYWxpemF0aW9ucGlwZWxpbmVfZnJlZQCSDBtfX3diZ19yYXdxdWVyeXBpcGVsaW5lX2ZyZWUAjQoicmF3a2luZW1hdGljY2hhcmFjdGVyY29udHJvbGxlcl91cADqBxdyYXdzaGFwZWNvbnRhY3Rfbm9ybWFsMgDqBxZyYXdzaGFwZWNvbnRhY3RfcG9pbnQxAPQHFnJhd3NoYXBlY29udGFjdF9wb2ludDIA+gcZcmF3cmF5aW50ZXJzZWN0aW9uX25vcm1hbAD6ByFyYXdyYXljb2xsaWRlcmludGVyc2VjdGlvbl9ub3JtYWwA+gcXcmF3c2hhcGVjb250YWN0X25vcm1hbDEA+wcfcmF3Y29sbGlkZXJzaGFwZWNhc3RoaXRfbm9ybWFsMQDqBx9yYXdjb2xsaWRlcnNoYXBlY2FzdGhpdF9ub3JtYWwyAOsHGHJhd3NoYXBlY2FzdGhpdF93aXRuZXNzMgD8Bx9fX3diaW5kZ2VuX2FkZF90b19zdGFja19wb2ludGVyAMsND19fd2JpbmRnZW5fZnJlZQDADBFfX3diaW5kZ2VuX21hbGxvYwDsChRfX3diaW5kZ2VuX2V4bl9zdG9yZQDdDAnLDwEAQQEL8AfRDMYNkAKPDuoN6Q2PDrgNzQ3MDegN9AmiDNQM0wymDMUK6gTRDdIN0A2BC7sKuwqsBKwEwAv3DYEHgQeIA4kDhQXLB8UEzwqKCLsIugupBYAF3ATNBdcM1wzXDNcMlQmeB7cJxQOgAsoDkQicBZULwwipBqEH3wWjC/gN2wz5DfYN9Q3aDOwNsQzrBu4G/wXyA8wHgwLKBKcJ2gTcBccFrgXWDNYM1gzWDJoI3gazCJsDigKoA/4KiguWC8kKggnjBOAFkAb1DdkM6QvYDLAMvw3tBtUMzg3PDZUHlQegBBvrDfQNkg6QDpEO/wqUA+wEkg54WETJDZsMlgecDJsMlQyjDKAMnAycDJ0MmQyaDI8OgQvGC8ULkgmgCaULkgvdCo8Ob0CDAWFDzwEuF48O9gmkDNMM1g2OCYELlgzQDYYLgQuFC6UIjgi7Ao8LxAbFBssHxQTPCooIuwi6C6kFgAXcBM0F3gzeDN4M3gyVCZ4HtwnFA6ACygOVC98F+A3bDPkN9g31Dd8M7A2zDO4GxQw6xww3xgxzyAw2gQeBB4gDiQP3DdUM1w3nC6EJyQuPDvgJpQzUDOwMgQrxDOUMrQTmDOAMnAvkDO0M9AzvDeIM5wyfB+gM8wzqDNkF8gyHC/AM0wzhDOMM6QyECu4MigbvDOsMgQuBC9UMyQzKAYkNiQ2JDYkNjA2hAf8M/wz/DP8MjQ2mAYsNiw2LDYsNjg2iAfcM9wz3DPcMjw2nAYQNhA2EDYQNkA2EBboGgQPRB5AJ3gqmC84D2gXlA/UFhg2GDYYNhg2sBZ4E2wXaAsUC8AK+C6kMkAuQC7wCpQrkBowH9w2SDfAN/A31DZMN7A3sDa0JuwbOB5ED3wqPCMIIvQv0A4EFwQPPBYUNhQ2FDYUNlQmeB7cJxQOgAsoDwwjPA/gN2wz5DfYNlw23DLwEygx/zgyqA8sMuAHMDIMDzQzFAdIHkAPvCoUK3QjDC/ED/wTHA8sF/Az8DPwM/AzyCu4BqguFBMgCkgS3BccGnwqfCrIH3ALMBP4NmA2ZDbgMwA31Bv8G3wKeCu4EmgfDCbEDwwShAogFig2KDYoNig35CoYBsQuABMYClgS4BZ8CtAq0CoII0AzmBecIgw6jDaEFhA6kDbkMwQ3GBv8JyguRCfsK/wXgAswHgwLKBKcJlwPcBe0DrgX1DPUM9Qz1DJoI4gSzCIIC9AGMAskK9gX1DdkMlA21DIYCuwq7CqwErAT3DZcIjQPtAsEM4wiCB/cD/ATsA7YEhw2HDYcNhw36CswBrwuDBMQClAS5B4EIrAmsCakCrgOJBbYM/Q2VDfENlg2qDO4N9wbzBcAH+gLAA4EJgQnkA+MD9QSBB4EHiAOJA5kIigM9wgzhCHL4A/sE3gPiBYMNgw2DDYMNX0+pC4wEyQKRBMsLpgihC9MC/QGaDZQFzwz/DZsNswW0BZwN4AbBCu0N3AeLA4gLUuIIgQHpA/kE6wPhBYANgA2ADYANVkesC40EwAKYBMwLpwiiC+sE2AKRDZYFgA6dDZ4N4QaOBu0N+QnCA4oKWoAIddED5gTqA+MF+Qz5DPkM+QxKTbILjgTCApMEzQuoCIwKjAqjCdsNlQWnDIEOnw2gDfIGlwWJDnrdA80BxAzkCPoN+QP4BOAD+w37DPsM+wz7DPEKbqcLggTMApcEzgupCKALsASFA6ENkwWCDqIN4gavA6sD9gGoBLoBuQTcA+gD/gTZBIsKpQLeBawCxAX2DPYM9gz2DPgK8QGrC/0DzgKaBKUNzwvKCsoK7gXZDY8GyAaFDqYN8g2nDboMnwOkCaQJnQSdBLECmAiMA6MCwwzlCOgL9gP6BN8D0AX9DP0M/Qz9DPYK2wG0C/wDwwKQBKgNzArMCu8F2g37BYYOqQ2/C6oNuwyeA7QHswfEA8QDnAOlBv0Cvwf/CIkL5gvGA+oF4gOCBogNiA2IDYgNhwj5BeYI1wObAocEvAyrDcsKywrBB70M6gaIDqwNhw60DI8LxAbFBooH5QKzCpwKqQf9CboDzQSkA48Fgg2CDYINgg3wCrwBswuEBM0CmwTpBdIEoQihCP0F1gXlBYsOrw3cDbANrAy7A4sH4wKyCpkKqwf6CbkDzgSlA5EF/gz+DP4M/gz1CuIBqAuGBMoClQTUBIkChgqGCtMHrAfkBecIjg61DZkFtg2vDOQEiAfmAq8KnQqoB/4JuAPQBKYDjgX4DPgM+Az4DPQKyQGwC/4DywKPBLYHsQipCqkKvAXxBJsF+wWNDrMNww2/C7QNrgzzBokH5AKxCpsKqgf8CbYDzwSjA5IF+gz6DPoM+gzzCuMBrgv/A8cCmQS3B4gIqAqoCrAI4QOKBZAGig6tDcQLrg2rDPYGhwfnArAKmgqnB/sJtwPRBKcDkAWBDYENgQ2BDfcK2QGtC4EEwQKcBLUHpwqnCrsF8gTIBowOsQ2yDa0M9AaUCaAHuQi/A/UDrQXrBdsC+AKNB5AIqQPYA+gF6Qb2ApkDmwfbCbUD7wOoDI8O+g2SDo8OoQyYDIwGngW3DZMLjw7nBZ4M3Q2mCaYMxQrqBN4NuQ2PDtUMzQq7DZ8M8QWJCI8Oug2mDM4K4g3fDY8O4A3hDdEMvA29DbcLhgWPDroNjw7KDegCwgrjDQqSoVL9Df24BgNUfW9/A34jAEHgAmsicCQAAkACQAJAAkACQAJAAkACQAJAAkACQCADKAIsImQgAUsEQCABQQJ0ImIgAygCKGooAgAhZCACKAIAIWYgcEEMaiACQcQAEOUNGiAAQQA2ArwDIABBADYC+AIgcCBwKgIQIGQgZmoivAGzIlaVIg44AhAgAygCICJkIAFLBEAgAUEBaiIBIGRJBEAgAygCHCJmIAFBAnRqIqcBKAIAIWQgZCBiIGZqIqgBKAIAIgFPBEAgZCADKAIIIqMBTQRAIAQoAhAhkwEgBCgCDCGUASADKAIEIakBAkACQCABIGRGBEAgAEEANgKQAyABIQMMAQsgZCABayJiIAAoAvACSwRAIwBBIGsiAyQAQQQhZkEEIABB8AJqImMoAgAidkEBdCJrIGIgYiBrSRsiayBrQQRNGyJqQfwAbCFtIGtBkYShCElBAnQhawJAIHZFBEBBACFmDAELIAMgdkH8AGw2AhwgAyBjKAIENgIUCyADIGY2AhggA0EIaiBrIG0gA0EUahCOByADKAIIDREgAygCDCFmIGMgajYCACBjIGY2AgQgA0EgaiQAIAAoAvgCIWMLIAAoAvQCIGNB/ABsaiEDIGJBAk8EQCBkIAFBf3NqImRBA3EhASBiQQJrQQNPBEAgZEF8cSFkA0AgA0EAQcQAEOcNIgNCADcCSCADQYCAgPwDNgJEIANB0ABqQgA3AgAgA0HYAGpCADcCACADQeAAakIANwIAIANB6ABqQgA3AgAgA0HwAGpCADcCACADQfgAakEANgIAIANB/ABqQQBBxAAQ5w0aIANBxAFqQgA3AgAgA0HAAWpBgICA/AM2AgAgA0HMAWpCADcCACADQdQBakIANwIAIANB3AFqQgA3AgAgA0HkAWpCADcCACADQewBakIANwIAIANB9AFqQQA2AgAgA0H4AWpBAEHEABDnDRogA0HAAmpCADcCACADQbwCakGAgID8AzYCACADQcgCakIANwIAIANB0AJqQgA3AgAgA0HYAmpCADcCACADQeACakIANwIAIANB6AJqQgA3AgAgA0HwAmpBADYCACADQfQCakEAQcQAEOcNGiADQbwDakIANwIAIANBuANqQYCAgPwDNgIAIANBxANqQgA3AgAgA0HMA2pCADcCACADQdQDakIANwIAIANB3ANqQgA3AgAgA0HkA2pCADcCACADQewDakEANgIAIANB8ANqIQMgZEEEayJkDQALCyABBEADQCADQQBBxAAQ5w0iA0IANwJIIANBgICA/AM2AkQgA0HQAGpCADcCACADQdgAakIANwIAIANB4ABqQgA3AgAgA0HoAGpCADcCACADQfAAakIANwIAIANB+ABqQQA2AgAgA0H8AGohAyABQQFrIgENAAsLIGIgY2pBAWshYwsgA0EAQcQAEOcNIgFCADcCSCABQYCAgPwDNgJEIAFB0ABqQgA3AgAgAUHYAGpCADcCACABQeAAakIANwIAIAFB6ABqQgA3AgAgAUHwAGpCADcCACABQfgAakEANgIAIABBADYCkAMgACBjQQFqNgL4AiCoASgCACIBIKcBKAIAIgNLDQELIAMgowFNBEAgAyABayFkAkACfyABIANGBEAgAEEANgKEAyAAIGQ2ApADIAEhAyAAQYQDagwBCyBkIAAoAogDSwRAIABBiANqQQAgZBC1BiAAKAKQAyFlCyAAKAKMAyJiIGVBGGxqIWMgZEECTwRAIGNBACADIAFBf3NqQRhsEOcNGiBiIAFBaGxqIAMgZWpBGGxqQRhrIWMgZCBlakEBayFlCyBjQgA3AgAgY0EQakIANwIAIGNBCGpCADcCACAAQQA2AoQDIAAgZUEBajYCkAMgqAEoAgAiASCnASgCACIDSw0BIABBhANqCyFmIAMgowFNBEAgAyABayFkAkACQCABIANGBEAgZiBkNgIAIAEhAwwBC0EAIWUgZCAAKAL8AksEQCAAQfwCakEAIGQQtQYgACgChAMhZQsgACgCgAMiYiBlQRhsaiFjIGRBAk8EQCBjQQAgAyABQX9zakEYbBDnDRogYiABQWhsaiADIGVqQRhsakEYayFjIGQgZWpBAWshZQsgY0IANwIAIGNBEGpCADcCACBjQQhqQgA3AgAgZiBlQQFqNgIAIKgBKAIAIgEgpwEoAgAiA0sNAQsgAyCjAU0EQCABIANGDQwgAEG0A2ohayCpASADQQN0aiFqIKkBIAFBA3RqIWQgDSgC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GyJkQdgCbCFiIAhB/oL9AklBAnQhCAJAIA1FBEBBACEDDAELIGMgDUHYAmw2AhwgYyAFKAIENgIUCyBjIAM2AhggY0EIaiAIIGIgY0EUahCOByBjKAIIDQ0gYygCDCEDIAUgZDYCACAFIAM2AgQgY0EgaiQAIGooArQBIQULIGooArABIAVB2AJsaiEDIAZBAk8EQCAHIAFBf3NqIgFBA3EhYiAGQQJrQQNPBEAgAUF8cSEBA0AgA0F/NgIIIANCfzcCACADQQxqQQBBlAIQ5w0aIANCADcCpAIgA0GAgID8AzYCoAIgA0GsAmpCADcCACADQbQCakIANwIAIANBvAJqQgA3AgAgA0HEAmpCADcCACADQcwCakIANwIAIANB1AJqQQA2AgAgA0HgAmpBfzYCACADQdgCakJ/NwIAIANB5AJqQQBBlAIQ5w0aIANB/ARqQgA3AgAgA0H4BGpBgICA/AM2AgAgA0GEBWpCADcCACADQYwFakIANwIAIANBlAVqQgA3AgAgA0GcBWpCADcCACADQaQFakIANwIAIANBrAVqQQA2AgAgA0G4BWpBfzYCACADQbAFakJ/NwIAIANBvAVqQQBBlAIQ5w0aIANB1AdqQgA3AgAgA0HQB2pBgICA/AM2AgAgA0HcB2pCADcCACADQeQHakIANwIAIANB7AdqQgA3AgAgA0H0B2pCADcCACADQfwHakIANwIAIANBhAhqQQA2AgAgA0GQCGpBfzYCACADQYgIakJ/NwIAIANBlAhqQQBBlAIQ5w0aIANBrApqQgA3AgAgA0GoCmpBgICA/AM2AgAgA0G0CmpCADcCACADQbwKakIANwIAIANBxApqQgA3AgAgA0HMCmpCADcCACADQdQKakIANwIAIANB3ApqQQA2AgAgA0HgCmohAyABQQRrIgENAAsLIGIEQANAIANBfzYCCCADQn83AgAgA0EMakEAQZQCEOcNGiADQgA3AqQCIANBgICA/AM2AqACIANBrAJqQgA3AgAgA0G0AmpCADcCACADQbwCakIANwIAIANBxAJqQgA3AgAgA0HMAmpCADcCACADQdQCakEANgIAIANB2AJqIQMgYkEBayJiDQALCyAFIAZqQQFrIQULIANBfzYCCCADQn83AgAgA0EMaiBnQRBqQZQCEOUNGiADQYCAgPwDNgKgAiADIGcpA7AFNwKkAiADQawCaiBnQbgFaikDADcCACADQbQCaiBnQcAFaikDADcCACADQbwCaiBnQcgFaikDADcCACADQcQCaiBnQdAFaikDADcCACADQcwCaiBnQdgFaikDADcCACADQdQCaiBnQeAFaigCADYCACAFQQFqBSAHCzYCtAEgaiBqKAKEASIBIAdJBH8gByABIgVrIgYgaigCfCABa0sEQCMAQSBrImMkACABIAZqIgggAUkNDkEEIQNBBCBqQfwAaiIFKAIAIg1BAXQiZCAIIAggZEkbIgggCEEETRsiZEH0A2whYiAIQbiShgJJQQJ0IQgCQCANRQRAQQAhAwwBCyBjIA1B9ANsNgIcIGMgBSgCBDYCFAsgYyADNgIYIGNBCGogCCBiIGNBFGoQjgcgYygCCA0NIGMoAgwhAyAFIGQ2AgAgBSADNgIEIGNBIGokACBqKAKEASEFCyBqKAKAASAFQfQDbGohAyAGQQJPBEAgByABQX9zaiIBQQNxIWIgBkECa0EDTwRAIAFBfHEhAQNAIANBAEGwAxDnDSIDQgA3ArQDIANBfzYCsAMgA0G8A2pCADcCACADQcQDakIANwIAIANBzANqQgA3AgAgA0HUA2pCADcCACADQdwDakEANgIAIANCfzcC4AMgA0HoA2pB/wE6AAAgA0J/NwLsAyADQfQDakEAQbADEOcNGiADQagHakIANwIAIANBpAdqQX82AgAgA0GwB2pCADcCACADQbgHakIANwIAIANBwAdqQgA3AgAgA0HIB2pCADcCACADQdAHakEANgIAIANB1AdqQn83AgAgA0HcB2pB/wE6AAAgA0HgB2pCfzcCACADQegHakEAQbADEOcNGiADQZwLakIANwIAIANBmAtqQX82AgAgA0GkC2pCADcCACADQawLakIANwIAIANBtAtqQgA3AgAgA0G8C2pCADcCACADQcQLakEANgIAIANByAtqQn83AgAgA0HQC2pB/wE6AAAgA0HUC2pCfzcCACADQdwLakEAQbADEOcNGiADQZAPakIANwIAIANBjA9qQX82AgAgA0GYD2pCADcCACADQaAPakIANwIAIANBqA9qQgA3AgAgA0GwD2pCADcCACADQbgPakEANgIAIANBvA9qQn83AgAgA0HED2pB/wE6AAAgA0HID2pCfzcCACADQdAPaiED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QQQgakGQAmoiACgCACIDQQF0IgUgZCAFIGRLGyIFIAVBBE0bIghB8ABsIQsgBUHKpJIJSUECdCEFAkAgA0UEQEEAIQcMAQsgASADQfAAbDYCHCABIAAoAgQ2AhQLIAEgBzYCGCABQQhqIAUgCyABQRRqEI4HIAEoAggNDCABKAIMIQMgACAINgIAIAAgAzYCBCABQSBqJAALIGooApQCQf8BIGRB8ABsEOcNGiBqIGQ2ApgCIHBB1wJqQgA3AAAgaigC6AEhASBwQegBaiIAQQhqQgA3AwAgAEEQakIANwMAIHBB4AFqQgA3AwAgcEIANwDPAiBwQgA3A+gBIHBCADcD2AEgcEHEAmpCADcAACBwQgA3ALwCIHBBsQJqQgA3AAAgcEIANwCpAiBwQZ4CakIANwAAIHBCADcAlgIgcEGLAmpCADcAACBwQgA3AIMCIHBBoAFqIgBBKGpCADcDACAAQSBqQgA3AwAgAEEYakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgcEIANwOgASBwQfAAaiIAQShqQgA3AwAgAEEgakIANwMAIABBGGpCADcDACAAQRBqQgA3AwAgAEEIakIANwMAIHBCADcDcCBqKALUAiIAIAFJDQEgAQwCCyAFIApBjNXBABCZCQALIAEgACJjayEFIAUgaigCzAIgY2tLBEAjAEEgayIDJAAgACAFaiIIIABJDQtBBCBqQcwCaiIHKAIAIgtBAXQiDCAIIAggDEkbIgggCEEETRsiDEHgA2whZCAIQcWIkQJJQQN0IWIgAyALBH8gAyALQeADbDYCHCADIAcoAgQ2AhRBCAVBAAs2AhggA0EIaiBiIGQgA0EUahCOByADKAIIDQwgAygCDCEIIAcgDDYCACAHIAg2AgQgA0EgaiQAIGooAtQCIWMLIGooAtACIGNB4ANsaiEDIAVBAk8EQCAAQX9zIAFqIQEgcEHXAWohBwNAIANCADcDCCADQgA3AwAgA0IANwJUIANB////+wc2AlAgA0KAgICA8P//v383A0ggA0L////7////v/8ANwNAIANC////+wc3AzggA0KAgICA8P//v383AzAgA0L////7////v/8ANwMoIANC////+wc3AyAgA0KAgICA8P//v383AxggA0L////7////v/8ANwMQIANBgICA/AM2AmQgAyBwKQPoATcDaCADQdwAakIANwIAIANB8ABqIHBB6AFqIgBBCGopAwA3AwAgA0H4AGogAEEQaikDADcDACADQgA3A4gBIANCgICA/AM3A4ABIANC////+wc3A6ABIANBADoAqAEgA0L////7BzcCvAEgA0EAOgDEASADIHApA9gBNwOQASADQZgBaiBwQeABaikDADcDACADIHApAMwCNwCpASADQbEBaiBwQcwCaiIAQQhqKQAANwAAIANBuAFqIABBD2ooAAA2AAAgAyBwKQC5AjcAxQEgA0HNAWogcEG5AmoiAEEIaikAADcAACADQdQBaiAAQQ9qKAAANgAAIANBADoA4AEgA0L////7BzcD2AEgA0EAOgD8ASADQv////sHNwL0ASADQQA6AJgCIANC////+wc3A5ACIANB8AFqIHBBpgJqIgBBD2ooAAA2AAAgA0HpAWogAEEIaikAADcAACADIHApAKYCNwDhASADQYwCaiBwQZMCaiIAQQ9qKAAANgAAIANBhQJqIABBCGopAAA3AAAgAyBwKQCTAjcA/QEgA0GoAmogcEGAAmoiAEEPaigAADYAACADQaECaiAAQQhqKQAANwAAIAMgcCkAgAI3AJkCIANBADoAtAIgA0L////7BzcCrAIgA0G3AmogBy0AADoAACADIHAvANUBOwC1AiADQn83A8ACIANBgAI7AbwCIANBADYCuAIgA0HwAmogcEGgAWoiAEEoaikDADcDACADQegCaiAAQSBqKQMANwMAIANB4AJqIABBGGopAwA3AwAgA0HYAmogAEEQaikDADcDACADQdACaiAAQQhqKQMANwMAIAMgcCkDoAE3A8gCIANBfzYC+AIgA0GkA2ogcEHwAGoiAEEoaikDADcCACADQZwDaiAAQSBqKQMANwIAIANBlANqIABBGGopAwA3AgAgA0GMA2ogAEEQaikDADcCACADQYQDaiAAQQhqKQMANwIAIAMgcCkDcDcC/AIgA0F/NgK8AyADQv////8fNwK0AyADQn83AqwDIANByANqIHBB6ABqKAIANgIAIAMgcCkDYDcDwAMgA0KBgICAcDcCzAMgA0HcA2ogcEHcAGooAgA2AgAgAyBwKQJUNwLUAyADQeADaiEDIAFBAWsiAQ0ACyAFIGNqQQFrIWMLIANC////+////7//ADcDECADQgA3AwggA0IANwMAIANCADcCVCADQf////sHNgJQIANCgICAgPD//79/NwNIIANC////+////7//ADcDQCADQv////sHNwM4IANCgICAgPD//79/NwMwIANC////+////7//ADcDKCADQv////sHNwMgIANCgICAgPD//79/NwMYIANBgICA/AM2AmQgAyBwKQPoATcDaCADQdwAakIANwIAIANB8ABqIHBB6AFqIgBBCGopAwA3AwAgA0H4AGogAEEQaikDADcDACADQgA3A4gBIANCgICA/AM3A4ABIANC////+wc3A6ABIANBADoAqAEgA0L////7BzcCvAEgA0EAOgDEASADIHApA9gBNwOQASADQZgBaiBwQeABaikDADcDACADIHApAMwCNwCpASADQbEBaiBwQcwCaiIAQQhqKQAANwAAIANBuAFqIABBD2ooAAA2AAAgAyBwKQC5AjcAxQEgA0HNAWogcEG5AmoiAEEIaikAADcAACADQdQBaiAAQQ9qKAAANgAAIANBADoA4AEgA0L////7BzcD2AEgA0EAOgD8ASADQv////sHNwL0ASADQQA6AJgCIANC////+wc3A5ACIANB8AFqIHBBpgJqIgBBD2ooAAA2AAAgA0HpAWogAEEIaikAADcAACADIHApAKYCNwDhASADQYwCaiBwQZMCaiIAQQ9qKAAANgAAIANBhQJqIABBCGopAAA3AAAgAyBwKQCTAjcA/QEgA0GoAmogcEGAAmoiAEEPaigAADYAACADQaECaiAAQQhqKQAANwAAIAMgcCkAgAI3AJkCIANBADoAtAIgA0L////7BzcCrAIgA0G3AmogcEHXAWotAAA6AAAgAyBwLwDVATsAtQIgA0J/NwPAAiADQYACOwG8AiADQQA2ArgCIANB8AJqIHBBoAFqIgBBKGopAwA3AwAgA0HoAmogAEEgaikDADcDACADQeACaiAAQRhqKQMANwMAIANB2AJqIABBEGopAwA3AwAgA0HQAmogAEEIaikDADcDACADIHApA6ABNwPIAiADQX82AvgCIANBpANqIHBB8ABqIgBBKGopAwA3AgAgA0GcA2ogAEEgaikDADcCACADQZQDaiAAQRhqKQMANwIAIANBjANqIABBEGopAwA3AgAgA0GEA2ogAEEIaikDADcCACADIHApA3A3AvwCIANBfzYC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AgAgA0H0AGpC////+/f//7//ADcCACADQewAakKAgICA8P//v383AgAgA0GMAWpBADsBACADQZABaiEDIAFBAmsiAQ0ACwsgBSBjakEBayFjIAYEQCADQn83AgggA0IANwIAIANBADsBRCADQv////v3//+//wA3AjwgA0L////79///v/8ANwI0IANC////+/f//7//ADcCLCADQoCAgIDw//+/fzcCJCADQRBqQn83AgAgA0EYakJ/NwIAIANBIGpBfzYCACADQcgAaiEDCwsgA0J/NwIIIANCADcCACADQQA7AUQgA0L////79///v/8ANwI8IANC////+/f//7//ADcCNCADQv////v3//+//wA3AiwgA0KAgICA8P//v383AiQgA0EQakJ/NwIAIANBGGpCfzcCACADQSBqQX82AgAgY0EBaiFkCyBqIGQ2AqQCIGpBADYC4AIgaigCjAIiACJjIGooAtgCSwRAIwBBIGsiASQAQQQgakHYAmoiAygCACIFQQF0IgYgACAAIAZJGyIGIAZBBE0bIgdBkANsIQggBkGG18cCSUEDdCEGIAEgBQR/IAEgBUGQA2w2AhwgASADKAIENgIUQQgFQQALNgIYIAFBCGogBiAIIAFBFGoQjgcgASgCCA0KIAEoAgwhBSADIAc2AgAgAyAFNgIEIAFBIGokACBqKAKMAiFjCyBqKALcAiIDQf8BIABBkANsEOcNGiBqIAA2AuACQQAhZCBwQQA2AqABAkACQCBjIAAgACBjSxsiY0UNACBqKAKIAiEBA0AgASgCACIAIApPDQIgAyEGIHBBoAFqIWYjAEEwayJiJAACQAJAIAkgACILQYADbGpBEGoiDCgCCCIDIAQoAhAidk8NACAEKAIMImsgA0HwAmxqIggoAgBFDQAgDCgCDCIHIAgoAgRHDQAgDCgCBCEAIAwoAgAhBSAMLQDrAiFlIAwqAtACIT4gDCoCzAIhMyAMKgK0AiE4IAwqArACITsgDCoCmAIhNCAMKgKUAiE3IAwqAvwBITUgDCoC+AEhLCAMKgLgASEwIAwqAtwBIS8gDCoCxAEhLSAMKgLAASEyIAwqArwBIREgDCoCuAEhEiAMKgK0ASEWIAwqArABIQ4gDCoCrAEhDyAMKgKoASEVIAwqAqQBIRAgDCoCoAEhIyAMKgKcASEfIAwqApgB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ayIFIGooArQCIABrSwRAIwBBIGsiAyQAIAAgBWoiBiAASQ0HQQQhDEEEIGpBtAJqIgEoAgAiB0EBdCIIIAYgBiAISRsiBiAGQQRNGyIIQThsIQsgBkGTyaQSSUECdCEGAkAgB0UEQEEAIQwMAQsgAyAHQThsNgIcIAMgASgCBDYCFAsgAyAMNgIYIANBCGogBiALIANBFGoQjgcgAygCCA0IIAMoAgwhBiABIAg2AgAgASAGNgIEIANBIGokACBqKAK8AiFkCyBqKAK4AiBkQThsaiEDIAVBAk8EQCCHASAAQX9zaiIBQQFxIQYgACCHAUECa0cEQCABQX5xIQEDQCADQgA3AiQgA0H////7BzYCICADQoCAgIDw//+/fzcCGCADQv////8PNwIQIANC/////w83AgggA0IANwIAIANBLGpCADcCACADQTRqQQA2AgAgA0HYAGpB////+wc2AgAgA0HQAGpCgICAgPD//79/NwIAIANByABqQv////8PNwIAIANBQGtC/////w83AgAgA0E4akIANwIAIANB3ABqQgA3AgAgA0HkAGpCADcCACADQewAakEANgIAIANB8ABqIQMgAUECayIBDQALCyAFIGRqQQFrIWQgBgRAIANCADcCJCADQf////sHNgIgIANCgICAgPD//79/NwIYIANC/////w83AhAgA0L/////DzcCCCADQgA3AgAgA0EsakIANwIAIANBNGpBADYCACADQThqIQMLCyADQgA3AiQgA0H////7BzYCICADQoCAgIDw//+/fzcCGCADQv////8PNwIQIANC/////w83AgggA0IANwIAIANBLGpCADcCACADQTRqQQA2AgAgZEEBaiGHAQsgaiCHATYCvAIgaigCsAIhqgEgaigCrAIhdiBqKAKYAiGrASBqKAKUAiFtAkAgvAEEQCBqKAKEAyJ5IGooApADIgAgACB5SxshmgEgaigCjAMhwAEgaigCgAMhZyBqKAKgAyKKASBqKAKwAyIDRw0BIGpBlANqIZwBIHkgaigC+AIieiB5IHpJGyGhASBqKAKoASIAIGooAngiASAAIAFJGyGEASBqKAK0ASIAIGooAoQBIgMgACADSRshhQEgaigCkAEiACBqKAJgIgcgACAHSRshgwEgaigCnAEiACBqKAJsIgggACAISRshiwEgvAFB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ViBWlJIQkgEgASoCLJSSIFdDAAAgQZVeIho6ADQgCCAaciEICyACIBJBCGoiEkcNAAsgCEEBcUUNAEEAIQhBACEUQQAhEUEAISRBACEuIwBB4ANrIhMkACAKKgKYASFpIApBADYCgAEgCkEANgKMASAKQQA2AmggE0EBOgDQAwJAAkACQAJAIAcoAhgiAgRAIAJBAnQhASACQf////8BSw0DQYGJxAAtAAAaQQQhCCABQQQQ3AwiD0UNAyATQQA2AnAgEyAPNgJsIBMgAjYCaCACQRhsIQggAkHVqtUqSw0CIAhBAEgNAkGBicQALQAAGkEEIRQgCEEEENwMIgFFDQIgASEIAkAgAkEBRg0AIAJBAWsiD0EDcSESIAJBAmtBA08EQCAPQXxxIRQDQCAIQv////v///+/fzcCECAIQv////v3//+/fzcCCCAIQv////v3//+//wA3AgAgCEHYAGpC////+////79/NwIAIAhB0ABqQv////v3//+/fzcCACAIQcgAakL////79///v/8ANwIAIAhBQGtC////+////79/NwIAIAhBOGpC////+/f//79/NwIAIAhBMGpC////+/f//7//ADcCACAIQShqQv////v///+/fzcCACAIQSBqQv////v3//+/fzcCACAIQRhqQv////v3//+//wA3AgAgCEHgAGohCCAUQQRrIhQNAAsLIBJFDQADQCAIQv////v///+/fzcCECAIQv////v3//+/fzcCCCAIQv////v3//+//wA3AgAgCEEYaiEIIBJBAWsiEg0ACwsgCEL////79///v/8ANwIAIAhC////+////79/NwIQIAhC////+/f//79/NwIIIBMgAjYCFCATIAE2AhAgEyACNgIMQYGJxAAtAAAaIAJBBHQiAUEEENwMIhYEQCAWIQgCQCACQQFGDQAgAkEBayIBQQNxIRIgAkECa0EDTwRAIAFBfHEhFANAIAhCfzcCCCAIQQA6AAQgCEF/NgIAIAhBOGpCfzcCACAIQTRqQQA6AAAgCEEwakF/NgIAIAhBKGpCfzcCACAIQSRqQQA6AAAgCEEgakF/NgIAIAhBGGpCfzcCACAIQRRqQQA6AAAgCEEQakF/NgIAIAhBQGshCCAUQQRrIhQNAAsLIBJFDQADQCAIQn83AgggCEEAOgAEIAhBfzYCACAIQRBqIQggEkEBayISDQALCyAIQn83AgggCEEAOgAEIAhBfzYCAAwCC0EEIAEQvgwACyATQQA2AnAgE0KAgICAwAA3AmggE0EANgIUIBNCgICAgMAANwIMQQQhFgsgCkGEAWohASAKKAKEASIIBEAgCigCiAEgCEEEdEEEEL4NCyAKQeAAaiEYIApByABqIQggCiACNgKMASAKIBY2AogBIAogAjYChAEgEyABNgJIIBMgE0HoAGo2AlAgEyATQQxqNgJMIAcoAhAiNEGoAWwhGSATQcgCaiEPIAYoAhAhHCAGKAIMIR0gBygCDCE5QQAhEkEAIRQDQAJAAkACQAJAIBIgGUcEQCASIDlqIgIoAgBFDQQgAkHqAGotAAANBCACQQRqKAIAIRYgAkEIaigCAARAIAJBDGooAgAiASAcTw0CIB0gAUHwAmxqIgEoAgBFDQIgASgCBCACQRBqKAIARw0CIAJBLGoqAgAhXiACQShqKgIAIVwgAkEkaioCACFhIAJBIGoqAgAhWCACQRxqKgIAIVogAkEYaioCACFdIAJBFGoqAgAhXyABKgKUASFmIAEqApgBIWsgASoCnAEhZyABKgK8ASFkIAEqArABIVcgASoCqAEhZSABKgKgAiFZIAEqArgBIVYgASoCmAIhYCABKgKsASFbIAEqApwCIWIgASoCtAEhaCABKgKIASFuIAEqAvwBIWwgASoCjAIhbSABKgKMASFqIAEqAoACIW8gASoCkAIhcCATIAEqApQCIAEqAoQClCBjlCABKgKQAZI4AsgCIBMgaiBwIG+UIGOUkjgCxAIgEyBuIG0gbJQgY5SSOALAAiATIGcgZCBXIGCUIFYgYpSSIGQgWZSSImSUIFcgZSBglCBbIGKUkiBXIFmUkiJnlCBWIFsgYJQgaCBilJIgViBZlJIiWZSSkiBjlJI4AtQCIBMgayBWIGSUIFsgZ5QgaCBZlJKSIGOUkjgC0AIgEyBmIFcgZJQgZSBnlCBbIFmUkpIgY5SSOALMAiATQYABaiATQcACaiBjIAFBOGogAUHQAWoQ3AEgEyBYIBMqAowBIlmUIF8gEyoCgAEiV5STIF0gEyoChAEiVpSTIFogEyoCiAEiW5STOALsASATIFggW5QgXSBXlCBaIFmUkiBfIFaUk5I4AugBIBMgXyBblCBYIFaUIF0gWZQgWiBXlJOSkjgC5AEgEyBaIFaUIFggV5QgXyBZlJKSIF0gW5STOALgASATIBMqApgBIF4gWSBcIFeUIGEgVpSTIlggWJIiWJQgVyBhIFuUIF4gV5STIlogWpIiWpQgViBeIFaUIFwgW5STIl0gXZIiXZSTkpKSOAL4ASATIBMqApQBIFwgWSBalCBbIF2UIFcgWJSTkpKSOAL0ASATIBMqApABIGEgWSBdlCBWIFiUIFsgWpSTkpKSOALwASAPIAJBOGooAgAgAkE8aigCACIBKAIIQQFrQXhxakEIaiACQfwAaiATQeABaiABKALAARECACATIBY2AsQCIBMgFDYCwAIgE0HIAGogFCAWIA8Q4AEMBQsgDyACQThqKAIAIAJBPGooAgAiASgCCEEBa0F4cWpBCGogAkH8AGogASgCkAERAQAgEyAWNgLEAiATIBQ2AsACIBNByABqIBQgFiAPEOABDAQLIBNBgAFqEK0KIAooAmgiAiAKKAJgRgRAIBgQ1gYLIAooAmQgAkEHdGogE0GAAWpB4AAQ5Q0iAUJ/NwJkIAFB7ABqQn83AgAgAUEBNgJgIAFBADoAeCABQQA6AHQgCiACQQFqNgJoIBNBwAJqIgEgCCATQdADaiATKAJsIBMoAnAgE0EMakEAQQAgaRBmIBNByABqIgJBEGogE0HUAmopAgAieDcDACACQQhqIBNBzAJqKQIAInk3AwAgEyATKQLEAiJ6NwNIIAhBEGogeDcCACAIQQhqIHk3AgAgCCB6NwIAIAFBEGogeDcDACABQQhqIHk3AwAgE0GYA2pC////+////79/NwMAIBNBkANqQv////v3//+/fzcDACATQYADakL////7////v383AwAgE0H4AmpC////+/f//79/NwMAIBNB6AJqQv////v///+/fzcDACATQeACakL////79///v383AwAgEyB6NwPAAiATQv////v3//+//wA3A4gDIBNC////+/f//7//ADcD8AIgE0L////79///v/8ANwPYAiATQeABaiABENUEIAooAmgEQCAKKAJkIBNB4AFqQeAAEOUNGiATKAIMIgEEQCATKAIQIAFBGGxBBBC+DQsgEygCaCIBBEAgEygCbCABQQJ0QQQQvg0LIBNBADYCFCATQSBqQdiPwQApAwA3AgAgE0KAgICAwAA3AgwgE0HQj8EA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wQBBE0HshcIAEJQMAAsgFSABQQRqIgFHDQALCyAXKAJsIgEEQCAXKAJwIAFBAnRBBBC+DQsgSkUNAyADKAIIIgFFDQMgAygCBCISIAFBA3RqIQIgFyoCLCFbIAYoAhAhESAGKAIMIQ9BACEIA0AgEigCACIBIBFPDREgDyABQfACbGoiASgCAEUNESABKAIEIBIoAgRHDREgAS0ANQRAIAEqAighVyABIFsgASoCcCJWIFaUIAEqAnQiViBWlJIgASoCeCJWIFaUkhCSASABKgJ8IlYgVpQgASoCgAEiViBWlJIgASoChAEiViBWlJIQkgEgASoCLJSSlCBXQwAAIEGVXiIaOgA0IAggGnIhCAsgAiASQQhqIhJHDQALIAhBAXFFDQMgF0GIAWohEUEAIRVBACEUQQAhHEEAIR5BACEIQQAhIEEAIS4jAEHgBGsiECQAIBAgWzgCJCAQQTxqQdiPwQApAwAieDcCACAQQQA2AjAgEEKAgICAwAA3AiggEEHQj8EAKQMAInk3AjQgEEEANgJMIBBCgICAgMAANwJEIBBB5ABqIHg3AgAgEEEANgJYIBBCgICAgMAANwJQIBAgeTcCXCAQIFs4AmwgCioCmAEhYiAKQQA2AoABIApBADYCaCAQQQE6ANAEAkACQAJAAkAgBygCGCIPBEAgD0ECdCEBIA9B/////wFLDQJBgYnEAC0AABpBBCEVIAFBBBDcDCICRQ0CIBBBADYC0AMgECACNgLMAyAQIA82AsgDIA9BGGwhAiAPQdWq1SpLDQMgAkEASA0DQYGJxAAtAAAaQQQhFCACQQQQ3AwiAUUNAyABIRUCQCAPQQFGDQAgD0EBayICQQNxIRkgD0ECa0EDTwRAIAJBfHEhFANAIBVC////+////79/NwIQIBVC////+/f//79/NwIIIBVC////+/f//7//ADcCACAVQdgAakL////7////v383AgAgFUHQAGpC////+/f//79/NwIAIBVByABqQv////v3//+//wA3AgAgFUFAa0L////7////v383AgAgFUE4akL////79///v383AgAgFUEwakL////79///v/8ANwIAIBVBKGpC////+////79/NwIAIBVBIGpC////+/f//79/NwIAIBVBGGpC////+/f//7//ADcCACAVQeAAaiEVIBRBBGsiFA0ACwsgGUUNAANAIBVC////+////79/NwIQIBVC////+/f//79/NwIIIBVC////+/f//7//ADcCACAVQRhqIRUgGUEBayIZDQALCyAVQv////v3//+//wA3AgAgFUL////7////v383AhAgFUL////79///v383AgggECAPNgLQASAQIAE2AswBIBAgDzYCyAFBgYnEAC0AABogD0EEdCIBQQQQ3AwiAgRAIAIhFQJAIA9BAUYNACAPQQFrIgFBA3EhGSAPQQJrQQNPBEAgAUF8cSEUA0AgFUJ/NwIIIBVBADoABCAVQX82AgAgFUE4akJ/NwIAIBVBNGpBADoAACAVQTBqQX82AgAgFUEoakJ/NwIAIBVBJGpBADoAACAVQSBqQX82AgAgFUEYakJ/NwIAIBVBFGpBADoAACAVQRBqQX82AgAgFUFAayEVIBRBBGsiFA0ACwsgGUUNAANAIBVCfzcCCCAVQQA6AAQgFUF/NgIAIBVBEGohFSAZQQFrIhkNAAsLIBVCfzcCCCAVQQA6AAQgFUF/NgIADAILQQQgARC+DAALIBBBADYC0AMgEEKAgICAwAA3AsgDIBBBADYC0AEgEEKAgICAwAA3AsgBQQQhAgsgCkGEAWohASAKKAKEASISBEAgCigCiAEgEkEEdEEEEL4NCyAKQeAAaiEWIApByABqIRIgCiAPNgKMASAKIAI2AogBIAogDzYChAEgECABNgLgASAHKAIQIkBBqAFsIRggECAQQcgDajYC6AEgECAQQcgBajYC5AEgEEHoA2ohFCAGKAIQISwgBigCDCEtIAcoAgwhOUEAIRlBACEBA0ACQAJAAkAgGCAZRwRAIBkgOWoiAigCAEUNAyACQeoAai0AAA0DIAJBBGooAgAhFSACQQhqKAIABEAgAkEMaigCACIPICxPDQIgLSAPQfACbGoiDygCAEUNAiAPKAIEIAJBEGooAgBHDQIgAkEsaioCACFaIAJBKGoqAgAhXSACQSRqKgIAIV8gECACQSBqKgIAIl4gDyoCYCJYlCACQRRqKgIAIlwgDyoCVCJXlJMgAkEYaioCACJhIA8qAlgiVpSTIAJBHGoqAgAiYCAPKgJcIlmUkzgCzAIgECBeIFmUIGEgV5QgYCBYlJIgXCBWlJOSOALIAiAQIFwgWZQgXiBWlCBhIFiUIGAgV5STkpI4AsQCIBAgYCBWlCBeIFeUIFwgWJSSkiBhIFmUkzgCwAIgECAPKgJsIFogWCBdIFeUIF8gVpSTIl4gXpIiXpQgVyBfIFmUIFogV5STIlwgXJIiXJQgViBaIFaUIF0gWZSTIlogWpIiWpSTkpKSOALYAiAQIA8qAmggXSBYIFyUIFkgWpQgVyBelJOSkpI4AtQCIBAgDyoCZCBfIFggWpQgViBelCBZIFyUk5KSkjgC0AIgFCACQThqKAIAIAJBPGooAgAiDygCCEEBa0F4cWpBCGogAkH8AGogEEHAAmogDygCwAERAgAgECAVNgLkAyAQIAE2AuADIBBB4AFqIAEgFSAUEOABDAQLIBQgAkE4aigCACACQTxqKAIAIg8oAghBAWtBeHFqQQhqIAJB/ABqIA8oApABEQEAIBAgFTYC5AMgECABNgLgAyAQQeABaiABIBUgFBDgAQwDCyAQQeABahCtCiAKKAJoIgIgCigCYEYEQCAWENYGCyAKKAJkIAJBB3RqIBBB4AFqQeAAEOUNIgFCfzcCZCABQewAakJ/NwIAIAFBATYCYCABQQA6AHggAUEAOgB0IAogAkEBajYCaCAQQeADaiIBIBIgEEHQBGogECgCzAMgECgC0AMgEEHIAWpBAEEAIGIQZiAQQagBaiICQRBqIBBB9ANqKQIAIng3AwAgAkEIaiAQQewDaikCACJ5NwMAIBAgECkC5AMiejcDqAEgEkEQaiB4NwIAIBJBCGogeTcCACASIHo3AgAgAUEQaiB4NwMAIAFBCGogeTcDACAQQbgEakL////7////v383AwAgEEGwBGpC////+/f//79/NwMAIBBBoARqQv////v///+/fzcDACAQQZgEakL////79///v383AwAgEEGIBGpC////+////79/NwMAIBBBgARqQv////v3//+/fzcDACAQIHo3A+ADIBBC////+/f//7//ADcDqAQgEEL////79///v/8ANwOQBCAQQv////v3//+//wA3A/gDIBBBwAJqIAEQ1QQgCigCaARAIAooAmQgEEHAAmpB4AAQ5Q0aIBAoAsgBIgEEQCAQKALMASABQRhsQQQQvg0LIBAoAsgDIgEEQCAQKALMAyABQQJ0QQQQvg0LIAMoAggiAUUNAiADKAIEIhsgAUEDdGohQyAQQdwCaiEyA0ACQAJAIBsoAgAi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IAQpAMABNwMQIAMgGjgCLCADIBg4AiggAyAXOAIkIAMgGTgCICADQdAAakIANwMAIANCADcDSCADQf////sHNgKYASADQoCAgIDw//+/fzcDkAEgA0L////7////v/8ANwOIASADQv////sHNwOAASADQoCAgIDw//+/fzcDeCADQv////v///+//wA3A3AgA0L////7BzcDaCADQoCAgIDw//+/fzcDYCADQv////v///+//wA3A1ggAy0AgAMhCiADIAQpA4gBNwMwIANBOGogDCkDADcDACADQUBrIBQpAwA3AwAgA0GkAWpCADcCACADQgA3ApwBIANBgICA/AM2AqwBIANCADcDsAEgA0G4AWpCADcDACADQcABakIANwMAIANBgICA/AM2AsgBIANCADcCzAEgA0HUAWpCADcCACADQdwBakIANwIAIANB5AFqQQA2AgAgA0EAOgDwASADQv////sHNwPoASADIAQpA3A3APEBIANB+QFqIA0pAwA3AAAgA0GAAmogESgAADYAACADQQA6AIwCIANC////+wc3AoQCIANBADoAqAIgA0L////7BzcDoAIgA0EAOgDEAiADQv////sHNwK8AiADQZwCaiAPKAAANgAAIANBlQJqIAUpAwA3AAAgAyAEKQNYNwCNAiADQbgCaiAVKAAANgAAIANBsQJqIAYpAwA3AAAgAyAEKQNANwCpAiADQdQCaiAQKAAANgAAIANBzQJqIAcpAwA3AAAgAyAEKQMoNwDFAiADQQA6AOACIANC////+wc3A9gCIANB8AJqIBIoAAA2AAAgA0HpAmogCSkDADcAACADIAQpAxA3AOECIANBADoAiAMgA0GAAjsBhAMgA0EANgKAAyADQQA6APwCIANC////+wc3AvQCIAAoAghFDQIgACgCBEEANgKUAyAAIAAoApQCQQZqNgKUAiAAKAIQIQYCQCAAKAIUIgVFBEBBBCEDDAELIAVBAnQhASAFQf////8BSwRAQQAhBwwUC0GBicQALQAAGkEEIQcgAUEEENwMIgNFDRMLIAMgBiABEOUNIQEgBCAAKAIYIgY2AqwCIAQgBTYCqAIgBCABNgKkAiAEIAU2AqACIARBjAJqIAZBBmoiByAEQaACahDgBCAEKAKMAiEJIAQoApACIQEgBCgClAIhAyAEKAKYAiEFIAcEQCABQRhqIAEgBkECdBDmDRoLIAVBBU0NDiABQgA3AgAgAUEQakIANwIAIAFBCGpCADcCACADIAVHDQ8gACgCDCIFBEAgACgCECAFQQJ0QQQQvg0LIAAgAzYCGCAAIAM2AhQgACABNgIQIAAgCTYCDCAAKAIgIQYCQCAAKAIkIgVFBEBBBCEDQQAhAQwBCyAFQQJ0IQEgBUH/////AUsEQEEAIQcMFAtBgYnEAC0AABpBBCEHIAFBBBDcDCIDRQ0TCyADIAYgARDlDSEBIAQgACgCKCIGNgKsAiAEIAU2AqgCIAQgATYCpAIgBCAFNgKgAiAEQYwCaiAGQQZqIgcgBEGgAmoQ4AQgBCgCjAIhCSAEKAKQAiEBIAQoApQCIQMgBCgCmAIhBSAHBEAgAUEYaiABIAZBAnQQ5g0aCyAFQQVNDQ4gAUIANwIAIAFBEGpCADcCACABQQhqQgA3AgAgAyAFRw0PIAAoAhwiBQRAIAAoAiAgBUECdEEEEL4NCyAAIAM2AiggACADNgIkIAAgATYCICAAIAk2AhwgACgCMCEGAkAgACgCNCIFRQRAQQQhA0EAIQEMAQsgBUECdCEBIAVB/////wFLBEBBACEHDBQLQYGJxAAtAAAaQQQhByABQQQQ3AwiA0UNEwsgAyAGIAEQ5Q0hASAEIAAoAjgiBjYCrAIgBCAFNgKoAiAEIAE2AqQCIAQgBTYCoAIgBEGMAmogBkEGaiIHIARBoAJqEOAEIAQoAowCIQkgBCgCkAIhASAEKAKUAiEDIAQoApgCIQUgBwRAIAFBGGogASAGQQJ0EOYNGgsgBUEFTQ0OIAFCADcCACABQRBqQgA3AgAgAUEIakIANwIAIAMgBUcNDyAAKAIsIgUEQCAAKAIwIAVBAnRBBBC+DQsgACADNgI4IAAgAzYCNCAAIAE2AjAgACAJNgIsIAAoAggiA0UNAyADQQFGDQggCmkhBiAAKAIEIQECfyADQfADbCIHQeAHayIJQfADbkEBakEHcSIDRQRAIAEiA0HwA2oMAQsgA0HwA2whBSABIQMDQCADQYQHaiIKIAooAgAgBmo2AgAgA0HwA2ohAyAFQfADayIFDQALIANB8ANqCyEFIAlBkBtJDQggASAHaiEBA0AgA0GEB2oiAyADKAIAIAZqNgIAIAVBhAdqIgMgAygCACAGajYCACAFQfQKaiIDIAMoAgAgBmo2AgAgBUHkDmoiAyADKAIAIAZqNgIAIAVB1BJqIgMgAygCACAGajYCACAFQcQWaiIDIAMoAgAgBmo2AgAgBUG0GmoiAyADKAIAIAZqNgIAIAVBpB5qIgMgAygCACAGajYCACAFQZAbaiEDIAEgBUGAH2oiBUcNAAsMCAsgACgCKEEFTQ0DIAAoAjhBBU0NBCAEQaACaiIKQQhqIgwgBEEIaigCADYCACAEIAQpAwA3A6ACIARBjAJqIgFBC2pCADcAACAEQfkBaiIFQQtqQgA3AAAgBEHmAWoiBkELakIANwAAIARB0wFqIgdBC2pCADcAACAEQcABaiIJQQtqQgA3AAAgBEIANwCPAiAEQgA3APwBIARCADcA6QEgBEIANwDWASAEQgA3AMMBIARBtAJqQQA2AgAgBEIANwKsAiAEQYgBaiINQRBqIhEgCkEQaikDADcDACANQQhqIgogDCkDADcDACAEIAQpA6ACNwOIASAEQfAAaiIMQQ9qIg0gAUEPaigAADYAACAMQQhqIgwgAUEIaikAADcDACAEIAQpAIwCNwNwIARB2ABqIgFBD2oiFCAFQQ9qKAAANgAAIAFBCGoiASAFQQhqKQAANwMAIAQgBCkA+QE3A1ggBEFAayIFQQ9qIg8gBkEPaigAADYAACAFQQhqIgUgBkEIaikAADcDACAEIAQpAOYBNwNAIARBKGoiBkEPaiIVIAdBD2ooAAA2AAAgBkEIaiIGIAdBCGopAAA3AwAgBCAEKQDTATcDKCAEQRBqIgdBD2oiECAJQQ9qKAAANgAAIAdBCGoiByAJQQhqKQAANwMAIAQgBCkAwAE3AxAgA0IANwMwIANCgICAgICAgMA/NwMoIANCADcDICADQThqQgA3AwAgA0FAa0IANwMAIANByABqQgA3AwAgA0HQAGpCADcDACADIBo4AqwBIAMgGDgCqAEgAyAXOAKkASADIBk4AqABIANC////+wc3A5gBIANCgICAgPD//79/NwOQASADQv////v///+//wA3A4gBIANC////+wc3A4ABIANCgICAgPD//79/NwN4IANC////+////7//ADcDcCADQv////sHNwNoIANCgICAgPD//79/NwNgIANC////+////7//ADcDWCADLQCAAyEJIANBgICA/AM2AsgBIANCADcC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ARDdBiEADBILIAcoAgghAyABKAIAIgIoAgghACACKAIAIABrQQNNBEAgAiAAQQQQ5QYgAigCCCEACyACIABBBGo2AgggAigCBCAAakECNgAAIAMgARDdBiIADREgA0EMaiABEN0GIgANESADKgIYIQogAigCACACKAIIIgBrQQNNBEAgAiAAQQQQ5QYgAigCCCEACyACIABBBGo2AgggAigCBCAAaiAKOAAAQQAhAAwRCyAHKAIIIQMgASgCACIAKAIIIQIgACgCACACa0EDTQRAIAAgAkEEEOUGIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpBAzYAACADIAEQ3QYiAA0QIANBDGogARDdBiEADBALIAcoAgghAyABKAIAIgAoAgghAiAAKAIAIAJrQQNNBEAgACACQQQQ5QYgACgCCCECCyAAIAJBBGo2AgggACgCBCACakEENgAAIAMgARDdBiIADQ8gA0EMaiABEN0GIgANDyADQRhqIAEQ3QYhAAwPCyAHKAIIIQUgASgCACIAKAIIIQIgACgCACACa0EDTQRAIAAgAkEEEOUGIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpBBTYAACABIAUQlgEiAA0OIAUoAkwhBCAFKAJQIgOtIQkgASgCACIAKAIIIQIgACgCACACa0EHTQRAIAAgAkEIEOUGIAAoAgghAgsgACACQQhqNgIIIAAoAgQgAmogCTcAACADQQxsIQIDQCACBEAgAkEMayECIAQgARDdBiEAIARBDGohBCAARQ0BDBALCyAFKAJYIQIgBSgCXCIGrSEJIAEoAgAiACgCCCEDIAAoAgAgA2tBB00EQCAAIANBCBDlBiAAKAIIIQMLIAAgA0EIaiIENgIIIAAoAgQgA2ogCTcAACAGBEAgAiAGQQxsaiEGA0AgAigCACEDIAAoAgAgBGtBA00EQCAAIARBBBDlBiAAKAIIIQQLIAAoAgQgBGogAzYAACAAIARBBGoiBDYCCCACKAIEIQMgACgCACAEa0EDTQRAIAAgBEEEEOUGIAAoAgghBAsgACgCBCAEaiADNgAAIAAgBEEEaiIDNgIIIAIoAgghCCAAKAIAIANrQQNNBEAgACADQQQQ5QYgACgCCCEDCyAAIANBBGoiBDYCCCAAKAIEIANqIAg2AAAgBiACQQxqIgJHDQALCyAFKAJgQYCAgIB4RgRAIAEoAgAiACgCCCECIAIgACgCAEYEQCAAIAJBARDlBiAAKAIIIQILIAAgAkEBajYCCCAAKAIEIAJqQQA6AAAMDgsgASgCACIDKAIIIQAgACADKAIARgRAIAMgAEEBEOUGIAMoAgghAAsgAygCBCAAakEBOgAAIAMgAEEBaiIANgIIIAUoAmQhBCAFKAJoIgKtIQkgAygCACAAa0EHTQRAIAMgAEEIEOUGIAMoAgghAAsgAyAAQQhqNgIIIAMoAgQgAGogCTcAACACQQxsIQIDQCACBEAgAkEMayECIAQgARDdBiEAIARBDGohBCAARQ0BDBALCyAFKAJwIQIgBSgCdCIErSEJIAMoAgAgAygCCCIAa0EHTQRAIAMgAEEIEOUGIAMoAgghAAsgAyAAQQhqNgIIIAMoAgQgAGogCTcAACAEQSRsIQQDQCAERQ0OIAIgARDdBiIADQ8gAkEMaiABEN0GIgANDyAEQSRrIQQgAkEYaiEAIAJBJGohAiAAIAEQ3QYiAEUNAAsMDgsgBygCCCEFIAEoAgAiACgCCCECIAAoAgAgAmtBA00EQCAAIAJBBBDlBiAAKAIIIQILIAAgAkEEajYCCCAAKAIEIAJqQQY2AAAgASAFQRhqEJYBIgANDSAFKAIEIQQgBSgCCCIDrSEJIAEoAgAiACgCCCECIAAoAgAgAmtBB00EQCAAIAJBCBDlBiAAKAIIIQILIAAgAkEIajYCCCAAKAIEIAJqIAk3AAAgA0EMbCECA0AgAgRAIAJBDGshAiAEIAEQ3QYhACAEQQxqIQQgAEUNAQwPCwsgBSgCECEDIAUoAhQiBK0hCSABKAIAIgEoAgghACABKAIAIABrQQdNBEAgASAAQQgQ5QYgASgCCCEACyABIABBCGoiAjYCCCABKAIEIABqIAk3AABBACEAIARFDQ0gAyAEQQN0aiEFA0AgA0EEaigCACEGIAMoAgAhBCABKAIAIAJrQQNNBEAgASACQQQQ5QYgASgCCCECCyABKAIEIAJqIAQ2AAAgASACQQRqIgQ2AgggASgCACAEa0EDTQRAIAEgBEEEEOUGIAEoAgghBAsgASAEQQRqIgI2AgggASgCBCAEaiAGNgAAIAUgA0EIaiIDRw0ACwwNCyAHKAIIIQMgASgCACIAKAIIIQIgACgCACACa0EDTQRAIAAgAkEEEOUGIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpBBzYAACADIAEQ3QYhAAwMCyAHKAIIIQUgASgCACICKAIIIQAgAigCACAAa0EDTQRAIAIgAEEEEOUGIAIoAgghAAsgAiAAQQRqNgIIIAIoAgQgAGpBCDYAACABIAUQgwUiAA0LIAUoAhghBCAFKAIcIgatIQkgAigCACACKAIIIgNrQQdNBEAgAiADQQgQ5QYgAigCCCEDCyACIANBCGoiADYCCCACKAIEIANqIAk3AAAgBgRAA0AgBC0AACEIIARBAWohBCACIAAgAigCAEcEfyAABSACIABBARDlBiACKAIICyIDQQFqIgA2AgggAigCBCADaiAIOgAAIAZBAWsiBg0ACwsgBTUCICEJIAIoAgAgAGtBB00EQCACIABBCBDlBiACKAIIIQALIAIoAgQgAGogCTcAACACIABBCGoiADYCCCAFNQIkIQkgAigCACAAa0EHTQRAIAIgAEEIEOUGIAIoAgghAAsgAiAAQQhqNgIIIAIoAgQgAGogCTcAACAFQShqIAEQ3QYiAA0LIAVBNGogARDdBiIADQsgBUFAayABEN0GIgANCyAFKAJMIQMgASgCACIAKAIIIQIgACgCACACa0EHTQRAIAAgAkEIEOUGIAAoAgghAgsgACACQQhqNgIIIAAoAgQgAmogA603AAAgASAFLQBQEOAKIQAMCwsgASgCACIAKAIIIQIgACgCACACa0EDTQRAIAAgAkEEEOUGIAAoAgghAgsgACACQQRqNgIIIAAoAgQgAmpBCTYAACAHKAIIIgNBBGooAgAhAiADQQhqKAIAIgWtIQkgASgCACIAKAIIIQQgACgCACAEa0EHTQRAIAAgBEEIEOUGIAAoAgghBAsgACAEQQhqNgIIIAAoAgQgBGogCTcAACAFQSRsIQQDQCAEBEAgASACEMgFIgANDCACQRBqIAEQ3QYiAA0MIARBJGshBCACQRxqIQAgAkEkaiECIAAgARAoIgBFDQEMDAsLIAEgA0EYahCWASIADQogA0EQaigCACECIANBFGooAgAiBa0hCSABKAIAIgAoAgghBCAAKAIAIARrQQdNBEAgACAEQQgQ5QYgACgCCCEECyAAIARBCGo2AgggACgCBCAEaiAJNwAAIAVBGGwhBANAIAQEQCACIAEQ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IQFBACEFQQAhBAJAIAlB/ABqIgcoAggiBgR/IAEoAgAqAgAiCEMAAAAAYA0BIAhDAACgQJQhCCAHKAIEQTBqIQACQANAIAAqAgAiJyAIYCAnQwAAAABgckUNASAAQTxqIQAgBiAEQQFqIgRHDQALDAILQQEhBSAEQQFqBUEACyEAIAAgBkYNACAGIABrIQQgBygCBCAAQTxsaiEAIAEoAgAhDwNAIABBMGohDAJAAkAgDyoCACIIQwAAAABgDQAgDCoCACInQwAAAABgDQAgCEMAAKBAlCAnXw0AIAVBAWohBQwBCyAAIAVBRGxqIgEgACkCADcCACABQThqIABBOGooAgA2AgAgAUEwaiAMKQIANwIAIAFBKGogAEEoaikCADcCACABQSBqIABBIGopAgA3AgAgAUEYaiAAQRhqKQIANwIAIAFBEGogAEEQaikCADcCACABQQhqIABBCGopAgA3AgALIABBPGohACAEQQFrIgQNAAsLIAcgBiAFazYCCAsgCSALQShqIgAgC0EYaiIBIAobIgQpAgA3AogBIAkgASAAIAobIgApAgA3ApQBIAlBkAFqIARBCGooAgA2AgAgCUGcAWogAEEIaigCADYCACAJKAKEASIABEAgA0UNBCAJKAKAASIOIABBPGxqIQUgA0E8bCIAIAJqIQYgAkE8aiEBIABBPGsiB0E8bkEBcSEJA0AgDigCNCEEAn8gAiAJDQAaIAEgBCACKAI0Rw0AGiABIA4oAjggAigCOEcNABogDiACKQIANwIAIA5BEGogAkEQaikCADcCACAOQQhqIAJBCGopAgA3AgAgAQshDSAHQTxPBEADQAJAIAQgDSgCNEcNACAOKAI4IA0oAjhHDQAgDiANKQIANwIAIA5BEGogDUEQaikCADcCACAOQQhqIA1BCGopAgA3AgALAkAgBCANQfAAaigCAEcNACAOKAI4IA1B9ABqKAIARw0AIA4gDUE8aiIAKQIANwIAIA5BEGogAEEQaikCADcCACAOQQhqIABBCGopAgA3AgALIAYgDUH4AGoiDUcNAAsLIAUgDkE8aiIORw0ACwsgA0UNAyACIANBPGxBBBC+DQwDCyACIA0QvgwACyAJQQA2AoQBDAELIAlBADYChAELIAtBgAJqJAALjS0DH38Efhd9IwBB8ABrIgIkAEEEIQRBBCESAkAC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KAI8aiIDIANB////P08bIAFrIgNBAU0NAiABIAEgA2oiBUsNAiAFQQR0IQQgBUGAgIDAAElBAnQhCCACIAEEfyACIAIoAig2AmQgAiABQQR0NgJsQQQFQQALNgJoIAJB2ABqIAggBCACQeQAahCOByACKAJYDQIMAwsgBiABQdyWwgAQmQkACyAGIAhB4JXCABCZCQALIAFBAWoiBUUEQEEAQQAQvgwACyAFQQR0IQQgBUGAgIDAAElBAnQhCCACIAEEfyACIAIoAig2AmQgAiABQQR0NgJsQQQFQQALNgJoIAJB2ABqIAggBCACQeQAahCOByACKAJYDQ4LIAIgAigCXDYCKCACIAU2AiQLIAEgBUYEQCACQSRqEMwGCyACKAIoIAFBBHRqIgMgGzYCBCADIBo2AgAgA0EANgIMIAMgFTYCCCACIAFBAWoiATYCLCABIAZNDQMgAigCKCEDCyADIAZBBHRqIgEgASgCDEEBajYCDCAWQRhHDQALCyAcIAxBDGoiDEYNBgwBCwsgBiABQdyWwgAQmQkACyADIA9BnInDABCZCQALIAYgD0GMicMAEJkJAAsgASAPQfyIwwAQmQkACyABIAwQvgwACyATRQRAQQQhBAwBCyATQSRsIQxBACEBIBNB4/G4HEsNASAMQQBIDQFBgYnEAC0AABpBBCEBIAxBBBDcDCIERQ0BIAQhBiATIQwDQCACIBQoAgAiASAUQQRqKAIAIgMgASADSxs2AlwgAiABIAMgASADSRs2AlggAiADIBRBCGooAgAiCCADIAhLGzYCaCACIAMgCCADIAhJGzYCZCACIAggASABIAhJGzYCRCACIAggASABIAhLGzYCQEMAAAAAISpDAAAAACElQwAAAAAhJkMAAAAAISQgAkEIaiACQdgAahDoBCIBBEAgASoCCCElIAEqAgQhJiABKgIAISQLQwAAAAAhJ0MAAAAAISggAkEIaiACQeQAahDoBCIBBEAgASoCBCEnIAEqAgAhKCABKgIIISoLIAZBIGohAwJ9IAJBCGogAkFAaxDoBCIBRQRAQwAAAAAhLEMAAAAAIStDAAAAAAwBCyABKgIEISwgASoCCCErIAEqAgALISkgAyArOAIAIAZBHGogLDgCACAGQRhqICk4AgAgBkEUaiAqOAIAIAZBEGogJzgCACAGQQxqICg4AgAg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QRhqIggpAgA3AgAgByADQSBqIgcoAgA2AgAgBCBbNwMwIAMgBCkDMDcCACAHIAUoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACAGIAIpAwA3AgAMAwsgAikCACFbIAIgBSkCADcCACAEQTBqIgNBIGoiBiACQSBqIgcoAgA2AgAgA0EYaiIJIAJBGGoiCCkCADcDACADQRBqIgsgAkEQaiIKKQIANwMAIANBCGoiAyACQQhqIgIpAgA3AwAgAiAFQQhqIgIpAgA3AgAgCiAFQRBqIgopAgA3AgAgCCAFQRhqIggpAgA3AgAgByAFQSBqIgcoAgA2AgAgBCBbNwMwIAUgBCkDMDcCACAHIAYoAgA2AgAgCCAJKQMANwIAIAogCykDADcCACACIAMpAwA3AgBBAiEDDAsLIAIpAgAhWyACIAMpAgA3AgAgBEEwaiIFQSBqIgYgAkEgaiIHKAIANgIAIAVBGGoiCSACQRhqIggpAgA3AwAgBUEQaiILIAJBEGoiCikCADcDACAFQQhqIgUgAkEIaiICKQIANwMAIAIgA0EIaiICKQIANwIAIAogA0EQaiIKKQIANwIAIAggA0EYaiIIKQIANwIAIAcgA0EgaiIHKAIANgIAIAQgWzcDMCADIAQpAzA3AgAgByAGKAIANgIAIAggCSkDADcCACAKIAspAwA3AgAgAiAFKQMANwIAQQMhAwwKCyACKQIAIVsgAiAFKQIANwIAIARBMGoiB0EgaiIJIAJBIGoiCigCADYCACAHQRhqIgggAkEYaiIOKQIANwMAIAdBEGoiCyACQRBqIg8pAgA3AwAgB0EIaiIHIAJBCGoiAikCADcDACACIAVBCGoiAikCADcCACAPIAVBEGoiDykCADcCACAOIAVBGGoiDikCADcCACAKIAVBIGoiCigCADYCACAEIFs3AzAgBSAEKQMwNwIAIAogCSgCADYCACAOIAgpAwA3AgAgDyALKQMANwIAIAIgBykDADcCACABKAIIIQIgASABKAIANgIIIAEgAjYCACAJIAZBIGoiAigCADYCACAIIAZBGGoiBSkCADcDACALIAZBEGoiCikCADcDACAHIAZBCGoiDikCADcDACAGKQIAIVsgBiADKQIANwIAIA4gA0EIaiIGKQIANwIAIAogA0EQaiIKKQIANwIAIAUgA0EYaiIFKQIA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ADYCyAFBBAVBAAs2AswBIAdBgAJqIBEgDCAHQcgBahCOByAHKAKAAgRAIAcoAoQCIAcoAogCEL4MAAsgBygChAIhCSALIAg2AgAgC0EEaiAJNgIACyAGIAhGBEAgCxDNBgsgC0EIaiAGQQFqIgk2AgAgC0EEaiIIKAIAIAZBFGxqIgYgEzoAECAGIBA2AgwgBiASNgIIIAYgDTYCBCAGIA82AgAgCSAKSwRAIAgoAgAgCkEUbGpBDGohDCAOKAIIIQkMAQsgCiAJQcD5wAAQmQkACwJAIAkgDCgCACIGSwRAIA5BBGooAgAhDyAHQcgBaiINIAAoAhwgFSgCABBIIA1BBGpBACAHKALIARshDSAPIAZBqAFsaiEPIAAoAiQhCSAAKAIgIQggACgCGC0AAEUEQCAAKAI0IQYCQCABBEAgByAGKgIMIikgASoCDCIjlCAGKgIAIiUgASoCACIklJMgBioCBCImIAEqAgQiKpSTIAYqAggiJyABKgIIIiuUkzgCjAIgByAnICOUICUgKpQgKSArlJIgJiAklJOSOAKIAiAHICcgJJQgJiAjlCApICqUICUgK5STkpI4AoQCIAcgJiArlCApICSUICUgI5SSkiAnICqUkzgCgAIgJSABKgIUIiqUICYgASoCECIrlJMiIyAjkiEjICcgK5QgASoCGCIoICWUkyIkICSSISQgByAGKgIYICggKSAjlCAlICSUICYgJiAolCAnICqUkyIoICiSIiiUk5KSkjgCmAIgByAGKgIUICogKSAklCAnICiUICUgI5STkpKSOAKUAiAHIAYqAhAgKyAoICmUICYgI5QgJyAklJOSkpI4ApACDAELIAdBgAJqIgFBGGogBkEYaigCADYCACABQRBqIAZBEGopAgA3AwAgAUEIaiAGQQhqKQIANwMAIAcgBikCADcDgAILIAggB0GAAmogACgCLEGw4sAAIAIgAyANQYjhwAAgBCAFIAAoAjAqAgAgDyAJKAIoER0AGgwCCyAAKAIoIQYCQCABBEAgByABKgIIIiUgBioCCCIjlCABKgIEIiYgBioCBCIklCABKgIAIicgBioCACIqlCABKgIMIikgBioCDCIrlJKSkjgCjAIgByAmICqUICkgI5QgJyAklJOSICUgK5STOAKIAiAHICkgJJQgJyAjlJIgJiArlJMgJSAqlJM4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AEEDdEEEEL4NCyABRQ0QIAQgAUEMbEEEEL4NDBALIAAgASACIAgoAhBBlKvAACAFIAYQOAwPCyAIQRhqIgshBCAIKAIQIQcgACgC8AEhDCAAKAL0ASEDIwBB4ABrIgEkACABQTBqIgBBCGoiCUEANgIAIAFBADYCCCABQoCAgIDAADcCACABQQA2AhQgAUKAgICAwAA3AgwgAUEANgIgIAFBADYCLCABQQA2AkQgASAHKgIAIho4AiggASAaOAJAIAEgGowiGzgCHCABIAcqAgSMIhk4AhggASAZOAIkIAEgGTgCMCABIBsgByoCCCIckzgCNCABIBkgHJMiHzgCPCABEM4GIAEoAgQiByABKQIwNwIAIAdBCGogCSgCADYCACABQQE2AgggAUEANgJQIAEgGzgCTCABIB84AkggAUEYaiAAIAFByABqIAMgARDyASABKAIAIgkgASgCCCIHRgRAIAEQzgYgASgCACEJCyAcIBqSIRogASgCBCIAIAdBDGxqIgpBADYCCCAKIBs4AgQgCiAfOAIAIAEgB0EBaiIKNgIIIAkgCkYEfyABEM4GIAEoAgQFIAALIApBDGxqIgAgASkCPDcCACAAQQhqIAFBPGoiAEEIaigCADYCACABIAdBAmo2AgggAUEANgJQIAEgGjgCTCABIBk4AkggAUEkaiAAIAFByABqIAMgARDyASABKAIIIgAgASgCAEYEQCABEM4GCyABQQhqIgcgAEEBajYCACABKAIEIABBDGxqIgBBADYCCCAAIBo4AgQgACAZOAIAIAEgAzYCUCABQcgAaiIAQQxqIANBAmo2AgAgAEEUaiADQQF0IgNBAmo2AgAgAUKAgICAEDcCSCABIANBAXI2AlhBACAAQQMgDCABIAFBDGoiABB+IARBCGogBygCADYCACAEIAEpAgA3AgAgBCABKQIMNwIMIARBFGogAEEIaigCADYCACABQeAAaiQAIAgoAiQhACAIKAIYIQEgCCgCLCEHIAgoAighAyAIKAIgIQkgCCgCHCEEIAhBgICA/AM2AiAgCEKAgID8g4CAwD83AhggAiAEIAkgAyAHIAUgCyAGENYCIAAEQCADIABBA3RBBBC+DQsgAUUNDiAEIAFBDGxBBBC+DQwOCyAIQRhqIgshBCAIKAIQIQcgACgC8AEhDCAAKAL0ASEDIwBB4ABr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IAYgEjYCSCAGIBM2AkQgBiAUNgJAIAZBCGogHikDADcCACAGQRBqIB0pAwA3AgAgBkEYaiAcKQMANwIAIAZBIGogB0HoAGopAwA3AgAgBkEoaiAfKQMANwIAIAZBMGogICkDADcCACAGQThqICEpAwA3AgAgBiAbOwF4IAYgGjYCdCAGQfAAaiAXKAIANgIAIAYgBykDODcCaCAGIAcpASo3AXogBkGAAWogB0EwaikBADcBACAGQZABaiAYKAIANgIAIAYgBykDGDcCiAEgBkGcAWogGSgCADYCACAGIAcpAwg3ApQBIAYgFTYCpAEgBiAWNgKgASAOIAhBAWoiCTYCCAwGCyAAKAIQLQAAIRIgACgCDCIOKAIIIQ8CfyAAKAIULQAABEBBACENQQAhCiABBEAgB0HIAWoiCEEYaiABQRhqKAIANgIAIAhBEGogAUEQaikCADcDACAIQQhqIAFBCGopAgA3AwAgByABKQIANwPIAUEBIQoLIAdBiAFqIghBGGogB0HIAWoiCUEYaigCADYCACAIQRBqIAlBEGopAwA3AwAgCEEIaiAJQQhqKQMANwMAIAcgBykDyAE3A4gBQQAhCSAGDAELQQAhCkEAIQ0gAQRAIAdByAFqIghBGGogAUEYaigCADYCACAIQRBqIAFBEGopAgA3AwAgCEEIaiABQQhqKQIANwMAIAcgASkCADcDyAFBASENCyAHQagBaiIIQRhqIAdByAFqIglBGGooAgA2AgAgCEEQaiAJQRBqKQMANwMAIAhBCGogCUEIaikDADcDACAHIAcpA8gBNwOoASAGIQlBAAshCCAOKAIAIA9GBEAgDhDLBgsgDigCBCAPQagBbGoiDCANNgIAIAwgBykDqAE3AgQgDCAKNgIgIAwgBykDiAE3AiQgDEEMaiAHQagBaiIKQQhqKQMANwIAIAxBFGogCkEQaikDADcCACAMQRxqIApBGGooAgA2AgAgDEEsaiAHQYgBaiIKQQhqKQMANwIAIAxBNGogCkEQaikDADcCACAMQTxqIApBGGooAgA2AgAgDEIANwJgIAxB6ABqQgA3AgAgDEHwAGpCADcCACAMQfgAakEAOwEAIAxCADcChAEgDEGMAWpCADcCACAMQZQBakIANwIAIAxBnAFqQQA2AgAgDEKAgICAwAA3AnwgDEKAgICAwAA3Algg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IAcoAkQhAyACIQAgBygCQAwBC0EGIAggCEEGTxshCSAHKAJEIQNBACEEA0AgBCAJdiEKIARBAWohBCAKRQ0ACyAIIAhBB0lqIQggAgsiBEEBcUUNAQwDCwsMBQtB8MjAABDIDQALQQAhA0EAIQkLIAAEQCAAQdAMQQQQvg0LIANFDQELIAMgCUE0bGoiAEEwaiABOAIAIABBLGogEzgCACAAQShqIBQ4AgAgAEEkaiAVOAIAIABBIGogBTgCACAAQRxqIBI4AgAgAEEYaiAROAIAIABBFGogEDgCACAAQRBqIAs2AgAgAEEMaiAMNgIAIABBCGogDTYCACAAQQRqIA42AgAgAEE0aiIAIAAoAgBBAXI2AgAgB0GAAWoQpwILIAZB0AFqJAAPC0EEQdAMQYirxAAoAgAiAEHPByAAGxEAAAALyBwCC38ofSMAQZABayIJJAACQAJAAkACQAJAAkACQAJAAkACQAJAIARBBU8EQCAEQQJ0IQxDAACAPyAEs5UhEyAFKAIEIQ0gBSgCCCELA0AgAyAKaigCACIIIAtPDQUgFyATIA0gCEEYbGoiCCoCCCAIKgIUkkMAAAA/lJSSIRcgFiATIAgqAgQgCCoCEJJDAAAAP5SUkiEWIBUgEyAIKgIAIAgqAgySQwAAAD+UlJIhFSAMIApBBGoiCkcNAAsgBEECdCEMQwAAgD8gBEEBa7OVIRkgBSgCBCENIAUoAgghC0MAAAAAIRNBACEKA0AgAyAKaigCACIIIAtPDQkgGCAZIA0gCEEYbGoiCCoCCCAIKgIUkkMAAAA/lCAXkyIYIBiUlJIhGCAUIBkgCCoCBCAIKgIQkkMAAAA/lCAWkyIUIBSUlJIhFCATIBkgCCoCACAIKgIMkkMAAAA/lCAVkyITIBOUlJIhEyAMIApBBGoiCkcNAAtBAiATIBReIgggGCAUIBMgCBtdGyIIQQJqIgsgCEEBayALQQNJGyELIAhBAWoiCiAIQQJrIApBA0kbIQwgASgCICIKIAEoAhhGBEAgAUEYahDWBgsgCkEHdCINIAEoAhxqIghCADcDYCAIQegAakIANwMAIAhC////+////79/NwNYIAhC////+////79/NwNQIAhC////+////79/NwNIIAhC////+////79/NwNAIAhC////+////79/NwM4IAhC////+////79/NwMwIAhC////+/f//7//ADcDKCAIQv////v3//+//wA3AyAgCEL////79///v/8ANwMYIAhC////+/f//7//ADcDECAIQv////v3//+//wA3AwggCEL////79///v/8ANwMAIAggBjYCcCAIQQA6AHggCCAHOgB0IAEgCkEBajYCICAJIBc4AgwgCSAWOAIIIAkgFTgCBCAJQYABaiIGIAMgBCAFKAIEIgMgBSgCCCIEIAlBBGoiByAMIAItAAAiCBDnAyAJKAKMASEMIAkoAogBIQ4gBiAJKAKAASAJKAKEASADIAQgByALIAgQ5wMgCSgCjAEhDyAJKAKIASEQIAkoAoQBIREgCSgCgAEhEiAGIA4gDCADIAQgByALIAgQ5wMgCSgCjAEhAyAJKAKIASEEIAkoAoQBIQYgCSgCgAEhByAJQRBqIAEgAiASIBEgBSAKQQAQRSAJQSxqIAEgAiAQIA8gBSAKQQEQRSAJQcgAaiABIAIgByAGIAUgCkECEEUgCUHkAGogASACIAQgAyAFIApBAxBFIAEoAiAiAiAKTQ0FIAEoAhwgDWoiAiAJKAJkNgJsIAIgCSgCSDYCaCACIAkoAiw2AmQgAiAJKAIQNgJgIAEoAiAiAiAKTQ0GIAkqAhQhFyAJKgIwIRYgCSoCTCEVIAkqAmghEyAJKgIYIRQgCSoCNCEYIAkqAlAhGSAJKgJsIRsgCSoCHCEcIAkqAjghHSAJKgJUIRogCSoCcCEeIAkqAiAhHyAJKgI8ISAgCSoCWCEhIAkqAnQhIiAJKgIkISMgCSoCQCEkIAkqAlwhJSAJKgJ4ISYgCSoCKCEnIAkqAkQhKCAJKgJgISkgCkEHdCIDIAEoAhxqIgIgCSoCfDgCXCACICk4AlggAiAoOAJUIAIgJzgCUCACICY4AkwgAiAlOAJIIAIgJDgCRCACICM4AkAgAiAiOAI8IAIgITgCOCACICA4AjQgAiAfOAIwIAIgHjgCLCACIBo4AiggAiAdOAIkIAIgHDgCICACIBs4AhwgAiAZOAIYIAIgGDgCFCACIBQ4AhAgAiATOAIMIAIgFTgCCCACIBY4AgQgAiAXOAIAIAEoAiAiAiAKTQ0HIAEoAhwhAiAJQgA3A4gBIAlCADcDgAEgAiADaiAJQYABahC4AiABKAIgIgIgCksNASAKIAJB6KTCABCZCQALIAEoAiAhCkP//39/IRdD//9//yEWQX8hAiAEDQFBfyEIQX8hC0F/IQVD//9//yEZQ///f/8hG0P//39/IRxD//9/fyEdQ///f/8hHkP//3//IR9D//9//yEgQ///f38hIUP//39/ISJD//9/fyEjQ///f/8hJEP//3//ISVD//9//yEmQ///f38hJ0P//39/IShD//9/fyEpQ///f/8hFUP//3//IRpD//9//yETQ///f38hFEP//39/IRhD//9/fyEqDAILIAEoAhwgCkEHdGoiASoCUCIXIAEqAlQiFiAWIBdfGyIXIAEqAlgiFiAWIBdfGyIXIAEqAlwiFiAWIBdfGyEXIAEqAkAiFiABKgJEIhUgFSAWXxsiFiABKgJIIhUgFSAWXxsiFiABKgJMIhUgFSAWXxshFiABKgIwIhUgASoCNCITIBMgFV8bIhUgASoCOCITIBMgFV8bIhUgASoCPCITIBMgFV8bIRUgASoCACITIAEqAgQiFCATIBRfGyITIAEqAggiFCATIBRfGyITIAEqAgwiFCATIBRfGyEaIAEqAiAiEyABQSRqKgIAIhQgEyAUXxsiEyABQShqKgIAIhQgEyAUXxsiEyABQSxqKgIAIhQgEyAUXxshEyABKgIQIhQgAUEUaioCACIYIBQgGF8bIhQgAUEYaioCACIYIBQgGF8bIhQgAUEcaioCACIYIBQgGF8bIRQMCQsgAygCACIIIAUoAggiDU8NByABKAJEIg4gCE0NBiAFKAIEIg8gCEEYbGoiBSoCFCEVIAUqAhAhGiAFKgIMIRMgBSoCCCEUIAUqAgQhGCAFKgIAISogASgCQCIQIAhBDGxqIgVBADoABCAFIAo2AgAgBEEBRgRAQX8hC0F/IQVD//9//yEZQ///f/8hG0P//39/IRxD//9/fyEdQ///f/8hHkP//3//IR9D//9//yEgQ///f38hIUP//39/ISJD//9/fyEjQ///f/8hJEP//3//ISVD//9//yEmQ///f38hJ0P//39/IShD//9/fyEpDAELIAMoAgQiCyANTwRAIAshCAwICyALIA5PBEAgCyEIDAcLIA8gC0EYbGoiBSoCFCEkIAUqAhAhJSAFKgIMISYgBSoCCCEnIAUqAgQhKCAFKgIAISkgECALQQxsaiIFQQE6AAQgBSAKNgIAIARBAkYEQEF/IQVD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CCEICyAAKAIEIAhBA3RqIQMgCUECTwRAIAlBAWsiAkEHcSEKIAlBAmtBB08EQCACQXhxIQIDQCADQv////v3/////wA3AgAgA0E4akL////79/////8ANwIAIANBMGpC////+/f/////ADcCACADQShqQv////v3/////wA3AgAgA0EgakL////79/////8ANwIAIANBGGpC////+/f/////ADcCACADQRBqQv////v3/////wA3AgAgA0EIakL////79/////8ANwIAIANBQGshAyACQQhrIgINAAsLIAoEQANAIANC////+/f/////ADcCACADQQhqIQMgCkEBayIKDQALCyAIIAlqQQFrIQgLIANC////+/f/////ADcCACAAKAIUIQkgCEEBagshAyAAIAM2AgggCQRAIAdBAmshByANQQJrIQMgACgCECIOIAlBDGxqIQgCQAJAA0ACQAJAIAcgACgCCCIJSQRAIAhBDGshCCAHQQN0IQogA0EDdCECA0AgACgCBCINIApqIgsqAgAiHyAIKgIAIiBfDQIgAyAJTw0DIAIgDWoiCUEEaiALQQRqKAIANgIAIAkgHzgCACAKQQhrIQogAkEIayECIANBAWshAyAHQQFrIgcgACgCCCIJSQ0ACwsgByAJQdDuwQAQmQkACyADIAlPDQIgAiANaiICQQRqIAhBBGooAgA2AgAgAiAgOAIAIAhBCGogAzYCACADQQFrIQMgCCAORw0BDAMLCyADIAlB4O7BABCZCQALIAMgCUHw7sEAEJkJAAsgACgCCCEDCyADQQFrIQkgA0UNASAGRQ0AIAAoAgQhDiAAKAIUIQIgAEEANgIUIANBA3RBEGshCyAAKAIQIgggAkEMbGohDyABQQJ0IQ0CQAJAA0AgCCAPRg0DIAgiAEEMaiEIIAAoAgQiAUEATg0AIAUgAUH/////B3EiAUsEQCAAKAIIIgNBAWoiAiAJSw0CIAIgCUYNASAAKgIAIR8gBCABQSxsaiIHQRhqIhAgDWoqAgAhICALIANBA3RrIQogDiACQQN0aiEDA0ACQCADKAIEIhFB/////wdxIgAgAUYNACAAIAVPDQUgBCAAQSxsaiECAkAgEUEASARAIAMqAgAgIF0NAQwCCyACIA1qQQxqKgIAIB9fRQ0BCyAHKgIMIAIqAhhfRQ0AIAcqAhAg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ApgBIAogCzYCkAEgCiACNgKIASAKIApBKGo2ArwBIAogCkEgajYCuAEgCiAKQcQAajYCrAEgCiAKQSZqNgKgASAKIApBJ2o2ApwBIAogATYClAEgCiADNgKMASAKQbACaiIAIApB4ABqEJAHIApBwAFqIABB4AAQ5Q0aIAogCkGIAWo2AqACIAIgAygCEBEFACEAIApBADYCnAMgCkKAgICAwAA3ApQDAkAgACgCICIDRQ0AIApBlANqEM8GIAooApgDIglBADYCACAAKAJAIgVBCGohGCAAKAJEIQQgACgCHCEZQQEhCAJAA0AgCiAIQQFrIgc2ApwDAkACQAJAIAdBAnQiGiAJaigCACIAIANJBEAgCigClAMhDCAZIABBB3RqIgEtAHhBAXEiGwRAIAEoAmAhAiABKAJkIQ4gASgCaCEPIAEoAmwhEiAKQaADaiABIApBwAFqENoDIAotAKMDQQN0IhcgCi0AogNBAnQiFiAKLQCgAyIAIAotAKEDQQF0IhVycnIiE60hHSACIARPDQMgHUIBg6cNAgwDCyAKQaADaiABIApBwAFqENoDIAotAKADIgBBAkYNBSAKLQCjA0EDdCEXIAotAKIDQQJ0IRYgCi0AoQNBAXQhFQwDCyAAIANBgN7AABCZCQALIBggAkEMbGoiECgCACERIAooAqACIgIoAgAhFCACKAIEIRwgCiAQNgK0AiAKIAIoAjQ2AuACIAogAikCLDcC2AIgCiACKQIkNwLQAiAKIAIpAhw3AsgCIAogAikCFDcCwAIgCiACKQIMNwK4AiAKIAIoAgg2ArACIBQgESAKQbACakGI58AAIBwoAgwRAgALIB1C/wGDIR0CQCAEIA5NIgINACAdQgKDUA0AQQBBACAFIA5BDGxqIAIbQQhqIAIbIg4oAgAhECAKKAKgAiICKAIAIREgAigCBCEUIAogDjYCtAIgCiACKAI0NgLgAiAKIAIpAiw3AtgCIAogAikCJDcC0AIgCiACKQIcNwLIAiAKIAIpAhQ3AsACIAogAikCDDcCuAIgCiACKAIINgKwAiARIBAgCkGwAmpBiOfAACAUKAIMEQIACwJAIAQgD00iAg0AIB1CBINQDQBBAEEAIAUgD0EMbGogAhtBCGogAhsiDigCACEPIAooAqACIgIoAgAhECACKAIEIREgCiAONgK0AiAK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QQhqIQYgBygCCCECCyAGKAIAIgMgAk8NASAHQQRqKAIAIQIgBEGwAWoiByAAKAIUIAEQSCAHQQRqQQAgBCgCsAEbIQcgAiADQagBbGohAyAAKAIcIQUgACgCGCEGAkAgACgCEC0AAEUEQCAGIAAoAiAgBEEIakGw4sAAIAAoAiQgACgCKCAHQYjhwABBACACIAAoAiwqAgAgAyAFKAIoER0AGgwBCyAEIAAoAiAiASoCDCImOALwASAEIAEqAggiIIw4AuwBIAQgASoCBCIhjDgC6AEgBCABKgIAIiKMOALkASAEICYgIiABKgIUIieUICEgASoCECIolJMiIyAjkiIjlCAhICEgASoCGCIplCAgICeUkyIkICSSIiSUICIgICAolCAiICmUkyIlICWSIiWUk5IgKZM4AvwBIAQgJiAllCAiICOUICAgJJSTkiAnkzgC+AEgBCAmICSUICAgJZQgISAjlJOSICiTOAL0ASAGIARB5AFqIAAoAiQgACgCKCAEQQhqQbDiwABBACABIAdBiOHAACAAKAIsKgIAIAMgBSgCKBEdABoLIARBgAJqJAAPCyAMIAVBwPnAABCZCQALIAMgAkG85cAAEJkJAAvZFQMffwh9A34jAEGgA2siAyQAAkACQAJAAkAgASgCYEGAgICAeEYEQCADQQA6ADggAyACNgI0IAMgAioCCCInOAIsIAMgJzgCKCADICc4AiQgAyAnOAIgIAMgAioCBCIoOAIcIAMgKDgCGCADICg4AhQgAyAoOAIQIAMgAioCACIpOAIMIAMgKTgCCCADICk4AgQgAyApOAIAIAMgATYCMCABKAIgIg5FDQQgA0EANgJQIANCgICAgMAANwJIIANByABqIgQQ0AYgAygCTEKAgICA8P///343AgAgA0EBNgJQIANB1ABqIAQQwwMgAygCVEUEQEEEIQsMAgsgASgCUCEPIAEoAkwhFCABKAJYIRwgASgCXCEWIANBxAFqIRcgA0GJA2ohGCADQZgCaiIEQQxqIRkgBEEYaiEaIAEoAkAhEyABKAJEIQwgASgCHCEdQ///f38hI0EEIQsDQCAjIAMqAlyMXw0CAkACQAJAIA4gAygCWCIESwRAIB0gBEEHdGoiBy0AeEEBcSIFBEAgBygCbCIGIAxJIQQgEyAGQQxsakEAIAQbQQhqQQAgBBshHiAH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BkUNAQsgBiAeaiIeIAYgHWoiHSAGQQBKGyEHIAIgA2siAyAjaiIjIAMgIWoiISADQQBKGyIDQQBOBEACQAJAIAdBAE4EQCADICBODQIgByAfTiEiDAELQQEhIiADICBODQMLIAENAyAdIB4gHSAeShshASAdIQQDQCABIARGDQQgHEFAayADIAQQ3gEhJiAEQQFqIQQgJkUNAAsgAEEFOgA0DAcLQQAhIiAHIB9ODQEMAgtBACEiIAcgH0kNAQsgACAcKQIINwIAIABBMGogHEEIaiIBQTBqKQIANwIAIABBKGogAUEoaikCADcCACAAQSBqIAFBIGopAgA3AgAgAEEYaiABQRhqKQIANwIAIABBEGogAUEQaikCADcCACAAQQhqIAFBCGopAgA3AgAMBAsgBSAGaiEFIAIhAyAGRQ0AICEhBCAiDQADQCAEICNODQEgHEFAayAEIAcQ3gEhASAEQQFqIQQgAUUNAAsLIABBBToANAwCCyAAIBwpAgg3AgAgAEEwaiAcQQhqIgFBMGopAgA3AgAgAEEoaiABQShqKQIANwIAIABBIGogAUEgaikCADcCACAAQRhqIAFBGGopAgA3AgAgAEEQaiABQRBqKQIANwIAIABBCGogAUEIaikCADcCAAwBCyAAQQQ6ADQLIBxB4ABqJAALuRUDGH8EfQ5+IwBBwANrIggkACAIQQhqIAdBCGopAgA3AwAgCEEQaiAHQRBqKQIANwMAIAhBGGogB0EYaikCADcDACAIQSBqIAdBIGopAgA3AwAgCEEoaiAHQShqKQIANwMAIAggAzYCOCAIIAI2AjQgCCABNgIwIAggBykCADcDACAIQUBrIAQQkAcgCCAGOgCsASAIIAU4AqgBIAggBDYCpAEgCCAINgKgAQJAAkAgASgCaCIOBEAgCEEANgLAASAIQoCAgIDAADcCuAEgCEG4AWoiAhDQBiAIKAK8AUKAgICA8P///343AgAgCEEBNgLAASAIQcQBaiACEMMDAkACQCAIKALEAUUEQEEEIQYMAQsgCEHsAWohEyABKAKIASEQIAEoAowBIQogASgCZCEXQ///f38hBUEEIQYDQCAFIAgqAswBjF8NAQJ/AkAgDiAIKALIASIBSwRAIBcgAUEHdGoiCS0AeEEBcSILBEAgCSgCbCICIApJIQEgECACQQR0akEAIAEb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IANBzwFqQfCwwAAQoggMBgsgASADKQKwATcCjAEgASADLwDJATsApQEgASADKQIoNwIEIAFBnAFqIANBsAFqIgRBEGopAgA3AgAgAUGUAWogBEEIaikCADcCACABQacBaiADQcsBai0AADoAACABQQxqIANBJGoiBEEMaikCADcCACABQRRqIARBFGooAgA2AgAgAygCJCEEIANBAmogA0E9aiIHQQJqLQAAOgAAIANBE2ogA0FAayILQRBqKQIANwAAIANBC2ogC0EIaikCADcAACABQTdqIANB2QBqIgtBAmotAAA6AAAgASALLwAAOwA1IAFByABqIANB3ABqIgtBEGopAgA3AgAgAUFAayALQQhqKQIANwIAIAEgAykCXDcCOCADIAcvAAA7AQAgAyADKQJANwADIAFB0wBqIANB9QBqIgdBAmotAAA6AAAgASAHLwAAOwBRIAFB5ABqIANB+ABqIgdBEGopAgA3AgAgAUHcAGogB0EIaikCADcCACABIAMpAng3AlQgAUHvAGogA0GRAWoiB0ECai0AADoAACABIAcvAAA7AG0gAUGAAWogA0GUAWoiB0EQaikCADcCACABQfgAaiAHQQhqKQIANwIAIAEgAykClAE3AnAgAUGLAWogA0GtAWoiB0ECai0AADoAACABIAcvAAA7AIkBIAEgBjoAGCABIAQ2AgAgASANOgCIASABIAk6AGwgASAIOgBQIAEgCjoANCABIAMpAQA3ABkgAUEhaiADQQhqKQEANwAAIAFBKWogA0EQaikBADcAACABQTBqIANBF2ooAAA2AABBpAEhBAwGCyADKAIkDAQLIAMoAkAMAwsgAygCXAwCCyADKAJ4DAELIAMoApQBCzYCAEEDIQULIAEgBGogBToAACADQdABaiQAIAIoAkAhBSACLQBYIgpBA0YNDSACQYgDaiACQdQAaigCADYCACACQYADaiACQcwAaikCADcDACACIAIpAkQ3A/gCIAJB6QFqIAJB2QBqQY8BEOUNGiAKQQJGBEBBB0GgjMAAQfiCwAAQoggMEQsjAEEQayIDJAACQAJAIAJBQGsiBAJ/IAJBCGoiASgCBCIGRQRAIARBAjoAAUEADAELIAEgBkEBazYCBAJAIAEoAgAiASgCBCIGBEAgASAGQQFrNgIEIAEgASgCACIBQQFqNgIAIAEt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QRxBBBC+DSAFKAI4IQEMAQsgAigCACEHIAJBAjYCACAHQQJGDQ0gAkEBOgAYIAVBMGogAkEUaigCADYCACAFQShqIAJBDGopAgA3AwAgBSACKQIENwMgCyAAIAc2AgAgACAFKQMgNwIEIABBDGogBUEoaikDADcCACAAQRRqIAVBMGooAgA2AgAMBAsgB0EBaiEHIAMgAUEMaiIBaiAGRw0ACwsgAEECNgIAIAJBADoAACAAIAItADQ6AAQMCwsgAEECNgIAIABBAToABAsgASABKAIAIgBBAWs2AgAgAEEBRw0JIAVBOGoQ8wkMCQsCQCACLQAYDQAQtQsgBSgCECACQRBqKAIASSACKQMIIgogBSkDCCILViAKIAtRGw0AIAJBAToAGAsgBUEANgJIIAVBATYCPCAFQfyUwAA2AjggBUIENwJAIAVBOGpBxIbAABCRCwALIAVBIGogAkEIahCSAyAFQQA2AkggBUEBNgI8IAVB/JTAADYCOCAFQgQ3AkAgBUE4akHUhsAAEJELAAsgAEECNgIAIABBADoABAwGCyAAQQA6AAQgAEECNgIADAULIAVCADcCRCAFQoGAgIDAADcCPCAFQeiRwAA2AjggBUEfaiAFQThqEJQLAAsgBiAEQcSFwAAQmAkAC0HYh8AAEMgNAAtB6IfAABDIDQALIABBADoABCAAQQI2AgALIAVB0ABqJAAL0xcCD38MfSMAQUBqIgMkACAAKAJYIQsgACgCXCEEIABBADYCOCAAQQA2AiAgA0EBOgALIARBDGwhBgJAAkACQAJAAkACQAJAAkACQAJAIARFBEAgA0EANgIUIANCgICAgMAANwIMIANBADYCICADQoCAgIDAADcCGEEEIQIMAQtBgYnEAC0AABogBEECdCICQQQQ3AwiB0UNCSADQQA2AhQgAyAHNgIQIAMgBDYCDCAEQRhsIQIgBEHVqtUqSw0BIAJBAEgNAUGBicQALQAAGkEEIQUgAkEEENwMIgdFDQEgByEBAkAgBEEBRg0AIARBAWsiAkEDcSEFIARBAmtBA08EQCACQXxxIQgDQCABQv////v///+/fzcCECABQv////v3//+/fzcCCCABQv////v3//+//wA3AgAgAUHYAGpC////+////79/NwIAIAFB0ABqQv////v3//+/fzcCACABQcgAakL////79///v/8ANwIAIAFBQGtC////+////79/NwIAIAFBOGpC////+/f//79/NwIAIAFBMGpC////+/f//7//ADcCACABQShqQv////v///+/fzcCACABQSBqQv////v3//+/fzcCACABQRhqQv////v3//+//wA3AgAgAUHgAGohASAIQQRrIggNAAsLIAVFDQADQCABQv////v///+/fzcCECABQv////v3//+/fzcCCCABQv////v3//+//wA3AgAgAUEYaiEBIAVBAWsiBQ0ACwsgAUL////79///v/8ANwIAIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAMgBDYCICADIAc2AhwgAyAENgIYQYGJxAAtAAAaIAZBBBDcDCICRQ0CIAIhAQJAIARBAUYNACAEQQFrIgdBA3EhBSAEQQJrQQNPBEAgB0F8cSEIA0AgAUJ/NwIIIAFBADoABCABQX82AgAgAUEsakF/NgIAIAFBKGpBADoAACABQSBqQn83AgAgAUEcakEAOgAAIAFBFGpCfzcCACABQRBqQQA6AAAgAUEwaiEBIAhBBGsiCA0ACwsgBUUNAANAIAFBfzYCCCABQQA6AAQgAUF/NgIAIAFBDGohASAFQQFrIgUNAAsLIAFBfzYCCCABQQA6AAQgAUF/NgIACyAAKAI8IgcEQCAAKAJAIAdBDGxBBBC+DQsgACAENgJEIAAgAjYCQCAAIAQ2AjwgBAR/IAYgC2ohDiAAQTxqIQ9BACEFA0AgCygCACIJIAAoAlAiB08NBCALKAIEIgogB08NBSALKAIIIgYgB08NBiAFQQFqIQcgACgCTCIBIAlBDGxqIgkqAgQhEiABIAZBDGxqIgYqAgAhFCABIApBDGxqIgEqAgAhFSABKgIIIhMiECAQIAkqAggiESAQIBFeGyARIBFcGyEXIAYqAggiECEaIBEgESATIBEgE10bIBMgE1wbIRsgECETIAEqAgQiESIQIBAgEiAQIBJeGyASIBJcGyEYIAYqAgQiECEWIBIgEiARIBEgEl4bIBEgEVwbIRIgECERIBUgFSAJKgIAIhAgECAVXSIGGyAQIBBcGyEZIBAgECAVIAYbIBUgFVwbIRAgBCAFTQRAIAQhBiAHIARrIgogACgCPCAEa0sEQCAPIAQgChCxBiAAKAJEIQYgACgCQCECCyACIAZBDGxqIQEgCkECTwRAIAUgBGsiCUEDcSECIAQgBWtBfE0EQCAJQXxxIQgDQCABQn83AgggAUEAOgAEIAFBfzYCACABQSxqQX82AgAgAUEoakEAOgAAIAFBIGpCfzcCACABQRxqQQA6AAAgAUEUakJ/NwIAIAFBEGpBADoAACABQTBqIQEgCEEEayIIDQALCyACBEAgDSAEa0EDcSEIA0AgAUF/NgIIIAFBADoABCABQX82AgAgAUEMaiEBIAhBAWsiCA0ACwsgBiAKakEBayEGCyABQX82AgggAUEAOgAEIAFBfzYCACAAIAZBAWoiBDYCRCADIAMoAiAiBiAFTQR/IAcgBiICayEMIAwgAygCGCACa0sEQCADQRhqIAYgDBC1BiADKAIgIQILIAMoAhwgAkEYbGohASAMQQJPBEAgBSAGayIKQQNxIQkgBiAFa0F8TQRAIApBfHEhCANAIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAFC////+/f//7//ADcCACABQdgAakL////7////v383AgAgAUHQAGpC////+/f//79/NwIAIAFByABqQv////v3//+//wA3AgAgAUFAa0L////7////v383AgAgAUE4akL////79///v383AgAgAUEwakL////79///v/8ANwIAIAFBKGpC////+////79/NwIAIAFBIGpC////+/f//79/NwIAIAFBGGpC////+/f//7//ADcCACABQeAAaiEBIAhBBGsiCA0ACwsgCQRAIA0gBmtBA3EhCANAIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAFC////+/f//7//ADcCACABQRhqIQEgCEEBayIIDQALCyACIAxqQQFrIQILIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAFC////+/f//7//ADcCACACQQFqBSAHCzYCIAsgBCAFTQ0HIAAoAkAiAiAFQQxsaiAFNgIIIAMoAiAiASAFTQ0IIAMoAhwgBUEYbGoiASAaIBogFyAXIBpdGyAXIBdcGzgCFCABIBYgFiAYIBYgGF4bIBggGFwbOAIQIAEgFCAUIBkgFCAZXhsgGSAZXBs4AgwgASAbIBsgEyATIBteGyATIBNcGzgCCCABIBIgEiARIBEgEl4bIBEgEVwbOAIEIAEgECAQIBQgECAUXRsgFCAUXBs4AgAgAygCFCIBIAMoAgxGBEAgA0EMahDPBgsgAygCECABQQJ0aiAFNgIAIAMgAUEBajYCFCANQQFqIQ0gByEFIA4gC0EMaiILRw0ACyAAKAIgBUEACyIHIABBGGoiAigCAEYEQCACENYGCyAAKAIcIAdBB3RqIgJBATYCYCACQv////v///+/fzcDWCACQv////v///+/fzcDUCACQv////v///+/fzcDSCACQv////v///+/fzcDQCACQv////v///+/fzcDOCACQv////v///+/fzcDMCACQv////v3//+//wA3AyggAkL////79///v/8ANwMgIAJC////+/f//7//ADcDGCACQv////v3//+//wA3AxAgAkL////79///v/8ANwMIIAJC////+/f//7//ADcDACACQn83AmQgAkEAOgB0IAJBADoAeCACQewAakJ/NwIAIAAgB0EBajYCICADQSRqIAAgA0ELaiADKAIQIAMoAhQgA0EYakEAQQAQRSADKgIoIRYgAyoCLCESIAMqAjAhFCADKgI0IRMgAyoCOCERIAAgAyoCPCIQOAIUIAAgETgCECAAIBM4AgwgACAUOAIIIAAgEjgCBCAAIBY4AgAgACgCIEUNByAAKAIcIgBB////ezYCXCAAQv////v///+/fzcCVCAAIBA4AlAgAEH///97NgJMIABC////+////79/NwJEIAAgETgCQCAAQf///3s2AjwgAEL////7////v383AjQgACATOAIwIABB////+wc2AiwgAEL////79///v/8ANwIkIAAgFDgCICAAQf////sHNgIcIABC////+/f//7//ADcCFCAAIBI4AhAgAEH////7BzYCDCAAQv////v3//+//wA3AgQgACAWOAIAIAMoAhgiAARAIAMoAhwgAEEYbEEEEL4NCyADKAIMIgAEQCADKAIQIABBAnRBBBC+DQsgA0FAayQADwsgBSACEL4MAAtBBCAGEL4MAAsgCSAHQZyIwwAQmQkACyAKIAdBrIjDABCZCQALIAYgB0G8iMMAEJkJAAsgBSAEQZikwgAQmQkACyAFIAFBqKTCABCZCQALQQBBAEGIpMIAEJkJAAtBBCACEL4MAAuzFQMRfw99AX4jAEGgAWsiCiQAIAogCToAIiAKIAY4AhwjAEEgayIJJAACQAJAAkACQCAIKAIAIgtFDQAgCUEYaiALIAgoAgQoAhgRAAAgCUEIaiAJKAIYIgsgCSgCHEEMaigCABEAACALRQ0AIAkpAwhCptfKzO7RwJfDAFINACAJKQMQQuSF8P+/w//eP1ENAQtBgYnEAC0AABpBIEEEENwMIgtFDQEgC0EANgIIIAtCgICAgMAANwIAIAtBADoAHCALQciSwgApAwA3AgwgC0EUakHQksIAKQMANwIAAkAgCCgCACINRQ0AIA0gCCgCBCIOKAIAEQYAIA4oAgQiE0UNACANIBMgDigCCBC+DQsgCEHsssIANgIEIAggCzYCAAsgCUEgaiQADAELQQRBIEGIq8QAKAIAIgBBzwcgABsRAAAACyAIKAIAIgkEQCAKQRBqIAkgCCgCBCgCHBEAACAKIAooAhAiDCAKKAIUQQxqKAIAEQAAAkAgCikDAEKm18rM7tHAl8MAUg0AIAopAwhC5IXw/7/D/94/Ug0AIAwgDC0AHEEBcyIIOgAcIAogCDoAIyAEIAUoAhARBQAhCCAKQQA2AiwgCkKAgICAwAA3AiQgCkH8AGogCCABEOICIAZDAAAAAGAEQCAKKgKIASEeIAoqAnwhGyAKKgKAASEcIAoqAoQBIR8gCioCjAEhISAKKgKQASEdIApBMGoiCUEIaiAHQQhqIgsoAgA2AgAgC0EANgIAIAcpAgAhKiAHQoCAgIDAADcCACAKICo3AzAgCiAINgJ0IAogATYCcCAKQeDCwAA2AmwgCiAANgJoIAogAzYCZCAKIAc2AlggCiAMNgJQIAogBTYCTCAKIAQ2AkggCiACNgJAIAogCkEkajYCeCAKIApBImo2AmAgCiAKQSNqNgJcIAogCTYCVCAKIApBHGo2AkQgAygCECIAQQFrIQEgAygCDCICQQFrIQQgAyoCMCEjIAMqAiwhIEMAAIA/IACzQwAAgL+SlSEkQwAAgD8gArNDAACAv5KVISUCQCAeIAaSIAMqAigiJpUiHkMAAAC/Xw0AIB0gBpIgI5UiHUMAAAC/Xw0AIBsgBpMgJpUiG0MAAAA/YA0AIB8gBpMgI5UiH0MAAAA/YA0AIBsgJCABEKUJIQIgHyAlIAQQpQkhACAeICQgARC1CSEUIB0gJSAEELUJIREgAiAUTw0AIAAgEU8NACAhIAaSICCVIR4gHCAGkyAglSEGIAMoAhAhFSADKAIkIRggAygCBCIEIABBAnQiASADKAIMIg8gAmxBAnRqaiELIAQgDyACQQFqbEECdCABamohDSAPQQJ0IRYgESAAayETIAMoAhgiBCADKAIgIhIgAmwiBWohASAAIBIgACASSxsiFyAAayEZIAQgACAFamohDgNAAkACQAJAAkACQCACIBhPDQAgAiIJQQFqIQIgEyEFIBkhByAOIQgCQCAJIBVJBEAgACEHIAIgFUkNAQNAIAcgF0YNAyABIAdqLQAAQQZxQQZHDQQgESAHQQFqIgdHDQALDAYLA0AgB0UNAiAILQAAQQZxQQZHDQQgB0EBayEHIAhBAWohCCAFQQFrIgUNAAsMBQsgJiAkIAmzlEMAAAC/kiIblCEfICYgJCAbkpQhISALIQUgDSEEIAAhCANAIAggF0YNASAIIgdBAWohCAJAIAEgB2otAAAiEEEGcUEGRg0AIAcgD08NBCAIIA9PDQUgBEEEaioCACEbIAVBBGoqAgAhHCAEKgIAIR0CQCAFKgIAIiIgHl5FDQAgHCAeXkUNACAdIB5eRQ0AIBsgHl4NAQsCQCAGICJeRQ0AIAYgHF5FDQAgBiAdXkUNACAGIBteDQELICAgG5QhJyAgIB2UIR0gIyAlICUgB7OUQwAAAL+SIimSlCEbICAgHJQhKCAjICmUIRwgICAilCEiIBBBAnFFBEAgCiAhOAKUASAKICg4AowBIAogHzgCiAEgCiAiOAKAASAKIB84AnwgCiAcOAKEASAKIBs4ApABIAogGyAcIBBBAXEiGhs4ApwBIAogJyAdIBobOAKYASAKQUBrIAMoAgxBAWsgCWwgB2pBACADKAJMQQF2QQEbaiAKQfwAahCAAQsgEEEEcQ0AIAogHTgCmAEgCiAhOAKUASAKICc4AowBIAogITgCiAEgCiAfOAJ8IAogGzgCkAEgCiAcOAKcASAKIBwgGyAQQQFxIhAbOAKEASAKICIgKCAQGzgCgAEgCkFAayADKAIMQQFrIAlsIAdqIAMoAkxBAXZqIApB/ABqEIABCyAFQQRqIQUgBEEEaiEEIAggEUcNAAsMBAtBpYLBAEEbQdDxwAAQ5AsACyAHIA9PDQAgDyAHQQFqTQ0BQaWCwQBBG0GA8sAAEOQLAAtBpYLBAEEbQeDxwAAQ5AsAC0GlgsEAQRtB8PHAABDkCwALIAsgFmohCyANIBZqIQ0gASASaiEBIA4gEmohDiACIBRHDQALCwJAAn8gDCgCCCIBRQRAQQAhB0EADAELIAwoAgRBEGohByAKLQAjRSEAQQAhCAJAA0AgACAHLQAAQQBHRg0BIAdBFGohByABIAhBAWoiCEcNAAtBACEFDAILIAhBAWohB0EBCyEFIAEgB0YNACABIAdrIQggDCgCBCAHQRRsaiEHIAotACNFIQIDQAJAIAIgB0EQaiIDLQAAQQBHc0UEQCAFQQFqIQUMAQsgByAFQWxsaiIAIAcpAgA3AgAgAEEQaiADKAIANgIAIABBCGogB0EIaikCADcCAAsgB0EUaiEHIAhBAWsiCA0ACwsgDCABIAVrIgM2AggCQAJAIAMgDCgCGE8NACAMKAIQIgAEQCAMKAIMQf8BIABBCWoQ5w0aCyAMQQA2AhggDCAAIABBAWpBA3ZBB2wgAEEISRsiAjYCFCACIANJDQEgASAFRg0AIAwoAgQiCSADQRRsaiEEIAwoAgwiA0EEayEFIANBCGohC0EAIQEDQCADIAkoAggiDSAAcSIIaikAAEKAgYKEiJCgwIB/gyIqUARAQQghBwNAIAcgCGohCCAHQQhqIQcgAyAAIAhxIghqKQAAQoCBgoSIkKDAgH+DIipQDQALCyADICp6p0EDdiAIaiAAcSIHaiwAACIIQQBOBEAgAyADKQMAQoCBgoSIkKDAgH+DeqdBA3YiB2otAAAhCAsgAyAHaiANQRl2Ig06AAAgCyAHQQhrIABxaiANOgAAIAUgB0ECdGsgATYCACABQQFqIQEgAiAIQQFxayECIAQgCUEUaiIJRw0ACyAMIAE2AhggDCACNgIUCyAKKAI0IQAgCigCOCIIBEAgAEGAAWohBwNAIAdBBGsoAgAiAQRAIAcoAgAgAUE8bEEEEL4NCyAHQShrKAIAIgEEQCAHQSRrKAIAIAFBNGxBBBC+DQsgB0GoAWohByAIQQFrIggNAAsLIAooAjAiAQRAIAAgAUGoAWxBBBC+DQsgCigCJCIABEAgCigCKCAAQQJ0QQQQvg0LIApBoAFqJAAPC0GE98AAQcUAQbT4wAAQ/AoACyAKQQA2AlAgCkEBNgJEIApB2L/AADYCQCAKQgQ3AkggCkFAa0HQwMAAEJELAAtB8OjAABDIDQALQeDowAAQyA0AC5cRAgx/CH0jAEFAaiIKJAACQAJAIAAoApQCIgdFBEAMAQsCQAJAAkACQAJAIAEgACgCCCIISQRAIAQoAgAiCSAHaiIOIAZLDQcgACgCBCABQfADbGooApADIgEgACgCRCIITw0BIAAoAkAgAUEEdGoiC0EMaiIMKAIAIgEgB0cNBCADKgIIIRMgAyoCBCEUIAMqAgAhFSACKgIIIRYgAioCBCEXIAIqAgAhGCAFIAlBAnRqIQFBACECQRQhCANAIAIgDCgCAE8NAyABIAtBBGooAgAgCGoiA0EUayoCACAYlEMAAAAAkiADQRBrKgIAIBeUkiADQQxrKgIAIBaUkiADQQhrKgIAIBWUkiADQQRrKgIAIBSUkiADKgIAIBOUkjgCACABQQRqIQEgCEEYaiEIIAcgAkEBaiICRw0AC0EAIQMDQCAGIAMgCWoiAkEAIAZBAUciARsiCEtBACABIAJFchtFBEBBpYLBAEEbQZizwQAQ5AsACyADIA5qIgJBACABGyILIAZPDQQgASACRXJFDQQgBSALQQJ0aiAFIAhBAnRqKgIAOAIAIANBAWoiAyAHRw0ACwwFCyABIAhB+LLBABCZCQALIAEgCEGIs8EAEJkJAAtBuvrAAEEdQdT7wAAQ5AsAC0GlgsEAQRtBqLPBABDkCwALIAogATYCNCAKQQY2AjAgCkEDNgIMIApB9IPBADYCCCAKQgI3AhQgCiAKQThqrUKAgICAgBKENwMoIAogCkEwaq1CgICAgIAShDcDICAKQQE2AjwgCiAHNgI4IAogCkEgajYCECAKQQhqQYyEwQAQkQsACwJAAkACQAJAIAYgByAOak8EQCAFIA5BAnRqIQsgACgCkAEiDEF/RgRAIAAoAowBIQ0gByECDAULIAAoAowBIg1FDQMgACgCiAEhAyAHQQFHBEAgDUECdCEJIAsgDEECdGohASAMIAcgByAMSxtBAWshCANAIAMoAgAiAiAHTw0DIAhBAWoiCCAHRg0EIANBBGohAyABIAsgAkECdGoqAgA4AgAgAUEEaiEBIAlBBGsiCQ0ACwwECyANQQJ0IQggDEEBayEBA0AgAygCAA0CIAFBAWoiAQ0DIANBBGohAyAIQQRrIggNAAsMAwsMBQtBpYLBAEEbQbizwQAQ5AsAC0GlgsEAQRtByLPBABDkCwALIAcgDCANaiICayIDRQ0AIAJBAWohECALIAdBAnRqIQkgCyACQQJ0aiEBAkAgA0EBcUUEQCABIQgMAQsgASAGQQJ0aiIPIAEgASAJRiIBGyIIQQA2AgAgDyAJIAEbIQkgCCADQQFrIgNBAEdBAnRqIQELIAcgEEYNAANAIAZBAnQiECAIaiISIAEgASAJRiIPGyIRQQA2AgAgESADQQFHQQJ0aiIRIAEgEGogCSAPGyIJRiEBIBIgCCAPGyIIIBBqIg8gESABGyISQQA2AgAgDyAIIAEbIQggECARaiAJIAEbIQkgEiADQQJHQQJ0aiEBIANBAmsiAw0ACwsCfQJAAkACQCACBEAgAiAHSw0GIABB3ABqIAsgAhDBAQsCQCAMQX9GDQAgDUUNACAAKAKIASEBIAdBAUcEQCANQQJ0QQRrIQMDQCADQQJ2IAxqIgIgB08NAyABIANqKAIAIgggB08NBCALIAhBAnRqIAsgAkECdGoiAioCADgCACACQQA2AgAgA0EEayIDQXxHDQALDAELQQAgDGshAiANQQJ0QQRrIQMDQCADQQJ2IAJHDQIgASADaigCAA0DIAtBADYCACADQQRrIgNBfEcNAAsLIAQoAgAiCSAHaiAGSw0FIAQgCSAHQQF0ajYCACAHQQhJBEBBACEIQwAAAAAMBAsgCUECdCEEIA5BAnQhCyAHQXhxIQhDAAAAACETIAchASAFIQZDAAAAACEUQwAAAAAhFUMAAAAAIRZDAAAAACEXQwAAAAAhGANAIBogBCAGaiICKgIAIAYgC2oiAyoCAJSSIRogEyACQRxqKgIAIANBHGoqAgCUkiETIBQgAkEYaioCACADQRhqKgIAlJIhFCAVIAJBFGoqAgAgA0EUaioCAJSSIRUgFiACQRBqKgIAIANBEGoqAgCUkiEWIBcgAkEMaioCACADQQxqKgIAlJIhFyAYIAJBCGoqAgAgA0EIaioCAJSSIRggGSACQQRqKgIAIANBBGoqAgCUkiEZIAZBIGohBiABQQhrIgFBB0sNAAsMAgtBpYLBAEEbQdizwQAQ5AsAC0GlgsEAQRtB6LPBABDkCwALIBogFpJDAAAAAJIgGSAVkpIgGCAUkpIgFyATkpILIRMCQCAHIAhNDQACQCAHQQNxIgFFBEAgCCEGDAELIAUgCEECdCICIAlBAnRqaiEDIAUgAiAOQQJ0amohAiAIIQYDQCAGQQFqIQYgEyADKgIAIAIqAgCUkiETIANBBGohAyACQQRqIQIgAUEBayIBDQALCyAIIAdrQXxLDQAgBSAGQQJ0IgEgCUECdGpqIQMgBSABIA5BAnRqaiECIAcgBmshBgNAIBMgAyoCACACKgIAlJIgA0EEaioCACACQQRqKgIAlJIgA0EIaioCACACQQhqKgIAlJIgA0EMaioCACACQQxqKgIAlJIhEyADQRBqIQMgAkEQaiECIAZBBGsiBg0ACwsgACgCGCAHTwRAQQAhAgJAIAdBCEkNACAHQQhrIgBBA3ZBAWoiAUEHcSEDIABBOE8EQCABQfj///8DcSECA0AgAkEIayICDQALCyAHQXhxIQIgA0UNAANAIANBAWsiAw0ACwsgAiAHTw0BIAIhBiAHQQdxIgMEQCACIANqIQYDQCADQQFrIgMNAAsLIAIgB2tBeEsNASAHIAZrIQMDQCADQQhrIgMNAAsMAQsMAQsgCkFAayQAIBMPC0G6+sAAQR1BxPvAABDkCwALpRQCCX8YfSMAQaAEayIJJAACQAJAAkACQAJAAkACQAJAAkACQAJAIARBBU8EQCAEQQJ0IQxDAACAPyAEs5UhEiAFKAIEIQ4gBSgCCCENA0AgAyAKaigCACILIA1PDQUgFiASIA4gC0EYbGoiCyoCCCALKgIUkkMAAAA/lJSSIRYgFyASIAsqAgQgCyoCEJJDAAAAP5SUkiEXIBggEiALKgIAIAsqAgySQwAAAD+UlJIhGCAMIApBBGoiCkcNAAsgBEECdCEMQwAAgD8gBEEBa7OVIRMgBSgCBCEOIAUoAgghDUMAAAAAIRJBACEKA0AgAyAKaigCACILIA1PDQkgFSATIA4gC0EYbGoiCyoCCCALKgIUkkMAAAA/lCAWkyIVIBWUlJIhFSAUIBMgCyoCBCALKgIQkkMAAAA/lCAXkyIUIBSUlJIhFCASIBMgCyoCACALKgIMkkMAAAA/lCAYkyISIBKUlJIhEiAMIApBBGoiCkcNAAsgCUGgAmoQrQogCUGIA2pCADcDACAJQgA3A4ADQQIgEiAUXiIKIBUgFCASIAobXRsiCkECaiILIApBAWsgC0EDSRshDSAKQQFqIgsgCkECayALQQNJGyEMIAEoAiAiCiABKAIYRgRAIAFBGGoQ1gYLIApBB3QiDiABKAIcaiAJQaACakHwABDlDSILQQA6AHggCyAHOgB0IAsgBjYCcCABIApBAWo2AiAgCSANNgIEIAkgDDYCACAJIBY4AqgBIAkgFzgCpAEgCSAYOAKgASAJQZADaiIGIAIgCSAJQaABaiADIAQgBSgCBCAFKAIIEMoHIAlBsANqIAEgAiAJKAKQAyAJKAKUAyAFIApBACAIEGYgCUHMA2ogASACIAkoApgDIAZBDGooAgAgBSAKQQEgCBBmIAlB6ANqIAEgAiAJKAKgAyAGQRRqKAIAIAUgCkECIAgQZiAJQYQEaiABIAIgCSgCqAMgCUGsA2ooAgAgBSAKQQMgCBBmIAEoAiAiAiAKTQ0FIAEoAhwgDmoiAiAJKAKEBDYCbCACIAkoAugDNgJoIAIgCSgCzAM2AmQgAiAJKAKwAzYCYCAJQbABaiAJQbADaiICQRRqKQIANwMAIAlBqAFqIAJBDGopAgA3AwAgCSAJKQK0AzcDoAEgCUHAAWogCUHMA2oiAkEMaikCADcDACAJQcgBaiACQRRqKQIANwMAIAkgCSkC0AM3A7gBIAlB2AFqIAlB6ANqIgJBDGopAgA3AwAgCUHgAWogAkEUaikCADcDACAJIAkpAuwDNwPQASAJQfgBaiAJQYQEaiICQRRqKQIANwMAIAlB8AFqIAJBDGopAgA3AwAgCSAJKQKIBDcD6AEgCSAJQaABahDVBCABKAIgIgIgCk0NBiAKQQd0IgIgASgCHGogCUHgABDlDRogASgCICIDIApNDQcgASgCHCEDIAkgCDgCrAEgCSAIOAKoASAJIAg4AqQBIAkgCDgCoAEgAiADaiAJQaABahC4AiABKAIgIgIgCksNASAKIAJBtNfAABCZCQALIAEoAiAhDUP//39/IRZD//9//yEXQX8hCyAEDQFBfyECQX8hCkF/IQVD//9//yETQ///f/8hGUP//39/IRpD//9/fyEbQ///f/8hHEP//3//IR1D//9//yEeQ///f38hH0P//39/ISBD//9/fyEhQ///f/8hIkP//3//ISND//9//yEkQ///f38hJUP//39/ISZD//9/fyEnQ///f/8hGEP//3//IShD//9//yESQ///f38hFEP//39/IRVD//9/fyEpDAILIABBBGogASgCHCAKQQd0ahChBCAAIAo2AgAMCQsgAygCACICIAUoAggiDk8NByABKAJEIg8gAk0NBiAFKAIEIhAgAkEYbGoiBSoCFCEYIAUqAhAhKCAFKgIMIRIgBSoCCCEUIAUqAgQhFSAFKgIAISkgASgCQCIRIAJBBHRqIgVBADoABCAFIA02AgAgBEEBRgRAQX8hCkF/IQVD//9//yETQ///f/8hGUP//39/IRpD//9/fyEbQ///f/8hHEP//3//IR1D//9//yEeQ///f38hH0P//39/ISBD//9/fyEhQ///f/8hIkP//3//ISND//9//yEkQ///f38hJUP//39/ISZD//9/fyEnDAELIAMoAgQiCiAOTwRAIAohAgwICyAKIA9PBEAgCiECDAcLIBAgCkEYbGoiBSoCFCEiIAUqAhAhIyAFKgIMISQgBSoCCCElIAUqAgQhJiAFKgIAIScgESAKQQR0aiIFQQE6AAQgBSANNgIAIARBAkYEQEF/IQVD//9//yETQ///f/8hGUP//39/IRpD//9/fyEbQ///f/8hHEP//3//IR1D//9//yEeQ///f38hH0P//39/ISBD//9/fyEhDAELIAMoAggiBSAOTwRAIAUhAgwICyAFIA9PBEAgBSECDAcLIBAgBUEYbGoiDCoCFCEcIAwqAhAhHSAMKgIMIR4gDCoCCCEfIAwqAgQhICAMKgIAISEgESAFQQR0aiIMQQI6AAQgDCANNgIAIARBA0YEQEP//3//IRND//9//yEZQ///f38hGkP//39/IRsMAQsgAygCDCILIA5PBEAgCyECDAgLIAsgD08EQCALIQIMBwsgECALQRhsaiIDKgIAIRsgAyoCBCEaIAMqAgghFiADKgIMIRkgAyoCECETIAMqAhQhFyARIAtBBHRqIgNBAzoABCADIA02AgALIAkgFzgC/AEgCSATOAL4ASAJIBk4AvQBIAkgFjgC8AEgCSAaOALsASAJIBs4AugBIAkgHDgC5AEgCSAdOALgASAJIB44AtwBIAkgHzgC2AEgCSAgOALUASAJICE4AtABIAkgIjgCzAEgCSAjOALIASAJICQ4AsQBIAkgJTgCwAEgCSAmOAK8ASAJICc4ArgBIAkgGDgCtAEgCSAoOAKwASAJIBI4AqwBIAkgFDgCqAEgCSAVOAKkASAJICk4AqABIAkgCUGgAWoiAxDVBCAJQQE6AHggCSAHOgB0IAkgBjYCcCAJ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IAwBCyAcIBdB9ABsNgIcIBwgAygCBDYCFAsgHCAgNgIYIBxBCGogASAEIBxBFGoQjgcgHCgCCARAIBwoAgwgHCgCEBC+DAALIBwoAgwhASADIAg2AgAgAyABNgIEIBxBIGokAAsgCSgCRCAFQfQAbGoiASAONgIEIAEgEjYCACARKQIAIUogIikCACFJIAEgLjgCICABICo4AhwgASAoOAIYIAEgAikDkAI3AiQgAUEsaiAGKAIANgIAIAEgAikDsAM3AjAgAUE4aiATKAIANgIAIAEgSTcCCCABQRBqIEo3AgAgASAeKQIANwI8IAFBxABqIBApAgA3AgAgAUHMAGogFCkCADcCACABQdQAaiAHKQIANwIAIAFB3ABqIAopAgA3AgAgAUHkAGogCykCADcCACABQewAaiAMKQIANwIAIAkgBUEBajYCSCACQZACaiEEQwAAAAAhLyAJKgIoIiwgAkHYAWoiASoCICIrlCEtIAkqAiQiKiABKgIcIiiUIS4gASoCJCEpAkAgKiAqlCAsICyUkiAJKgIsIiwgLJSSEJIBIipDAAAAAFwgKCAolCArICuUkiApICmUkhCSASIoQwAAAABccUUEQCAuIC2SICwgKZSSITYMAQtDAACAv0MAAIA/IC4gLZIgLCAplJIiNiAqICiUlSIoIChDAACAP14bIChDAACAv10bEO8EIS8LIAQgASkCADcCACAEQQhqIAFBCGopAgA3AgAgBEEQaiABQRBqKQIANwIAIARBGGogAUEYaikCADcCACAEQSBqIAFBIGopAgA3AgAgBEEoaiABQShqKQIANwIAIARBMGogAUEwaikCADcCACAEIC8gCSoCNF86ADkgBCA2QwAAAABdQX9zIC8gCSoCMGBxOgA4IAJB0AJqIhRBCGogESkCADcDACACICIpAgA3A9ACIAIgPiACKgKAAZI4AugCIAIgPyACKgJ8kjgC5AIgAiBAIAIqAniSOALgAiACQbADaiIQQShqICMpAwA3AwAgEEEgaiACQegAaikDADcDACAQQRhqICQpAwA3AwAgEEEQaiANKQMANwMAIBMgJSkDADcDACACIAIpA0g3A7ADIAJBiAFqIQEgAkGQAWohByACQfgAaiEKQQAhDCMAQYACayIFJAACQCAJKAIIIgZBAkYNACAELQA4RQ0AIAkoAgAhCCAB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spQhGSAYIBmSIRogGCAYIAEoAgSylCIbkiEcIBggGCABKAIAspQiGJIhHSAFKAIQIQ8CQCADKAIIIgEEQCADIAFBAWsiATYCCCADKAIEIAFBAnRqKAIAIgFBADYCCCABQQA2AhQgASgCACIHRQRAIAEQ0AYgASgCACEHCyABQQE2AgggASgCBCIDQv///3s3AgAgB0EBRgRAIAEQ0AYgASgCBCEDCyABIB04AhwgASAYOAIYIAFBAjYCCCADQv////v3/////wA3AgggAUE0akEANgIAIAFBKGpBADYCACABQSBqIQQgASgCICIHRQRAIAQQ0AYgBCgCACEHCyABQQE2AiggAUEkaigCACIDQv///3s3AgAgB0EBRgRAIAQQ0AYgASgCJCEDCyABQQI2AiggA0L////79/////8ANwIIIAFB1ABqQQA2AgAgAUE8aiAcOAIAIAFBOGogGzgCACABQcgAakEANgIAIAFBQGshBCABKAJAIgdFBEAgBBDQBiAEKAIAIQcLIAFBATYCSCABQcQAaigCACIDQv///3s3AgAgB0EBRgRAIAQQ0AYgASgCRCEDCyABQQA6AJEBIAFBAjYCSCADQv////v3/////wA3AgggAUHcAGogGjgCACABQdgAaiAZOAIAIAEoAmAiAwRAIAFB5ABqKAIAIANBAnRBBBC+DQsgAUIANwJoIAFCgICAgMAANwJgIAFBADoAkAEgAUKAgICAcDcChAEgASgCjAENAyABKAJ4RQ0BQaz4wQBBKkHc+cEAEPwKAAsgGCAdX0UNCUGBicQALQAAGkEQQQQQ3AwiA0UNCiADQv////v3/////wA3AgggA0L///97NwIAIBsgHF9FDQlBgYnEAC0AABpBEEEEENwMIgRFDQogBEL////79/////8ANwIIIARC////ezcCACAZIBpfRQ0JQYGJxAAtAAAaQRBBBBDcDCIHRQ0KIAdC////+/f/////ADcCCCAHQv///3s3AgBBgYnEAC0AABpBlAFBBBDcDCIBRQ0DIAFBADsBkAEgAUL/////DzcCiAEgAUIENwKAASABQgA3AnggAUKAgICAwAA3AnAgAUIANwJoIAFCgICAgMAANwJgIAEgGjgCXCABIBk4AlggAUIENwJQIAFCAjcCSCABIAc2AkQgAUECNgJAIAEgHDgCPCABIBs4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IApBGXYiCjoAACAEKAIAIgMgAEEIayALcWpBCGogCjoAACABIABBAnRrQQRrIQAgDEH/AUYNAyAILQAAIQEgCCAALQAAOgAAIAAgAToAACAILQABIQEgCCAALQABOgABIAAgAToAASAILQACIQEgCCAALQACOgACIAAgAToAAiAILQADIQEgCCAALQADOgADIAAgAToAAyAOIAQoAgAiASARQQJ0akEEaygCACIASw0ACwsgACAOQeD5wAAQmQkACyABIAJqIApBGXYiADoAACAEKAIAIgEgCyACQQhrcWpBCGogADoAAAwBCyAEKAIEIQEgAiADakH/AToAACADIAEgAkEIa3FqQQhqQf8BOgAAIAAgCCgAADYAACADIQELIAJBAWohACACIA1HDQALIAQoAgQiAEEBakEDdkEHbCECIAQoAgwhCwsgBCAAIAIgAEEISRsgC2s2AggLIAlBIGokACAPIAYoAhAiAnEiACAGKAIMIgNqKQAAQoCBgoSIkKDAgH+DIhZQBEBBCCEBA0AgACABaiEAIAFBCGohASADIAAgAnEiAGopAABCgIGChIiQoMCAf4MiFlANAAsLIAMgFnqnQQN2IABqIAJxIgFqLAAAIgBBAEgNACADIAMpAwBCgIGChIiQoMCAf4N6p0EDdiIBai0AACEACyABIANqIA9BGXYiBDoAACADIAFBCGsgAnFqQQhqIAQ6AAAgAyABQQJ0a0EEayAQNgIAIAYgBigCFCAAQQFxazYCFCAGIAYoAhhBAWo2AhggBigCACIAIAYoAggiAUcNBUHmzJkzIAYoAhQgBigCGGoiACAAQebMmTNPGyABayIAQQFNDQQgASAAIAFqIgBLDQQgAEEUbCEDIABB58yZM0lBAnQhBCAFIAEEfyAFIAFBFGw2AjQgBSAGKAIENgIsQQQFQQALNgIwIAVBxABqIAQgAyAFQSxqEI4HIAUoAkQNBCAFKAJIIQIgBiAANgIAIAYgAjYCBAwFCyAAIAJB0PnAABCZCQALIAVBADYCLCABQYwBakGY88AAIAVBLGpB7PnBABCbCwALQQRBlAFBiKvEACgCACIAQc8HIAAbEQAAAAsgByAJQYz4wQAQmQkACyABQQFqIgBFBEBBAEEAEL4MAAsgAEEUbCEDIABB58yZM0lBAnQhBCAFIAEEfyAFIAFBFGw2AjQg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IAYgB0EMbGoiASoCCCEPIAEqAgAhFSABKgIEIRcgBUEANgK8ASAFQQA2AqwBIAVBADYCMCAFQgA3AiggBSARjDgC6AEgBSAWOALkASAFIBKMOALgASAFIBggECAUIBUgGpOUIBMgFyAZk5SSIBAgDyAYk5SSQ28SgzqSIhGUkiISOALcASAFIA8gEpMiEjgCJCAFIBkgEyARlJIiDzgC2AEgBSAXIA+TIg84AiAgBSAaIBQgEZSSIhA4AtQBIAUgFSAQkyIQOAIcIAUgEjgCGCAFIA84AhQgBSAQOAIQIAVB7AFqIAYgCSAFIAVB1AFqIBFDbxKDOpIQjwFBBCEBAkAgBSgC7AFFDQAgAyARIAUqAvABkyIDYEUNACAAIAM4AgggACAFKgL8AYw4AhQgACAFKgL4AYw4AhAgACAFKgL0AYw4AgxBAyEBCyAAIAE2AgAMBAsgAUUNAiAAIAUpAsgBNwIMIAAgBSoCxAE4AgggAEEDNgIAIABBFGogBUHQAWooAgA2AgAMAwsgByAJQZiAwwAQmQkACyAHIAlBmIDDABCZCQALIABBBDYCAAsgBUGAAmokAAvUDgIIfwN+IwBBoAZrIgMkACADQQA2AhAgA0IANwIIIANCgICAgMAANwIAIANBkAVqIgQgAxBwIANBADYC9AUgA0IANwLsBSADQoCAgIDAADcC5AUgA0G4BWoiBSADQeQFaiIGEHAgA0HkAGogBEEIaiIJKQIANwIAIANB7ABqIARBEGopAgA3AgAgA0H0AGogBEEYaikCADcCACADQfwAaiAEQSBqKQIANwIAIANBADYCWCADQgA3AlAgA0KAgICAwAA3AkggA0IENwJAIANCADcCOCADQgQ3AjAgA0IANwIoIANCBDcCICADQgA3AhggA0IENwIQIANCADcCCCADQoCAgICAATcCACADIAMpApAFNwJcIANBsAFqIAVBCGoiCikCADcCACADQbgBaiAFQRBqKQIANwIAIANBwAFqIAVBGGopAgA3AgAgA0HIAWogBUEgaikCADcCACADQQA2AqQBIANCADcCnAEgA0KAgICAwAA3ApQBIANCgICAgHA3AowBIANCgICAgMAANwKEASADQgA3ApQCIANBAToAnQIgA0EANgKQAiADQoCAgIDAADcC0AEgA0IANwLYASADQgQ3AuABIANCADcC6AEgA0IENwLwASADQoCAgIDAADcC+AEgA0IANwKAAiADQgQ3AogCIAMgAykCuAU3AqgBIANBwANqQgA3AwAgA0G4A2pCADcDACADQeADakIANwMAIANBAToAnAIgBUELakIANwAAIARBC2pCADcAACAGQQtqQgA3AAAgA0GNBmoiCEELakIANwAAIANB+gVqIgdBC2pCADcAACADQgA3A7ADIANCADcD2AMgA0IANwC7BSADQgA3AJMFIANCADcA5wUgA0IANwCQBiADQgA3AP0FIANBxAJqQQA2AgAgA0IANwK8AiADQdACakIANwMAIANCADcDyAIgA0H////7BzYCmAMgA0KAgICA8P//v383A5ADIANC////+////7//ADcDiAMgA0L////7BzcDgAMgA0KAgICA8P//v383A/gCIANC////+////7//ADcD8AIgA0L////7BzcD6AIgA0KAgICA8P//v383A+ACIANC////+////7//ADcD2AIgA0EANgK4AiADQgA3A7ACIANCgICAgICAgMA/NwOoAiADQgA3A6ACIANBpANqQgA3AgAgA0IANwKcAyADQQA6APADIANC////+wc3A+gDIANCADcD0AMgA0KAgID8AzcDyAMgA0GAgID8AzYCrAMgA0GABGogBUEPaigAADYAACADQfkDaiAKKQAANwAAIAMgAykAuAU3APEDIANBADoAjAQgA0L////7BzcChAQgA0GcBGogBEEPaigAADYAACADQZUEaiAJKQAANwAAIAMgAykAkAU3AI0EIANBADoAqAQgA0L////7BzcDoAQgA0G4BGogBkEPaigAADYAACADQbEEaiAGQQhqKQAANwAAIAMgAykA5AU3AKkEIANBADoAxAQgA0L////7BzcCvAQgA0HUBGogCEEPaigAADYAACADQc0EaiAIQQhqKQAANwAAIAMgAykAjQY3AMUEIANBADoA4AQgA0L////7BzcD2AQgA0HwBGogB0EPaigAADYAACADQekEaiAHQQhqKQAANwAAIAMgAykA+gU3AOEEIANBADoAiAUgA0GAAjsBhAUgA0EANgKABSADQQA6APwEIANC////+wc3AvQEIAMoAgghBSADQQxqIAMoAhgiCEEGaiIGEJMCIANBHGogBhCTAiADQSxqIAYQkwIgAygCRCIEIAMo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RCIFRQRAIARBIGpBADYCACAEQRhqQgA3AwAgBEEQakIANwMAIARCADcDCEEBIQhDAACAPyETQwAAAAAMAQsgBEEQaiAFQRxqKQIANwMAIARBGGogBUEkaikCADcDACAEQSBqIAVBLGooAgA2AgAgBCAFKQIUNwMIIAUqAhAhEyAFKgIMIRIgBSoCCCEUIAUoAgBFIQggBSoCBAshECAAQgA3AiggAEKAgICAgICAwD83AiAgAEIANwIYIABBMGpCADcCACAAQThqQgA3AgAgAEFAa0EANgIAIABBGGohBSACKAIIIgcEQCAHQQN0IAIoAgQiB2ohCyAEQShqIgZBCGohCSAEQYgBaiECIAEoAhAhDCABKAIMIQ0gBkEgaiEOIAZBGGohDwNAAkAgBygCACIBIAxPDQAgDSABQagBbGoiASgCAEUNACABKAIEIAcoAgRHDQAgAS0Aag0AIAEoAghFDQAgDiABQSxqKAIANgIAIA8gAUEkaikCADcDACAEQThqIAFBHGopAgA3AwAgCSABQRRqKQIANwMAIAQgASkCDDcDKCABKAI4IAEoAjwiBigCCEEBa0F4cWpBCGohCgJAAkACQAJAAkAgASgCMEEBaw4CAgABCyAEQfgAaiIGQQhqIAEoAjQiAUEIaikCADcDACACIAFBEGopAgA3AwAgBkEYaiABQRhqKQIANwMAIAZBIGogAUEgaikCADcDACAGQShqIAFBKGooAgA2AgAgBCABKQIANwN4DAMLIAEqAjQiEUMAAAAAWwRADAILIARB+ABqIAogESAGKAKYARENAAwCCyABKgI0IhFDAAAAAFsEQAwBCyAEQdQBaiIBIApDAACAPyAGKAKYARENACABIBEQogkgBEH4AGoiBkEoaiABQShqKAIANgIAIAZBIGogAUEgaikCADcDACAGQRhqIAFBGGopAgA3AwAgAiABQRBqKQIANwMAIAZBCGogAUEIaikCADcDACAEIAQpAtQBNwN4DAELIAJCADcCACACQQhqQgA3AgAgAkEQakIANwIAIAJBGGpBADYCACAEQgA3A3ggBEKAgICAgICAwD83A4ABCyAEQcwAaiIBIARB+ABqIAkQiQQgBSABENAHCyALIAdBCGoiB0cNAAsLAkAgCEUEQCAFIBBDAAAAAEMAAIA/IAAqAjQiEJUgEEMAAAAAWxuS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IAIgBEEUbDYCEEEEBUEACzYCDCACQcQAaiAHIAYgAkEIahCOByACKAJEBEAgAigCSCACKAJMEL4MAAsLIAIgAigCSDYCLCACIAE2AigLIAMgBU8EQCACIAU2AjAgBSEDCyAFIANrIQkgAigCLCEKAkAgA0UNACADQQFxIQdBACEIIANBAUcEQCADQX5xIQQDQCAKIAtqIgxBCGogCyANaiIGQQhqKQIANwIAIAxBEGogBkEQai0AADoAACAMQRxqIAZBHGooAgA2AgAgDCAGKQIANwIAIAxBFGogBkEUaikCADcCACAMQSRqIAZBJGotAAA6AAAgDEEgaiAGQSBqKAIANgIAIAtBKGohCyAEIAhBAmoiCEcNAAsLIAdFDQAgCEEUbCIEIApqIgcgBCANaiIEKQIINwIIIAcgBC0AEDoAECAHIAQpAgA3AgALAkACQCAJIAEgA2tLBEAgAkEoaiADIAkQswYgAigCLCEKIAIoAjAhAQwBCyADIQEgAyAFRw0AIAUhAQwBCyANIANBFGxqIQYgCUEBcSEHIANBAWogBUYEf0EABUEAIQtBACAJQX5xayEFIAogAUEUbGohBEEAIQgDQCAEIAtqIgkgBiALaiIDKQIANwIAIAlBEGogA0EQai0AADoAACAJQQhqIANBCGopAgA3AgAgCUEkaiADQSRqLQAAOgAAIAlBHGogA0EcaikCADcCACAJQRRqIANBFGopAgA3AgAgC0EoaiELIAUgCEECayIIRw0ACyABIAhrIQFBACAIawshBCAHRQ0AIAogAUEUbGoiBSAGIARBFGxqIgQtABA6ABAgBSAEKQIINwIIIAUgBCkCADcCACABQQFqIQELIAJBKGoiB0EIaiIDIAE2AgAgAkEIaiIBQRBqIgUgB0EQaikCADcDACABQRhqIgQgB0EYaigCADYCACABQQhqIgEgAykCADcDACACIAIpAig3AwhBgYnEAC0AABpBIEEEENwMIgMEQCADIAIpAwg3AgAgAyAOOgAcIANBGGogBCgCADYCACADQRBqIAUpAwA3AgAgA0EIaiABKQMANwIAIABB+LHCADYCBCAAIAM2AgAgAkHQAGokAA8LQQRBIEGIq8QAKAIAIgBBzwcgABsRAAAAC+YJAQ1/IwBB0ABrIgIkACABLQAcIQ4gAkEANgIwIAJBPGpB0JLCACkD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IAEoAggiBgJ/AkAgASgCEARAIAEoAhhFDQELIAJBNGogAUEMahC/AiACKAIwIQMgAigCKAwBCyACQgA3AjxBAAsiBE0EQCAEIQEMAQsCQAJAQf///z8gAigCPCACKAJAaiIBIAFB////P08bIANrIgEgBiADayIFTQRAIAQgA2shCgwBCyABIAQgA2siCk0EQCAEIQEMAwsgASADaiIBIANJDQBBBCEIIAFBBHQhCSABQYCAgMAASUECdCEHAkAgBEUEQEEAIQgMAQsgAiACKAIsNgIIIAIgBEEEdDYCEAsgAiAINgIMIAJBxABqIAcgCSACQQhqEI4HIAIoAkQNAAwBCyAFIApNBEAgBCEBDAILIAMgBWoiASADSQRAQQBBABC+DAALQQQhBSABQQR0IQkgAUGAgIDAAElBAnQhBwJAIARFBEBBACEFDAELIAIgAigCLDYCCCACIARBBHQ2AhALIAIgBTYCDCACQcQAaiAHIAkgAkEIahCOByACKAJEBEAgAigCSCACKAJMEL4MAAsLIAIgAigCSDYCLCACIAE2AigLIAMgBk8EQCACIAY2AjAgBiEDCyAGIANrIQUgAigCLCELAkAgA0UNACADQQFxIQdBACEKIANBAUcEQCADQX5xIQRBACEIA0AgCCALaiIMIAggDWoiCSgCADYCACAMQQxqIAlBDGotAAA6AAAgDEEEaiAJQQRqKQIANwIAIAxBEGogCUEQaigCADYCACAMQRxqIAlBHGotAAA6AAAgDEEUaiAJQRRqKQIANwIAIAhBIGohCCAEIApBAmoiCkcNAAsLIAdFDQAgCkEEdCIEIAtqIgcgBCANaiIEKAIANgIAIAcgBC0ADDoADCAHIAQpAgQ3AgQLAkACQCAFIAEgA2tLBEAgAkEoaiADIAUQtAYgAigCLCELIAIoAjAhAQwBCyADIQEgAyAGRw0AIAYhAQwBCyANIANBBHRqIQkgBUEBcSEHIANBAWogBkYEf0EABUEAIQhBACAFQX5xayEGIAsgAUEEdGohBEEAIQoDQCAEIAhqIgUgCCAJaiIDKQIANwIAIAVBDGogA0EMai0AADoAACAFQQhqIANBCGooAgA2AgAgBUEcaiADQRxqLQAAOgAAIAVBGGogA0EYaigCADYCACAFQRBqIANBEGopAgA3AgAgCEEgaiEIIAYgCkECayIK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lCANIA6UIBAgD5STkpKSOAIQIAIgAioCACINIA0gCSgCACAJKAIEIgcoAghBAWtBeHFqQQhqIgkgBygCpAERCgAiDCAMIA1eGyAMIAxcGzgCACALQQxqIAkgCEEIaiIIIAcoApQBEQEAIAIqAgQhDCACIAsqAgwiDSANlCALKgIQIg0gDZSSIAsqAhQiDSANlJIQkgEgCyoCGJIiDSANIAwgDCANXRsgDCAMXBs4AgQCQAJAAkACQCAKKAIAQQFrDgICAAELIAtByABqIgJBCGogCigCBCIBQQhqKQIANwMAIAJBEGogAUEQaikCADcDACACQRhqIAFBGGopAgA3AwAgAkEgaiABQSBqKQIANwMAIAJBKGogAUEoaigCADYCACALIAEpAgA3A0gMAgsgCioCBCIMQwAAAABbBEAgC0HgAGpCADcDACALQegAakIANwMAIAtB8ABqQQA2AgAgC0IANwNYIAtCADcDSCALQoCAgICAgIDAPzcDUAwCCyALQcgAaiAJIAwgBygCmAERDQAMAQsgCioCBCIMQwAAAABbBEAgC0HgAGpCADcDACALQegAakIANwMAIAtB8ABqQQA2AgAgC0IANwNYIAtCADcDSCALQoCAgICAgIDAPzcDUAwBCyALQfQAaiIBIAlDAACAPyAHKAKYARENACABIAwQogkgC0HIAGoiAkEoaiABQShqKAIANgIAIAJBIGogAUEgaikCADcDACACQRhqIAFBGGopAgA3AwAgAkEQaiABQRBqKQIANwMAIAJBCGogAUEIaikCADcDACALIAspAnQ3A0gLIAtBHGogC0HIAGogCBCJBCAAKAIIIgEgACgCAEYEQCAAENAGCyAAIAFBAWo2AgggACgCBCABQQN0aiIAIAY2AgQgACAFNgIAIANBGGoiASALQRxqENAHIAtB9ABqIgAgASAEELkGIANB0ABqIABBCGoiAigCADYCACADIAspAnQ3AkggAyADKgI0Igw4AlwgAyAMOAJYIAMgDDgCVCAAIAEgBBC9AiADQRBqIABBEGopAgA3AgAgA0EIaiACKQIANwIAIAMgCykCdDcCACADLQBgIgBBAXEEQCADQQA2AlQLIABBAnEEQCADQQA2AlgLIABBBHEEQCADQQA2AlwLIABBCHEEQCADQQA2AgggA0IANwIACyAAQRBxBEAgA0EA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xb+goiACoaC2IQAMAgsgBkEATgRAIAFEGC1EVPsh+b+gIgEgAaIiASABoiECIAFEgV4M/f//37+iRAAAAAAAAPA/oCACREI6BeFTVaU/oqAgASACoiABRGlQ7uBCk/k+okQnHg/oh8BWv6CioLYhAAwCCyABRBgtRFT7Ifk/oCIBIAGiIgEgAaIhAiABRIFeDP3//9+/okQAAAAAAADwP6AgAkRCOgXhU1WlP6KgIAEgAqIgAURpUO7gQpP5PqJEJx4P6IfAVr+goqC2jCEADAELIARBgICAzANPBEAgASABoiICIAGiIgMgAiACoqIgAkSnRjuMh83GPqJEdOfK4vkAKr+goiADIAJEsvtuiRARgT+iRHesy1RVVcW/oKIgAaCgtiEADAELIAUgAEMAAIADlCAAQwAAgHuSIARBgICABEkbOAIIIAUqAggaCyAFQRBqJAAgAAu9CAIMfwx9IwBBMGsiCCQAAn8gAioCDCIWIAAqAjQiEpWOIhOLQwAAAE9dBEAgE6gMAQtBgICAgHgLIQ0gAioCACIXIBKVjiIUQwAAAM9gIQogDUGAgICAeCATQwAAAM9gGyEGIBND////Tl4hCwJ/IBSLQwAAAE9dBEAgFKgMAQtBgICAgHgLQYCAgIB4IAobIQwgFEP///9OXiEKAn8gAioCFCIYIBKVjiIVi0MAAABPXQRAIBWoDAELQYCAgIB4CyENQf////8HIAYgCxshBiATIBNcIQtB/////wcgDCAKGyEMIBQgFFwhEAJ/IAIqAhAiGSASlY4iE4tDAAAAT10EQCATqAwBC0GAgICAeAshCkEAIAYgCxshCUEAIAwgEBshBgJ/IAIqAggiGiASlY4iFItDAAAAT10EQCAUqAwBC0GAgICAeAshCyAGIAlKIQwCfyACKgIEIhsgEpWOIhKLQwAAAE9dBEAgEqgMAQtBgICAgHgLIQICQCAMDQBB/////wcgAkGAgICAeCASQwAAAM9gGyASQ////05eG0EAIBIgElsbIgxB/////wcgCkGAgICAeCATQwAAAM9gGyATQ////05eG0EAIBMgE1sbIg5KBEADQCAGIAlODQIgBiAGIAlIaiIGIAlMDQAMAgsAC0H/////ByALQYCAgIB4IBRDAAAAz2AbIBRD////Tl4bQQAgFCAUWxsiEEH/////ByANQYCAgIB4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AoQBlJKTIQEgC0EBaiELIBQhDQwBCwsgCSAUOAIECyAAIAs2AgwgACAJKQIANwIAIABBCGogCUEIaigCADYCACAKQaABaiQAC7UIAgh/AX4jAEEgayIFJAAgAC0AACEDIABBAToAACAFIAM6AAcgA0UEQAJAIAAtADQNACAAQQE6ADQCQCAAKAIMIgRFDQAgACgCCCIBIQMgBEEMbCIGQQxrIgdBDG5BAWpBB3EiBARAIARBDGwhBANAIAMoAgAiCCgCFCECIAggAkECIAIbNgIUIANBDGohAyAEQQxrIgQNAAsLIAdB1ABJDQAgASAGaiEEA0AgAygCACICKAIUIQEgAiABQQIgARs2AhQgA0EMaigCACICKAIUIQEgAiABQQIgARs2AhQgA0EYaigCACICKAIUIQEgAiABQQIgARs2AhQgA0EkaigCACICKAIUIQEgAiABQQIgARs2AhQgA0EwaigCACICKAIUIQEgAiABQQIgARs2AhQgA0E8aigCACICKAIUIQEgAiABQQIgARs2AhQgA0HIAGooAgAiAigCFCEBIAIgAUECIAEbNgIUIANB1ABqKAIAIgIoAhQhASACIAFBAiABGzYCFCAEIANB4ABqIgNHDQALCyAAKAIYIQEgAEEANgIYIAEEQCAAKAIUIQMgAUEMbCEBA0AgBUEQaiADQQhqKAIANgIAIAUgAykCACIJNwMIIAmnIgQoAhQhAiAEIAIgBSgCDCACGzYCFCAEIAQoAgAiBEEBazYCACAEQQFGBEAgBUEIahDzCQsgA0EMaiEDIAFBDGsiAQ0ACwsCQCAAKAIkIgRFDQAgACgCICIBIQMgBEEMbCIGQQxrIgdBDG5BAWpBB3EiBARAIARBDGwhBANAIAMoAgAiCCgCFCECIAggAkECIAIbNgIUIANBDGohAyAEQQxrIgQNAAsLIAdB1ABJDQAgASAGaiEEA0AgAygCACICKAIUIQEgAiABQQIgARs2AhQgA0EMaigCACICKAIUIQEgAiABQQIgARs2AhQgA0EYaigCACICKAIUIQEgAiABQQIgARs2AhQgA0EkaigCACICKAIUIQEgAiABQQIgARs2AhQgA0EwaigCACICKAIUIQEgAiABQQIgARs2AhQgA0E8aigCACICKAIUIQEgAiABQQIgARs2AhQgA0HIAGooAgAiAigCFCEB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lCAdkiIElSIXIARDCOU8Hl8bIBcgBEMI5TyeYBuUIgSUQwAAAACSQwAAAAAgBEMAAAAAXBsgGpMiBDgCLCAAIAQ4AiggDEEwaiQAC+0HAgV/A30jAEHAAWsiCyQAIAtBGGogAyAEKAKwAREAACALKAIcIQ0gCygCGCEMIAtBEGogBiAHKAKwAREAAAJAAkACQAJAAkAgDARAIAsoAhAiDg0BCyALQQhqIAMgBCgCtAERAAAgCygCCCIMRQ0BIAAgASACIAwgCygCDCAFIAYgByAIIAkgChArDAQLIAsoAhQhDyAKBH9BAAUgAyAEKAKkAREKACAGIAcoAqQBEQoAkiESIAMgBCgCqAERCgAhECAGIAcoAqgBEQoAIhEgESAQIBAgEV0bIBAgEFwbIRBBAQshCiALIBA4AmAgCyASOAJcIAsgCjYCWCALQegAaiADIAQoAoABEQAAIAtB+ABqIAYgBygCgAERAAAgCyoCdCALKgKEAWANASALQYgBaiABIAUgDiAPIAYgByACIAwgDSADIAQgCCAJIAtB2ABqEDUgCy0AvAEiA0EERwRAIAtBIGoiAUEYaiALQYgBaiICQQxqKAIANgIAIAFBDGogAkEYaigCADYCACABQTBqIAJBJGooAgA2AgAgAUEkaiACQTBqKAIANgIAIAsgCykCjAE3AjAgCyALKQKYATcCJCALIAspAqQBNwJIIAsgCykCsAE3AjwgCyALKgKIATgCIAsgCyADOgBUDAILIAsgBiAHKAK0AREAACALKAIAIgYEQCALQYgBaiABIAUgBiALKAIEIAIgAyAEIAggCSAKECsgCy0AvAEiAUEERwRAIAtBgAFqIAtBlAFqKAIANgIAIAtBKGogC0GgAWooAgA2AgAgC0HgAGogC0GsAWooAgA2AgAgC0HwAGogC0G4AWooAgA2AgAgCyALKQKMATcDeCALIAspApgBNwMgIAsgCykCpAE3A1ggCyALKQKwATcDaCALKgKIASEJCyAAIAk4AgAgACALKQMgNwIEIAAgCykDeDcCECAAIAspA2g3AhwgACALKQNYNwIoIAAgAToANCAAQQxqIAtBKGooAgA2AgAgAEEYaiALQYABaigCADYCACAAQSRqIAtB8ABqKAIANgIAIABBMGogC0HgAGooAgA2AgAgAEE3aiALQYoBai0AADoAACAA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IGokAAv/BgIUfwF9IwBBoANrIgMkAAJ/QQAgASACckEASA0AGiADQdQAaiIEIAAoAgAgASACEKgCIANBIGogBEEgaikCADcDACADQRhqIARBGGopAgA3AwAgA0EQaiAEQRBqKQIANwMAIANBCGogBEEIaikCADcDACADQTBqIARBMGopAgA3AwAgA0E4aiAEQThqKQIANwMAIANBQGsgBEFAaykCADcDACADQcgAaiAEQcgAaikCADcDACADIAMpAlQ3AwAgAyADKQJ8NwMoIARBBGogA0HQABDlDSELIANBAjYC2AEgA0ECNgKwASADQoCAgIAgNwKoASAAKAIcIgdBNWohCCAHQQRqIQQgA0GAAWohASADQagCaiICQTVqIQkgAkEEaiEGIAAoAhghCiAAKAIUIQwgACgCECENIAAoAgwhDiAAKAIIIQ8gACgCBCEQQQAhAiADKAKAASERA0ACQCACQShsIQAgAkEBaiECAkACQCAAIAtqIgAoAgAOAwABAgELIAJBAkYNAUECIQIgASEAIBEOAwEAAQALIANBgAJqIgVBIGogAEEkaigCADYCACAFQRhqIABBHGopAgA3AwAgBUEQaiAAQRRqKQIANwMAIAVBCGogAEEMaikCADcDACADIAApAgQ3A4ACIANB4AJqIgBBCGogCkEIaigCADYCACADIAopAgA3A+ACIANBqAJqIBAgDyAOIAVB6M/CACANIAwgABBDAkAgAy0A3AIiBUEFRwRAIANB8AJqIgBBCGoiEiAGQQhqKQIANwMAIABBEGoiEyAGQRBqKQIANwMAIABBGGoiFCAGQRhqKQIANwMAIABBIGoiFSAGQSBqKQIANwMAIABBKGoiACAGQShqKQIANwMAIANB7gJqIhYgCUECai0AADoAACADIAYpAgA3A/ACIAMgCS8AADsB7AIgBUEERg0BQ///f38hFyAHLQA0QQRHBH0gByoCAAVD//9/fwsgAyoCqAIiF15FDQEgByAXOAIAIAQgAykD8AI3AgAgByAFOgA0IAggAy8B7AI7AAAgBEEIaiASKQMANwIAIARBEGogEykDADcCACAEQRhqIBQpAwA3AgAgBEEgaiAVKQMANwIAIARBKGogACkDADcCACAIQQJqIBYtAAA6AAAMAQtBAQwDCyACQQJHDQELC0EACyEEIANBoANqJAAgBAurBwETfyABKAIEIQdBBCEGQQQhAwJAAkACQAJAAkACQAJAAkAgASgCCCIKBEAgCkEMbCECIApBqtWq1QBLDQEgAkEASA0BQYGJxAAtAAAaQQQhBCACQQQQ3AwiA0UNAQsgAyAHIAIQ5Q0hDiABKAIQIQQgASgCFCIHBEAgB0EDdCEFIAdB/////wBLBEBBACECDAkLQYGJxAAtAAAaQQQhAiAFQQQQ3AwiBkUNCAsgBiAEIAUQ5Q0hDyABKAIcIQhBBCEEQQAhBkEAIQNBBCECIAEoAiAiCwRAIAtBFGwhA0EAIQUgC0HmzJkzSw0CIANBAEgNAkGBicQALQAAGkEEIQUgA0EEENwMIgJFDQILIAIgCCADEOUNIRAgASgCKCECIAEoAiwiCARAIAhBBXQhBiAIQf///x9LBEBBACEDDAgLQYGJxAAtAAAaQQQhAyAGQQQQ3AwiBEUNBwsgBCACIAYQ5Q0hESABKAI0IQlBBCEFQQAhBEEAIQJBBCEDIAEoAjgiDARAIAxBAnQhAiAMQf////8BSwRAQQAhBgwHC0GBicQALQAAGkEEIQYgAkEEENwMIgNFDQYLIAMgCSACEOUNIRIgASgCQCEDIAEoAkQiCQRAIAlBAnQhBCAJQf////8BSwRAQQAhAgwGC0GBicQALQAAGkEEIQIgBEEEENwMIgVFDQULIAUgAyAEEOUNIRMgASgCTCEUQQQhBkEAIQVBACEDQQQhAiABKAJQIgQEQCAEQQJ0IQMgBEH/////AUsEQAwFC0GBicQALQAAGkEEIQ0gA0EEENwMIgJFDQQLIAIgFCADEOUNIQMgASgCWCENIAEoAlwiAQRAIAFBAnQhBSABQf////8BSwRAQQAhAgwEC0GBicQALQAAGkEEIQIgBUEEENwMIgZFDQMLIAYgDSAFEOUNIQIgACABNgJcIAAgAjYCWCAAIAE2AlQgACAENgJQIAAgAzYCTCAAIAQ2AkggACAJNgJEIAAgEzYCQCAAIAk2AjwgACAMNgI4IAAgEjYCNCAAIAw2AjAgACAINgIsIAAgETYCKCAAIAg2AiQgACALNgIgIAAgEDYCHCAAIAs2AhggACAHNgIUIAAgDzYCECAAIAc2AgwgACAKNgIIIAAgDjYCBCAAIAo2AgAPCyAEIAIQvgwACyAFIAMQvgwACyACIAUQvgwACyANIAMQvgwACyACIAQQvgwACyAGIAIQvgwACyADIAYQvgwACyACIAUQvgwAC4cIAQh/IAEgACgCACIJKAIIIgVPBEAgCSAFIAFBAWoiByIESQR/IAUhBiAHIAVrIgggCSgCACAFa0sEQCAJIAUgCBC0BiAJKAIIIQYLIAkoAgQgBkEEdGohBCAIQQJPBEAgASAFayILQQNxIQogBSABa0F8TQRAIAtBfHEhBQNAIARCfzcCCCAEQQA6AAQgBEF/NgIAIARBOGpCfzcCACAEQTRqQQA6AAAgBEEwakF/NgIAIARBKGpCfzcCACAEQSRqQQA6AAAgBEEgakF/NgIAIARBGGpCfzcCACAEQRRqQQA6AAAgBEEQakF/NgIAIARBQGshBCAFQQRrIgUNAAsLIAoEQANAIARCfzcCCCAEQQA6AAQgBEF/NgIAIARBEGohBCAKQQFrIgoNAAsLIAYgCGpBAWshBgsgBEJ/NwIIIARBADoABCAEQX82AgAgBkEBagUgBAs2AgggByAAKAIEIggoAggiBUsEQCAFIQYgByAFayIHIAgoAgAgBWtLBEAgCCAFIAcQtQYgCCgCCCEGCyAIKAIEIAZBGGxqIQQgB0ECTwRAIAEgBWsiC0EDcSEKIAUgAWtBfE0EQCALQXxxIQUDQCAEQv////v///+/fzcCECAEQv////v3//+/fzcCCCAEQv////v3//+//wA3AgAgBEHYAGpC////+////79/NwIAIARB0ABqQv////v3//+/fzcCACAEQcgAakL////79///v/8ANwIAIARBQGtC////+////79/NwIAIARBOGpC////+/f//79/NwIAIARBMGpC////+/f//7//ADcCACAEQShqQv////v///+/fzcCACAEQSBqQv////v3//+/fzcCACAEQRhqQv////v3//+//wA3AgAgBEHgAGohBCAFQQRrIgUNAAsLIAoEQANAIARC////+////79/NwIQIARC////+/f//79/NwIIIARC////+/f//7//ADcCACAEQRhqIQQgCkEBayIKDQALCyAGIAdqQQFrIQYLIARC////+////79/NwIQIARC////+/f//79/NwIIIARC////+/f//7//ADcCACAGQQFqIQcLIAggBzYCCCAJKAIIIQULAkAgASAFSQRAIAlBBGooAgAgAUEE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ACECAkAgCiAEQQdxQQBHaiIFRQ0AIAVBAXEhDCAFQQFHBEAgBUH+////A3EhBQNAIAEgAmoiCikDACEXIAogF0J/hUIHiEKBgoSIkKDAgAGDIBdC//79+/fv37//AIR8NwMAIApBCGoiCikDACEXIAogF0J/hUIHiEKBgoSIkKDAgAGDIBdC//79+/fv37//AIR8NwMAIAFBEGohASAFQQJrIgUNAAsLIAxFDQAgASACaiIBKQMAIRcgASAXQn+FQgeIQoGChIiQoMCAAYMgF0L//v379+/fv/8AhHw3AwALIARBCE8EQCACIARqIAIpAAA3AAAMAwsgAkEIaiACIAQQ5g0aIAQNAkF/IQEMAwsgCUEANgIUIAlBATYCCCAJQfyPwQA2AgQgCUIENwIMIAlBBGpB7JDBABCRCwALIAEgC0Hg+cAAEJkJAAtBACEBA0ACQCACIAEiA2otAABBgAFHDQACQAJAIAsgAiADQQJ0a0EEayIIKAIAIgFLBEBBACADayESA0AgBigCBCIEIBEgAUEMbGooAggiCnEiDCIFIAJqKQAAQoCBgoSIkKDAgH+DIhdQBEBBCCEBA0AgASAFaiEFIAFBCGohASAEIAVxIgUgAmopAABCgIGChIiQoMCAf4MiF1ANAAsLIAIgF3qnQQN2IAVqIARxIgFqLAAAQQBOBEAgAikDAEKAgYKEiJCgwIB/g3qnQQN2IQELIAEgDGsgAyAMa3MgBHFBCEkNAiABIAJqIgUtAAAhDCAFIApBGXYiBToAACABQQhrIARxIAYoAgAiBGpBCGogBToAACACIAFBAnRrQQRrIQEgDEH/AUYNAyAILQAAIQIgCCABLQAAOgAAIAEgAjoAACAILQABIQIgCCABLQABOgABIAEgAjoAASAILQACIQIgCCABLQACOgACIAEgAjoAAiAILQADIQIgCCABLQADOgADIAEgAjoAAyALIAYoAgAiAiASQQJ0akEEaygCACIBSw0ACwsgASALQeD5wAAQmQkACyACIANqIApBGXYiAToAACAGKAIAIgIgBCADQQhrcWpBCGogAToAAAwBCyAGKAIEIQIgAyAEakH/AToAACAEIAIgA0EIa3FqQQhqQf8BOgAAIAEgCCgAADYAACAEIQILIANBAWohASADIA1HDQALIAYoAgQiAUEBakEDdkEHbCEDIAYo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mAggBEG358MANgKUCCAEQQI7AZAIQQEhBSAEQZAIagwDC0ECIQUgBEECOwGQCCADRQ0BIARBoAhqIAM2AgAgBEEAOwGcCCAEQQI2ApgIIARBiefDADYClAggBEGQCGoMAgsgB8EiAkF0QQUgAkEASBtsIgJBwP0ASQRAIARBkAhqIARB0AhqIARBEGogAkEEdkEVaiIFQYCAfkEAIANrIANBgIACTxsiAhDEASACwSECAkAgBCgCkAhFBEAgBEHACGogBEHQCGogBEEQaiAFIAIQKgwBCyAEQcgIaiAEQZgIaigCADYCACAEIAQpApAINwPACAsgAiAELgHICCICSARAIARBCGogBCgCwAggBCgCxAggAiADIARBkAhqEKsEIAQoAgwhBSAEKAIIDAMLQQIhBSAEQQI7AZAIIANFBEBBASEFIARBATYCmAggBEG658MANgKUCCAEQZAIagwDCyAEQaAIaiADNgIAIARBADsBnAggBEECNgKYCCAEQYnnwwA2ApQIIARBkAhqDAILQcHnwwBBJUHo58MAEPwKAAtBASEFIARBATYCmAggBEG658MANgKUCCAEQZAIagshAiAEIAU2AswIIAQgAjYCyAggBCAINgLECCAEIAk2AsAIIAAgBEHACGoQ4QIhACAEQfAIaiQAIAAL5AYCA38PfSMAQYACayIFJAAgBUG4AWpBADYCACAFQgA3ArABIAVCgoCAgDA3AgggBUKAgICAEDcCACAFQTRqQQBB+AAQ5w0aIAVBADYCvAEgBUEANgKsASAFQQA2AjAgBUIANwIoIAEqAgQiECACKgIQIgmMIhGUIAEqAgAiDCACKgIMIgqUkyACKgIUIgsgASoCCCINlJMgASoCECIVIBGUIAogASoCDCIOlJMgCyABKgIUIhaUk14hBiAFIAwgDiAGGyACKgIAIhKTIgg4AhwgBSAIOAIQIAUgASABQQxqIgcgBhsiBioCCCACKgIIIhOTIgg4AiQgBSAGKgIEIAIqAgQiFJMiDzgCICAFIAg4AhggBSAPOAIUIAVBwAFqIAEgBSACIAMQrQEgBSgCwAEhAgJAIARFBEAgAkUEQCAAQQQ2AgAMAgsgBSoCxAEiCEMAAAAAXARAIAAgBSkCyAE3AgwgACAIOAIIIABBAzYCACAAQRRqIAVB0AFqKAIANgIADAILIAogCpQg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DQEgAiAAIAFBMGoiAGooAgAiATYCECACIAc2AhQgASAHRw0CIAIgACAEQQFqQQAgBEECRxtBAnRqKAIAIgA2AhAgAiAFNgIUIAAgBUcNAyACQTBqJAAPCyACQQA2AhggAyACQQhqIAJBGGpBkKrDABCeCwALIAJBADYCGCADIAJBDGogAkEYakGgqsMAEJ4LAAsgAkEANgIYIAJBEGogAkEUaiACQRhqQbCqwwAQngsACyACQQA2AhggAkEQaiACQRRqIAJBGGpBwKrDABCeCwALIARBA0GAqsMAEJkJAAvUBwILfwF9IwBBIGsiBiQAIABBEGohBwJAIAAoAhgiAkUEQCAHKAIAIQMgAcAQkwkiDUP//39+IA1D//9/fl0bIQ0gA0UEQCAHENIGCyAAQQE2AhhBACECIAAoAhQiAEEANgIIIABCgICAgMAANwIAIABB0I/BACkDADcCDCAAQQA6AD0gACABOgA8IABBADoAOiAAQQA6ADggACANOAI0IABCBDcCLCAAQgA3AiQgAEKAgICAwAA3AhwgAEEUakHYj8EAKQMANwIADAELIAAoAhQhBSAAQeAAaiIMIQMCQAJAAkACQAJAAkADQCADLQAAIgMgAk8NBCABwCIKIAUgA0EGdGoiCCwAPCIETA0BIAhBO2ohAyAILQA6DQALIAYgAjoAByACQf8BcUH/AUcNASAGQgA3AhQgBkKBgICAwAA3AgwgBkG468EANgIIIwBBEGsiACQAIABBwOvBADYCDCAAIAZBB2o2AghBASAAQQhqQZzTwAAgAEEMakGc08AAIAZBCGpBxOvBABC6BAALIARB/wFxIAFB/wFxRw0BIAMhAgwFCyAALQBhIgQgAk8NAiAFIARBBnRqIgMgAjoAOyADQQE6ADogBygCACEDIAoQkwkiDUP//39+IA1D//9/fl0bIQ0gAiADRgRAIAcQ0gYgACgCFCEFCyAAIAI6AGEgACACQQFqNgIYIAUgAkEGdGoiA0EANgIIIANCgICAgMAANwIAIANB0I/BACkDADcCDCADIAI6AD0gAyABOgA8IANBADoAOiADIAQ6ADkgA0EBOgA4IAMgDTgCNCADQgQ3AiwgA0IANwIkIANCgICAgMAANwIcIANBFGpB2I/BACkDADcCACAAIAIQagwECyAILQA5IQkgCCACOgA5IAgtADghCyAIQQE6ADgCQCALBEAgAiAJTQ0EIAUgCUEGdGoiBCACOgA7IARBAToAOgwBCyAMIAI6AAALIAcoAgAhBCAKEJMJIg1D//9/fiANQ///f35dGyENIAIgBEYEQCAHENIGIAAoAhQhBQsgACACQQFqNgIYIAUgAkEGdGoiBEEANgIIIARCgICAgMAANwIAIARB0I/BACkDADcCDCAEIAI6AD0gBCABOgA8IAQgAzoAOyAEQQE6ADogBCAJOgA5IAQgCzoAOCAEIA04AjQgBEIENwIsIARCADcCJCAEQoCAgIDAADcCHCAEQRRqQdiPwQApAwA3AgAgACACEGoMAwsgAyACQZTrwQAQmQkACyAEIAJB1OvBABCZCQALIAkgAkHk68EAEJkJAAsgBkEgaiQAIAILlAYBHX0gASoCPCEPIAIqAgwhBiABKgIMIRAgAkEcaioCACEJIAEqAkwhESABKgIcIRIgAkEsaioCACEMIAEqAlwhEyABKgIsIRQgASoCOCEVIAIqAgghBCABKgIIIRYgAkEYaioCACEHIAEqAkghFyABKgIYIRggAkEoaioCACENIAEqAlghGSABKgIoIRogASoCNCEbIAIqAgQhBSABKgIEIQsgAkEUaioCACEIIAEqAkQhHCABKgIUIR0gAkEkaioCACEOIAEqAlQhHiABKgIkIR8gASoCACACKgIAIgOTIgogAyABKgIwkyIDIAMgCl8bIgNDAAAAACADQwAAAABgGyIDIAOUIAEqAhAgAioCECIDkyIKIAMgASoCQJMiAyADIApfGyIDQwAAAAAgA0MAAAAAYBsiAyADlJIgASoCICACKgIgIgOTIgogAyABKgJQkyIDIAMgCl8bIgNDAAAAACADQwAAAABgGyIDIAOUkhCSASEDIAsgBZMiCyAFIBuTIgUgBSALXxsiBUMAAAAAIAVDAAAAAGAbIgUgBZQgHSAIkyIFIAggHJMiCCAFIAhgGyIFQwAAAAAgBUMAAAAAYBsiBSAFlJIgHyAOkyIFIA4gHpMiCCAFIAhgGyIFQwAAAAAgBUMAAAAAYBsiBSAFlJIQkgEhBSAWIASTIgggBCAVkyIEIAQgCF8bIgRDAAAAACAEQwAAAABgGyIEIASUIBggB5MiBCAHIBeTIgcgBCAHYBsiBEMAAAAAIARDAAAAAGAbIgQgBJSSIBogDZMiBCANIBmTIgcgBCAHYBsiBEMAAAAAIARDAAAAAGAbIgQgBJSSEJIBIQQgACAQIAaTIgcgBiAPkyIGIAYgB18bIgZDAAAAACAGQwAAAABgGyIGIAaUIBIgCZMiBiAJIBGTIgkgBiAJYBsiBkMAAAAAIAZDAAAAAGAbIgYgBpSSIBQgDJMiBiAMIBOTIgkgBiAJYBsiBkMAAAAAIAZDAAAAAGAbIgYgBpSSEJIBOAIMIAAgBDgCCCAAIAU4AgQgACADOAIAC8QLAQZ/IwBBEGsiAyQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDigGAQEBAQEBAQECBAEBAwEBAQEBAQEBAQEBAQEBAQEBAQEBCAEBAQEHAAsgAUHcAEYNBAsgAUGABkkNByACQQFxRQ0HIAFBC3QhAkEhIQRBISEGAkADQCAEQQF2IAVqIgRBAnRBpP/DAGooAgBBC3QiByACRwRAIAQgBiACIAdJGyIGIARBAWogBSACIAdLGyIFayEEIAUgBkkNAQwCCwsgBEEBaiEFCwJ/AkAgBUEgTQRAIAVBAnQiAkGk/8MAaigCACEEQdcFIQYCQCAFQSBGDQAgAkGo/8MAaiICRQ0AIAIoAgBBFXYhBgsgBEEVdiECIAUNAUEADAILIAVBIUGg/cMAEJkJAAsgBUECdEGg/8MAaigCAEH///8AcQshBAJAAkACQCAGIAJBf3NqRQ0AIAEgBGshCEHXBSACIAJB1wVNGyEHIAZBAWshBEEAIQUDQCACIAdGDQIgCCAFIAJBqIDEAGotAABqIgVJDQEgBCACQQFqIgJHDQALIAQhAgsgAkEBcSECDAELIAdB1wVBsP3DABCZCQALIAJFDQcgA0EIakEAOgAAIANBADsBBiADQf0AOgAPIAMgAUEPcUGW6MMAai0AADoADiADIAFBBHZBD3FBlujDAGotAAA6AA0gAyABQQh2QQ9xQZbowwBqLQAAOgAMIAMgAUEMdkEPcUGW6MMAai0AADoACyADIAFBEHZBD3FBlujDAGotAAA6AAogAyABQRR2QQ9xQZbowwBqLQAAOgAJIAFBAXJnQQJ2QQJrIgFBC08NCCADQQZqIgIgAWoiBEHs/cMALwAAOwAAIARBAmpB7v3DAC0AADoAACAAIAMpAQY3AAAgAEEIaiACQQhqLwEAOwAAIABBCjoACyAAIAE6AAoMCwsgAEGABDsBCiAAQgA3AQIgAEHc6AE7AQAMCgsgAEGABDsBCiAAQgA3AQIgAEHc5AE7AQAMCQsgAEGABDsBCiAAQgA3AQIgAEHc3AE7AQAMCAsgAEGABDsBCiAAQgA3AQIgAEHcuAE7AQAMBwsgAEGABDsBCiAAQgA3AQIgAEHc4AA7AQAMBgsgAkGAAnFFDQEgAEGABDsBCiAAQgA3AQIgAEHczgA7AQAMBQsgAkGAgARxDQMLAn8CQCABQSBJDQACQAJ/QQEgAUH/AEkNABogAUGAgARJDQECQCABQYCACE8EQCABQbDHDGtB0LorSQ0EIAFBy6YMa0EFSQ0EIAFBnvQLa0HiC0kNBCABQd7cC2tBohNJDQQgAUHh1wtrQQ9JDQQgAUGinQtrQQ5JDQQgAUF+cUGe8ApGDQQgAUFgcUHgzQpHDQEMBAsgAUH88cMAQSxB1PLDAEHEAUGY9MMAQcIDEMQEDAQLQQAgAUG67gprQQZJDQAaIAFBgIDEAGtB8IN0SQsMAgsgAUHa98MAQShBqvjDAEGgAkHK+sMAQa0CEMQEDAELQQALBEAgACABNgIEIABBgAE6AAAMBAsgA0EIakEAOgAAIANBADsBBiADQf0AOgAPIAMgAUEPcUGW6MMAai0AADoADiADIAFBBHZBD3FBlujDAGotAAA6AA0gAyABQQh2QQ9xQZbowwBqLQAAOgAMIAMgAUEMdkEPcUGW6MMAai0AADoACyADIAFBEHZBD3FBlujDAGotAAA6AAogAyABQRR2QQ9xQZbowwBqLQAAOgAJIAFBAXJnQQJ2QQJrIgFBC08NASADQQZqIgIgAWoiBEHs/cMALwAAOwAAIARBAmpB7v3DAC0AADoAACAAIAMpAQY3AAAgAEEIaiACQQhqLwEAOwAAIABBCjoACyAAIAE6AAoMAwsgAUEKQdz9wwAQxA0ACyABQQpB3P3DABDEDQALIABBgAQ7AQogAEIANwECIABB3MQAOwEACyADQRBqJAALuAUBGX0gASoCCCIHIAeUIgsgASoCDCIEIASUIhcgASoCACICIAKUIhiTIgwgASoCBCIFIAWUIg2TkiIIQwAAAABDAACAPyABKgIoIgMgA5QiA5UgA0MAAAAAWxsiEZQgBSAHlCIDIAOSIgMgAiAElCIGIAaSIhmSIg5DAAAAAJQiCSACIAeUIgYgBpIiBiAFIASUIgogCpIiGpMiEkMAAAAAlCIPkpIhCiAAIAggCpQgAyAEIAKMlCITIBOSIhSTIhMgCEMAAAAAlCIVQwAAAABDAACAPyABKgIkIhAgEJQiEJUgEEMAAAAAWxsiECAOlCAPkpIiDpQgBiAEIAWMlCIPIA+SIhaSIg8gFSAJQwAAAABDAACAPyABKgIgIgkgCZQiCZUgCUMAAAAAWxsiCSASlJKSIhKUkpI4AiAgACADIBSSIhQgCpQgDSAMkiALkyIMIA6UIAIgBZQiAiACkiIFIAQgB4yUIgIgApIiApMiFSASlJKSOAIUIAAgBiAWkyIWIAqUIAUgApIiCiAOlCAYIBeSIA2TIAuTIgIgEpSSkjgCCCAAIAggESADIBmTIgOUIAUgByAElCIEIASSIguSIg1DAAAAAJQiByAMQwAAAACUIg6SkiIElCATIANDAAAAAJQiAyAHIBAgDJSSkiIHlCAPIAMgCSANlCAOkpIiA5SSkjgCHCAAIAggESAGIBqSIgiUIAUgC5MiBkMAAAAAlCILIAJDAAAAAJQiDZKSIgWUIBMgCEMAAAAAlCIRIBAgBpQgDZKSIgiUIA8gESALIAkgApSSkiIGlJKSOAIYIAAgFCAElCAMIAeUIBUgA5SSkjgCECAAIBQgBZQgDCAIlCAVIAaUkpI4AgwgACAWIASUIAogB5QgAiADlJKSOAIEIAAgFiAFlCAKIAiUIAIgBpSSkjgCAAu6BQERfwJAIAAoAgwiA0F/Rg0AIAEoAhAhCiABKAIMIQQCQCAAKAIIIgtFDQAgACgCBCEIAkACQCAERQRAIAtBAnQhByADIQADQCAIKAIAIgJBAWohCSACIABBAWoiAkkgACAJSXENAiAJIApLDQMgCEEEaiEIIAIhACAHQQRrIgcNAAtBACEEDAMLIAggC0ECdGohECABKAIEIQcgBEECdCEMIARBA3EhCSADIARsQQJ0IQVBACAEQXxxayERA0AgCCgCACICQQFqIQAgAiADIA1qIgZBAWpJIAAgBktxDQEgACAKSw0CQQAhACAEQQRPBEAgAiAMbCESQQAhBiAHIQADQCAAIAVqIg4gACASaiIPKgIAOAIAIA5BBGogD0EEaioCADgCACAOQQhqIA9BCGoqAgA4AgAgDkEMaiAPQQxqKgIAOAIAIABBEGohACARIAZBBGsiBkcNAAtBACAGayEACyAJBEAgAiAMbCEGIAcgAEECdGohACAJIQIDQCAAIAVqIAAgBmoqAgA4AgAgAEEEaiEAIAJBAWsiAg0ACwsgDUEBaiENIAUgDGohBSAIQQRqIgggEEcNAAsMAgtByPzAAEEwQZT8wAAQ5AsAC0H4/MAAQSdBlPzAABDkCwALIAogAyALaiIAayAEbCIDRQ0AIAEoAgQgACAEbEECdGoiBSECIAMiAEEBcQRAIAVBADYCACAFIANBAWsiAEEAR0ECdGohAgsgA0EBRg0AIAUgBEECdGohBgNAIARBAnQiASAFaiIJIAIgAiAGRiIDGyIHQQA2AgAgByAAQQFHQQJ0aiIHIAEgAmogBiADGyIIRiECIAkgBSADGyIDIAFqIgkgByACGyIKQQA2AgAgCSADIAIbIQUgASAHaiAIIAIbIQYgCiAAQQJHQQJ0aiECIABBAmsiAA0ACwsLgyUDFX8MfQJ+IwBB8AFrIgYkACAGIAM2AgggASgCBCEFIAEoAgghAUEAIQMgBkEAOgCTASAGIAI2ApwBIAYgBSABQSRsajYCmAEgBiAFNgKUASAGIAZBkwFqNgKkASAGIAZBCGo2AqABIAZBtAFqIAZBlAFqEIQDAkACQAJAAkACQAJAAkACQAJAIAYoAtABBEBBgYnEAC0AABpBkAFBBBDcDCICRQ0EIAIgBikCtAE3AgAgAkEgaiAGQbQBaiIBQSBqKAIANgIAIAJBGGogAUEYaikCADcCACACQRBqIAFBEGopAgA3AgAgAkEIaiABQQhqKQIANwIAIAZBATYCsAEgBiACNgKsASAGQQQ2AqgBIAZB2AFqIgFBEGogBkGUAWoiA0EQaigCADYCACABQQhqIANBCGopAgA3AwAgBiAGKQKUATcD2AEgBkEYaiABEIQDIAYoAjRFDQFBJCEHQQEhAwNAIAYoAqgBIANGBEAgBkGoAWohAiMAQSBrIgEkACADQQFqIgUgA0kEQEEAQQAQvgwAC0EEIQtBBCACKAIAIgRBAXQiCCAFIAUgCEkbIgUgBUEETRsiCEEkbCEOIAVB5PG4HElBAnQhBQJAIARFBEBBACELDAELIAEgBEEkbDYCHCABIAIoAgQ2AhQLIAEgCzYCGCABQQhqIAUgDiABQRRqEI4HIAEoAggEQCABKAIMIAEoAhAQvgwACyABKAIMIQUgAiAINgIAIAIgBTYCBCABQSBqJAAgBigCrAEhAgsgAiAHaiIBIAYpAhg3AgAgAUEgaiAGQRhqIgVBIGooAgA2AgAgAUEYaiAFQRhqKQIANwIAIAFBEGogBUEQaikCADcCACABQQhqIAVBCGopAgA3AgAgBiADQQFqIgM2ArABIAdBJGohByAFIAZB2AFqEIQDIAYoAjQNAAsgBigCqAEhBSAGLQCTAUUNAiADRQ0HDAYLIAYtAJMBDQdBBCECQQAhBQwCC0EEIQVBASEDIAYtAJMBDQQMAQtBACEBIAVBgICAgHhGDQYLIAYgAzYCFCAGIAI2AhAgBiAFNgIMIAZBGGohDUEAIQgjAEHAAWsiBCQAAkACQAJAAkACQAJAAkACQCAGQQxqIhIoAggiAQRAIARBADYCECAEQoCAgIDAADcCCCAEQQA2AhwgBEKAgICAwAA3AhQgAUEkbCELIBIoAgQhAUP//3//IRlD//9/fyEaQX8hAkEEIQNBBCEOQ///f38hG0P//39/IRxD//9//yEdQ///f/8hHgNAIARBIGogASgCHCABKAIgIhEoAghBAWtBeHFqQQhqIhMgASARKAKQAREBACAEKgI0IR8gBCoCMCEgIAQqAiwhISAEKgIoISIgBCoCJCEjIAQqAiAhJCACQQFqIgUgBCgCCEYEQCAEQQhqENMGIAQoAgwhDgsgBEEgaiIHQQhqIgwpAgAhJSAHQRBqIhApAgAhJiAKIA5qIgcgBCkCIDcCACAHQRBqICY3AgAgB0EIaiAlNwIAIAQgAkECaiIUNgIQIARBOGoiAkEQaiIWIBApAgA3AwAgAkEIaiIXIAwpAgA3AwAgBCAEKQIgNwM4IAQoAhQgBUYEQCMAQSBrIgIkACAEQRRqIgMoAgAiB0EBaiIMRQRAQQBBABC+DAALQQQhEEEEIAdBAXQiFSAMIAwgFUkbIgwgDEEETRsiFUEcbCEYIAxBpZLJJElBAnQhDAJAIAdFBEBBACEQDAELIAIgB0EcbDYCHCACIAMoAgQ2AhQLIAIgEDYCGCACQQhqIAwgGCACQRRqEI4HIAIoAggEQCACKAIMIAIoAhAQvgwACyACKAIMIQcgAyAVNgIAIAMgBzYCBCACQSBqJAAgBCgCGCEDCyADIAhqIgIgBTYCACACQQRqIAQpAzg3AgAgAkEMaiAXKQMANwIAIAJBFGogFikDADcCACAEIBQ2AhwgBCATIBEoArQBEQAAIAQoAgANCCAeIB8gHiAfYBshHiAdICAgHSAgYBshHSAZICEgGSAhYBshGSAcICIgHCAiXxshHCAbICMgGyAjXxshGyAaICQgGiAkXxshGiABQSRqIQEgCUEMaiEJIApBGGohCiAPQQRqIQ8gCEEcaiEIIAUhAiALQSRrIgsNAAsgBCgCFCERIAQoAhghDiAEQoCAgIDAADcCaCAEQgQ3AmAgBEIANwJYIARCgICAgIACNwJQIARC////+////79/NwJIIARC////+/f//79/NwJAIARC////+/f//7//ADcCOEEAIQIgBEEANgJwIARBAToAhwECQAJAIAVBAWoiA0UEQCAEQQA2ApABIARCgICAgMAANwKIASAEQQA2AnwgBEKAgICAwAA3AnQgBEEANgKcASAEQoCAgIDAADcClAEMAQtBgYnEAC0AABogD0EEENwMIgFFDQggBEEANgKQASAEIAE2AowBIAQgAzYCiAEgA0HVqtUqSw0DIApBAEgNA0GBicQALQAAGkEEIQIgCkEEENwMIgdFDQMgByEBAkAgBUUNACAFQQNxIQsgBUEETwRAIAVBfHEhAgNAIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAFC////+/f//7//ADcCACABQdgAakL////7////v383AgAgAUHQAGpC////+/f//79/NwIAIAFByABqQv////v3//+//wA3AgAgAUFAa0L////7////v383AgAgAUE4akL////79///v383AgAgAUEwakL////79///v/8ANwIAIAFBKGpC////+////79/NwIAIAFBIGpC////+/f//79/NwIAIAFBGGpC////+/f//7//ADcCACABQeAAaiEBIAJBBGsiAg0ACwsgC0UNACAFQQNxIQIDQCABQv////v///+/fzcCECABQv////v3//+/fzcCCCABQv////v3//+//wA3AgAgAUEYaiEBIAJBAWsiAg0ACwsgAUL////79///v/8ANwIAIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAQgAzYCnAEgBCAHNgKYASAEIAM2ApQBQYGJxAAtAAAaIAlBBBDcDCILRQ0EIAshAQJAIAVFDQAgBUEDcSEHIAVBBE8EQCAFQXxxIQIDQCABQn83AgggAUEAOgAEIAFBfzYCACABQSxqQX82AgAgAUEoakEAOgAAIAFBIGpCfzcCACABQRxqQQA6AAAgAUEUakJ/NwIAIAFBEGpBADoAACABQTBqIQEgAkEEayICDQALCyAHRQ0AIAVBA3EhAgNAIAFBfzYCCCABQQA6AAQgAUF/NgIAIAFBDGohASACQQFrIgINAAsLIAggDmohEyABQX82AgggAUEAOgAEIAFBfzYCACAEIAM2AnwgBCALNgJ4IAQgAzYCdCAEQaABaiIBQRBqIQwgAUEIaiEQIARB9ABqIRQgDiECA0AgAigCACEJIAwgAkEUaikCADcDACAQIAJBDGopAgA3AwAgBCACKQIENwOgASADIAlNBEAgBAJ/IAlBAWoiByADTQRAIAcMAQsgAyEFIAcgA2siDyAEKAJ0IANrSwRAIBQgAyAPELEGIAQoAnghCyAEKAJ8IQULIAsgBUEMbGohASAPQQJPBEAgCSADayIIQQNxIQogAyAJa0F8TQRAIAhBfHEhCANAIAFCfzcCCCABQQA6AAQgAUF/NgIAIAFBLGpBfzYCACABQShqQQA6AAAgAUEgakJ/NwIAIAFBHGpBADoAACABQRRqQn83AgAgAUEQakEAOgAAIAFBMGohASAIQQRrIggNAAsLIAoEQANAIAFBfzYCCCABQQA6AAQgAUF/NgIAIAFBDGohASAKQQFrIgoNAAsLIAUgD2pBAWshBQsgAUF/NgIIIAFBADoABCABQX82AgAgBUEBagsiAzYCfCAEKAKcASIIIAdJBEAgByAIIgVrIQcgByAEKAKUASAFa0sEQCAEQZQBaiAIIAcQtQYgBCgCnAEhBQsgBCgCmAEgBUEYbGohASAHQQJPBEAgCSAIayIPQQNxIQogCCAJa0F8TQRAIA9BfHEhCANAIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAFC////+/f//7//ADcCACABQdgAakL////7////v383AgAgAUHQAGpC////+/f//79/NwIAIAFByABqQv////v3//+//wA3AgAgAUFAa0L////7////v383AgAgAUE4akL////79///v383AgAgAUEwakL////79///v/8ANwIAIAFBKGpC////+////79/NwIAIAFBIGpC////+/f//79/NwIAIAFBGGpC////+/f//7//ADcCACABQeAAaiEBIAhBBGsiCA0ACwsgCgRAA0AgAUL////7////v383AhAgAUL////79///v383AgggAUL////79///v/8ANwIAIAFBGGohASAKQQFrIgoNAAsLIAUgB2pBAWshBQsgAUL////7////v383AhAgAUL////79///v383AgggAUL////79///v/8ANwIAIAVBAWohBwsgBCAHNgKcAQsgAyAJTQ0GIAsgCUEMbGogCTYCCCAEKAKcASIBIAlNDQcgBCgCmAEgCUEYbGoiASAEKQOgATcCACABQQhqIBApAwA3AgAgAUEQaiAMKQMANwIAIAQoApABIgEgBCgCiAFGBEAgBEGIAWoQzwYLIAQoAowBIgogAUECdGogCTYCACAEIAFBAWoiATYCkAEgEyACQRxqIgJHDQALIAQoAlgiAiAEKAJQRw0BCyAEQdAAahDWBiAEKAKQASEBIAQoAowBIQoLIAQoAlQgAkEHdGoiA0EBNgJgIANC////+////79/NwNYIANC////+////79/NwNQIANC////+////79/NwNIIANC////+////79/NwNAIANC////+////79/NwM4IANC////+////79/NwMwIANC////+/f//7//ADcDKCADQv////v3//+//wA3AyAgA0L////79///v/8ANwMYIANC////+/f//7//ADcDECADQv////v3//+//wA3AwggA0L////79///v/8ANwMAIANCfzcCZCADQQA6AHQgA0EAOgB4IANB7ABqQn83AgAgBCACQQFqNgJYIARBoAFqIARBOGogBEGHAWogCiABIARBlAFqQQBBABBFIAQgBCoCuAEiHzgCTCAEIAQqArQBIiA4AkggBCAEKgKwASIhOAJEIAQgBCoCrAEiIjgCQCAEIAQqAqgBIiM4AjwgBCAEKgKkASIkOAI4IAQoAlhFDQUgBCgCVCIBQf///3s2AlwgAUL////7////v383AlQgASAfOAJQIAFB////ezYCTCABQv////v///+/fzcCRCABICA4AkAgAUH///97NgI8IAFC////+////79/NwI0IAEgITgCMCABQf////sHNgIsIAFC////+/f//7//ADcCJCAB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BEEgayIGNgIEIAEgAkEgajYCACAGQQRJDQMgAioAHCEOIAEgBEEkayIGNgIEIAEgAkEkajYCACAGQQRJDQIgAigAICEGIAEgBEEoayIINgIEIAEgAkEoajYCACAIQQRJDQEgAioAJCEPIAEgBEEsayIINgIEIAEgAkEsajYCACAIQQRJDQAgACACKgAoOAIsIAAgDzgCKCAAIAY2AiQgACAOOAIgIAAgDTgCHCAAIAw4AhggACAFNgIUIAAgCzgCECAAIAo4AgwgACAJOAIIIAAgBzYCBCAAQQE2AgAgASAEQTBrNgIEIAEgAkEwajYCACAAIAIqACw4AjAMBQsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIANBCGoQpAsMAwsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIANBCGoQpAsMAgsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIANBCGoQpAsMAQsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIANBCGoQpAsLIQEgAEECNgIAIAAgATYCBAsgA0EQaiQAC/oFAgF/AX0gASoCACEDIAAoAgAiAigCCCEAIAIoAgAgAGtBA00EQCACIABBBBDlBiACKAIIIQALIAIoAgQgAGogAzgAACACIABBBGoiADYCCCABKgIEIQMgAigCACAAa0EDTQRAIAIgAEEEEOUGIAIoAgghAAsgAigCBCAAaiADOAAAIAIgAEEEaiIANgIIIAEqAgghAyACKAIAIABrQQNNBEAgAiAAQQQQ5QYgAigCCCEACyACKAIEIABqIAM4AAAgAiAAQQRqIgA2AgggASoCDCEDIAIoAgAgAGtBA00EQCACIABBBBDlBiACKAIIIQALIAIoAgQgAGogAzgAACACIABBBGoiADYCCCABKgIQIQMgAigCACAAa0EDTQRAIAIgAEEEEOUGIAIoAgghAAsgAigCBCAAaiADOAAAIAIgAEEEaiIANgIIIAEqAhQhAyACKAIAIABrQQNNBEAgAiAAQQQQ5QYgAigCCCEACyACKAIEIABqIAM4AAAgAiAAQQRqIgA2AgggASoCGCEDIAIoAgAgAGtBA00EQCACIABBBBDlBiACKAIIIQALIAIoAgQgAGogAzgAACACIABBBGoiADYCCCABKgIcIQMgAigCACAA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DBEEAAwECyABKAIUQYPDwwBBDyABKAIYKAIMEQQADAMLIAEoAhRBksPDAEENIAEoAhgoAgwRBAAMAgsgASgCFEGfw8MAQQ4gASgCGCgCDBEEAAwBCyABKAIUIAAoAgQgACgCCCABKAIYKAIMEQQACyEAIAJBMGokACAAC4EGAQV/IABBCGshASABIABBBGsoAgAiA0F4cSIAaiECAkACQAJAAkAgA0EBcQ0AIANBAnFFDQEgASgCACIDIABqIQAgASADayIBQdCuxAAoAgBGBEAgAigCBEEDcUEDRw0BQciuxAAgADYCACACIAIoAgRBfnE2AgQgASAAQQFyNgIEIAIgADYCAA8LIAEgAxDWBAsCQAJAIAIoAgQiA0ECcUUEQCACQdSuxAAoAgBGDQIgAkHQrsQAKAIARg0FIAIgA0F4cSICENYEIAEgACACaiIAQQFyNgIEIAAgAWogADYCACABQdCuxAAoAgBHDQFByK7EACAANgIADwsgAiADQX5xNgIEIAEgAEEBcjYCBCAAIAFqIAA2AgALIABBgAJJDQIgASAAEPMEQQAhAUHorsQAQeiuxAAoAgBBAWsiADYCACAADQFBsKzEACgCACIABEADQCABQQFqIQEgACgCCCIADQALC0HorsQAQf8fIAEgAUH/H00bNgIADwtB1K7EACABNgIAQcyuxABBzK7EACgCACAAaiIANgIAIAEgAEEBcjYCBEHQrsQAKAIAIAFGBEBByK7EAEEANgIAQdCuxABBADYCAAsgAEHgrsQAKAIAIgNNDQBB1K7EACgCACICRQ0AQQAhAQJAQcyuxAAoAgAiBEEpSQ0AQaisxAAhAANAIAIgACgCACIFTwRAIAUgACgCBGogAksNAgsgACgCCCIADQALC0GwrMQAKAIAIgAEQANAIAFBAWohASAAKAIIIgANAAsLQeiuxABB/x8gASABQf8fTRs2AgAgAyAETw0AQeCuxABBfzYCAAsPCyAAQXhxQbisxABqIQICf0HArsQAKAIAIgNBASAAQQN2dCIAcUUEQEHArsQAIAAgA3I2AgAgAgwBCyACKAIICyEAIAIgATYCCCAAIAE2AgwgASACNgIMIAEgADYCCA8LQdCuxAAgATYCAEHIrsQAQciuxAAoAgAgAGoiADYCACABIABBAXI2AgQgACABaiAANgIAC78FAwd/BH4DfSMAQRBrIgMkACAAAn8CQAJAAkAgASgCBCIEQQRJDQAgASgCACECIAEgBEEEayIHNgIEIAEgAkEEajYCACAHQQRJDQAgAigAACEHIAEgBEEIayIFNgIEIAEgAkEIajYCACAFQQRJDQAgAjUABCEJIAEgBEEMayIFNgIEIAEgAkEMajYCACAFQQRJDQEgAjUACCEKIAEgBEEQayIFNgIEIAEgAkEQajYCACAFQQRJDQIgAioADCENIAEgBEEUayIFNgIEIAEgAkEUajYCACAFQQRJDQIgAigAECEFIAEgBEEYayIGNgIEIAEgAkEYajYCACAGQQRJDQIgAjUAFCELIAEgBEEcayIGNgIEIAEgAkEcajYCAAJAIAZBBEkNACACNQAYIQwgASAEQSBrIgY2AgQgASACQSBqNgIAIAZBBEkNACACKAAcIQYgASAEQSRrIgg2AgQgASACQSRqNgIAIAhBBEkNACACKgAgIQ4gASAEQShrIgg2AgQgASACQShqNgIAIAhBBEkNACACKgAkIQ8gACAMQiCGIAuENwIoIAAgBTYCJCAAIA04AiAgACAKQiCGIAmENwIYIAAgBzYCFCAAIA84AgwgACAOOAIIIAAgBjYCBCABIARBLGs2AgQgASACQSxqNgIAIAAgAioAKDgCEEEADAQLIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCAAIANBCGoQpAs2AgRBAQwDCyADQQA6AAsgA0ElOwAJIANBADYCDCADQQE6AAggACADQQhqEKQLNgIEQQEMAgsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCkCzYCBEEBDAELIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCAAIANBCGoQpAs2AgRBAQs2AgAgA0EQaiQAC/QEAQx/IwBBIGsiAiQAIAAoAgQhCAJAAkAgACgCCCIDRQRAQQQhBAwBCyADQQJ0IQUgA0H/////AUsEQAwCC0GBicQALQAAGkEEIQYgBUEEENwMIgRFDQELIAQgCCAFEOUNIQUCQAJAAkACQCABIAAoAgwiBEcEQAwBCyACIAE2AhwgAiADNgIYIAIgBTYCFCACIAM2AhAgAiABIAJBEGoQ4AQgAigCCCIIIAIoAgxHDQIgAigCBCEKIAIoAgAhDQwBCyACIAQ2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IAEgByAAQfgBaioCAJI4AhAgASADp74gAEGwAmopAgAiBKe+kjgCACABIANCIIinviAEQiCIp76SOAIEIAZBA0YNAyAFQYQBaigCACIBIAAtAOcDIgJLDQILIAIgAUGYzcEAEJkJAAsgBSACQfjMwQAQmQkACyAFQYABaigCACACQTxsaiIBIABB4AJqKgIAIgc4AhQgASAAQZQDaikCACIDNwIIIAEgByAAQeQCaioCAJI4AhAgASADp74gAEGcA2opAgAiBKe+kjgCACABIANCIIinviAEQiCIp76SOAIEIAZBBEYNAEEEQQRBiM3BABCZCQALC+wEAwJ+An8BfQJAAkAgAiAAKAKABSIFSwRAIAAtAIgFIgZFDQICQCABIAVBAnRqKAIAIgVBhAFqKAIAIgEgAC0AhAUiAk0NACAFQYABaigCACACQTxsaiIBIAAqAigiBzgCFCABIAApAnQiAzcCCCABIAcgACoCLJI4AhAgASADp74gACkCfCIEp76SOAIAIAEgA0IgiKe+IARCIIinvpI4AgQgBkEBRg0DIAVBhAFqKAIAIgEgAC0AhQUiAk0NACAFQYABaigCACACQTxsaiIBIABBuAFqKgIAIgc4AhQgASAAQYQCaikCACIDNwIIIAEgByAAQbwBaioCAJI4AhAgASADp74gAEGMAmopAgAiBKe+kjgCACABIANCIIinviAEQiCIp76SOAIEIAZBAkYNAyAFQYQBaigCACIBIAAtAIYFIgJNDQAgBUGAAWooAgAgAkE8bGoiASAAQcgCaioCACIHOAIUIAEgAEGUA2opAgAiAzcCCCABIAcgAEHMAmoqAgCSOAIQIAEgA6e+IABBnANqKQIAIgSnvpI4AgAgASADQiCIp74gBEIgiKe+kjgCBCAGQQNGDQMgBUGEAWooAgAiASAALQCHBSICSw0CCyACIAFBgNHBABCZCQALIAUgAkHg0MEAEJkJAAsgBUGAAWooAgAgAkE8bGoiASAAQdgDaioCACIHOAIUIAEgAEGkBGopAgAiAzcCCCABIAcgAEHcA2oqAgCSOAIQIAEgA6e+IABBrARqKQIAIgSnvpI4AgAgASADQiCIp74gBEIgiKe+kjgCBCAGQQRGDQBBBEEEQfDQwQAQmQkACwuUBQEKfyAALQAkQQJGIQMgACgCGCEEIAAoAiAhAiAA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QQFrNgIAIAMgAygCAEEBazYCACACIAIoAgBBAWs2AgAgASABKAIAQQFrNgIAIAAgACgCAEEBazYCACATLQBMQQRHBEBBgYnEAC0AABpBxABBBBDcDCIRRQ0DIBFBADYCACARIBMpAhA3AgQgEUEMaiATQRhqKQIANwIAIBFBFGogE0EgaikCADcCACARQRxqIBNBKGopAgA3AgAgEUEkaiATQTBqKQIANwIAIBFBLGogE0E4aikCADcCACARQTRqIBNBQGspAgA3AgAgEUE8aiATQcgAaikCADcCAAsgE0HQAGokACARDwsQ1A0ACxDVDQALQQRBxABBiKvEACgCACIAQc8HIAAbEQAAAAuWBAETfQJAIAMEQCACKgIEIgcgASoCACIMlCABKgIEIg0gAioCACIJlJMiBCAEkiEGIAEqAggiDiAJlCACKgIIIgQgDJSTIgUgBZIhBSABKgIYIhQgBCABKgIMIhAgBpQgDCAFlCANIA0gBJQgDiAHlJMiBCAEkiIKlJOSkpIhBCABKgIUIhUgByAQIAWUIA4gCpQgDCAGlJOSkpIhByABKgIQIhYgCSAKIBCUIA0gBpQgDiAFlJOSkpIhBiADQQFGBEAgBiEFIAchCSAEIQoMAgsgAkEUaiEBIANBDGxBDGshAiAEIQogByEJIAYhBQNAIAwgAUEEayoCACIPlCANIAFBCGsqAgAiEpSTIgggCJIhCCAOIBKUIAwgASoCACILlJMiESARkiERIAogFCALIBAgCJQgDCARlCANIA0gC5QgDiAPlJMiCyALkiITlJOSkpIiCyAKIAtgGyEKIAkgFSAPIBAgEZQgDiATlCAMIAiUk5KSkiIPIAkgD2AbIQkgBSAWIBIgECATlCANIAiUIA4gEZSTkpKSIgggBSAIYBshBSAEIAsgBCALXxshBCAHIA8gByAPXxshByAGIAggBiAIXxshBiABQQxqIQEgAkEMayICDQALDAELQbqewgBB0gBBjJ/CABCUDAALIAAgCjgCFCAAIAk4AhAgACAFOAIMIAAgBDgCCCAAIAc4AgQgACAGOAIAC4oEARZ9An0gAigCAEUEQEP//3//DAELIAIqAgQiBSAEKgIQIhUgASoCACIWk5QgAioCCCIJIAQqAhQiFyABKgIEIhiTlJIgAioCDCIKIAQqAhgiGSABKgIIIhqTlJJD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iAEgBEKAgID8AzcDgAEgBEGAgID8AzYCZCAEQf////sHNgJQIARCgICAgPD//79/NwNIIARC////+////7//ADcDQCAEQv////sHNwM4IARCgICAgPD//79/NwMwIARC////+////7//ADcDKCAEQv////sHNwMgIARCgICAgPD//79/NwMYIARC////+////7//ADcDECAEIAUpAE03AKkBIARBsQFqIAdBCGopAAA3AAAgBEG4AWogB0EPaigAADYAACAEQQA6AMQBIARC////+wc3ArwBIARBADoA4AEgBEL////7BzcD2AEgBEEAOgD8ASAEQv////sHNwL0ASAEQdQBaiAIQQ9qKAAANgAAIARBzQFqIAhBCGopAAA3AAAgBCAFKQA6NwDFASAEQfABaiAJQQ9qKAAANgAAIARB6QFqIAlBCGopAAA3AAAgBCAFKQAnNwDhASAEQYwCaiAKQQ9qKAAANgAAIARBhQJqIApBCGopAAA3AAAgBCAFKQAUNwD9ASAEQQA6AJgCIARC////+wc3A5ACIARBqAJqIAtBD2ooAAA2AAAgBEGhAmogC0EIaikAADcAACAEIAUpAAE3AJkCIARBgAI7AbwCIAQgA0H/AXE2ArgCIARBADoAtAIgBEL////7BzcCrAIgBkGYBmogAEEEaiIDQQhqKAIANgIAIAZBtAZqIAFBBGoiBUEIaigCADYCACAGIAMpAgA3A5AGIAYgBSkCADcCrAYgBkGYBWoiBUEIaiANKAIANgIAIAYgBikCzAI3A5gFIA5BEGsiAyQAIAMgBRDVAyAEQeAAaiADQQhqKQIANwIAIAQgAykCADcCWCAGQdgCaiIFIARBwAIQ5Q0aIANBEGokACMAQRBrIgMkACADIAwQ1QMgBUH8AGogA0EIaikCADcCACAFIAMpAgA3AnQgBkEIaiAFQcACEOUNGiADQRBqJAAgBi0AxQIhAyACIAIoAgBBAWs2AgAgASABKAIAQQFrNgIAIAAgACgCAEEBazYCAEEAIQIgA0ECRg0BIAZBrAVqIAZBCGpBwAIQ5Q0aQYGJxAAtAAAaQcgCQQgQ3AwiAkUNBCACQQA2AgAgAkEEaiAGQagFakHEAhDlDRoMAQsgBkECOgDFAiACIAQ2AgAgASABKAIAQQFrNgIAIAAgACgCAEEBazYCAEEAIQILIAZB8AdqJAAgAg8LENQNAAsQ1Q0AC0EIQcgCQYirxAAoAgAiAEHPByAAGxEAAAALzwMBEX0CfyADKgIAIAIqAhAiEZMiCSACKgIEIgqUIAMqAgQgAioCFCISkyINIAIqAgAiC5STIgcgB5IhByANIAIqAggiDJQgAyoCCCACKgIYIhOTIgYgCpSTIgggCJIhCCABKgIIIhQgBiACKgIMIg8gB5QgCiAIlCALIAYgC5QgCSAMlJMiBiAGkiIOlJOSkiIGlCABKgIAIhUgCSAPIAiUIAwgDpQgCiAHlJOSkiIQlCABKgIEIhYgDSAPIA6UIAsgB5QgDCAIlJOSkiINlJKSIg5DAAAAAF8iAQRAIAYhByANIQggECEJQQEgBA0BGgsgBiAUIA6UkyEHIA0gFiAOlJMhCCAQIBUgDpSTIQkgAQshA0ECIQIgACAGIAeTIgYgBpQgDSAIkyIGIAaUIBAgCZMiBiAGlJKSEJIBIAVeBH9BAgUgACAHIA8gCyAIlCAKIAmUkyIFIAWSIgWUIAsgDCAJlCALIAeUkyIGIAaSIgaUIAogCiAHlCAMIAiUkyIHIAeSIgeUk5KSIBOSOAIIIAAgCCAPIAaUIAwgB5QgCyAFlJOSkiASkjgCBCAAIBEgCSAPIAeUIAogBZQgDCAGlJOSkpI4AgAgAws6AAwL8QkBD38jAEGwBWsiBSQAAkACQAJAIABFDQAgACgCACIEQX9GDQEgACAEQQFqNgIAIAFFDQAgASgCACIEQX9GDQEgASAEQQFqNgIAIAJFDQAgAigCACIEQX9GDQEgAiAEQQFqNgIAIANFDQAgAygCACIEQX9GDQEgAyAEQQFqNgIAIAVBCGoiBEEIaiINIAFBBGoiBkEIaikCADcDACAEQRBqIg4gAEEEaiIHKQIANwMAIARBGGoiDyAHQQhqKAIANgIAIAVB6AJqIgdBCGoiECADQQxqKQIANwMAIAdBEGoiESACQQRqIgQpAgA3AwAgB0EYaiISIARBCGooAgA2AgAgBSAGKQIANwMIIAUgAykCBDcD6AIgBUEoaiIEQgA3A2ggBEIANwOQASAEQgA3AlQgBEH4AGpCADcDACAEQfAAakIANwMAIARBmAFqQgA3AwAjAEHgAGsiBkHNAGoiCEELakIANwAAIAZBOmoiCUELakIANwAAIAZBJ2oiCkELakIANwAAIAZBFGoiC0ELakIANwAAIAZBAWoiDEELakIANwAAIARB3ABqQgA3AgAgBkIANwBQIAZCADcAPSAGQgA3ACogBkIANwAXIAZCADcABCAEQgA3AwggBEIANwMAIARBADoAqAEgBEL////7BzcDoAEgBEIANwOIASAEQoCAgPwDNwOAASAEQYCAgPwDNgJkIARB////+wc2AlAgBEKAgICA8P//v383A0ggBEL////7////v/8ANwNAIARC////+wc3AzggBEKAgICA8P//v383AzAgBEL////7////v/8ANwMoIARC////+wc3AyAgBEKAgICA8P//v383AxggBEL////7////v/8ANwMQIAQgBikATTcAqQEgBEGxAWogCEEIaikAADcAACAEQbgBaiAIQQ9qKAAANgAAIARBADoAxAEgBEL////7BzcCvAEgBEEAOgDgASAEQv////sHNwPYASAEQQA6APwBIARC////+wc3AvQBIARB1AFqIAlBD2ooAAA2AAAgBEHNAWogCUEIaikAADcAACAEIAYpADo3AMUBIARB8AFqIApBD2ooAAA2AAAgBEHpAWogCkEIaikAADcAACAEIAYpACc3AOEBIARBjAJqIAtBD2ooAAA2AAAgBEGFAmogC0EIaikAADcAACAEIAYpABQ3AP0BIARBADoAmAIgBEL////7BzcDkAIgBEGoAmogDEEPaigAADYAACAEQaECaiAMQQhqKQAANwAAIAQgBikAATcAmQIgBEGAAjsBvAIgBEE/NgK4AiAEQQA6ALQCIARC////+wc3AqwCIAVBmAFqIA8oAgA2AgAgBUGQAWogDikDADcDACAFQYgBaiANKQMANwMAIAVBpAFqIBApAwA3AgAgBUGsAWogESkDADcCACAFQbQBaiASKAIANgIAIAUgBSkDCDcDgAEgBSAFKQPoAjcCnAEgAyADKAIAQQFrNgIAIAIgAigCAEEBazYCACABIAEoAgBBAWs2AgAgACAAKAIAQQFrNgIAIAdBBGogBEHAAhDlDRpBgYnEAC0AABpByAJBCBDcDCIARQ0CIABBADYCACAAQQRqIAVB6AJqQcQCEOUNGiAFQbAFaiQAIAAPCxDUDQALENUNAAtBCEHIAkGIq8QAKAIAIgBBzwcgABsRAAAAC4sEAg59AX8CQAJAIAEqAgwiCCABKgIA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CiAMlJOSkiIGOAIEIBMgByAOIA2UIAsgDJQgCCAJlJOSkiIJOAIIIBNBEGogASATQQRqIAQQ7QIgAAJ/QQIgBiATKgIQIgyTIgYgBpQgCSATKgIUIgmTIgYgBpSSIBIgEyoCGCIGkyIHIAeUkhCSASAFXg0AGkECIBMtABwiAUECRg0AGiAAIAYgDiALIAmUIAogDJSTIgUgBZIiBZQgCyAIIAyUIAsgBpSTIgcgB5IiB5QgCiAKIAaUIAggCZSTIgYgBpIiBpSTkpIgEZI4AgggACAJIA4gB5QgCCAGlCALIAWUk5KSIBCSOAIEIAAgDyAMIA4gBpQgCiAFlCAIIAeUk5KSkjgCACABCzoADCATQSBqJAALggsCDH8EfSMAQeAHayIIJAACfwJAAkACQAJAIABFDQAgACgCACIGQX9GDQEgACAGQQFqNgIAIAFFDQAgASgCACIGQX9GDQEgASAGQQFqNgIAIAJFDQAgAigCACIHQX9GDQEgAiAHQQFqNgIAQQIgAioCBCITIBOUIAIqAggiFCAUlJIgAioCDCISIBKUkiIVQwAAAABeRQ0EGiAIIBIgFRCSASISlTgCzAIgCCAUIBKVOALIAiAIIBMgEpU4AsQCIwBBkAFrIgckACAHQRBqIg9CADcDACAHQe0AaiIJQQtqQgA3AAAgB0HaAGoiCkELakIANwAAIAdBxwBqIgtBC2pCADcAACAHQTRqIgxBC2pCADcAACAHQSFqIg1BC2pCADcAACAHQgA3AwggB0IANwBwIAdCADcAXSAHQgA3AEogB0IANwA3IAdCADcAJCAHQYABaiIOIAhBxAJqIhAQ1QMgCEHQAmoiBkHgAGogDkEIaiIRKAIANgIAIAYgBykCgAE3AlggByoCjAEhEyAOIBAQ1QMgB0EcaiARKAIANgIAIAcgBykCgAE3AhQgByoCjAEhFCAGQgA3AwggBkIANwMAIAZBnAFqQQA2AgAgBkGUAWpCADcCACAGQYwBakIANwIAIAZCADcChAEgBiATOAJkIAZC////+wc3A1AgBkKAgICA8P//v383A0ggBkL////7////v/8ANwNAIAZC////+wc3AzggBkKAgICA8P//v383AzAgBkL////7////v/8ANwMoIAZC////+wc3AyAgBkKAgICA8P//v383AxggBkL////7////v/8A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IANBnAFqQQA2AgAgA0GUAWpCADcCACADQYwBakIANwIAIANCADcChAEgAyAQOAJkIANC////+wc3A1AgA0KAgICA8P//v383A0ggA0L////7////v/8ANwNAIANC////+wc3AzggA0KAgICA8P//v383AzAgA0L////7////v/8ANwMoIANC////+wc3AyAgA0KAgICA8P//v383AxggA0L////7////v/8ANwMQIAMgBCkDCDcDaCADQfAAaiAMKQMANwMAIANB+ABqIARBGGopAwA3AwAgA0EAOgCoASADQv////sHNwOgASADIBE4AoABIANBuAFqIAZBD2ooAAA2AAAgA0GxAWogBkEIaikAADcAACADIAQpAG03AKkBIANBADoAxAEgA0L////7BzcCvAEgA0HUAWogB0EPaigAADYAACADQc0BaiAHQQhqKQAANwAAIAMgBCkAWjcAxQEgA0EAOgDgASADQv////sHNwPYASADQfABaiAIQQ9qKAAANgAAIANB6QFqIAhBCGopAAA3AAAgAyAEKQBHNwDhASADQQA6APwBIANC////+wc3AvQBIANBjAJqIAlBD2ooAAA2AAAgA0GFAmogCUEIaikAADcAACADIAQpADQ3AP0BIANBADoAmAIgA0L////7BzcDkAIgA0GoAmogCkEPaigAADYAACADQaECaiAKQQhqKQAANwAAIAMgBCkAITcAmQIgA0GAAjsBvAIgA0E3NgK4AiADQQA6ALQCIANC////+wc3AqwCIARBkAFqJAAgBUHIA2ogAEEEaiIEQQhqKAIANgIAIAVB5ANqIAFBBGoiBkEIaigCADYCACAFIAQpAgA3A8ADIAUgBikCADcC3AMgBUEIaiADQb0CEOUNGiAFLwGWBSEGIAUtAJUFIQQgAigCAEEBawUgAws2AgAgASABKAIAQQFrNgIAIAAgACgCAEEBazYCAEEAIQIgBEECRwRAIAVB3AJqIAVBCGpBvQIQ5Q0aQYGJxAAtAAAaQcgCQQgQ3AwiAkUNAyACQQA2AgAgAkEEaiAFQdgCakHBAhDlDRogAiAGOwHGAiACIAQ6AMUCCyAFQaAFaiQAIAIPCxDUDQALENUNAAtBCEHIAkGIq8QAKAIAIgBBzwcgABsRAAAAC8QDAQN/IwBBQGoiByQAAkACQCAARQ0AIAAoAgAiBkF/Rg0BIAAgBkEBajYCACABRQ0AIAEoAgAiBkF/Rg0BIAEgBkEBajYCACACRQ0AIAIoAgAiBkF/Rg0BIAIgBkEBajYCACADRQ0AIAMoAgAiBkF/Rg0BIAMgBkEBajYCACAERQ0AIAQoAgAiBkF/Rg0BIAQgBkEBajYCACAFRQ0AIAUoAgAiBkF/Rg0BIAUgBkEBajYCACAHQQhqIAJBDGopAgA3AwAgByACKQIENwMAIAdBGGogAUEMaigCADYCACAHIAEpAgQ3AxAgB0EgaiIGQQhqIAVBDGopAgA3AwAgByAFKQIENwMgIAZBGGogBEEMaigCADYCACAHIAQpAgQ3AzAgByAAKAIEIAAoAggiCCgCCEEBa0F4cWpBCGogCCAGIAMoAgQgAygCCCIGKAIIQQFrQXhxakEIaiAGEK4EIQYgBSAFKAIAQQFrNgIAIAQgBCgCAEEBazYCACADIAMoAgBBAWs2AgAgAiACKAIAQQFrNgIAIAEgASgCAEEBazYCACAAIAAoAgBBAWs2AgAgB0FAayQAIAZBAXEPCxDUDQALENUNAAuYAwIJfQF/IwBBQGoiDSQAIAEqAgQiCCACKgIMIguUIAEqAgAiCSACKgIQIgyUkyIFIAWSIQYgASoCCCIFIAyUIAggAioCFCIElJMiCiAKkiEHIA0gBCABKgIMIgogBpQgCCAHlCAJIAkgBJQgBSALlJMiBCAEkiIElJOSkjgCFCANIAwgCiAElCAJIAaUIAUgB5STkpI4AhAgDSALIAogB5QgBSAElCAIIAaUk5KSOAIMIAggAioCACABKgIQkyILlCAJIAIqAgQgASoCFJMiDJSTIgYgBpIhBiAMIAWUIAIqAgggASoCGJMiBCAIlJMiByAHkiEHIA0gBCAKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AgggDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIEIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCACANQRhqIAAgAEEMaiAAQRhqIA0Q/wECf0EAIA0oAhhBBEYNABpBACANKgIgIANfRQ0AGiANNQIYQgRSCyEBIA1BQGskACABC8kDAQJ/IwBB8ABrIg0kAAJAAkAgAEUNACAAKAIAIg5Bf0YNASAAIA5BAWo2AgAgAUUNACABKAIAIg5Bf0YNASABIA5BAWo2AgAgAkUNACACKAIAIg5Bf0YNASACIA5BAWo2AgAgA0UNACADKAIAIg5Bf0YNASADIA5BAWo2AgAgDSAENgIAIA0gDDYCBCANIAs5A0AgDSAKQQBHrTcDOCANIAk5AzAgDSAIQQBHrTcDKCANIAc2AiQgDSAGQQBHNgIgIA0gBTYCHCANIANBBGo2AhQgDSACQQRqNgIQIA0gAUEEajYCDCANIABBBGo2AgggDSANNgIYIA0gDUEUajYCaCANIA1BEGo2AmQgDSANQQxqNgJgIA0gDUEIajYCXCANIA1BGGo2AlggDSANQThqNgJUIA0gDUEoajYCUCANIA1BIGo2AkwgDSANQRxqNgJIAkAgDBAEQQFGBEAgDSANQQRqNgJsIA1ByABqIA1B7ABqEHcMAQsgDUHIAGpBABB3CyADIAMoAgBBAWs2AgAgAiACKAIAQQFrNgIAIAEgASgCAEEBazYCACAAIAAoAgBBAWs2AgAgDUHwAGokAA8LENQNAAsQ1Q0AC8QDAgJ/BX4jAEHQAGsiAyQAIANBQGsiBEIANwMAIANCADcDOCADIAE3AzAgAyABQvPK0cunjNmy9ACFNwMgIAMgAULt3pHzlszct+QAhTcDGCADIAA3AyggAyAAQuHklfPW7Nm87ACFNwMQIAMgAEL1ys2D16zbt/MAhTcDCCADIAIpAwg3A0ggA0EIaiADQcgAakEIEJgCIAMpAwghASADKQMYIQAgBDUCACEFIAMpAzghBiADKQMgIQcgAykDECEIIANB0ABqJAAgACABfCIJQiCJIAYgBUI4hoQiBSAHhSIBIAh8IgYgAUIQiYUiAXwiByABQhWJhSEBIAEgBiAAQg2JIAmFIgZ8IghCIIlC/wGFfCIJIAFCEImFIQAgACAIIAZCEYmFIgEgBSAHhXwiBUIgiXwiBiAAQhWJhSEAIAAgBSABQg2JhSIBIAl8IgVCIIl8IgcgAEIQiYUhACAAIAUgAUIRiYUiASAGfCIFQiCJfCIGIABCFYmFIQAgACABQg2JIAWFIgEgB3wiBUIgiXwiByABQhGJIAWFIgEgBnwgAUINiYUiAXwiBSAAQhCJIAeFQhWJIAFCEYmFIAVCIImFhQvGAwICfwV+IwBBQGoiAyQAIANBOGoiBEIANwMAIANCADcDMCADIAE3AyggAyABQvPK0cunjNmy9ACFNwMYIAMgAULt3pHzlszct+QAhTcDECADIAA3AyAgAyAAQuHklfPW7Nm87ACFNwMIIAMgAEL1ys2D16zbt/MAhTcDACACKAIAIAMQlgMgAigCBCADEJYDIAIoAgggAxCWAyADKQMAIQEgAykDECEAIAQ1AgAhBSADKQMwIQYgAykDGCEHIAMpAwghCCADQUBrJAAgACABfCIJQiCJIAYgBUI4hoQiBSAHhSIBIAh8IgYgAUIQiYUiAXwiByABQhWJhSEBIAEgBiAAQg2JIAmFIgZ8IghCIIlC/wGFfCIJIAFCEImFIQAgACAIIAZCEYmFIgEgBSAHhXwiBUIgiXwiBiAAQhWJhSEAIAAgBSABQg2JhSIBIAl8IgVCIIl8IgcgAEIQiYUhACAAIAUgAUIRiYUiASAGfCIFQiCJfCIGIABCFYmFIQAgACABQg2JIAWFIgEgB3wiBUIgiXwiByABQhGJIAWFIgEgBnwgAUINiYUiAXwiBSAAQhCJIAeFQhWJIAFCEYmFIAVCIImFhQuLAwEOfSADKgIAIAIqAhAiEJMiCCACKgIEIgqUIAMqAgQgAioCFCIRkyILIAIqAgAiDJSTIgkgCZIhByALIAIqAggiCZQgAyoCCCACKgIYIhKTIgUgCpSTIg0gDZIhBgJAAkAgBSACKgIMIg0gB5QgCiAGlCAMIAUgDJQgCCAJlJMiBSAFkiIPlJOSkiIFIAWUIAggDSAGlCAJIA+UIAogB5STkpIiCCAIlCALIA0gD5QgDCAHlCAJIAaUk5KSIgcgB5SSkiIGIAEqAgAiDiAOlF8iAkUNACAERQ0AQQEhAgwBCyAFIA4gBhCSAZUiBpQhBSAHIAaUIQcgCCAGlCEICyAAIAI6AAwgACASIAUgDSAMIAeUIAogCJSTIgYgBpIiBpQgDCAJIAiUIAwgBZSTIgsgC5IiC5QgCiAKIAWUIAkgB5STIgUgBZIiBZSTkpKSOAIIIAAgESAHIA0gC5QgCSAFlCAMIAaUk5KSkjgCBCAAIBAgCCANIAWUIAogBpQgCSALlJOSkpI4AgALrAMBCn0gACABKgIYIgZDq6qqPpQgASoCDCIDQ6uqqj6UIAEqAgAiBEOrqqo+lJKSIgogBpMiBiAGlCABKgIcIgVDq6qqPpQgASoCECIIQ6uqqj6UIAEqAgQiC0Orqqo+lJKSIgYgBZMiBSAFlJIgASoCICIHQ6uqqj6UIAEqAhQiCUOrqqo+lCABKgIIIgxDq6qqPpSSkiIFIAeTIgcgB5SSIgcgCiADkyIDIAOUIAYgCJMiAyADlJIgBSAJkyIDIAOUkiIDIAogBJMiBCAElCAGIAuTIgQgBJSSIAUgDJMiBCAElJIiBEMAAAAAIARDAAAAAF4bIgQgAyAEXhsiAyADIAddGxCSATgCDCAAIAIqAhggBSACKgIMIgsgBiACKgIAIgOUIAogAioCBCIElJMiCCAIkiIHlCADIAogAioCCCIIlCAFIAOUkyIJIAmSIgmUIAQgBCAFlCAGIAiUkyIFIAWSIgWUk5KSkjgCCCAAIAIqAhQgBiALIAmUIAggBZQgAyAHlJOSkpI4AgQgACACKgIQIAogCyAFlCAEIAeUIAggCZSTkpKSOAIAC+ADAQl/IwBBIGsiAiQAAkAgASgCBCIDRQRAIABBgICAgHg2AgAMAQsgASADQQFrNgIEAkAgASgCACIFKAIEIgFBB00EQCACQoHKADcDCCACQQhqEKQLIQMMAQsgBSABQQhrIgk2AgQgBSAFKAIAIgpBCGo2AgAgAiAKKQAAEKgGIAIoAgQhAyACKAIADQBBgIAQIAMgA0GAgBBPGyEEAkACQCADRQRAQQQhA0EAIQEMAQtBgYnEAC0AABogBEECdCIGQQQQ3AwiCEUNASACQQA2AhAgAiAINgIMIAIgBDYCCCABQQxrIQQgCUECdiEJQQAhAQNAIAEgCUYEQCACQoHKADcDGCACQRhqEKQLIQMgAigCCCIBRQ0EIAggAUECdEEEEL4NDAQLIAUgBDYCBCAFIAcgCmoiBkEMajYCACAGQQhqKAAAIQYgAigCCCABRgRAIAJBCGoQzwYgAigCDCEICyAHIAhqIAY2AgAgAiABQQFqIgE2AhAgBEEEayEEIAdBBGohByABIANHDQALIAIoAgwhAyACKAIIIgRBgICAgHhGDQILIAAgATYCCCAAIAM2AgQgACAENgIADAILQQQgBhC+DAALIABBgYCAgHg2AgAgACADNgIECyACQSBqJAALnAMCDH0BfyMAQUBqIhEkACADKgIAIAIqAhAiDpMiDSACKgIEIgiUIAMqAgQgAioCFCIPkyIJIAIqAgAiCpSTIgcgB5IhCyAJIAIqAggiB5QgAyoCCCACKgIYIhCTIgUgCJSTIgwgDJIhBiARIAUgAioCDCIMIAuUIAggBpQgCiAFIAqUIA0gB5STIgUgBZIiBZSTkpI4AhQgESAJIAwgBZQgCiALlCAHIAaUk5KSOAIQIBEgDSAMIAaUIAcgBZQgCCALlJOSkjgCDCARQRhqIAEgEUEMaiAEQ///f38QQSARKAIsQQRGBEBBoMvCABDIDQALIBEqAhghCyARKgIgIQYgESoCHCENIAAgES0AJDoADCAAIBAgBiAMIAogDZQgCCALlJMiCSAJkiIJlCAKIAcgC5QgCiAGlJMiBSAFkiIFlCAIIAggBpQgByANlJMiBiAGkiIGlJOSkpI4AgggACAPIA0gDCAFlCAHIAaUIAogCZSTkpKSOAIEIAAgDiALIAwgBpQgCCAJlCAHIAWUk5KSkjgCACARQUBrJAAL+wMBAn8gACABaiECAkACQCAAKAIEIgNBAXENACADQQJxRQ0BIAAoAgAiAyABaiEBIAAgA2siAEHQrsQAKAIARgRAIAIoAgRBA3FBA0cNAUHIrsQAIAE2AgAgAiACKAIEQX5xNgIEIAAgAUEBcjYCBCACIAE2AgAMAgsgACADENYECwJAAkACQCACKAIEIgNBAnFFBEAgAkHUrsQAKAIARg0CIAJB0K7EACgCAEYNAyACIANBeHEiAhDWBCAAIAEgAmoiAUEBcjYCBCAAIAFqIAE2AgAgAEHQrsQAKAIARw0BQciuxAAgATYCAA8LIAIgA0F+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQYACTwRAIAAgARDzBA8LIAFBeHFBuKzEAGohAgJ/QcCuxAAoAgAiA0EBIAFBA3Z0IgFxRQRAQcCuxAAgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtB1K7EACAANgIAQcyuxABBzK7EACgCACABaiIBNgIAIAAgAUEBcjYCBCAAQdCuxAAoAgBHDQFByK7EAEEANgIAQdCuxABBADYCAA8LQdCuxAAgADYCAEHIrsQAQciuxAAoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIACwvAAwIDfwV+IwBBQGoiAyQAIANBOGoiBEIANwMAIANCADcDMCADIAE3AyggAyABQvPK0cunjNmy9ACFNwMYIAMgAULt3pHzlszct+QAhTcDECADIAA3AyAgAyAAQuHklfPW7Nm87ACFNwMIIAMgAEL1ys2D16zbt/MAhTcDACACKAIEIQUgAigCACADEJYDIAUgAxCWAyADKQMAIQEgAykDECEAIAQ1AgAhBiADKQMwIQcgAykDGCEIIAMpAwghCSADQUBrJAAgACABfCIKQiCJIAcgBkI4hoQiBiAIhSIBIAl8IgcgAUIQiYUiAXwiCCABQhWJhSEBIAEgByAAQg2JIAqFIgd8IglCIIlC/wGFfCIKIAFCEImFIQAgACAJIAdCEYmFIgEgBiAIhXwiBkIgiXwiByAAQhWJhSEAIAAgBiABQg2JhSIBIAp8IgZCIIl8IgggAEIQiYUhACAAIAYgAUIRiYUiASAHfCIGQiCJfCIHIABCFYmFIQAgACABQg2JIAaFIgEgCHwiBkIgiXwiCCABQhGJIAaFIgEgB3wgAUINiYUiAXwiBiAAQhCJIAiFQhWJIAFCEYmFIAZCIImFhQvnAwEIfQJAQwAAgD8QkgEiBEMAAAAAWw0AIAFDAAAAAJQiBUMAAAAAIASVIAKUQwAAAACUQwAAgD8gBJUgApQiByAFk5JeRQ0AQwAAAAAhBwsCQEMAAIA/EJIBIgRDAAAAAFsNACABQwAAAACUIgVDAAAAACAElSAClEMAAAAAlEMAAIC/IASVIAKUIgaMIAWTkl5FDQBDAAAAACEGCyABjCEEAn1DAAAAABCSASIDQwAAAABcBEAgBEMAAAAAIAOVIAKUQwAAAACUIgMgAyABk5IgAV1FDQEaIAEMAQsgAYsLIQUCQEMAAAAAEJIBIgNDAAAAAFwEQCABjEMAAAAAIAOVIAKUQwAAAACUIgMgAyABkpJeRQ0BIAEhBAwBCyABi4whBAsCQEMAAIA/EJIBIgpDAAAAAFsNACABQwAAAACUIgNDAACAPyAKlSAClCIJQwAAAAAgCpUgApRDAAAAAJQgA5OSXkUNAEMAAAAAIQkLAkBDAACAPxCSASIDQwAAAABbDQAgAUMAAAAAlCIBQwAAAAAgA5UgApRDAAAAAJQgAZNDAACAvyADlSAClCIIk15FDQBDAAAAACEICyAAIAk4AhQgACAFOAIQIAAgBzgCDCAAIAg4AgggACAEOAIEIAAgBjgCAAuuAwEJfSABKgIIIgW8QYCAgIB4cUGAgID8A3K+IQQgASoCBCIDIAOUQwAAgL8gBSAEkpUiCJQgBJIhBiABKgIAIgIgAiAElJQgCJRDAACAP5IhCSACIASMlCEKAkACQCACIAIgA5QgCJQiCCAElCIEkiADkyIHQwAAAABeRQRAIAIgA4wiB14gAiAEXnENASAEIAdeRQRAIAogBpJDAACAPyADkyACkyAEkxCSASICIAKSIgaVIQIgBSAIkiAGlSEEIAMgCZMgBpUhAyAGQwAAgD6UIQcMAwsgCiAGkiADIARDAACAP5IgApOSEJIBIgIgApIiApUhByADIAmSIAKVIQQgCCAFkyAClSEDIAJDAACAPpQhAgwCCyADIAmTIAdDAACAP5IQkgEiAyADkiIDlSEHIAggBZMgA5UhAiAKIAaTIAOVIQQgA0MAAIA+lCEDDAELIAUgCJIgAyACQwAAgD+SIASTkhCSASICIAKSIgWVIQcgAyAJkiAFlSECIAogBpMgBZUhAyAFQwAAgD6UIQQLIAAgAzgCDCAAIAc4AgggACACOAIEIAAgBDgCAAvPGgIPfwN+IwBBEGsiHSQAAkACQAJAIAFFDQAgASgCAA0BIAFBfzYCACADRQ0AIAMoAgAiG0F/Rg0BIAMgG0EBajYCACAERQ0AIAQoAgAiG0F/Rg0BIAQgG0EBajYCACAFRQ0AIAUoAgAiG0F/Rg0BIAUgG0EBajYCACAIRQ0AIAgoAgAiG0F/Rg0BIAggG0EBajYCACAJRQ0AIAkoAgAiG0F/Rg0BIAkgG0EBajYCACAKRQ0AIAooAgAiG0F/Rg0BIAogG0EBajYCACAaRQ0AIBooAgANASAaQX82AgAgAUEEaiEbIAJBAEchHiAIQQRqIR8gCUEEaiEgIApBBGohISAQQQBHISIgGEEARyElIBpBBGohJiMAQeAGayIQJAAgEEEgaiICQQhqIiMgBUEEaiIYQQhqKQIANwMAIAJBGGoiJCAEQQRqIgJBCGooAgA2AgAgECAGNgIcIBAgGCkCADcDICAQIAIpAgA3AzAgA0EEaiIcKAIAIhgoAgAhAiAYIAJBAWo2AgACQCACQQBOBEAgHCgCBCEcIBBBwAVqIgJCADcDECACIBw2AgwgAiAYNgIIIAJBADsBaCACQYCAgPgDNgIwIAJCgICAgICAgMA/NwMAIAJCADcCNCACQgA3AkwgAkKAgID8AzcCRCACQgA3AlQgAkJ/NwMgIAJBj4CACDYCZCACQgA3AlwgAkEYaiIcQgA3AwAgAkE8akIANwIAIAJBKGpCfzcDACAQQYgDaiIYQRhqIBwpAwAiKjcDACAYQRBqIAJBEGopAwAiKzcDACAYQQhqIAJBCGopAwAiLDcDACAQQUBrIhhBBGogAkHuAGovAQAiHDsBACAQQagEaiICQQhqIicgLDcDACACQRBqIiggKzcDACACQRhqIgIgKjcDACAQQbgBaiIpIBw7AQAgECAQKAGqBiIcNgJAIBAgECkDwAU3A6gEIBAgHDYCtAEgGEEYaiACKQMANwMAIBhBEGogKCkDADcDACAYQQhqICcpAwA3AwAgECAQKQOoBDcDQCAQQZABaiAkKAIANgIAIBBBiAFqIBBBMGopAwA3AwAgEEGAAWogIykDADcDACAQIBApAyA3A3ggGEHuAGogKS8BADsBACAQIBAoArQBNgGqASAQQQMgDyAPQQNPGzoAqQEgEEEDIA4gDkEDTxs6AKgBIBBBACATIBNB0CNxG0H//wNxQYCABEEAICIbciAeQRh0cjYCpAEgECAXOAKgASAQIBY4ApwBIBAgFUEAIBVBBEkbNgKYASAQIBRBACAUQQhJGzYClAEgECANOAJ0IBAgDDgCcCAQIBJB//8DcTYCbCAQIBJBEHY2AmggECARQf//A3E2AmQgECARQRB2NgJgAkACQAJAAkAgBg4DAQIAAwsgEEG8AWoiBiAfIAcgICAhELEHIBBBwAVqIg4gEEFAayIRQfAAEOUNGiAQQYgDaiEPQYGJxAAtAAAaAkBBLEEEENwMIgIEQCACIAYpAgA3AgAgAkEoaiAGQShqKAIANgIAIAJBIGogBkEgaikCADcCACACQRhqIAZBGGopAgA3AgAgAkEQaiAGQRBqKQIANwIAIAJBCGogBkEIaikCADcCACAOKAIAQQJPBEAgDigCBEEsQQQQvg0LIA4gAjYCBCAOQQI2AgAgDyAOQfAAEOUNGgwBCwwICyARIA9B8AAQ5Q0aDAQLIBBBwAVqIgIgEEFAayIOQfAAEOUNGiAQQYgDaiEGIAIoAgBBAk8EQCACKAIEQSxBBBC+DQsgAiALOAIEIAJBADYCACAGIAJB8AAQ5Q0aIA4gBkHwABDlDRoMAwsgEEHABWoiAiAQQUBrIg5B8AAQ5Q0aIBBBiANqIQYgAigCAEECTwRAIAIoAgRBLEEEEL4NCyACIAc4AgQgAkEBNgIAIAYgAkHwABDlDRogDiAGQfAAEOUNGgwCCyAQQQA2AsAFIwBBEGsiACQAIABBiLDAADYCDCAAIBBBHGo2AghBACAAQQhqQZSVwAAgAEEMakGUlcAAIBBBwAVqQaC3wAAQugQACwALIBBB6AFqIQIgEEFAayIGKAIIIhEoAgAhDiARIA5BAWo2AgACQCAOQQBOBEAgBigCDCESIAYtAGYhEyAGLQBnIRQgBigCWCEVIAYoAlQhGCAGLwFkIR4gBigCLCEfIAYoAighICAGKAIkISEgBigCICEiIAYtAGkhIyAGLQBoISQgBioCNCEHIAYqAjAhCwJAIAYoAgAiHEECRwRAIAYoAgQhDgwBC0GBicQALQAAGkEsQQQQ3AwiDkUNBSAOIAYoAgQiDykCADcCACAOQQhqIA9BCGopAgA3AgAgDkEQaiAPQRBqKQIANwIAIA5BGGogD0EYaikCADcCACAOQSBqIA9BIGopAgA3AgAgDkEoaiAPQShqKAIANgIACyACIBM6AJwBIAIgEjYCNCACIBE2AjAgAkH/AzYCcCACIA42AiwgAiAcNgIoIAJBADYCACACIAYpAjg3AnQgAkH8AGogBkFAaykCADcCACACQYQBaiAGQcgAaikCADcCACACQYwBaiAGQdAAaigCADYCACAGKQJcISogBikDECErIAJBQGsgBkEYaikDADcDACACICs3AzggAiAjOgBtIAIgJDoAbCACIAc4AmggAiALOAJkIAIgKkIgiTcClAEgAkF/NgKQASACIB47AWAgAiAVNgJcIAIgGDYCWCACIB82AlQgAiAgNgJQIAIgITYCTCACICI2AkggAiAURUEBdDoAYgwBCwALAkACQAJAAkACQAJAAkACQAJAAkAgJQRAIBBBiANqIgIgEEHoAWpBoAEQ5Q0aIBm9IipCIIinIQYgKqchDiACQf8DNgJwIAJBfzYCkAEgECgCiANFBEAgEEGsA2ogEEGUBGooAgA2AgAgEEGkA2ogEEGMBGopAgA3AgAgEEGcA2ogEEGEBGopAgA3AgAgECAQKQL8AzcClAMgEEEBNgKIAwsgECAGNgKQAyAQIA42AowDICYgDiAGEP4HIhFFDQUgECgCiAMhEiAQKAKMAyEGIBAoApADIQ4gEEGoBGogEEGUA2oiAkGUARDlDRogGygCAEUNASAbKAIEIgIgGygCECIPTw0GIBsoAgwgAkGoAWxqIg8oAgANCSAPIA42AhAgDyAGNgIMIA9BATYCACAbIA8pAgQ3AgAgDyASNgIIIA8gGygCFCIONgIEIBsgGygCGEEBajYCGCAPQRRqIBBBqARqQZQBEOUNGgwCCyAQQYgDaiICIBBB6AFqQaABEOUNGiACQf8DNgJwIAJBfzYCkAEgEEEANgKIAyAQKAKMAyEOIBAoApADIQ8gEEGoBGogAkEMaiICQZQBEOUNGgJAIBsoAgAEQCAbKAIEIgIgGygCECIGTw0FIBsoAgwgAkGoAWxqIgYoAgANCiAGIA82AhAgBiAONgIMIAZBATYCACAbIAYpAgQ3AgAgBkEANgIIIAYgGygCFCIONgIEIBsgGygCGEEBajYCGCAGQRRqIBBBqARqQZQBEOUNGgwBCyAQQcAFaiIGQQxqIAJBlAEQ5Q0aIBAgDzYCyAUgECAONgLEBSAQQQA2AsAFIBBBEGogGyAGEJQCIBAoAhQhDiAQKAIQIQILIBsoAiQiBiAbKAIcRgRAIBtBHGoQ0AYLIBsgBkEBajYCJCAbKAIgIAZBA3RqIgYgDjYCBCAGIAI2AgAMAgsgEkECRgRAIAYhAgwBCyAQIA42AsgFIBAgBjYCxAUgECASNgLABSAQQcwFaiACQZQBEOUNGiAQQQhqIBsgEEHABWoQlAIgECgCDCEOIBAoAgghAgsgGygCJCIGIBsoAhxGBEAgG0EcahDQBgsgGyAGQQFqNgIkIBsoAiAgBkEDdGoiBiAONgIEIAYgAjYCACACIBsoAhBPDQQgGygCDCACQagBbGoiBigCAEUNBCAGKAIEIA5HDQQgBigCCEUNBSARQdQCaiARQbgCaiARQSBqIBFBoAFqIBFBMGogAiAOIAZB/ABqIAZBDGogBkE4aiAGQTBqEKoBCyAQKAJIIg8oAgAhBiAPIAZBAWs2AgAgBkEBRgRAIBBByABqELIICyAQKAJAQQJPBEAgECgCREEsQQQQvg0LIB1CATcDACAdIAKtIA6tQiCGhDcDCCAQQeAGaiQADAYLIAIgBkGYncAAEJkJAAtBkqXAAEEcQbClwAAQlAwACyACIA9BmJ3AABCZCQALQcClwAAQyA0AC0HQpcAAEMgNAAsgEEEANgLQBSAQQQE2AsQFIBBBvJ3AADYCwAUgEEIENwLIBSAQQcAFakHEncAAEJELAAsgHSsDCCEZIBpBADYCACAKIAooAgBBAWs2AgAgCSAJKAIAQQFrNgIAIAggCCgCAEEBazYCACAFIAUoAgBBAWs2AgAgBCAEKAIAQQFrNgIAIAMgAygCAEEBazYCACABQQA2AgAgACAZOQMIIABBATYCACAdQRBqJAAPCxDUDQALENUNAAtBBEEsQYirxAAoAgAiAEHPByAAGxEAAAALhAMBDX0CfyADKgIIIAIqAhiTIg8gAioCACILlCADKgIAIAIqAhCTIgYgAioCCCIMlJMiCCAIkiEJIAYgAioCBCIIlCADKgIEIAIqAhSTIgogC5STIg0gDZIhDiABKgIEIhAgCiACKgIMIg0gCZQgCyAOlCAMIAogDJQgDyAIlJMiCiAKkiIKlJOSkoyUIAEqAgAiESAGIA0gCpQgDCAJlCAIIA6Uk5KSlJMgASoCCCISIA8gDSAOlCAIIAqUIAsgCZSTkpKUkyIKQwAAAABeBEBBASAFDQEaCyAIIAMqAgwiDpQgCyADKgIQIg+UkyIHIAeSIQcgDCAPlCAIIAMqAhQiBpSTIgkgCZIhCSAKIBIgBiANIAeUIAggCZQgCyALIAaUIAwgDpSTIgYgBpIiBpSTkpKUIBEgDiANIAmUIAwgBpQgCCAHlJOSkpQgECAPIA0gBpQgCyAHlCAMIAmUk5KSlJKSlSIHQwAAAABgIAQgB2BxCyECIAAgBzgCBCAAIAI2AgALgQMBDX0CfSACKgIIIgkgAyoCBCIOlCACKgIEIgogAyoCCCIElJMiBiAGkiEHIAIqAgAiBiAElCAJIAMqAgAiBZSTIgsgC5IhDEMAAAAAIAUgAioCDCILIAeUIAkgDJQgCiAKIAWUIAYgDpSTIgUgBZIiD5STkpIiBSAFlCAEIAsgD5QgCiAHlCAGIAyUk5KSIgQgBJSSEJIBIhBDAAAAAFsNABogBCAQlSABKgIEIgiUIQ0gBSAQlSAIlAshCCAAIAIqAhggDSAEIAEqAggiBJSSIg0gCyAGIAEqAgAgDiALIAyUIAYgD5QgCSAHlJOSkiIHmCAHIASUkiIHlCAKIAggBSAElJIiDJSTIgUgBZIiBZQgBiAJIAyUIAYgDZSTIgQgBJIiBJQgCiAKIA2UIAkgB5STIgggCJIiCJSTkpKSOAIIIAAgAioCFCAHIAsgBJQgCSAIlCAGIAWUk5KSkjgCBCAAIAIqAhAgDCALIAiUIAogBZQgCSAElJOSkpI4AgALwQMCA38MfSMAQTBrIgMkACADIAIqAgwiBiABKgIMYDoAEyADIAIqAggiByABKgIIYDoAEiADIAIqAgQiCCABKgIEYDoAESADIAIqAgAiCSABKgIAYDoAECADIAIqAhwiCiABKgIcYDoAIyADIAIqAhgiCyABKgIYYDoAIiADIAIqAhQiDCABKgIUYDoAISADIAIqAhAiDSABKgIQYDoAICADIANBEGoiBCADQSBqIgUQ3AkgAyACKgIsIg4gASoCLGA6ACMgAyACKgIoIg8gASoCKGA6ACIgAyACKgIkIhAgASoCJGA6ACEgAyACKgIgIhEgASoCIGA6ACAgBCADIAUQ3AkgAyABKgI8IAZgOgAjIAMgASoCOCAHYDoAIiADIAEqAjQgCGA6ACEgAyABKgIwIAlgOgAgIAMgBCAFENwJIAMgASoCTCAKYDoAIyADIAEqAkggC2A6ACIgAyABKgJEIAxgOgAhIAMgASoCQCANYDoAICAEIAMgBRDcCSADIAEqAlwgDmA6ACMgAyABKgJYIA9gOgAiIAMgASoCVCAQYDoAISADIAEqAlAgEWA6ACAgACAEIAUQ3AkgA0EwaiQAC8sDAQN/IwBBMGsiAyQAIAMgASoCDCACKgI8XzoAEyADIAEqAgggAioCOF86ABIgAyABKgIEIAIqAjRfOgARIAMgASoCACACKgIwXzoAECADIAIqAgwgASoCPF86ACMgAyACKgIIIAEqAjhfOgAiIAMgAioCBCABKgI0XzoAISADIAIqAgAgASoCMF86ACAgAyADQRBqIgQgA0EgaiIFENwJIAMgASoCHCACKgJMXzoAIyADIAEqAhggAioCSF86ACIgAyABKgIUIAIqAkRfOgAhIAMgASoCECACKgJAXzoAICAEIAMgBRDcCSADIAIqAhwgASoCTF86ACMgAyACKgIYIAEqAkhfOgAiIAMgAioCFCABKgJEXzoAISADIAIqAhAgASoCQF86ACAgAyAEIAUQ3AkgAyABKgIsIAIqAlxfOgAjIAMgASoCKCACKgJYXzoAIiADIAEqAiQgAioCVF86ACEgAyABKgIgIAIqAlBfOgAgIAQgAyAFENwJIAMgAioCLCABKgJcXzoAIyADIAIqAiggASoCWF86ACIgAyACKgIkIAEqAlRfOgAhIAMgAioCICABKgJQXzoAICAAIAQgBRDcCSADQTBqJAALogMCAX8IfSMAQTBrIgYkACAFQwAAAABgBEAgBiACKgIIIgqMOAIUIAYgAioCBCIIjDgCECAGIAIqAgAiC4w4AgwgBkEkaiADIAEgBkEMaiAEKAIUEQIAIAACf0ECIAWMIAggBioCKCIJjJQgCyAGKgIkIgyUkyAKIAYqAiwiB5STIgVfRQ0AGkEAIAVDAAAAAGANABogACAHIAogBZSSOAIMIAAgCSAIIAWUkjgCCCAAIAwgCyAFlJI4AgQgDCABKgIQkyIMIAEqAgQiBZQgCSABKgIUkyINIAEqAgAiCpSTIgggCJIhCCANIAEqAggiC5QgByABKgIYkyIHIAWUkyIJIAmSIQkgACAHIAEqAgwiDiAIlCAFIAmUIAogByAKlCAMIAuUkyIHIAeSIgeUk5KSOAIYIAAgDSAOIAeUIAogCJQgCyAJlJOSkjgCFCAAIAwgDiAJlCALIAeUIAUgCJSTkpI4AhBBAQs2AgAgBkEwaiQADwsgBkEANgIcIAZBATYCECAGQZiowgA2AgwgBkIENwIUIAZBDGpBkK/CABCRCwALjgMCAX8MfSMAQSBrIgYkACADKgIAIAIqAhAiEJMiDyACKgIEIgqUIAMqAgQgAioCFCIRkyIHIAIqAgAiC5STIgggCJIhCSAHIAIqAggiCJQgAyoCCCACKgIYIhKTIgwgCpSTIg0gDZIhDiAGIAwgAioCDCINIAmUIAogDpQgCyAMIAuUIA8gCJSTIgwgDJIiDJSTkpI4AhwgBiAHIA0gDJQgCyAJlCAIIA6Uk5KSOAIYIAYgDyANIA6UIAggDJQgCiAJlJOSkjgCFCAGQQRqIAEgBkEUaiAEIAUQuQQgBi0AECIBQQJHBEAgCyAGKgIIIg6UIAogBioCBCIPlJMiBSAFkiEFIAggD5QgCyAGKgIMIgeUkyIJIAmSIQkgACASIAcgDSAFlCALIAmUIAogCiAHlCAIIA6UkyIHIAeSIgeUk5KSkjgCCCAAIBEgDiANIAmUIAggB5QgCyAFlJOSkpI4AgQgACAQIA8gDSAHlCAKIAWUIAggCZSTkpKSOAIACyAAIAE6AAwgBkEgaiQAC40DAgF/DH0jAEEgayIGJAAgAyoCACACKgIQIhCTIg8gAioCBCIKlCADKgIEIAIqAhQiEZMiByACKgIAIguUkyIIIAiSIQkgByACKgIIIgiUIAMqAgggAioCGCISkyIMIAqUkyINIA2SIQ4gBiAMIAIqAgwiDSAJlCAKIA6UIAsgDCALlCAPIAiUkyIMIAySIgyUk5KSOAIcIAYgByANIAyUIAsgCZQgCCAOlJOSkjgCGCAGIA8gDSAOlCAIIAyUIAogCZSTkpI4AhQgBkEEaiABIAZBFGogBCAFEHogBi0AECIBQQJHBEAgCyAGKgIIIg6UIAogBioCBCIPlJMiBSAFkiEFIAggD5QgCyAGKgIMIgeUkyIJIAmSIQkgACASIAcgDSAFlCALIAmUIAogCiAHlCAIIA6UkyIHIAeSIgeUk5KSkjgCCCAAIBEgDiANIAmUIAggB5QgCyAFlJOSkpI4AgQgACAQIA8gDSAHlCAKIAWUIAggCZSTkpKSOAIACyAAIAE6AAwgBkEgaiQAC5IDAgx9AX8jAEEwayIQJAAgAyoCACACKgIQIg2TIgsgAioCBCIIlCADKgIEIAIqAhQiDpMiDCACKgIAIgmUkyIFIAWSIQYgDCACKgIIIgWUIAMqAgggAioCGCIPkyIEIAiUkyIKIAqSIQcgECAEIAIqAgwiCiAGlCAIIAeUIAkgBCAJlCALIAWUkyIEIASSIgSUk5KSOAIsIBAgDCAKIASUIAkgBpQgBSAHlJOSkjgCKCAQIAsgCiAHlCAFIASUIAggBpSTkpI4AiQgEEEMaiABIBBBJGpBABA9IAAgECgCIDYCFCAAQQM2AhAgACAQLQAYOgAMIAkgECoCECILlCAIIBAqAgwiDJSTIgYgBpIhBiAFIAyUIAkgECoCFCIElJMiByAHkiEHIAAgDyAEIAogBpQgCSAHlCAIIAggBJQgBSALlJMiBCAEkiIElJOSkpI4AgggACAOIAsgCiAHlCAFIASUIAkgBpSTkpKSOAIEIAAgDSAMIAogBJQgCCAGlCAFIAeUk5KSkjgCACAQQTBqJAALkwMCDH0BfyMAQTBrIhAkACADKgIAIAIqAhAiDZMiCyACKgIEIgiUIAMqAgQgAioCFCIOkyIMIAIqAgAiCZSTIgUgBZIhBiAMIAIqAggiBZQgAyoCCCACKgIYIg+TIgQgCJSTIgogCpIhByAQIAQgAioCDCIKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AiwgECAMIAogBJQgCSAGlCAFIAeUk5KSOAIoIBAgCyAKIAeUIAUgBJQgCCAGlJOSkjgCJCAQQQxqIAEgEEEkakEAEKMCIAAgECgCIDYCFCAAQQM2AhAgACAQLQAYOgAMIAkgECoCECILlCAIIBAqAgwiDJSTIgYgBpIhBiAFIAyUIAkgECoCFCIElJMiByAHkiEHIAAgDyAEIAogBpQgCSAHlCAIIAggBJQgBSALlJMiBCAEkiIElJOSkpI4AgggACAOIAsgCiAHlCAFIASUIAkgBpSTkpKSOAIEIAAgDSAMIAogBJQgCCAGlCAFIAeUk5KSkjgCACAQQTBqJAALkwMCDH0BfyMAQTBrIhAkACADKgIAIAIqAhAiDZMiCyACKgIEIgiUIAMqAgQgAioCFCIOkyIMIAIqAgAiCZSTIgUgBZIhBiAMIAIqAggiBZQgAyoCCCACKgIYIg+TIgQgCJSTIgogCpIhByAQIAQgAioCDCIKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AiwgECAMIAogBJQgCSAGlCAFIAeUk5KSOAIoIBAgCyAKIAeUIAUgBJQgCCAGlJOSkjgCJCAQQQxqIAEgEEEkakEAEM0BIAAgECgCIDYCFCAAQQM2AhAgACAQLQAYOgAMIAkgECoCECILlCAIIBAqAgwiDJSTIgYgBpIhBiAFIAyUIAkgECoCFCIElJMiByAHkiEHIAAgDyAEIAogBpQgCSAHlCAIIAggBJQgBSALlJMiBCAEkiIElJOSkpI4AgggACAOIAsgCiAHlCAFIASUIAkgBpSTkpKSOAIEIAAgDSAMIAogBJQgCCAGlCAFIAeUk5KSkjgCACAQQTBqJAALkAMCFX0BfyMAQSBrIhgkACABKgIMIgVDAAAAAGBFBEAgGEEANgIYIBhBATYCDCAYQaydwgA2AgggGEIENwIQIBhBCGpBtJ3CABCRCwALIAIqAhQhCyACKgIQIQwgACAFIAIqAhgiESABKgIIIg0gAioCCCIDIAOUIg4gAioCDCIGIAaUIhIgAioCACIEIASUIhOTIhQgAioCBCIIIAiUIg+TkouUIAEqAgQiECAIIAOUIgcgB5IiFSAEIAaUIgcgB5IiFpKLlCABKgIAIgcgBCADlCIJIAmSIgkgCCAGlCIKIAqSIgqTi5SSkiIXkpI4AhQgACARIBeTIAWTOAIIIAAgBSALIA0gFSAWk4uUIAcgBCAIlCIEIASSIgQgAyAGlCIDIAOSIgOSi5QgECAPIBSSIA6Ti5SSkiIGkpI4AhAgACAFIAwgDSAJIAqSi5QgECAEIAOTi5QgByATIBKSIA+TIA6Ti5SSkiIDkpI4AgwgACALIAaTIAWTOAIEIAAgDCADkyAFkzgCACAYQSBqJAALgwMBEH0gAEICNwIQIAMqAgAgAioCECINkyIIIAIqAgQiCZQgAyoCBCACKgIUIg6TIgwgAioCACIKlJMiByAHkiEFIAwgAioCCCIHlCADKgIIIAIqAhgiD5MiBCAJlJMiCyALkiEGIAAgASoCCCIQIAQgAioCDCILIAWUIAkgBpQgCiAEIAqUIAggB5STIgQgBJIiBJSTkpIiEZQgASoCACISIAggCyAGlCAHIASUIAkgBZSTkpIiE5QgASoCBCIIIAwgCyAElCAKIAWUIAcgBpSTkpIiBpSSkiIFQwAAAABfOgAMIAogBiAIIAWUkyIIlCAJIBMgEiAFlJMiDJSTIgYgBpIhBiAHIAyUIAogESAQIAWUkyIElJMiBSAFkiEFIAAgDyAEIAsgBpQgCiAFlCAJIAkgBJQgByAIlJMiBCAEkiIElJOSkpI4AgggACAOIAggCyAFlCAHIASUIAogBpSTkpKSOAIEIAAgDSAMIAsgBJQgCSAGlCAHIAWUk5KSkjgCAAuAAwENfSACKgIQIQ0gAioCFCEOIAIqAgQiCCADKgIAIgmUIAIqAgAiCiADKgIEIgaUkyIHIAeSIQQgAioCCCIHIAaUIAggAyoCCCIFlJMiCyALkiEMIAAgAioCGCABIAFBDGogASoCCCAFIAIqAgwiCyAElCAIIAyUIAogCiAFlCAHIAmUkyIFIAWSIgWUk5KSIg+UIAEqAgAiECAJIAsgDJQgByAFlCAIIASUk5KSIgmUIAEqAgQgBiALIAWUIAogBJQgByAMlJOSkiIElJKSIAEqAgwiBiAJlCAEIAEqAhCUkiAPIAEqAhSUkl4iARsiAioCCCIEIAsgCiACKgIEIgyUIAggECAGIAEbIgmUkyIGIAaSIgaUIAogByAJlCAKIASUkyIFIAWSIgWUIAggCCAElCAHIAyUkyIEIASSIgSUk5KSkjgCCCAAIA4gDCALIAWUIAcgBJQgCiAGlJOSkpI4AgQgACANIAkgCyAElCAIIAaUIAcgBZSTkpKSOAIAC4ADAQ19IAIqAhAhDSACKgIUIQ4gAioCBCIIIAMqAgAiCZQgAioCACIKIAMqAgQiBpSTIgcgB5IhBCACKgIIIgcgBpQgCCADKgIIIgWUkyILIAuSIQwgACACKgIYIAEgAUEMaiABKgIIIAUgAioCDCILIASUIAggDJQgCiAKIAWUIAcgCZSTIgUgBZIiBZSTkpIiD5QgASoCACIQIAkgCyAMlCAHIAWUIAggBJSTkpIiCZQgASoCBCAGIAsgBZQgCiAElCAHIAyUk5KSIgSUkpIgDyABKgIUlCABKgIMIgYgCZQgASoCECAElJKSXiIBGyICKgIIIgQgCyAKIAIqAgQiDJQgCCAQIAYgARsiCZSTIgYgBpIiBpQgCiAHIAmUIAogBJSTIgUgBZIiBZQgCCAIIASUIAcgDJSTIgQgBJIiBJSTkpKSOAIIIAAgDiAMIAsgBZQgByAElCAKIAaUk5KSkjgCBCAAIA0gCSALIASUIAggBpQgByAFlJOSkpI4AgAL+gIBDn0gASoCACEGIAMqAgAgAioCECIPkyIFIAIqAgQiCpQgAyoCBCACKgIUIhCTIgcgAioCACILlJMiCCAIkiEJIAcgAioCCCIIlCADKgIIIAIqAhgiEZMiDCAKlJMiDSANkiEEIAwgAioCDCINIAmUIAogBJQgCyAMIAuUIAUgCJSTIgwgDJIiDJSTkpIiDiAOlCAFIA0gBJQgCCAMlCAKIAmUk5KSIgUgBZQgByANIAyUIAsgCZQgCCAElJOSkiIJIAmUkpIiBBCSASEHIABCAjcCECAAIAQgBiAGlF86AAwgACARIAYgB5UiBiAOlCIEIA0gCyAGIAmUIgmUIAogBiAFlCIGlJMiBSAFkiIFlCALIAggBpQgCyAElJMiByAHkiIHlCAKIAogBJQgCCAJlJMiBCAEkiIElJOSkpI4AgggACAQIAkgDSAHlCAIIASUIAsgBZSTkpKSOAIEIAAgDyAGIA0gBJQgCiAFlCAIIAeUk5KSkjgCAAv4BgIIfwR+IwBBMGsiECQAAkACQAJAIABFDQAgACgCACIPQX9GDQEgACAPQQFqNgIAIAFFDQAgASgCACIPQX9GDQEgASAPQQFqNgIAIAJFDQAgAigCACIPQX9GDQEgAiAPQQFqNgIAIANFDQAgAygCACIPQX9GDQEgAyAPQQFqNgIAIARFDQAgBCgCACIPQX9GDQEgBCAPQQFqNgIAIBAgDjYCDEEAIQ4gEEEQaiEPIABBBGohEyABQQRqIRQgAkEEaiEVIANBBGohESAEQQRqIRIgBkEARyEWIAhBAEchCCAKQQBHrSEZIAxBAEetIRojAEHwAGsiBiQAIA29IRcgC70hGAJAIBBBDGoiCigCABAEQQFGBEAgBiAKNgIkIAZBsLfAADYCVCAGIBo+AkAgBiAZPgI0IAYgCUH//wNxNgIwIAYgCUEQdjYCLCAGIAg2AiggBiAHQQAgB0EgSRs2AkwgBiAXPgJEIAYgF0IgiD4CSCAGIBg+AjggBiAYQiCIPgI8IAYgBkEkajYCUAwBCyAGQbC3wAA2AlQgBiAaPgJAIAYgGT4CNCAGIAlB//8DcTYCMCAGIAlBEHY2AiwgBiAXPgJEIAYgF0IgiD4CSCAGIBg+AjggBiAYQiCIPgI8IAZBADYCUCAGIAg2AiggBiAHQQAgB0EgSRs2AkwLIAZB2ABqIgdBCGogEUEIaigCADYCACAGQewAaiASQQhqKAIANgIAIAYgESkCADcDWCAGIBIpAgA3AmQgBkEEaiATIBQgFSAHIAUgFiAGQShqEFwCQCAGKAIMQQRGBEAgD0EENgIADAELIA8gBkEMaiIHKQIANwIAIA9BCGogB0EIaikCADcCACAPQRBqIAdBEGopAgA3AgAgDyAGKQIENwIYCyAGQfAAaiQAIAQgBCgCAEEBazYCACADIAMoAgBBAWs2AgAgAiACKAIAQQFrNgIAIAEgASgCAEEBazYCACAAIAAoAgBBAWs2AgAgECgCEEEERwRAQYGJxAAtAAAaQSRBBBDcDCIORQ0DIA5BADYCACAOIBApAhA3AgQgDkEMaiAQQRhqKQIANwIAIA5BFGogEEEgaikCADcCACAOQRxqIBBBKGopAgA3AgALIBBBMGokACAODwsQ1A0ACxDVDQALQQRBJEGIq8QAKAIAIgBBzwcgABsRAAAAC8ADAQd/IwBBIGsiCCQAAkACQAJAAkACQAJAAkACQCACRQRAQQAhBQwBCyAGQQJLDQIgBSAGQQJ0IgVqIQwgCEEIaiAFaiENQQAhBSACIgYhCgNAIAIgBU0NAiABIAVBAnRqIg4oAgAiCyAETw0EIAggAyALQRhsaiIJKgIIIAkqAhSSQwAAAD+UOAIQIAggCSoCBCAJKgIQkkMAAAA/lDgCDCAIIAkqAgAgCSoCDJJDAAAAP5Q4AggCQCANKgIAIAwqAgBeRQRAIAVBAWohBQwBCyAKQQFrIgogAk8NBiAOIAEgCkECdGoiCSgCADYCACAJIAs2AgALIAZBAWsiBg0ACwsgB0UNBSAFQQBHIAIgBUdxDQUgAkEBdiEFDAYLIAUgAkHUosIAEJkJAAsgASgCACILIARJDQILIAsgBEHkosIAEJkJAAsgCiACQYSjwgAQmQkAC0H0osIAEOULAAsgAiAFTw0AIAhBADYCGCAIQQE2AgwgCEGskcIANgIIIAhCBDcCECAIQQhqQcSiwgAQkQsACyAAIAU2AgQgACABNgIAIAAgAiAFazYCDCAAIAEgBUECdGo2AgggCEEgaiQAC60DAgp9AX8gAioCACIIIAiUIAIqAggiCSAJlJIQkgEhBCABKgIEIgVDAAAAACAJIASVIARDAAAANF8iDhuUIQogBUMAAIA/IAggBJUgDhuUIQsCQAJAAkACQAJAIAIqAgQiBiABKgIAIgeMIgxgRQ0AIAQgBV9FDQAgBiAHXw0BCyAGIAdeRQRAIAYgDF1FBEAgACAKOAIIIAAgBjgCBCAAIAs4AgAgAEEAOgAMDwsgAEEAOgAMIAQgBV8NAyAAIAo4AgggACAMOAIEDAQLIABBADoADCAEIAVfRQ0BIAAgCTgCCCAAIAc4AgQgACAIOAIADwsCQCADRQRAIAUgBJMhBCAGIAeSIgUgByAGkyINXiAEIA1ecQ0BIABBAToADCAFIA1dIAQgBV5xDQMgACAKOAIIIAAgBjgCBAwECyAAQQE6AAwgACACKQIANwIAIABBCGogAkEIaigCADYCAA8LIAAgCTgCCCAAIAc4AgQgACAIOAIAIABBAToADA8LIAAgCjgCCCAAIAc4AgQMAQsgACAJOAIIIAAgDDgCBCAAIAg4AgAPCyAAIAs4AgALgwMCDH0BfyMAQTBrIhEkACADKgIAIAIqAhAiDpMiDSACKgIEIgiUIAMqAgQgAioCFCIPkyIJIAIqAgAiCpSTIgcgB5IhCyAJIAIqAggiB5QgAyoCCCACKgIYIhCTIgUgCJSTIgwgDJIhBiARIAUgAioCDCIMIAuUIAggBpQgCiAFIAqUIA0gB5STIgUgBZIiBZSTkpI4AgwgESAJIAwgBZQgCiALlCAHIAaUk5KSOAIIIBEgDSAMIAaUIAcgBZQgCCALlJOSkjgCBCARQRBqIAEgEUEEaiAEEDwgESoCECELIBEqAhghBiARKgIUIQ0gACARLQAcOgAMIAAgECAGIAwgCiANlCAIIAuUkyIJIAmSIgmUIAogByALlCAKIAaUkyIFIAWSIgWUIAggCCAGlCAHIA2UkyIGIAaSIgaUk5KSkjgCCCAAIA8gDSAMIAWUIAcgBpQgCiAJlJOSkpI4AgQgACAOIAsgDCAGlCAIIAmUIAcgBZSTkpKSOAIAIBFBMGokAAuJAwIMfQF/IwBBMGsiECQAIAMqAgAgAioCECINkyILIAIqAgQiCJQgAyoCBCACKgIUIg6TIgwgAioCACIJlJMiBSAFkiEGIAwgAioCCCIFlCADKgIIIAIqAhgiD5MiBCAIlJMiCiAKkiEHIBAgBCACKgIMIgogBpQgCCAHlCAJIAQgCZQgCyAFlJMiBCAEkiIElJOSkjgCLCAQIAwgCiAElCAJIAaUIAUgB5STkpI4AiggECALIAogB5QgBSAElCAIIAaUk5KSOAIkIBBBDGogASAQQSRqEFogACAQKQIcNwIQIAAgEC0AGDoADCAJIBAqAhAiC5QgCCAQKgIMIgyUkyIGIAaSIQYgBSAMlCAJIBAqAhQiBJSTIgcgB5IhByAAIA8gBCAKIAaUIAkgB5QgCCAIIASUIAUgC5STIgQgBJIiBJSTkpKSOAIIIAAgDiALIAogB5QgBSAElCAJIAaUk5KSkjgCBCAAIA0gDCAKIASUIAggBpQgBSAHlJOSkpI4AgAgEEEwaiQAC4kDAgx9AX8jAEEwayIQJAAgAyoCACACKgIQIg2TIgsgAioCBCIIlCADKgIEIAIqAhQiDpMiDCACKgIAIgmUkyIFIAWSIQYgDCACKgIIIgWUIAMqAgggAioCGCIPkyIEIAiUkyIKIAqSIQcgECAEIAIqAgwiCiAGlCAIIAeUIAkgBCAJlCALIAWUkyIEIASSIgSUk5KSOAIsIBAgDCAKIASUIAkgBpQgBSAHlJOSkjgCKCAQIAsgCiAHlCAFIASUIAggBpSTkpI4AiQgEEEMaiABIBBBJGoQUiAAIBApAhw3AhAgACAQLQAYOgAMIAkgECoCECILlCAIIBAqAgwiDJSTIgYgBpIhBiAFIAyUIAkgECoCFCIElJMiByAHkiEHIAAgDyAEIAogBpQgCSAHlCAIIAggBJQgBSALlJMiBCAEkiIElJOSkpI4AgggACAOIAsgCiAHlCAFIASUIAkgBpSTkpKSOAIEIAAgDSAMIAogBJQgCCAGlCAFIAeUk5KSkjgCACAQQTBqJAALiQMCDH0BfyMAQTBrIhAkACADKgIAIAIqAhAiDZMiCyACKgIEIgiUIAMqAgQgAioCFCIOkyIMIAIqAgAiCZSTIgUgBZIhBiAMIAIqAggiBZQgAyoCCCACKgIYIg+TIgQgCJSTIgogCpIhByAQIAQgAioCDCIKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AiwgECAMIAogBJQgCSAGlCAFIAeUk5KSOAIoIBAgCyAKIAeUIAUgBJQgCCAGlJOSkjgCJCAQQQxqIAEgEEEkakEAEO0CIABCAjcCECAAIBAtABg6AAwgCSAQKgIQIguUIAggECoCDCIMlJMiBiAGkiEGIAUgDJQgCSAQKgIUIgSUkyIHIAeSIQcgACAPIAQgCiAGlCAJIAeUIAggCCAElCAFIAuUkyIEIASSIgSUk5KSkjgCCCAAIA4gCyAKIAeUIAUgBJQgCSAGlJOSkpI4AgQgACANIAwgCiAElCAIIAaUIAUgB5STkpKSOAIAIBBBMGokAAuKAwIMfQF/IwBBMGsiECQAIAMqAgAgAioCECINkyILIAIqAgQiCJQgAyoCBCACKgIUIg6TIgwgAioCACIJlJMiBSAFkiEGIAwgAioCCCIFlCADKgIIIAIqAhgiD5MiBCAIlJMiCiAKkiEHIBAgBCACKgIMIgogBpQgCCAHlCAJIAQgCZQgCyAFlJMiBCAEkiIElJOSkjgCLCAQIAwgCiAElCAJIAaUIAUgB5STkpI4AiggECALIAogB5QgBSAElCAIIAaUk5KSOAIkIBBBDGogASAQQSRqEIMCIAAgECkCHDcCECAAIBAtABg6AAwgCSAQKgIQIguUIAggECoCDCIMlJMiBiAGkiEGIAUgDJQgCSAQKgIUIgSUkyIHIAeSIQcgACAPIAQgCiAGlCAJIAeUIAggCCAElCAFIAuUkyIEIASSIgSUk5KSkjgCCCAAIA4gCyAKIAeUIAUgBJQgCSAGlJOSkpI4AgQgACANIAwgCiAElCAIIAaUIAUgB5STkpKSOAIAIBBBMGokAAuABAIEfQF/IAEqAgAhBwJAAkACQCACKgIMIgVDAAAAAFwEQEMAAIA/IAWVIgUgASoCDCACKgIAIgiTlCEGIAYgBSAHIAiTlCIHXSEJIAMgAyAHIAYgCRsiBSADIAVdGyAFIAVcGyIDQwAAAABDAAAAACAGIAcgCRsiBiAGQwAAAABdGyAGIAZcGyIGXUUNAQwCCyACKgIAIgUgB10NAiAFIAEqAgxeDQILAkAgAioCECIHQwAAAABcBEBDAACAPyAHlSIFIAEqAhAgAioCBCIIk5QiByAFIAEqAgQgCJOUIghdIQkgAyADIAggByAJGyIFIAMgBV0bIAUgBVwbIgMgByAIIAkbIgUgBSAGIAUgBl4bIAYgBlwbIgZdDQIMAQtBACEJIAIqAgQiBSABKgIEXQ0CIAUgASoCEF4NAgsCQCACKgIUIgdDAAAAAFwEQEMAAIA/IAeVIgUgASoCFCACKgIIIgiTlCIHIAUgASoCCCAIk5QiCF0hASADIAMgCCAHIAEbIgUgAyAFXRsgBSAFXBsiAyAHIAggARsiBSAFIAYgBSAGXhsgBiAGXBsiBl0NAgwBC0EAIQkgAioCCCIFIAEqAghdDQIgBSABKgIUXg0CCyAGIAYgAyAEGyAGQwAAAABcGyEHQQEhCQwBC0EAIQkLIAAgBzgCBCAAIAk2AgALgAMCCn0BfyMAQSBrIg4kACACKgIIIgkgAyoCBCIKlCACKgIEIgsgAyoCCCIGlJMiByAHkiEIIAIqAgAiByAGlCAJIAMqAgAiBJSTIgwgDJIhBSAOIAQgAioCDCIMIAiUIAkgBZQgCyALIASUIAcgCpSTIgQgBJIiBJSTkpIiDTgCCCAOIAYgDCAElCALIAiUIAcgBZSTkpIiBjgCECAOIAogDCAFlCAHIASUIAkgCJSTkpIiCjgCDCAOQRRqIAEgDkEIahCrAyAAIAIqAhggBiABKgJgIgiUIA4qAhySIgUgDCAHIAogCJQgDioCGJIiCpQgCyAOKgIUIA0gCJSSIgiUkyIGIAaSIgaUIAcgCSAIlCAHIAWUkyIEIASSIgSUIAsgCyAFlCAJIAqUkyIFIAWSIgWUk5KSkjgCCCAAIAIqAhQgCiAMIASUIAkgBZQgByAGlJOSkpI4AgQgACACKgIQIAggDCAFlCALIAaUIAkgBJSTkpKSOAIAIA5BIGokAAvjAwIFfwJ9IwBBIGsiAyQAQYGJxAAtAAAaIAEqAgQhCCABKgIAIQlBGEEEENwMIgEEQCABQoCAgICAgICAv383AgggAUKAgID4i4CAgL9/NwIAIAFBEGpCgICA+AM3AgAgA0ECNgIQIAMgATYCDCADQQI2AgggA0EANgIcIANCgICAgMAANwIUQQBBoK/DAEEBIAIgA0EIaiADQRRqEH4gAygCDCECIAMoAgghBwJAIAMoAhAiBkUNACAJIAmSIQkgCCAIkiEIIAIhASAGQQxsIgVBDGsiBEEMbkEBcUUEQCACIAggAioCAJQ4AgAgAiAJIAIqAgSUOAIEIAIgCCACKgIIlDgCCCACQQxqIQELIARBDEkNACACIAVqIQUDQCABIAggASoCAJQ4AgAgAUEEaiIEIAkgBCoCAJQ4AgAgAUEIaiIEIAggBCoCAJQ4AgAgAUEMaiIEIAggBCoCAJQ4AgAgAUEQaiIEIAkgBCoCAJQ4AgAgAUEUaiIEIAggBCoCAJQ4AgAgBSABQRhqIgFHDQALCyAAIAY2AgggACACNgIEIAAgBzYCACAAIAMpAhQ3AgwgAEEUaiADQRxqKAIANgIAIANBIGokAA8LQQRBGEGIq8QAKAIAIgBBzwcgABsRAAAAC4ADAQx9IwBBMGsiBCQAIAMqAgAgAioCECIOkyINIAIqAgQiCJQgAyoCBCACKgIUIg+TIgkgAioCACIKlJMiByAHkiELIAkgAioCCCIHlCADKgIIIAIqAhgiEJMiBSAIlJMiDCAMkiEGIAQgBSACKgIMIgwgC5QgCCAGlCAKIAUgCpQgDSAHlJMiBSAFkiIFlJOSkjgCECAEIAkgDCAFlCAKIAuUIAcgBpSTkpI4AgwgBCANIAwgBpQgByAFlCAIIAuUk5KSOAIIIARBFGogASAEQQhqEP8CIAQqAhQhCyAEKgIcIQYgBCoCGCENIAAgBC0AIDoADCAAIBAgBiAMIAogDZQgCCALlJMiCSAJkiIJlCAKIAcgC5QgCiAGlJMiBSAFkiIFlCAIIAggBpQgByANlJMiBiAGkiIGlJOSkpI4AgggACAPIA0gDCAFlCAHIAaUIAogCZSTkpKSOAIEIAAgDiALIAwgBpQgCCAJlCAHIAWUk5KSkjgCACAEQTBqJAALnQMCAX8KfSMAQUBqIgYkACADKgIAIAIqAhCTIg0gAioCBCIIlCADKgIEIAIqAhSTIg4gAioCACIJlJMiByAHkiEHIA4gAioCCCIKlCADKgIIIAIqAhiTIgsgCJSTIgwgDJIhDCAGIAsgAioCDCIPIAeUIAggDJQgCSALIAmUIA0gCpSTIgsgC5IiC5STkpIiEDgCCCAGIA0gDyAMlCAKIAuUIAggB5STkpIiCDgCACAGIA4gDyALlCAJIAeUIAogDJSTkpIiCTgCBCABQQhqIgMqAgAhByABKgIAIQogASoCBCEMIAZBIGogAygCADYCACAGIAeMOAIUIAYgDIw4AhAgBiAKjDgCDCAGIAEpAgA3AhggBkEkaiAGQQxqIAYgBBCzAiAGLQAwIQECQCAIIAYqAiQiCJMiByAHlCAJIAYqAigiCZMiByAHlJIgECAGKgIsIgeTIgogCpSSEJIBIAVeBEAgAEECOgAMDAELIAYgAToAMCAGIAc4AiwgBiAJOAIoIAYgCDgCJCAAIAZBJGogAhCkBgsgBkFAayQAC/wCAg99A38CfSABKgIEIgQgASoCECIIlCABKgIIIgVDAACAPyABKgIMIAEtAGAiEUEQcSISGyIMlJMhDUMAAAAAIAUgDZRDAACAPyABKgIAIBFBCHEiExsiAyAMQwAAgD8gASoCFCARQSBxIgEbIg6UIAggCJSTIg+UIAQgBCAOlCAFIAiUkyIQlJOSIgJDAAAAAFsNABogDSAClSEGIA8gApUhCyAQjCAClSEHIAwgA5QgBCAElJMgApUhCiAOIAOUIAUgBZSTIAKVIQkgBCAFlCAIIAOUkyAClQshAyAAQwAAAAAgCiABGyICIAKUIAMgA5QiBSAGIAaUIgiSkjgCFCAAIAMgApRDAAAAACAJIBIbIgQgA5QgBiAHlJKSOAIQIAAgBSAEIASUIAcgB5QiBZKSOAIMIAAgBiAClCADIAeUIAZDAAAAACALIBMbIgKUkpI4AgggACADIAaUIAQgB5QgByAClJKSOAIEIAAgCCAFIAIgApSSkjgCAAuAAwIMfQF/IwBBMGsiESQAIAMqAgAgAioCECIOkyINIAIqAgQiCJQgAyoCBCACKgIUIg+TIgkgAioCACIKlJMiByAHkiELIAkgAioCCCIHlCADKgIIIAIqAhgiEJMiBSAIlJMiDCAMkiEGIBEgBSACKgIMIgwgC5QgCCAGlCAKIAUgCpQgDSAHlJMiBSAFkiIFlJOSkjgCCCARIAkgDCAFlCAKIAuUIAcgBpSTkpI4AgQgESANIAwgBpQgByAFlCAIIAuUk5KSOAIAIBFBDGogASARIAQQSyARKgIMIQsgESoCFCEGIBEqAhAhDSAAIBEtABg6AAwgACAQIAYgDCAKIA2UIAggC5STIgkgCZIiCZQgCiAHIAuUIAogBpSTIgUgBZIiBZQgCCAIIAaUIAcgDZSTIgYgBpIiBpSTkpKSOAIIIAAgDyANIAwgBZQgByAGlCAKIAmUk5KSkjgCBCAAIA4gCyAMIAaUIAggCZQgByAFlJOSkpI4AgAgEUEwaiQAC4MDAQt9IAIqAgQiCCADKgIAIgmUIAIqAgAiCiADKgIEIguUkyIFIAWSIQYgAioCCCIFIAuUIAggAyoCCCIElJMiDCAMkiEHIAAgAioCGCABKgIMIg4gBCACKgIMIgwgBpQgCCAHlCAKIAogBJQgBSAJlJMiBCAEkiIElJOSkiINlCANvEGAgICAeHEgASgCCEH/////B3FyvpIiDSAMIAogDiALIAwgBJQgCiAGlCAFIAeUk5KSIguUIAu8QYCAgIB4cSABKAIEQf////8HcXK+kiILlCAIIA4gCSAMIAeUIAUgBJQgCCAGlJOSkiIGlCAGvEGAgICAeHEgASgCAEH/////B3FyvpIiBpSTIgcgB5IiB5QgCiAFIAaUIAogDZSTIgkgCZIiCZQgCCAIIA2UIAUgC5STIgQgBJIiBJSTkpKSOAIIIAAgAioCFCALIAwgCZQgBSAElCAKIAeUk5KSkjgCBCAAIAIqAhAgBiAMIASUIAggB5QgBSAJlJOSkpI4AgALggMCDH0BfyMAQSBrIhEkACADKgIAIAIqAhAiDpMiDCACKgIEIgmUIAMqAgQgAioCFCIPkyINIAIqAgAiCpSTIgYgBpIhByANIAIqAggiBpQgAyoCCCACKgIYIhCTIgUgCZSTIgsgC5IhCCARIAUgAioCDCILIAeUIAkgCJQgCiAFIAqUIAwgBpSTIgUgBZIiBZSTkpI4AhwgESANIAsgBZQgCiAHlCAGIAiUk5KSOAIYIBEgDCALIAiUIAYgBZQgCSAHlJOSkjgCFCARQQRqIAEgEUEUaiAEEKMCIAAgES0AEDoADCAKIBEqAggiDJQgCSARKgIEIg2UkyIHIAeSIQcgBiANlCAKIBEqAgwiBZSTIgggCJIhCCAAIBAgBSALIAeUIAogCJQgCSAJIAWUIAYgDJSTIgUgBZIiBZSTkpKSOAIIIAAgDyAMIAsgCJQgBiAFlCAKIAeUk5KSkjgCBCAAIA4gDSALIAWUIAkgB5QgBiAIlJOSkpI4AgAgEUEgaiQAC4IDAgx9AX8jAEEgayIRJAAgAyoCACACKgIQIg6TIgwgAioCBCIJlCADKgIEIAIqAhQiD5MiDSACKgIAIgqUkyIGIAaSIQcgDSACKgIIIgaUIAMqAgggAioCGCIQkyIFIAmUkyILIAuSIQggESAFIAIqAgwiCyAHlCAJIAiUIAogBSAKlCAMIAaUkyIFIAWSIgWUk5KSOAIcIBEgDSALIAWUIAogB5QgBiAIlJOSkjgCGCARIAwgCyAIlCAGIAWUIAkgB5STkpI4AhQgEUEEaiABIBFBFGogBBDtAiAAIBEtABA6AAwgCiARKgIIIgyUIAkgESoCBCINlJMiByAHkiEHIAYgDZQgCiARKgIMIgWUkyIIIAiSIQggACAQIAUgCyAHlCAKIAiUIAkgCSAFlCAGIAyUkyIFIAWSIgWUk5KSkjgCCCAAIA8gDCALIAiUIAYgBZQgCiAHlJOSkpI4AgQgACAOIA0gCyAFlCAJIAeUIAYgCJSTkpKSOAIAIBFBIGokAAuBAwIMfQF/IwBBIGsiESQAIAMqAgAgAioCECIOkyIMIAIqAgQiCZQgAyoCBCACKgIUIg+TIg0gAioCACIKlJMiBiAGkiEHIA0gAioCCCIGlCADKgIIIAIqAhgiEJMiBSAJlJMiCyALkiEIIBEgBSACKgIMIgsgB5QgCSAIlCAKIAUgCpQgDCAGlJMiBSAFkiIFlJOSkjgCHCARIA0gCyAFlCAKIAeUIAYgCJSTkpI4AhggESAMIAsgCJQgBiAFlCAJIAeUk5KSOAIUIBFBBGogASARQRRqIAQQPSAAIBEtABA6AAwgCiARKgIIIgyUIAkgESoCBCINlJMiByAHkiEHIAYgDZQgCiARKgIMIgWUkyIIIAiSIQggACAQIAUgCyAHlCAKIAiUIAkgCSAFlCAGIAyUkyIFIAWSIgWUk5KSkjgCCCAAIA8gDCALIAiUIAYgBZQgCiAHlJOSkpI4AgQgACAOIA0gCyAFlCAJIAeUIAYgCJSTkpKSOAIAIBFBIGokAAuAAwEMfSMAQSBrIgQkACADKgIAIAIqAhAiDpMiDCACKgIEIgmUIAMqAgQgAioCFCIPkyINIAIqAgAiCpSTIgYgBpIhByANIAIqAggiBpQgAyoCCCACKgIYIhCTIgUgCZSTIgsgC5IhCCAEIAUgAioCDCILIAeUIAkgCJQgCiAFIAqUIAwgBpSTIgUgBZIiBZSTkpI4AhwgBCANIAsgBZQgCiAHlCAGIAiUk5KSOAIYIAQgDCALIAiUIAYgBZQgCSAHlJOSkjgCFCAEQQRqIAEgBEEUakEAEM0BIAAgBC0AEDoADCAKIAQqAggiDJQgCSAEKgIEIg2UkyIHIAeSIQcgBiANlCAKIAQqAgwiBZSTIgggCJIhCCAAIBAgBSALIAeUIAogCJQgCSAJIAWUIAYgDJSTIgUgBZIiBZSTkpKSOAIIIAAgDyAMIAsgCJQgBiAFlCAKIAeUk5KSkjgCBCAAIA4gDSALIAWUIAkgB5QgBiAIlJOSkpI4AgAgBEEgaiQAC7QDAwZ/A30BfiMAQRBrIgMkACAAAn8CQCABKAIEIgVBBEkNACABKAIAIQIgASAFQQRrIgY2AgQgASACQQRqNgIAIAZBBEkNACACKAAAIQYgASAFQQhrIgQ2AgQgASACQQhqNgIAIARBBEkNACACKgAEIQggASAFQQxrIgQ2AgQgASACQQxqNgIAIARBBEkNACACKgAIIQkgASAFQRBrIgQ2AgQgASACQRBqNgIAAkAgBEEESQ0AIAIqAAwhCiABIAVBFGsiBDYCBCABIAJBFGo2AgAgBEEESQ0AIAIoABAhBCABIAVBGGsiBzYCBCABIAJBGGo2AgAgB0EESQ0AIAI1ABQhCyAAIAQ2AhQgACAKOAIQIAAgCTgCDCAAIAg4AgggACAGNgIEIAEgBUEcazYCBCABIAJBHGo2AgAgACALIAI1ABhCIIaENwIYQQAMAgsgA0EAOgALIANBJTsACSADQQA2AgwgA0EBOgAIIAAgA0EIahCkCzYCBEEBDAELIANBADoACyADQSU7AAkgA0EANgIMIANBAToACCAAIANBCGoQpAs2AgRBAQs2AgAgA0EQaiQAC6sDAQZ/IwBBQGoiByQAAkACQCAARQ0AIAAoAgAiCEF/Rg0BIAAgCEEBajYCACABRQ0AIAEoAgAiCEF/Rg0BIAEgCEEBajYCACACRQ0AIAIoAgAiCEF/Rg0BIAIgCEEBajYCACADRQ0AIAMoAgAiCEF/Rg0BIAMgCEEBajYCACAERQ0AIAQoAgAiCEF/Rg0BIAQgCEEBajYCACAHQQhqIghBCGogAkEMaikCADcDACAHIAIpAgQ3AwggB0EgaiABQQxqKAIANgIAIAcgASkCBDcDGCAAKAIEIQkgACgCCCIKKAIIIQsgB0EoaiIMQQhqIANBDGooAgA2AgAgByADKQIENwMoIAdBPGogBEEMaigCADYCACAHIAQpAgQ3AjQgByAJIAtBAWtBeHFqQQhqIAggDCAFIAZBAEcgCigCGBEJACAHKgIEIQUgBygCACEGIAQgBCgCAEEBazYCACADIAMoAgBBAWs2AgAgAiACKAIAQQFrNgIAIAEgASgCAEEBazYCACAAIAAoAgBBAWs2AgAgB0FAayQAIAVDAACAvyAGGw8LENQNAAsQ1Q0AC4MDAgl9AX8jAEEwayIPJAAgAioCBCIKIAMqAgwiDZQgAioCACILIAMqAhAiDpSTIgcgB5IhCCACKgIIIgcgDpQgCiADKgIUIgaUkyIMIAySIQkgDyAGIAIqAgwiDCAIlCAKIAmUIAsgCyAGlCAHIA2UkyIGIAaSIgaUk5KSOAIUIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCECAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgwgCiADKgIAIAIqAhCTIg2UIAsgAyoCBCACKgIUkyIOlJMiCCAIkiEIIA4gB5QgAyoCCCACKgIYkyIGIAqUkyIJIAmSIQkgDyAGIAwgCJQgCiAJlCALIAYgC5QgDSAHlJMiBiAGkiIGlJOSkjgCCCAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AgQgDyANIAwgCZQgByAGlCAKIAiUk5KSOAIAIA9BGGogASAPIAQgBRDbASAPKAIYIQEgACAPKgIgOAIEIAAgAUEERzYCACAPQTBqJAALgwMCCX0BfyMAQTBrIg8kACACKgIEIgogAyoCDCINlCACKgIAIgsgAyoCECIOlJMiByAHkiEIIAIqAggiByAOlCAKIAMqAhQiBpSTIgwgDJIhCSAPIAYgAioCDCIMIAiUIAogCZQgCyALIAaUIAcgDZSTIgYgBpIiBpSTkpI4AhQgDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIQIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCDCAKIAMqAgAgAioCEJMiDZQgCyADKgIEIAIqAhSTIg6UkyIIIAiSIQggDiAHlCADKgIIIAIqAhiTIgYgCpSTIgkgCZIhCSAPIAYgDCAIlCAKIAmUIAsgBiALlCANIAeUkyIGIAaSIgaUk5KSOAIIIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCBCAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgAgD0EYaiABIA8gBCAFEPEBIA8oAhghASAAIA8qAiA4AgQgACABQQRHNgIAIA9BMGokAAuDAwIJfQF/IwBBMGsiDyQAIAIqAgQiCiADKgIMIg2UIAIqAgAiCyADKgIQIg6UkyIHIAeSIQggAioCCCIHIA6UIAogAyoCFCIGlJMiDCAMkiEJIA8gBiACKgIMIgwgCJQgCiAJlCALIAsgBpQgByANlJMiBiAGkiIGlJOSkjgCFCAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AhAgDyANIAwgCZQgByAGlCAKIAiUk5KSOAIMIAogAyoCACACKgIQkyINlCALIAMqAgQgAioCFJMiDpSTIgggCJIhCCAOIAeUIAMqAgggAioCGJMiBiAKlJMiCSAJkiEJIA8gBiAMIAiUIAogCZQgCyAGIAuUIA0gB5STIgYgBpIiBpSTkpI4AgggDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIEIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCACAPQRhqIAEgDyAEIAUQyQEgDygCGCEBIAAgDyoCIDgCBCAAIAFBBEc2AgAgD0EwaiQAC4MDAgl9AX8jAEEwayIPJAAgAioCBCIKIAMqAgwiDZQgAioCACILIAMqAhAiDpSTIgcgB5IhCCACKgIIIgcgDpQgCiADKgIUIgaUkyIMIAySIQkgDyAGIAIqAgwiDCAIlCAKIAmUIAsgCyAGlCAHIA2UkyIGIAaSIgaUk5KSOAIUIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCECAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgwgCiADKgIAIAIqAhCTIg2UIAsgAyoCBCACKgIUkyIOlJMiCCAIkiEIIA4gB5QgAyoCCCACKgIYkyIGIAqUkyIJIAmSIQkgDyAGIAwgCJQgCiAJlCALIAYgC5QgDSAHlJMiBiAGkiIGlJOSkjgCCCAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AgQgDyANIAwgCZQgByAGlCAKIAiUk5KSOAIAIA9BGGogASAPIAQgBRDjASAPKAIYIQEgACAPKgIgOAIEIAAgAUEERzYCACAPQTBqJAALgwMCCX0BfyMAQTBrIg8kACACKgIEIgogAyoCDCINlCACKgIAIgsgAyoCECIOlJMiByAHkiEIIAIqAggiByAOlCAKIAMqAhQiBpSTIgwgDJIhCSAPIAYgAioCDCIMIAiUIAogCZQgCyALIAaUIAcgDZSTIgYgBpIiBpSTkpI4AhQgDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIQIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCDCAKIAMqAgAgAioCEJMiDZQgCyADKgIEIAIqAhSTIg6UkyIIIAiSIQggDiAHlCADKgIIIAIqAhiTIgYgCpSTIgkgCZIhCSAPIAYgDCAIlCAKIAmUIAsgBiALlCANIAeUkyIGIAaSIgaUk5KSOAIIIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCBCAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgAgD0EYaiABIA8gBCAFEIYBIA8oAhghASAAIA8qAiA4AgQgACABQQRHNgIAIA9BMGokAAuDAwIJfQF/IwBBMGsiDyQAIAIqAgQiCiADKgIMIg2UIAIqAgAiCyADKgIQIg6UkyIHIAeSIQggAioCCCIHIA6UIAogAyoCFCIGlJMiDCAMkiEJIA8gBiACKgIMIgwgCJQgCiAJlCALIAsgBpQgByANlJMiBiAGkiIGlJOSkjgCFCAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AhAgDyANIAwgCZQgByAGlCAKIAiUk5KSOAIMIAogAyoCACACKgIQkyINlCALIAMqAgQgAioCFJMiDpSTIgggCJIhCCAOIAeUIAMqAgggAioCGJMiBiAKlJMiCSAJkiEJIA8gBiAMIAiUIAogCZQgCyAGIAuUIA0gB5STIgYgBpIiBpSTkpI4AgggDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIEIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCACAPQRhqIAEgDyAEIAUQ2QEgDygCGCEBIAAgDyoCIDgCBCAAIAFBBEc2AgAgD0EwaiQAC4ADAQl9IwBBMGsiBSQAIAIqAgQiCiADKgIMIg2UIAIqAgAiCyADKgIQIg6UkyIHIAeSIQggAioCCCIHIA6UIAogAyoCFCIGlJMiDCAMkiEJIAUgBiACKgIMIgwgCJQgCiAJlCALIAsgBpQgByANlJMiBiAGkiIGlJOSkjgCFCAFIA4gDCAGlCALIAiUIAcgCZSTkpI4AhAgBSANIAwgCZQgByAGlCAKIAiUk5KSOAIMIAogAyoCACACKgIQkyINlCALIAMqAgQgAioCFJMiDpSTIgggCJIhCCAOIAeUIAMqAgggAioCGJMiBiAKlJMiCSAJkiEJIAUgBiAMIAiUIAogCZQgCyAGIAuUIA0gB5STIgYgBpIiBpSTkpI4AgggBSAOIAwgBpQgCyAIlCAHIAmUk5KSOAIEIAUgDSAMIAmUIAcgBpQgCiAIlJOSkjgCACAFQRhqIAEgBSAEQQAQbiAFKAIYIQEgACAFKgIgOAIEIAAgAUEERzYCACAFQTBqJAALgwMCCX0BfyMAQTBrIg8kACACKgIEIgogAyoCDCINlCACKgIAIgsgAyoCECIOlJMiByAHkiEIIAIqAggiByAOlCAKIAMqAhQiBpSTIgwgDJIhCSAPIAYgAioCDCIMIAiUIAogCZQgCyALIAaUIAcgDZSTIgYgBpIiBpSTkpI4AhQgDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIQIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCDCAKIAMqAgAgAioCEJMiDZQgCyADKgIEIAIqAhSTIg6UkyIIIAiSIQggDiAHlCADKgIIIAIqAhiTIgYgCpSTIgkgCZIhCSAPIAYgDCAIlCAKIAmUIAsgBiALlCANIAeUkyIGIAaSIgaUk5KSOAIIIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCBCAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgAgD0EYaiABIA8gBCAFEMwBIA8oAhghASAAIA8qAiA4AgQgACABQQRHNgIAIA9BMGokAAuDAwIJfQF/IwBBMGsiDyQAIAIqAgQiCiADKgIMIg2UIAIqAgAiCyADKgIQIg6UkyIHIAeSIQggAioCCCIHIA6UIAogAyoCFCIGlJMiDCAMkiEJIA8gBiACKgIMIgwgCJQgCiAJlCALIAsgBpQgByANlJMiBiAGkiIGlJOSkjgCFCAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AhAgDyANIAwgCZQgByAGlCAKIAiUk5KSOAIMIAogAyoCACACKgIQkyINlCALIAMqAgQgAioCFJMiDpSTIgggCJIhCCAOIAeUIAMqAgggAioCGJMiBiAKlJMiCSAJkiEJIA8gBiAMIAiUIAogCZQgCyAGIAuUIA0gB5STIgYgBpIiBpSTkpI4AgggDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIEIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCACAPQRhqIAEgDyAEIAUQvAEgDygCGCEBIAAgDyoCIDgCBCAAIAFBBEc2AgAgD0EwaiQAC4MDAgl9AX8jAEEwayIPJAAgAioCBCIKIAMqAgwiDZQgAioCACILIAMqAhAiDpSTIgcgB5IhCCACKgIIIgcgDpQgCiADKgIUIgaUkyIMIAySIQkgDyAGIAIqAgwiDCAIlCAKIAmUIAsgCyAGlCAHIA2UkyIGIAaSIgaUk5KSOAIUIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCECAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgwgCiADKgIAIAIqAhCTIg2UIAsgAyoCBCACKgIUkyIOlJMiCCAIkiEIIA4gB5QgAyoCCCACKgIYkyIGIAqUkyIJIAmSIQkgDyAGIAwgCJQgCiAJlCALIAYgC5QgDSAHlJMiBiAGkiIGlJOSkjgCCCAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AgQgDyANIAwgCZQgByAGlCAKIAiUk5KSOAIAIA9BGGogASAPIAQgBRDuASAPKAIYIQEgACAPKgIgOAIEIAAgAUEERzYCACAPQTBqJAALgwMCCX0BfyMAQTBrIg8kACACKgIEIgogAyoCDCINlCACKgIAIgsgAyoCECIOlJMiByAHkiEIIAIqAggiByAOlCAKIAMqAhQiBpSTIgwgDJIhCSAPIAYgAioCDCIMIAiUIAogCZQgCyALIAaUIAcgDZSTIgYgBpIiBpSTkpI4AhQgDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIQIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCDCAKIAMqAgAgAioCEJMiDZQgCyADKgIEIAIqAhSTIg6UkyIIIAiSIQggDiAHlCADKgIIIAIqAhiTIgYgCpSTIgkgCZIhCSAPIAYgDCAIlCAKIAmUIAsgBiALlCANIAeUkyIGIAaSIgaUk5KSOAIIIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCBCAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgAgD0EYaiABIA8gBCAFEOIBIA8oAhghASAAIA8qAiA4AgQgACABQQRHNgIAIA9BMGokAAvvAgENfQJ/IAIqAgggASoCGJMiCyABKgIAIgWUIAIqAgAgASoCEJMiDCABKgIIIgmUkyIGIAaSIQcgDCABKgIEIgaUIAIqAgQgASoCFJMiBCAFlJMiCiAKkiEIQQEgACoCBCINIAQgASoCDCIKIAeUIAUgCJQgCSAEIAmUIAsgBpSTIgQgBJIiBJSTkpKMlCAAKgIAIg4gDCAKIASUIAkgB5QgBiAIlJOSkpSTIAAqAggiDyALIAogCJQgBiAElCAFIAeUk5KSlJMiEEMAAAAAXg0AGiAGIAIqAgwiC5QgBSACKgIQIgyUkyIHIAeSIQcgCSAMlCAGIAIqAhQiBJSTIgggCJIhCCAQIA8gBCAKIAeUIAYgCJQgBSAFIASUIAkgC5STIgQgBJIiBJSTkpKUIA4gCyAKIAiUIAkgBJQgBiAHlJOSkpQgDSAMIAogBJQgBSAHlCAJIAiUk5KSlJKSlSIFQwAAAABgIAMgBWBxCwv/BAEPfwJAAkAgAEUNACAAKAIADQEgAEF/NgIAIAFFDQAgASgCACIPQX9GDQEgASAPQQFqNgIAIAJFDQAgAigCACIPQX9GDQEgAiAPQQFqNgIAIANFDQAgAygCAA0BIANBfzYCACAERQ0AIAQoAgANASAEQX82AgAgBUUNACAFKAIADQEgBUF/NgIAIAZFDQAgBigCAA0BIAZBfzYCACAHRQ0AIAcoAgANASAHQX82AgAgCEUNACAIKAIADQEgCEF/NgIAIAlFDQAgCSgCAA0BIAlBfzYCACAKRQ0AIAooAgANASAKQX82AgAgC0UNACALKAIADQEgC0F/NgIAIABBCGohESABQQRqIRIgAkEEaiETIANBBGohFCAEQQRqIRUgBUEEaiEWIAZBBGohFyAHQQRqIRggCEEEaiEZIAlBBGohGiAKQQRqIRsjAEEgayIPJAACQCALQQRqIhAtACBFDQAgD0EIaiAQKAIQIhwgECgCFCIdEGIgDygCCEECRg0AA0AgD0EIaiAcIB0QYiAPKAIIQQJHDQALCyAPIA42AhAgDyANNgIMIA8gDDYCCCARIBIgEyAUIBUgFiAXIBggGSAaIBsgD0EIakGwu8AAIBBByLvAABAaIA8oAggiDEGEAU8EQCAMEAILIA8oAgwiDEGEAU8EQCAMEAILIA8oAhAiDEGEAU8EQCAMEAILIA9BIGokACALQQA2AgAgCkEANgIAIAlBADYCACAIQQA2AgAgB0EANgIAIAZBADYCACAFQQA2AgAgBEEANgIAIANBADYCACACIAIoAgBBAWs2AgAgASABKAIAQQFrNgIAIABBADYCAA8LENQNAAsQ1Q0AC/4CAQ59IAAgASkCIDcCICAAQShqIAFBKGooAgA2AgAgAioCECEOIAIqAhQhDyACKgIYIRAgASoCECELIAEqAhghDCABKgIUIQ0gAioCCCEGIAEqAgQhAyACKgIEIQcgASoCCCEEIAIqAgwhCSABKgIAIQUgAioCACEIIAEqAgwhCiAAIAEqAhw4AhwgACAHIASUIAkgBZQgCCAKlJKSIAYgA5STOAIAIAAgBiAFlCAHIAqUIAkgA5QgCCAElJOSkjgCBCAAIAYgCpQgCCADlCAJIASUkiAHIAWUk5I4AgggACAJIAqUIAggBZSTIAcgA5STIAYgBJSTOAIMIAAgECAMIAkgDSAIlCALIAeUkyIDIAOSIgOUIAggCyAGlCAMIAiUkyIEIASSIgSUIAcgDCAHlCANIAaUkyIFIAWSIgWUk5KSkjgCGCAAIA8gDSAJIASUIAYgBZQgCCADlJOSkpI4AhQgACAOIAsgCSAFlCAHIAOUIAYgBJSTkpKSOAIQC5IEAQF/QYGJxAAtAAAaQbgEQQgQ3AwiAEUEQEEIQbgEQYirxAAoAgAiAEHPByAAGxEAAAALIABBADYC4AMgAEIANwPYAyAAQgA3A5gCIABBADYCkAIgAEIANwOIAiAAQgA3AwggAEEANgIAIABCADcDGCAAQgA3AzAgAEIANwNIIABCADcDYCAAQgA3A3ggAEIANwOQASAAQSBqQgA3AwAgAEE4akIANwMAIABB0ABqQgA3AwAgAEHoAGpCADcDACAAQYABakIANwMAIABBmAFqQgA3AwAgAEGwAWpCADcDACAAQgA3A6gBIABCADcDwAEgAEHIAWpCADcDACAAQgA3A9gBIABB4AFqQgA3AwAgAEIANwPwASAAQfgBakIANwMAIABCADcDqAIgAEGwAmpCADcDACAAQgA3A8ACIABByAJqQgA3AwAgAEIANwPYAiAAQeACakIANwMAIABBgANqQgA3AwAgAEH4AmpCADcDACAAQgA3A/ACIABCADcDkAMgAEGYA2pCADcDACAAQbADakIANwMAIABCADcDqAMgAEHIA2pCADcDACAAQgA3A8ADIABBAToA6AMgAEIENwOwBCAAQgA3A6gEIABCgICAgMAANwOgBCAAQgQ3A5gEIABCADcDkAQgAEKAgICAwAA3A4gEIABCBDcDgAQgAEIANwP4AyAAQoCAgIDAADcD8AMgAAujAwIKfQF/IwBBEGsiDCQAIAEqAgQhAiABKgIQIQQgASoCACEGIAEqAgwhByABKgIIIQMgASoCFCEJQwAAgD8hCkMAAIA/EJIBIQUCQAJAIAkgA5MiA4wgAyAEIAKTIgJDAAAAAF0iARsiBCAElCAHIAaTIgaMIAYgARsiBiAGlCACjCACIAEbIgIgApSSkiIDQwAAAABeRQ0AQwAAAAAgBZUiByACIAMQkgEiApUiC5QiCUMAAIA/IAWVIgMgBiAClSIFlJMiBiAGlCADIAQgApUiApQgCZMiCSAJlCAHIAWUIgQgByAClCICkyIHIAeUkpIiBUMAAIAoXkUNACAFEJIBIQUgAiADIAuUIASSkiIDQwAAgL9fDQBDAAAAACECQwAAAAAhBCADQwAAgD9gDQEgDEEIaiADEO8EQwAAAD+UEIIBIAYgBZUgDCoCCCIIlCEEIAcgBZUgCJQhAiAJIAWVIAiUIQggDCoCDCEKDAELQwAAAAAhAkMAAAAAIQQLIAAgCjgCDCAAIAQ4AgggACACOAIEIAAgCDgCACAMQRBqJAAL/wICCX0BfyMAQSBrIg8kACACKgIEIgogAyoCDCINlCACKgIAIgsgAyoCECIOlJMiByAHkiEIIAIqAggiByAOlCAKIAMqAhQiBpSTIgwgDJIhCSAPIAYgAioCDCIMIAiUIAogCZQgCyALIAaUIAcgDZSTIgYgBpIiBpSTkpI4AhwgDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIYIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCFCAKIAMqAgAgAioCEJMiDZQgCyADKgIEIAIqAhSTIg6UkyIIIAiSIQggDiAHlCADKgIIIAIqAhiTIgYgCpSTIgkgCZIhCSAPIAYgDCAIlCAKIAmUIAsgBiALlCANIAeUkyIGIAaSIgaUk5KSOAIQIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCDCAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AgggDyABIA9BCGogBCAFEF8gDygCACEBIAAgDyoCBDgCBCAAIAE2AgAgD0EgaiQAC/8CAgl9AX8jAEEgayIPJAAgAioCBCIKIAMqAgwiDZQgAioCACILIAMqAhAiDpSTIgcgB5IhCCACKgIIIgcgDpQgCiADKgIUIgaUkyIMIAySIQkgDyAGIAIqAgwiDCAIlCAKIAmUIAsgCyAGlCAHIA2UkyIGIAaSIgaUk5KSOAIcIA8gDiAMIAaUIAsgCJQgByAJlJOSkjgCGCAPIA0gDCAJlCAHIAaUIAogCJSTkpI4AhQgCiADKgIAIAIqAhCTIg2UIAsgAyoCBCACKgIUkyIOlJMiCCAIkiEIIA4gB5QgAyoCCCACKgIYkyIGIAqUkyIJIAmSIQkgDyAGIAwgCJQgCiAJlCALIAYgC5QgDSAHlJMiBiAGkiIGlJOSkjgCECAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AgwgDyANIAwgCZQgByAGlCAKIAiUk5KSOAIIIA8gASAPQQhqIAQgBRBWIA8oAgAhASAAIA8qAgQ4AgQgACABNgIAIA9BIGokAAv/AgIJfQF/IwBBIGsiDyQAIAIqAgQiCiADKgIMIg2UIAIqAgAiCyADKgIQIg6UkyIHIAeSIQggAioCCCIHIA6UIAogAyoCFCIGlJMiDCAMkiEJIA8gBiACKgIMIgwgCJQgCiAJlCALIAsgBpQgByANlJMiBiAGkiIGlJOSkjgCHCAPIA4gDCAGlCALIAiUIAcgCZSTkpI4AhggDyANIAwgCZQgByAGlCAKIAiUk5KSOAIUIAogAyoCACACKgIQkyINlCALIAMqAgQgAioCFJMiDpSTIgggCJIhCCAOIAeUIAMqAgggAioCGJMiBiAKlJMiCSAJkiEJIA8gBiAMIAiUIAogCZQgCyAGIAuUIA0gB5STIgYgBpIiBpSTkpI4AhAgDyAOIAwgBpQgCyAIlCAHIAmUk5KSOAIMIA8gDSAMIAmUIAcgBpQgCiAIlJOSkjgCCCAPIAEgD0EIaiAEIAUQSiAPKAIAIQEgACAPKgIEOAIEIAAgATYCACAPQSBqJAAL9AICCX0BfyMAQTBrIg0kACABKgIEIgggAioCDCILlCABKgIAIgkgAioCECIMlJMiBSAFkiEGIAEqAggiBSAMlCAIIAIqAhQiBJSTIgogCpIhByANIAQgASoCDCIKIAaUIAggB5QgCSAJIASUIAUgC5STIgQgBJIiBJSTkpI4AhQgDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIQIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCDCAIIAIqAgAgASoCEJMiC5QgCSACKgIEIAEqAhSTIgyUkyIGIAaSIQYgDCAFlCACKgIIIAEqAhiTIgQgCJSTIgcgB5IhByANIAQgCiAGlCAIIAeUIAkgBCAJlCALIAWUkyIEIASSIgSUk5KSOAIIIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCBCANIAsgCiAHlCAFIASUIAggBpSTkpI4AgAgDUEYaiAAIA0gA0EBEMkBIA0oAhghACANQTBqJAAgAEEERwv0AgIJfQF/IwBBMGsiDSQAIAEqAgQiCCACKgIMIguUIAEqAgAiCSACKgIQIgyUkyIFIAWSIQYgASoCCCIFIAyUIAggAioCFCIElJMiCiAKkiEHIA0gBCABKgIMIgogBpQgCCAHlCAJIAkgBJQgBSALlJMiBCAEkiIElJOSkjgCFCANIAwgCiAElCAJIAaUIAUgB5STkpI4AhAgDSALIAogB5QgBSAElCAIIAaUk5KSOAIMIAggAioCACABKgIQkyILlCAJIAIqAgQgASoCFJMiDJSTIgYgBpIhBiAMIAWUIAIqAgggASoCGJMiBCAIlJMiByAHkiEHIA0gBCAKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AgggDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIEIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCACANQRhqIAAgDSADQQEQ2wEgDSgCGCEAIA1BMGokACAAQQRHC/MCAgl9AX8jAEEgayINJAAgASoCBCIIIAIqAgwiC5QgASoCACIJIAIqAhAiDJSTIgUgBZIhBiABKgIIIgUgDJQgCCACKgIUIgSUkyIKIAqSIQcgDSAEIAEqAgwiCiAGlCAIIAeUIAkgCSAElCAFIAuUkyIEIASSIgSUk5KSOAIcIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCGCANIAsgCiAHlCAFIASUIAggBpSTkpI4AhQgCCACKgIAIAEqAhCTIguUIAkgAioCBCABKgIUkyIMlJMiBiAGkiEGIAwgBZQgAioCCCABKgIYkyIEIAiUkyIHIAeSIQcgDSAEIAogBpQgCCAHlCAJIAQgCZQgCyAFlJMiBCAEkiIElJOSkjgCECANIAwgCiAElCAJIAaUIAUgB5STkpI4AgwgDSALIAogB5QgBSAElCAIIAaUk5KSOAIIIA0gACANQQhqIANBARBfIA0oAgAhACANQSBqJAAgAEEBRgv0AgIJfQF/IwBBMGsiDSQAIAEqAgQiCCACKgIMIguUIAEqAgAiCSACKgIQIgyUkyIFIAWSIQYgASoCCCIFIAyUIAggAioCFCIElJMiCiAKkiEHIA0gBCABKgIMIgogBpQgCCAHlCAJIAkgBJQgBSALlJMiBCAEkiIElJOSkjgCFCANIAwgCiAElCAJIAaUIAUgB5STkpI4AhAgDSALIAogB5QgBSAElCAIIAaUk5KSOAIMIAggAioCACABKgIQkyILlCAJIAIqAgQgASoCFJMiDJSTIgYgBpIhBiAMIAWUIAIqAgggASoCGJMiBCAIlJMiByAHkiEHIA0gBCAKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AgggDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIEIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCACANQRhqIAAgDSADQQEQ7gEgDSgCGCEAIA1BMGokACAAQQRHC/MCAgl9AX8jAEEgayINJAAgASoCBCIIIAIqAgwiC5QgASoCACIJIAIqAhAiDJSTIgUgBZIhBiABKgIIIgUgDJQgCCACKgIUIgSUkyIKIAqSIQcgDSAEIAEqAgwiCiAGlCAIIAeUIAkgCSAElCAFIAuUkyIEIASSIgSUk5KSOAIcIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCGCANIAsgCiAHlCAFIASUIAggBpSTkpI4AhQgCCACKgIAIAEqAhCTIguUIAkgAioCBCABKgIUkyIMlJMiBiAGkiEGIAwgBZQgAioCCCABKgIYkyIEIAiUkyIHIAeSIQcgDSAEIAogBpQgCCAHlCAJIAQgCZQgCyAFlJMiBCAEkiIElJOSkjgCECANIAwgCiAElCAJIAaUIAUgB5STkpI4AgwgDSALIAogB5QgBSAElCAIIAaUk5KSOAIIIA0gACANQQhqIANBARBKIA0oAgAhACANQSBqJAAgAEEBRgv0AgIJfQF/IwBBMGsiDSQAIAEqAgQiCCACKgIMIguUIAEqAgAiCSACKgIQIgyUkyIFIAWSIQYgASoCCCIFIAyUIAggAioCFCIElJMiCiAKkiEHIA0gBCABKgIMIgogBpQgCCAHlCAJIAkgBJQgBSALlJMiBCAEkiIElJOSkjgCFCANIAwgCiAElCAJIAaUIAUgB5STkpI4AhAgDSALIAogB5QgBSAElCAIIAaUk5KSOAIMIAggAioCACABKgIQkyILlCAJIAIqAgQgASoCFJMiDJSTIgYgBpIhBiAMIAWUIAIqAgggASoCGJMiBCAIlJMiByAHkiEHIA0gBCAKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AgggDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIEIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCACANQRhqIAAgDSADQQEQzAEgDSgCGCEAIA1BMGokACAAQQRHC/QCAgl9AX8jAEEwayINJAAgASoCBCIIIAIqAgwiC5QgASoCACIJIAIqAhAiDJSTIgUgBZIhBiABKgIIIgUgDJQgCCACKgIUIgSUkyIKIAqSIQcgDSAEIAEqAgwiCiAGlCAIIAeUIAkgCSAElCAFIAuUkyIEIASSIgSUk5KSOAIUIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCECANIAsgCiAHlCAFIASUIAggBpSTkpI4AgwgCCACKgIAIAEqAhCTIguUIAkgAioCBCABKgIUkyIMlJMiBiAGkiEGIAwgBZQgAioCCCABKgIYkyIEIAiUkyIHIAeSIQcgDSAEIAogBpQgCCAHlCAJIAQgCZQgCyAFlJMiBCAEkiIElJOSkjgCCCANIAwgCiAElCAJIAaUIAUgB5STkpI4AgQgDSALIAogB5QgBSAElCAIIAaUk5KSOAIAIA1BGGogACANIANBARDiASANKAIYIQAgDUEwaiQAIABBBEcL9AICCX0BfyMAQTBrIg0kACABKgIEIgggAioCDCILlCABKgIAIgkgAioCECIMlJMiBSAFkiEGIAEqAggiBSAMlCAIIAIqAhQiBJSTIgogCpIhByANIAQgASoCDCIKIAaUIAggB5QgCSAJIASUIAUgC5STIgQgBJIiBJSTkpI4AhQgDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIQIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCDCAIIAIqAgAgASoCEJMiC5QgCSACKgIEIAEqAhSTIgyUkyIGIAaSIQYgDCAFlCACKgIIIAEqAhiTIgQgCJSTIgcgB5IhByANIAQgCiAGlCAIIAeUIAkgBCAJlCALIAWUkyIEIASSIgSUk5KSOAIIIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCBCANIAsgCiAHlCAFIASUIAggBpSTkpI4AgAgDUEYaiAAIA0gA0EBEIYBIA0oAhghACANQTBqJAAgAEEERwvzAgIJfQF/IwBBMGsiDSQAIAEqAgQiCCACKgIMIguUIAEqAgAiCSACKgIQIgyUkyIFIAWSIQYgASoCCCIFIAyUIAggAioCFCIElJMiCiAKkiEHIA0gBCABKgIMIgogBpQgCCAHlCAJIAkgBJQgBSALlJMiBCAEkiIElJOSkjgCFCANIAwgCiAElCAJIAaUIAUgB5STkpI4AhAgDSALIAogB5QgBSAElCAIIAaUk5KSOAIMIAggAioCACABKgIQkyILlCAJIAIqAgQgASoCFJMiDJSTIgYgBpIhBiAMIAWUIAIqAgggASoCGJMiBCAIlJMiByAHkiEHIA0gBCAKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AgggDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIEIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCACANQRhqIAAgDSADQQAQbiANKAIYIQAgDUEwaiQAIABBBEcL8wICCX0BfyMAQSBrIg0kACABKgIEIgggAioCDCILlCABKgIAIgkgAioCECIMlJMiBSAFkiEGIAEqAggiBSAMlCAIIAIqAhQiBJSTIgogCpIhByANIAQgASoCDCIKIAaUIAggB5QgCSAJIASUIAUgC5STIgQgBJIiBJSTkpI4AhwgDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIYIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCFCAIIAIqAgAgASoCEJMiC5QgCSACKgIEIAEqAhSTIgyUkyIGIAaSIQYgDCAFlCACKgIIIAEqAhiTIgQgCJSTIgcgB5IhByANIAQgCiAGlCAIIAeUIAkgBCAJlCALIAWUkyIEIASSIgSUk5KSOAIQIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCDCANIAsgCiAHlCAFIASUIAggBpSTkpI4AgggDSAAIA1BCGogA0EBEFYgDSgCACEAIA1BIGokACAAQQFGC/QCAgl9AX8jAEEwayINJAAgASoCBCIIIAIqAgwiC5QgASoCACIJIAIqAhAiDJSTIgUgBZIhBiABKgIIIgUgDJQgCCACKgIUIgSUkyIKIAqSIQcgDSAEIAEqAgwiCiAGlCAIIAeUIAkgCSAElCAFIAuUkyIEIASSIgSUk5KSOAIUIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCECANIAsgCiAHlCAFIASUIAggBpSTkpI4AgwgCCACKgIAIAEqAhCTIguUIAkgAioCBCABKgIUkyIMlJMiBiAGkiEGIAwgBZQgAioCCCABKgIYkyIEIAiUkyIHIAeSIQcgDSAEIAogBpQgCCAHlCAJIAQgCZQgCyAFlJMiBCAEkiIElJOSkjgCCCANIAwgCiAElCAJIAaUIAUgB5STkpI4AgQgDSALIAogB5QgBSAElCAIIAaUk5KSOAIAIA1BGGogACANIANBARDjASANKAIYIQAgDUEwaiQAIABBBEcL9AICCX0BfyMAQTBrIg0kACABKgIEIgggAioCDCILlCABKgIAIgkgAioCECIMlJMiBSAFkiEGIAEqAggiBSAMlCAIIAIqAhQiBJSTIgogCpIhByANIAQgASoCDCIKIAaUIAggB5QgCSAJIASUIAUgC5STIgQgBJIiBJSTkpI4AhQgDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIQIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCDCAIIAIqAgAgASoCEJMiC5QgCSACKgIEIAEqAhSTIgyUkyIGIAaSIQYgDCAFlCACKgIIIAEqAhiTIgQgCJSTIgcgB5IhByANIAQgCiAGlCAIIAeUIAkgBCAJlCALIAWUkyIEIASSIgSUk5KSOAIIIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCBCANIAsgCiAHlCAFIASUIAggBpSTkpI4AgAgDUEYaiAAIA0gA0EBEPEBIA0oAhghACANQTBqJAAgAEEERwv0AgIJfQF/IwBBMGsiDSQAIAEqAgQiCCACKgIMIguUIAEqAgAiCSACKgIQIgyUkyIFIAWSIQYgASoCCCIFIAyUIAggAioCFCIElJMiCiAKkiEHIA0gBCABKgIMIgogBpQgCCAHlCAJIAkgBJQgBSALlJMiBCAEkiIElJOSkjgCFCANIAwgCiAElCAJIAaUIAUgB5STkpI4AhAgDSALIAogB5QgBSAElCAIIAaUk5KSOAIMIAggAioCACABKgIQkyILlCAJIAIqAgQgASoCFJMiDJSTIgYgBpIhBiAMIAWUIAIqAgggASoCGJMiBCAIlJMiByAHkiEHIA0gBCAKIAaUIAggB5QgCSAEIAmUIAsgBZSTIgQgBJIiBJSTkpI4AgggDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIEIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCACANQRhqIAAgDSADQQEQvAEgDSgCGCEAIA1BMGokACAAQQRHC/QCAgl9AX8jAEEwayINJAAgASoCBCIIIAIqAgwiC5QgASoCACIJIAIqAhAiDJSTIgUgBZIhBiABKgIIIgUgDJQgCCACKgIUIgSUkyIKIAqSIQcgDSAEIAEqAgwiCiAGlCAIIAeUIAkgCSAElCAFIAuUkyIEIASSIgSUk5KSOAIUIA0gDCAKIASUIAkgBpQgBSAHlJOSkjgCECANIAsgCiAHlCAFIASUIAggBpSTkpI4AgwgCCACKgIAIAEqAhCTIguUIAkgAioCBCABKgIUkyIMlJMiBiAGkiEGIAwgBZQgAioCCCABKgIYkyIEIAiUkyIHIAeSIQcgDSAEIAogBpQgCCAHlCAJIAQgCZQgCyAFlJMiBCAEkiIElJOSkjgCCCANIAwgCiAElCAJIAaUIAUgB5STkpI4AgQgDSALIAogB5QgBSAElCAIIAaUk5KSOAIAIA1BGGogACANIANBARDZASANKAIYIQAgDUEwaiQAIABBBEcL5AIBDH0CfSACKgIIIgggAyoCBCIJlCACKgIEIgogAyoCCCIElJMiBiAGkiENIAIqAgAiBiAElCAIIAMqAgAiC5STIgwgDJIhB0MAAAAAIAsgAioCDCIMIA2UIAggB5QgCiAKIAuUIAYgCZSTIgsgC5IiC5STkpIiDiAOlCAEIAwgC5QgCiANlCAGIAeUk5KSIgQgBJSSEJIBIg9DAAAAAFsNABogBCAPlSABKgIEIgSUIQUgDiAPlSAElAshBCAAIAIqAhggBSAMIAYgASoCACAJIAwgB5QgBiALlCAIIA2Uk5KSmCINlCAKIASUkyIHIAeSIgeUIAYgCCAElCAGIAWUkyIJIAmSIgmUIAogCiAFlCAIIA2UkyIFIAWSIgWUk5KSkjgCCCAAIAIqAhQgDSAMIAmUIAggBZQgBiAHlJOSkpI4AgQgACACKgIQIAQgDCAFlCAKIAeUIAggCZSTkpKSOAIAC4ADAQp9IAIqAgAiByAHlCACKgIEIgggCJSSIAIqAggiCSAJlJIgASoCACIFIAWUkyEKQwAAAAAhBQJAAkAgAioCDCILIAuUIAIqAhAiDCAMlJIgAioCFCINIA2UkiIOQwAAAABcBEAgByALlCAIIAyUkiAJIA2UkiEGIApDAAAAAF4gBkMAAAAAXnENASAGIAaUIAogDpSTIgpDAAAAAF0NASAGjCAKEJIBkyAOlSIFQwAAAABfIQFDAAAAACAFIAEbIQUgAUUiASECIAENAiAEDQIgCpEgBpMgDpUhBUEAIQIMAgtBACECIApDAAAAAF5FDQELIABBBDYCAA8LIAkgDSAFlJIiCSAJlCAHIAsgBZSSIgcgB5QgCCAMIAWUkiIIIAiUkpIQkgEhBiADIAVgRQRAIABBBDYCAA8LIAAgBTgCCCAAQgI3AgAgACAJIAaVIgMgA4wgAhs4AhQgACAIIAaVIgMgA4wgAhs4AhAgACAHIAaVIgMgA4wgAhs4AgwL+wIBA38CQAJAAkACQAJAAkAgByAIVgRAIAcgCH0gCFgNAQJAIAYgByAGfVQgByAGQgGGfSAIQgGGWnFFBEAgBiAIVg0BDAgLIAIgA0kNAwwGCyAGIAh9IgYgByAGfVQNBiACIANJDQMgASELAkADQCADIAlGDQEgCUEBaiEJIAtBAWsiCyADaiIKLQAAQTlGDQALIAogCi0AAEEBajoAACADIAlrQQFqIANPDQUgCkEBakEwIAlBAWsQ5w0aDAULAn9BMSADRQ0AGiABQTE6AABBMCADQQFGDQAaIAFBAWpBMCADQQFrEOcNGkEwCyEJIARBAWrBIQQgAiADTQ0EIAQgBcFMDQQgASADaiAJOgAAIANBAWohAwwECyAAQQA2AgAPCyAAQQA2AgAPCyADIAJB4OXDABDFDQALIAMgAkHA5cMAEMUNAAsgAiADTw0AIAMgAkHQ5cMAEMUNAAsgACAEOwEIIAAgAzYCBCAAIAE2AgAPCyAAQQA2AgALggMBBH8gACgCBCECIAAoAggiAwRAIAIhAQNAAkAgASgCAEUNACABQQRqKAIAIgRFDQAgBBC2CQsgAUEsaiEBIANBAWsiAw0ACwsgACgCACIBBEAgAiABQSxsQQQQvg0LIAAoAhQhAiAAKAIYIgMEQCACIQEDQCABEN4HIAFBQGshASADQQFrIgMNAAsLIAAoAhAiAQRAIAIgAUEGdEEEEL4NCwJAIAAoAiwiAUUNACABIAFBAnRBC2pBeHEiAWpBCWoiAkUNACAAKAIoIAFrIAJBCBC+DQsgACgCHCIBBEAgACgCICABQQR0QQQQvg0LIAAoAjwhAiAAKAJAIgMEQCACIQEDQCABKAIAELYJIAFBBGohASADQQFrIgMNAAsLIAAoAjgiAQRAIAIgAUECdEEEEL4NCwJAIAAoAlQiAUUNACABIAFBAnRBC2pBeHEiAWpBCWoiAkUNACAAKAJQIAFrIAJBCBC+DQsgACgCRCIBBEAgACgCSCABQQR0QQQQvg0LC4gDARZ9IAFBHGoqAgAhDiABQRhqKgIAIQQgAUEUaioCACEFIAFBLGoqAgAhDyABQShqKgIAIQYgAUEkaioCACEHIAEqAhAhECABKgIgIREgASoCDCESIAEqAgghCCABKgIEIQkgASoCACETIAEqAjwhFCABKgI4IQogASoCNCELIAEqAjAhFSABKgJMIRYgASoCSCEMIAEqAkQhDSABKgJAIRcgACABKgJQIgIgASoCVCIDIAIgA2AbIgIgASoCWCIDIAIgA2AbIgIgASoCXCIDIAIgA2AbOAIUIAAgFyANIA0gF18bIg0gDCAMIA1fGyIMIBYgDCAWYBs4AhAgACAVIAsgCyAVXxsiCyAKIAogC18bIgogFCAKIBRgGzgCDCAAIBMgCSAJIBNgGyIJIAggCCAJYBsiCCASIAggEl8bOAIAIAAgESAHIAcgEWAbIgcgBiAGIAdgGyIGIA8gBiAPXxs4AgggACAQIAUgBSAQYBsiBSAEIAQgBWAbIgQgDiAEIA5fGzgCBAvCHAMcfwl9BH4jAEEgayIWJAACQAJAAkAgAEUNACAAKAIAIhJBf0YNASAAIBJBAWo2AgAgAUUNACABKAIAIhJBf0YNASABIBJBAWo2AgAgAkUNACACKAIAIhJBf0YNASACIBJBAWo2AgAgA0UNACADKAIAIhJBf0YNASADIBJBAWo2AgAgBEUNACAEKAIAIhJBf0YNASAEIBJBAWo2AgAgFiAONgIMQQAhDiAWQRBqIR8gAEEEaiERIAFBBGohEyACQQRqIRQgA0EEaiEXIARBBGohGCAGQQBHIRUgCEEARyEGIApBAEetITYgDEEAR60hN0EAIRIjAEHgAGsiECQAIA29ITQgC70hNQJAIBZBDGoiCCgCABAEQQFGBEAgECAINgIUIBBBsLfAADYCRCAQIDc+AjAgECA2PgIkIBAgCUH//wNxNgIgIBAgCUEQdjYCHCAQIAY2AhggECAHQQAgB0EgSRs2AjwgECA0PgI0IBAgNEIgiD4COCAQIDU+AiggECA1QiCIPgIsIBAgEEEUajYCQAwBCyAQQbC3wAA2AkQgECA3PgIwIBAgNj4CJCAQIAlB//8DcTYCICAQIAlBEHY2AhwgECA0PgI0IBAgNEIgiD4COCAQIDU+AiggECA1QiCIPgIsIBBBADYCQCAQIAY2AhggECAHQQAgB0EgSRs2AjwLIBBByABqIgpBCGogF0EIaigCADYCACAQQdwAaiAYQQhqKAIANgIAIBAgFykCADcDSCAQIBgpAgA3AlRBACEIQQAhCUEAIRdBACEYIwBBsAJrIg8kACAPQSBqIgZBCGogEEEYaiIHQQhqKQIANwMAIAZBEGogB0EQaikCADcDACAGQRhqIAdBGGopAgA3AwAgBkEgaiAHQSBqKQIANwMAIAZBKGogB0EoaikCADcDACAPIBQ2AlggDyATNgJUIA8gETYCUCAPIAcpAgA3AyAgD0HgAGogChCQByAPIBU6AMwBIA8gBTgCyAEgDyAKNgLEASAPIAY2AsABIBBBBGoiIAJ/QQAgESgCaCIZRQ0AGiAPQQA2AuABIA9CgICAgMAANwLYASAPQdgBaiIGENAGIA8oAtwBQoCAgIDw////fjcCAEEBIQcgD0EBNgLgASAPQeQBaiAGEMMDIA8oAuQBBEAgESgCiAEhHCARKAKMASEVIBEoAmQhKkP//39/IQUDQCAFIA8qAuwBjF9FBEACfwJAIA8oAugBIgYgGUkEQCAqIAZBB3RqIhQtAHhBAXEiKARAIBQoAmwiByAVSSEGIBwgB0EEdGpBACAGG0EIakEAIAYbISEgFCgCaCIHIBVJIQYgHCAHQQR0akEAIAYbQQhqQQAgBhshIiAUKAJkIgcgFUkhBiAcIAdBBHRqQQAgBhtBCGpBACAGGyEjIBQoAmAiByAVSSEGIBwgB0EEdGpBACAGG0EIakEAIAYbIR0LIA8gDyoCyAEiKzgCrAIgDyArOAKoAiAPICs4AqQCIA8gKzgCoAIgD0GAAmogFCAPQeAAaiAPQaACahDaASAPIA8pA4ACNwPwASAPIA8pA4gCNwP4ASAPKgKQAiEsIA8qApQCISsgDyoCmAIhLSAPKgKcAiEuICgEQCAPIAUgLl46AKMCIA8gBSAtXjoAogIgDyAFICteOgChAiAPIAUgLF46AKACIA9BgAJqIA9B8AFqIA9BoAJqENwJIA8tAIACIA8tAIECQQF0ciAPLQCCAkECdHIgDy0AgwJBA3RyIhOtIjVC/wGDITRDAAAAACErQQAhEUEAIQZDAAAAACEsIDVCAYNQDQIgHUUNAiAdKAIAIiQgDygCwAEiCigCOCIHKAIQTw0CIAcoAgwgJEGoAWxqIgcoAgBFDQIgHSgCBCIXIAcoAgRHDQIgDygCxAEhDCAKIAooAjQiEkEMaigCACASQRBqKAIAICQgFyAHQQhqEMcERQ0CIA9BGGogBygCOCAHKAI8IgooAghBAWtBeHFqQQhqIAdB/ABqIAwgDyoCyAEgDy0AzAEgCigCGBEJACAPKAIYQQFHDQJBASEGIA8qAhwiMCEsDAILIA8oAvABIgZBGHYhGiAGQRB2IQcgBkEIdiERQQEhG0EAIRNBACEMQQAMAgsgBiAZQfDdwAAQmQkACwJAIDRCAoNQDQAgI0UNACAjKAIAIiUgDygCwAEiCigCOCIHKAIQTw0AIAcoAgwgJUGoAWxqIgcoAgBFDQAgIygCBCIYIAcoAgRHDQAgDygCxAEhDCAKIAooAjQiEkEMaigCACASQRBqKAIAICUgGCAHQQhqEMcERQ0AIA9BEGogBygCOCAHKAI8IgooAghBAWtBeHFqQQhqIAdB/ABqIAwgDyoCyAEgDy0AzAEgCigCGBEJACAPKAIQQQFHDQAgDyoCFCErQQEhEQtDAAAAACEuQQAhGkMAAAAAIS0Cf0EAIDRCBINQDQAaQQAgIkUNABpBACAiKAIAIiYgDygCwAEiDCgCOCIKKAIQTw0AGkEAIAooAgwgJkGoAWxqIgooAgBFDQAaQQAgIigCBCISIAooAgRHDQAaIA8oAsQBIRtBACAMIAwoAjQiDEEMaigCACAMQRBqKAIAICYgEiAKQQhqEMcERQ0AGiAPQQhqIAooAjggCigCPCIHKAIIQQFrQXhxakEIaiAKQfwAaiAbIA8qAsgBIA8tAMwBIAcoAhgRCQBBACAPKAIIQQFHDQAaIA8qAgwhLUEBCyEHQQEhGwJAIBNB/wFxQQhJDQAgIUUNACAhKAIAIicgDygCwAEiDCgCOCIKKAIQTw0AIAooAgwgJ0GoAWxqIgooAgBFDQAgISgCBCIpIAooAgRHDQAgDygCxAEhEyAMIAwoAjQiDEEMaigCACAMQRBqKAIAICcgKSAKQQhqEMcERQ0AIA8gCigCOCAKKAI8IgwoAghBAWtBeHFqQQhqIApB/ABqIBMgDyoCyAEgDy0AzAEgDCgCGBEJACAPKAIAQQFHDQBBACEbQQEhGiAPKgIEIi4hMQsgLSEyICshMyAHIRMgESEMIAYLIQogBkEBcSIGIBpBA3RBCHFyIRogB0ECdK1CBIMhNCARQQF0rUICgyE1AkACQAJAICgEQCAGRQ0CIAUgLF5FDQIgCg0BDAILAkAgBkUNACAUKAJgIgwgGU8NACAsjCEsIA8oAuABIgYgDygC2AFGBEAgD0HYAWoQ0AYLIA8oAtwBIgogBkEDdGoiByAsOAIEIAcgDDYCACAPIAZBAWo2AuABAkAgBkUEQEEAIQcMAQsDQCAKIAZBAWsiEUEBdiIHQQN0aiITQQRqKgIAICxdRQRAIAYhBwwCCyAKIAZBA3RqIBMpAgA3AgAgByEGIBFBAUsNAAsLIAogB0EDdGoiBiAsOAIEIAYgDDYCAAsCQCA1UA0AIBQoAmQiDCAZTw0AICuMISsgDygC4AEiBiAPKALYAUYEQCAPQdgBahDQBgsgDygC3AEiCiAGQQN0aiIHICs4AgQgByAMNgIAIA8gBkEBajYC4AECQCAGRQRAQQAhBwwBCwNAIAogBkEBayIRQQF2IgdBA3RqIhNBBGoqAgAgK11FBEAgBiEHDAILIAogBkEDdGogEykCADcCACAHIQYgEUEBSw0ACwsgCiAHQQN0aiIGICs4AgQgBiAMNgIACwJAIDRQDQAgFCgCaCIMIBlPDQAgLYwhKyAPKALgASIGIA8oAtgBRgRAIA9B2AFqENAGCyAPKALcASIKIAZBA3RqIgcgKzgCBCAHIAw2AgAgDyAGQQFqNgLgAQJAIAZFBEBBACEHDAELA0AgCiAGQQFrIhFBAXYiB0EDdGoiE0EEaioCACArXUUEQCAGIQcMAgsgCiAGQQN0aiATKQIANwIAIAchBiARQQFLDQALCyAKIAdBA3RqIgYgKzgCBCAGIAw2AgALIBpBCEkNAiAUKAJsIgwgGU8NAiAujCErIA8oAuABIgogDygC2AFGBEAgD0HYAWoQ0AYLIA8oAtwBIgYgCkEDdGoiByArOAIEIAcgDDYCACAPIApBAWo2AuABAkAgCkUEQEEAIQcMAQsDQCAGIApBAWsiEUEBdiIHQQN0aiITQQRqKgIAICtdRQRAIAohBwwCCyAGIApBA3RqIBMpAgA3AgAgByEKIBFBAUsNAAsLIAYgB0EDdGoiBiArOAIEIAYgDDYCAAwCCyAUKAJgIBVPDQBBASEeICQhCCAXIQkgMCEvICwhBQsCQCAMRQ0AIDVQDQAgBSArXkUNACAUKAJkIBVPDQBBASEeICUhCCAYIQkgMyEvICshBQsCQCATRQ0AIDRQDQAgBSAtXkUNACAUKAJoIBVPDQBBASEeICYhCCASIQkgMiEvIC0hBQsgGkEISQ0AIAUgLl5FDQAgGw0AIBQoAmwgFU8NAEEBIR4gJyEIICkhCSAxIS8gLiEFCyAPQeQBaiAPQdgBahDDAyAPKALkAQ0BCwsgHkUhBwsgDygC2AEiBgRAIA8oAtwBIAZBA3RBBBC+DQtBACAHDQAaICAgLzgCDCAgIAk2AgggICAINgIEQQELNgIAIA9BsAJqJAAgHyAQKAIEBH8gECkCCCE0IB8gECoCEDgCDCAfIDQ3AgRBAQVBAAs2AgAgEEHgAGokACAEIAQoAgBBAWs2AgAgAyADKAIAQQFrNgIAIAIgAigCAEEBazYCACABIAEoAgBBAWs2AgAgACAAKAIAQQFrNgIAIBYoAhAEQEGBicQALQAAGkEQQQQQ3AwiDkUNAyAOQQA2AgAgDiAWKQIUNwIEIA5BDGogFkEcaigCADYCAAsgFkEgaiQAIA4PCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALsAMCCn8DfgJAAkACQAJAAkAgACgCCCIDDgIDAAELIAEoAgAgACgCBCIAKAIERw0CIAEoAgQgACgCCEcNAiABKAIIIAAoAgxHDQIMAQsgACgCDCIHQQRrIQggASgCCCIJIAEoAgQiCiABKAIAIgtBysqfiXpzQbnz3fF5bEEFd3NBufPd8XlsQQV3c0G5893xeWwiAkEZdq1CgYKEiJCgwIABfiEOIAAoAhAhASAAKAIEIQADQAJAIAEgAnEiBiAHaikAACINIA6FIgxCgYKEiJCgwIABfSAMQn+Fg0KAgYKEiJCgwIB/gyIMUA0AA0AgCCAMeqdBA3YgBmogAXFBAnRrKAIAIgIgA0kEQAJAIAsgACACQRRsaiIEKAIERw0AIAogBEEEaiIEKAIERw0AIAkgBCgCCEYNBQsgDEIBfSAMgyIMQgBSDQEMAgsLIAIgA0HE9sAAEJkJAAsgDSANQgGGg0KAgYKEiJCgwIB/g0IAUgRAQQAPBSAGIAVBCGoiBWohAgwBCwALAAsgAiADTw0BIAAgAkEUbGpBEGohAgsgAg8LIAIgA0HQ9cAAEJkJAAukAwEEfyMAQUBqIgUkAAJAAkACQCAARQ0AIAAoAgAiBkF/Rg0BIAAgBkEBajYCACABRQ0AIAEoAgAiBkF/Rg0BIAEgBkEBajYCACACRQ0AIAIoAgAiBkF/Rg0BIAIgBkEBajYCACADRQ0AIAMoAgAiBkF/Rg0BIAMgBkEBajYCACAFQRBqIgZBCGogAkEEaiIHQQhqKQIANwMAIAUgBykCADcDECAFQShqIAFBBGoiB0EIaigCADYCACAFIAcpAgA3AyAgBUEwaiIHQQhqIANBDGooAgA2AgAgBSADKQIENwMwIAUgACgCBCAAKAIIIggoAghBAWtBeHFqQQhqIAYgByAEQQBHIAgoAjwRBwAgAyADKAIAQQFrNgIAIAIgAigCAEEBazYCACABIAEoAgBBAWs2AgAgACAAKAIAQQFrNgIAQYGJxAAtAAAaQRRBBBDcDCIARQ0CIABBADYCACAAIAUpAgA3AgQgAEEMaiAFQQhqKQIANwIAIAVBQGskACAADwsQ1A0ACxDVDQALQQRBFEGIq8QAKAIAIgBBzwcgABsRAAAAC5ADAQZ/IwBBQGoiByQAAkACQCAARQ0AIAAoAgAiBkF/Rg0BIAAgBkEBajYCACABRQ0AIAEoAgAiBkF/Rg0BIAEgBkEBajYCACACRQ0AIAIoAgAiBkF/Rg0BIAIgBkEBajYCACADRQ0AIAMoAgAiBkF/Rg0BIAMgBkEBajYCACAERQ0AIAQoAgAiBkF/Rg0BIAQgBkEBajYCACAHQQhqIgZBCGogAkEMaikCADcDACAHIAIpAgQ3AwggB0EgaiABQQxqKAIANgIAIAcgASkCBDcDGCAAKAIEIQggACgCCCIJKAIIIQogB0EoaiILQQhqIANBDGooAgA2AgAgByADKQIENwMoIAdBPGogBEEMaigCADYCACAHIAQpAgQ3AjQgCCAKQQFrQXhxakEIaiAGIAsgBSAJKAIgERIAIQYgBCAEKAIAQQFrNgIAIAMgAygCAEEBazYCACACIAIoAgBBAWs2AgAgASABKAIAQQFrNgIAIAAgACgCAEEBazYCACAHQUBrJAAgBg8LENQNAAsQ1Q0AC/QbAxV/JH0EfiMAQSBrIhUkAAJAAkAgAUUNACABKAIAIg9Bf0YNASABIA9BAWo2AgAgAkUNACACKAIAIg9Bf0YNASACIA9BAWo2AgAgA0UNACADKAIAIg9Bf0YNASADIA9BAWo2AgAgBEUNACAEKAIAIg9Bf0YNASAEIA9BAWo2AgAgBUUNACAFKAIAIg9Bf0YNASAFIA9BAWo2AgAgBkUNACAGKAIAIg9Bf0YNASAGIA9BAWo2AgAgFSAONgIcIBVBCGohGSABQQRqIQ4gAkEEaiEXIANBBGohECAEQQRqIQ8gBUEEaiERIAZBBGohEiAIQQBHIQggCkEAR60hSiAMQQBHrSFLIwBB4ABrIgokACANvSFIIAu9IUkCQCAVQRxqIgwoAgAQBEEBRgRAIAogDDYCBCAKQbC3wAA2AjQgCiBLPgIgIAogSj4CFCAKIAlB//8DcTYCECAKIAlBEHY2AgwgCiAINgIIIAogB0EAIAdBIEkbNgIsIAogSD4CJCAKIEhCIIg+AiggCiBJPgIYIAogSUIgiD4CHCAKIApBBGo2AjAMAQsgCkGwt8AANgI0IAogSz4CICAKIEo+AhQgCiAJQf//A3E2AhAgCiAJQRB2NgIMIAogSD4CJCAKIEhCIIg+AiggCiBJPgIYIAogSUIgiD4CHCAKQQA2AjAgCiAINgIIIAogB0EAIAdBIEkbNgIsCyAKQThqIgdBCGogEUEIaikCADcDACAKQdAAaiAPQQhqKAIANgIAIAogESkCADcDOCAKIA8pAgA3A0ggEigCACASKAIEIh0oAghBAWtBeHFqQQhqIR4jAEGQAmsiCSQAIAlBCGoiDEEIaiAKQQhqIghBCGopAgA3AwAgDEEQaiAIQRBqKQIANwMAIAxBGGogCEEYaikCADcDACAMQSBqIAhBIGopAgA3AwAgDEEoaiAIQShqKQIANwMAIAkgEDYCQCAJIBc2AjwgCSAONgI4IAkgCCkCADcDCCAOKAKQASEMIA4oApQBIh8oAgghESAJQeAAaiAeIAcgHSgCkAERAQAgCkHUAGoiFwJ/QQAgDigCaCIPRQ0AGiAJKgJoISggCSoCdCEpIAkqAmQhKiAJKgJwISQgCSoCYCElIAkqAmwhJiAJQQA2AlAgCUKAgICAwAA3AkggCUHIAGoiCBDQBiAJKAJMQoCAgIDw////fjcCACAJQQE2AlAgCUHUAGogCBDDAwJAIAkoAlRFDQAgDCARQQFrQXhxakEIaiEgICkgKJNDAAAAP5QhLCAkICqTQwAAAD+UIS0gJiAlk0MAAAA/lCEuICggKZJDAAAAv5QhKCAqICSSQwAAAL+UISkgJSAmkkMAAAC/lCEqIAcqAgwhMSAHKgIIITIgByoCBCEzIAcqAgAhNCAHKgIYITcgByoCFCE4IAcqAhAhOSAOKAKIASERIA4oAowBIRIgDigCZCEhA0AgCSoCXEP//3//Xw0BAkACQCAJKAJYIgcgD0kEQCAhIAdBB3RqIgwtAHhBAXEiDgRAIAwoAmwiCCASSSEHIBEgCEEEdGpBACAHG0EIakEAIAcbIRogDCgCaCIIIBJJIQcgESAIQQR0akEAIAcbQQhqQQAgBxshGyAMKAJkIgggEkkhByARIAhBBHRqQQAgBxtBCGpBACAHGyEcIAwoAmAiCCASSSEHIBEgCEEEdGpBACAHG0EIakEAIAcbIRgLIAwqAgAhJCAMKgIEISUgDCoCCCEmIAwqAgwhJyAMKgIQIS8gDCoCFCEwIAwqAhghNSAMKgIcITYgDCoCICErIAwqAiQhOiAMKgIoITsgDCoCLCE8IAwqAjAhPSAMKgI0IT4gDCoCOCE/IAwqAjwhQCAMKgJAIUEgDCoCRCFCIAwqAkghQyAMKgJMIUQgDCoCUCFFIAwqAlQhRiAMKgJYIUcgCSAsICggDCoCXJKSOAK8ASAJICwgKCBHkpI4ArgBIAkgLCAoIEaSkjgCtAEgCSAsICggRZKSOAKwASAJIC0gKSBEkpI4AqwBIAkgLSApIEOSkjgCqAEgCSAtICkgQpKSOAKkASAJIC0gKSBBkpI4AqABIAkgLiAqIECSkjgCnAEgCSAuICogP5KSOAKYASAJIC4gKiA+kpI4ApQBIAkgLiAqID2SkjgCkAEgCSAoIDySICyTOAKMASAJICggO5IgLJM4AogBIAkgKCA6kiAskzgChAEgCSAoICuSICyTOAKAASAJICkgNpIgLZM4AnwgCSApIDWSIC2TOAJ4IAkgKSAwkiAtkzgCdCAJICkgL5IgLZM4AnAgCSAqICeSIC6TOAJsIAkgKiAmkiAukzgCaCAJICogJZIgLpM4AmQgCSAqICSSIC6TOAJgIAlBwAFqIAlB4ABqELoCIAkqAsABIidD//9/f10hCCAJKgLMASEkIAkqAsgBISUgCSoCxAEhJiAORQ0BQQAhByAJQQA2AvABIAlCgICAgMAANwLoASAJIBo2AuQBIAkgGzYC4AEgCSAcNgLcASAJIBg2AtgBICZD//9/f11BAXQgJUP//39/XUECdHIgJEP//39/XUEDdHIgCHKtIUlCACFIIAkoAkAhDiAJKAI8IhZBDGohEwNAAkAgCUHYAWogB2ooAgAiEEUNAEIBIEiGIEmDUA0AIBAoAgAiDCAOKAIQTw0AIA4oAgwgDEGoAWxqIggoAgBFDQAgECgCBCIQIAgoAgRHDQAgCUEIaiATKAIAIBZBEGooAgAgDCAQIAhBCGoQxwRFDQAgCCgCOCEUIAgoAjwiIigCCCEjIAkgCCoChAEiJCAylCAIKgKAASIlIDOUIAgqAnwiJiA0lCAIKgKIASInIDGUkpKSOAKAAiAJICUgNJQgJyAylCAmIDOUk5IgJCAxlJM4AvwBIAkgJyAzlCAmIDKUkiAlIDGUkyAkIDSUkzgC+AEgCSAkIDOUICcgNJQgJiAxlJMgJSAylJOSOAL0ASAlIDkgCCoCjAGTIjWUICYgOCAIKgKQAZMiNpSTIi8gL5IhLyAkIDaUICUgNyAIKgKUAZMiK5STIjAgMJIhMCAJICsgJyAvlCAlIDCUICYgJiArlCAkIDWUkyIrICuSIiuUk5KSOAKMAiAJIDYgJyArlCAmIC+UICQgMJSTkpI4AogCIAkgNSAnIDCUICQgK5QgJSAvlJOSkjgChAIgICAJQfQBaiAUICNBAWtBeHFqQQhqICIgHiAdIB8oAgwRGABBAXFFDQAgCSgCSCIHBEAgCSgCTCAHQQN0QQQQvg0LIBcgEDYCCCAXIAw2AgRBAQwHCyBIQgF8IUggB0EEaiIHQRBHDQALDAILIAcgD0Hw3cAAEJkJAAsCQCAmQ///f39dQQF0ICVD//9/f11BAnRyICRD//9/f11BA3RyIAhyIhatIkhCAYNQDQAgDCgCYCIQIA9PDQAgJ4whJyAJKAJQIgcgCSgCSEYEQCAJQcgAahDQBgsgCSgCTCIOIAdBA3RqIgggJzgCBCAIIBA2AgAgCSAHQQFqNgJQAkAgB0UEQEEAIQgMAQsDQCAOIAdBAWsiE0EBdiIIQQN0aiIUQQRqKgIAICddRQRAIAchCAwCCyAOIAdBA3RqIBQpAgA3AgAgCCEHIBNBAUsNAAsLIA4gCEEDdGoiByAnOAIEIAcgEDYCAAsCQCBIQgKDUA0AIAwoAmQiECAPTw0AICaMISYgCSgCUCIHIAkoAkhGBEAgCUHIAGoQ0AYLIAkoAkwiDiAHQQN0aiIIICY4AgQgCCAQNgIAIAkgB0EBajYCUAJAIAdFBEBBACEIDAELA0AgDiAHQQFrIhNBAXYiCEEDdGoiFEEEaioCACAmXUUEQCAHIQgMAgsgDiAHQQN0aiAUKQIANwIAIAghByATQQFLDQALCyAOIAhBA3RqIgcgJjgCBCAHIBA2AgALAkAgSEIEg1ANACAMKAJoIhAgD08NACAljCElIAkoAlAiByAJKAJIRgRAIAlByABqENAGCyAJKAJMIg4gB0EDdGoiCCAlOAIEIAggEDYCACAJIAdBAWo2AlACQCAHRQRAQQAhCAwBCwNAIA4gB0EBayITQQF2IghBA3RqIhRBBGoqAgAgJV1FBEAgByEIDAILIA4gB0EDdGogFCkCADcCACAIIQcgE0EBSw0ACwsgDiAIQQN0aiIHICU4AgQgByAQNgIACyAWQQhJDQAgDCgCbCIOIA9PDQAgJIwhJCAJKAJQIgcgCSgCSEYEQCAJQcgAahDQBgsgCSgCTCIMIAdBA3RqIgggJDgCBCAIIA42AgAgCSAHQQFqNgJQAkAgB0UEQEEAIQgMAQsDQCAMIAdBAWsiEEEBdiIIQQN0aiIWQQRqKgIAICRdRQRAIAchCAwCCyAMIAdBA3RqIBYpAgA3AgAgCCEHIBBBAUsNAAsLIAwgCEEDdGoiByAkOAIEIAcgDjYCAAsgCUHUAGogCUHIAGoQwwMgCSgCVA0ACwsgCSgCSCIHBEAgCSgCTCAHQQN0QQQQvg0LQQALNgIAIAlBkAJqJAAgCigCVCEHIBkgCisCWDkDCCAZIAetNwMAIApB4ABqJAAgFSsDECELIBU1AgghSCAGIAYoAgBBAWs2AgAgBSAFKAIAQQFrNgIAIAQgBCgCAEEBazYCACADIAMoAgBBAWs2AgAgAiACKAIAQQFrNgIAIAEgASgCAEEBazYCACAARAAAAAAAAAAAIAsgSFAbOQMIIAAgSEIAUjYCACAVQSBqJAAPCxDUDQALENUNAAuOAwEKfyACBEACfyACQQFrIgpFBEAgAygCCAwBCyADKAIIIgRBDGwhAiAKIQsgACEFIAEhBwNAIAQiDCADKAIAIg1GBEAgAxDOBiADKAIAIQ0LIAMgDEEBaiIENgIIIAMoAgQiCCACaiIGIAdBAWoiCTYCACAGQQhqIAU2AgAgBkEEaiAFQQFqIgY2AgAgBCANRgRAIAMQzgYgAygCBCEICyADIARBAWoiBDYCCCACIAhqIghBFGogCTYCACAIQRBqIAc2AgAgCEEMaiAFNgIAIAJBGGohAiAGIQUgCSEHIAtBAWsiCw0ACyAMQQJqCyECIAAgCmohCSACIAMoAgAiBEYEQCADEM4GIAMoAgAhBAsgAyACQQFqIgY2AgggAygCBCIFIAJBDGxqIgcgCTYCCCAHIAA2AgQgByABNgIAIAQgBkYEQCADEM4GIAMoAgQhBQsgAyACQQJqNgIIIAUgBkEMbGoiACABNgIIIAAgASAKajYCBCAAIAk2AgAPC0Hws8MAQR1BgLXDABD8CgAL5wICCX0BfyMAQSBrIg0kACACKgIEIgggAyoCACILlCACKgIAIgkgAyoCBCIMlJMiBSAFkiEGIAIqAggiBSAMlCAIIAMqAggiBJSTIgogCpIhByANIAQgAioCDCIKIAaUIAggB5QgCSAJIASUIAUgC5STIgQgBJIiBJSTkpI4AhAgDSAMIAogBJQgCSAGlCAFIAeUk5KSOAIMIA0gCyAKIAeUIAUgBJQgCCAGlJOSkjgCCCANQRRqIAEgDUEIahCrAyAJIA0qAhgiC5QgCCANKgIUIgyUkyIGIAaSIQYgBSAMlCAJIA0qAhwiBJSTIgcgB5IhByAAIAIqAhggBCAKIAaUIAkgB5QgCCAIIASUIAUgC5STIgQgBJIiBJSTkpKSOAIIIAAgAioCFCALIAogB5QgBSAElCAJIAaUk5KSkjgCBCAAIAIqAhAgDCAKIASUIAggBpQgBSAHlJOSkpI4AgAgDUEgaiQAC+kCAQV/AkBBzf97QRAgACAAQRBNGyIAayABTQ0AQRAgAUELakF4cSABQQtJGyIEIABqQQxqEDMiAkUNACACQQhrIQECQCAAQQFrIgMgAnFFBEAgASEADAELIAJBBGsiBSgCACIGQXhxIABBACACIANqQQAgAGtxQQhrIgAgAWtBEE0bIABqIgAgAWsiAmshAyAGQQNxBEAgACADIAAoAgRBAXFyQQJyNgIEIAAgA2oiAyADKAIEQQFyNgIEIAUgAiAFKAIAQQFxckECcjYCACABIAJqIgMgAygCBEEBcjYCBCABIAIQ0gMMAQsgASgCACEBIAAgAzYCBCAAIAEgAmo2AgALAkAgACgCBCIBQQNxRQ0AIAFBeHEiAiAEQRBqTQ0AIAAgBCABQQFxckECcjYCBCAAIARqIgEgAiAEayIEQQNyNgIEIAAgAmoiAiACKAIEQQFyNgIEIAEgBBDSAwsgAEEIaiEDCyADC5QDAQF/AkACQCAARQ0AIAAoAgANASAAQX82AgAgAUUNACABKAIAIgtBf0YNASABIAtBAWo2AgAgAkUNACACKAIAIgtBf0YNASACIAtBAWo2AgAgA0UNACADKAIADQEgA0F/NgIAIARFDQAgBCgCAA0BIARBfzYCACAFRQ0AIAUoAgANASAFQX82AgAgBkUNACAGKAIADQEgBkF/NgIAIAdFDQAgBygCAA0BIAdBfzYCACAIRQ0AIAgoAgANASAIQX82AgAgCUUNACAJKAIADQEgCUF/NgIAIApFDQAgCigCAA0BIApBfzYCACAAQQhqIAFBBGogAkEEaiADQQRqIARBBGogBUEEaiAGQQRqIAdBBGogCEEEaiAJQQRqIApBBGpBAUGEu8AAQQFBnLvAABAaIApBADYCACAJQQA2AgAgCEEANgIAIAdBADYCACAGQQA2AgAgBUEANgIAIARBADYCACADQQA2AgAgAiACKAIAQQFrNgIAIAEgASgCAEEBazYCACAAQQA2AgAPCxDUDQALENUNAAuOAwEBfwJAIAIEQCABLQAAQTBNDQEgBUECOwEAAkACQAJAAkAgA8EiBkEASgRAIAUgATYCBCADQf//A3EiAyACSQ0CIAVBADsBDCAFIAI2AgggBUEQaiADIAJrNgIAIAQNAUECIQEMBAsgBUECOwEYIAVBADsBDCAFQQI2AgggBUGJ58MANgIEIAVBIGogAjYCACAFQRxqIAE2AgAgBUEQakEAIAZrIgM2AgBBAyEBIAIgBE8NAyAEIAJrIgIgA00NAyACIAZqIQQMAgsgBUECOwEYIAVBIGpBATYCACAFQRxqQYjnwwA2AgAMAQsgBUECOwEYIAVBAjsBDCAFIAM2AgggBUEgaiACIANrIgI2AgAgBUEcaiABIANqNgIAIAVBFGpBATYCACAFQRBqQYjnwwA2AgBBAyEBIAIgBE8NASAEIAJrIQQLIAVBADsBJCAFQShqIAQ2AgBBBCEBCyAAIAE2AgQgACAFNgIADwtB8OPDAEEhQZTmwwAQ/AoAC0Gk5sMAQR9BxObDABD8CgAL6AIBC30gAioCACIHIAMqAggiCJQgAioCCCIJIAMqAgAiBZSTIgQgBJIhDCACKgIEIgQgBZQgByADKgIEIgqUkyILIAuSIQYgByAKIAIqAgwiCyAMlCAHIAaUIAkgCSAKlCAEIAiUkyIKIAqSIgqUk5KSvEGAgICAeHEgASgCBEH/////B3FyviINlCAEIAUgCyAKlCAJIAyUIAQgBpSTkpK8QYCAgIB4cSABKAIAQf////8HcXK+Ig6UkyIFIAWSIQUgACACKgIYIAsgBZQgByAJIA6UIAcgCCALIAaUIAQgCpQgByAMlJOSkrxBgICAgHhxIAEoAghB/////wdxcr4iDJSTIgYgBpIiBpQgBCAEIAyUIAkgDZSTIgggCJIiCJSTkiAMkpI4AgggACACKgIUIAsgBpQgCSAIlCAHIAWUk5IgDZKSOAIEIAAgAioCECALIAiUIAQgBZQgCSAGlJOSIA6SkjgCAAuWAwEBfyAAKAIYIgEEQCAAKAIcIAFBB3RBEBC+DQsgACgCJCIBBEAgACgCKCABQQJ0QQQQvg0LIAAoAjAiAQRAIAAoAjQgAUECdEEEEL4NCyAAKAI8IgEEQCAAKAJAIAFBDGxBBBC+DQsgACgCSCIBBEAgACgCTCABQQxsQQQQvg0LIAAoAlQiAQRAIAAoAlggAUEMbEEEEL4NCwJAIAAoAmAiAUGAgICAeEYNACABBEAgACgCZCABQQxsQQQQvg0LIAAoAmwiAUUNACAAKAJwIAFBJGxBBBC+DQsCQCAAKAJ4IgFBgICAgHhGDQAgAQRAIAAoAnwgAUECdEEEEL4NCyAAKAKEASIBBEAgACgCiAEgAUECdEEEEL4NCyAAKAKQASIBRQ0AIAAoApQBIAFBBHRBBBC+DQsCQCAAKAKcASIBQYCAgIB4Rg0AIAEEQCAAKAKgASABQQJ0QQQQvg0LIAAoAqgBIgEEQCAAKAKsASABQQJ0QQQQvg0LIAAoArQBIgFFDQAgACgCuAEgAUECdEEEEL4NCwvjAgIBfwl9IwBBIGsiBiQAIAYgACoCCCIJIAMqAggiB5QgACoCBCIKIAMqAgQiCJQgACoCACILIAMqAgAiDZQgACoCDCIOIAMqAgwiD5SSkpI4AhAgBiAKIA2UIA4gB5QgCyAIlJOSIAkgD5STOAIMIAYgDiAIlCALIAeUkiAKIA+UkyAJIA2UkzgCCCAGIAkgCJQgDiANlCALIA+UkyAKIAeUk5I4AgQgCiADKgIQIAAqAhCTIg2UIAsgAyoCFCAAKgIUkyIPlJMiByAHkiEHIAkgD5QgCiADKgIYIAAqAhiTIgyUkyIIIAiSIQggBiAMIA4gB5QgCiAIlCALIAsgDJQgCSANlJMiDCAMkiIMlJOSkjgCHCAGIA8gDiAMlCALIAeUIAkgCJSTkpI4AhggBiANIA4gCJQgCSAMlCAKIAeUk5KSOAIUQQEgBkEEaiABIAIgBCAFEG8hACAGQSBqJAAgAAusAgIBfgF/IAEpAwAhAiAAKAIIIgMEfiACIANBDGxBDGtBDG6tQgx+fEIUfAUgAkIIfAshAiAAKAIUIgMEfiACIANBA3RBCGutfEIQfAUgAkIIfAshAiAAKAIgIgMEfiACIANBFGxBFGtBFG6tQhR+fEIcfAUgAkIIfAshAiAAKAIsIgMEfiACIANBAWtB////P3FBHWytfEIlfAUgAkIIfAshAiAAKAI4IgMEfiACIANBAnRBBGutfEIMfAUgAkIIfAshAiAAKAJEIgMEfiACIANBAnRBBGutfEIMfAUgAkIIfAshAiAAKAJQIgMEfiACIANBAnRBBGutfEIMfAUgAkIIfAshAiABIAAoAlwiAAR+IAIgAEECdEEEa618Qgx8BSACQgh8CzcDAEEAC70DAQt/IAEoAgQhBgJAAkAgASgCCCIFRQRAQQQhAgwBCyAFQQJ0IQMgBUH/////AUsNAUGBicQALQAAGkEEIQQgA0EEENwMIgJFDQELIAIgBiADEOUNIQYgASgCGCEHIAEoAhAhCCABKAIMIQkCQAJAAkAgASgCHCIDRQRAQQEhAgwBC0EAIQQgA0EASA0BQYGJxAAtAAAaQQEhBCADQQEQ3AwiAkUNAQsgAiAHIAMQ5Q0hBEGBicQALQAAGiABLQBQIQcgASgCTCEKIAEoAiQhCyABKAIgIQxB1ABBBBDcDCICRQ0BIAIgCzYCJCACIAw2AiAgAiADNgIcIAIgBDYCGCACIAM2AhQgAiAINgIQIAIgCTYCDCACIAU2AgggAiAGNgIEIAIgBTYCACACIAEpAig3AiggAiABKQI0NwI0IAJBMGogAUEwaigCADYCACACQTxqIAFBPGopAgA3AgAgAkHEAGogAUHEAGopAgA3AgAgAiAHOgBQIAIgCjYCTCAAQeztwgA2AgQgACACNgIADwsgBCADEL4MAAtBBEHUAEGIq8QAKAIAIgBBzwcgABsRAAAACyAEIAMQvgwAC/4CAQd/IwBBEGsiBCQAAkACQAJAAkACQCABKAIEIgJFDQAgASgCACEHIAJBA3EhBQJAIAJBBEkEQEEAIQIMAQsgB0EcaiEDIAJBfHEhCEEAIQIDQCADKAIAIANBCGsoAgAgA0EQaygCACADQRhrKAIAIAJqampqIQIgA0EgaiEDIAggBkEEaiIGRw0ACwsgBQRAIAZBA3QgB2pBBGohAwNAIAMoAgAgAmohAiADQQhqIQMgBUEBayIFDQALCyABKAIMBEAgAkEASA0BIAcoAgRFIAJBEElxDQEgAkEBdCECCyACDQELQQEhA0EAIQIMAQtBACEFIAJBAEgNAUGBicQALQAAGkEBIQUgAkEBENwMIgNFDQELIARBADYCCCAEIAM2AgQgBCACNgIAIARB8MzDACABEL4CRQ0BQdDNwwBBMyAEQQ9qQYTOwwBBrM7DABCvCAALIAUgAhC+DAALIAAgBCkCADcCACAAQQhqIARBCGooAgA2AgAgBEEQaiQAC+MhAzF/BX0EfiMAQTBrIhYkAAJAAkACQCAARQ0AIAAoAgAiEUF/Rg0BIAAgEUEBajYCACABRQ0AIAEoAgAiEUF/Rg0BIAEgEUEBajYCACACRQ0AIAIoAgAiEUF/Rg0BIAIgEUEBajYCACADRQ0AIAMoAgAiEUF/Rg0BIAMgEUEBajYCACAWIAw2AgxBACEMIBZBEGohHiAAQQRqIRAgAUEEaiEOIAJBBGohEiADQQRqIREgBEEARyETIAZBAEchBCAIQQBHrSFFIApBAEetIUYjAEHgAGsiDyQAIAu9IUMgCb0hRAJAIBZBDGoiBigCABAEQQFGBEAgDyAGNgIEIA9BsLfAADYCNCAPIEY+AiAgDyBFPgIUIA8gB0H//wNxNgIQIA8gB0EQdjYCDCAPIAQ2AgggDyAFQQAgBUEgSRs2AiwgDyBDPgIkIA8gQ0IgiD4CKCAPIEQ+AhggDyBEQiCIPgIcIA8gD0EEajYCMAwBCyAPQbC3wAA2AjQgDyBGPgIgIA8gRT4CFCAPIAdB//8DcTYCECAPIAdBEHY2AgwgDyBDPgIkIA8gQ0IgiD4CKCAPIEQ+AhggDyBEQiCIPgIcIA9BADYCMCAPIAQ2AgggDyAFQQAgBUEgSRs2AiwLIA9B0ABqIgVBCGogEUEIaigCADYCACAPIBEpAgA3A1BBACEKQQAhEUEAIQdBACEIIwBB8AJrIg0kACANQQhqIA9BCGoiBEEIaikCADcDACANQRBqIARBEGopAgA3AwAgDUEYaiAEQRhqKQIANwMAIA1BIGogBEEgaikCADcDACANQShqIARBKGopAgA3AwAgDSASNgI4IA0gDjYCNCANIBA2AjAgDSAEKQIANwMAIA0gEzoAeCANIAU2AnQgDSAFKgIIIj44AmwgDSA+OAJoIA0gPjgCZCANID44AmAgDSAFKgIEIj44AlwgDSA+OAJYIA0gPjgCVCANID44AlAgDSAFKgIAIj44AkwgDSA+OAJIIA0gPjgCRCANID44AkAgDSANNgJwIA9BOGoiFwJ/QQIgECgCaCIaRQ0AGiANQQA2ApQBIA1CgICAgMAANwKMASANQYwBaiIEENAGIA0oApABQoCAgIDw////fjcCACANQQE2ApQBIA1BoAFqIAQQwwMCQAJAIA0oAqABRQRAQQIhBgwBCyANQckCaiEgIA1BsQJqISEgDUGZAmohIiANQdUCaiEjIA1BvQJqISQgDUGlAmohJSANQY0CaiEmIA1BgAJqQQFyIScgECgCiAEhHyAQKAKMASEYIBAoAmQhKUP//39/IT4gDUH4AWohKkECIQYDQCA+IA0qAqgBjF8NAQJAAkAgDSgCpAEiBCAaSQRAICkgBEEHdGoiEi0AeEEBcSIUBEAgEigCbCIFIBhJIQQgHyAFQQR0akEAIAQbQQhqQQAgBBshKyASKAJoIgUgGEkhBCAfIAVBBHRqQQAgBBtBCGpBACAEGyEsIBIoAmQiBSAYSSEEIB8gBUEEdGpBACAEG0EIakEAIAQbIS0gEigCYCIFIBhJIQQgHyAFQQR0akEAIAQbQQhqQQAgBBshKAsgDUHQAWogEiANQUBrEPkBIA0qAtABIkIgPl0hBCANKgLcASE/IA0qAtgBIUAgDSoC1AEhQSAURQ0BIA0gKzYC7AEgDSAsNgLoASANIC02AuQBIA0gKDYC4AFCACFEICpCADcDACANQgA3A/ABIA1BAjoA1AIgDUECOgC8AiANQQI6AKQCIA1BAjoAjAIgPiBBXkEBdCA+IEBeQQJ0ciA+ID9eQQN0ciAEcq0hQ0EAIQRBACEQA0ACQCBDIESIp0EBcUUNACANQeABaiAEaigCACITRQ0AIBMoAgAiBSANKAJwIhUoAjgiDigCEE8NACAOKAIMIAVBqAFsaiIOKAIARQ0AIBMoAgQiEyAOKAIERw0AIA0oAnQhGSAVIBUoAjQiFUEMaigCACAVQRBqKAIAIAUgEyAOQQhqEMcERQ0AIA1B4AJqIhUgDigCOCAOKAI8IhsoAghBAWtBeHFqQQhqIA5B/ABqIBkgDS0AeCAbKAI8EQcAIA0tAOwCIRsgDUHwAWogBGogDSoC4AIgGSoCAJMiPyA/lCANKgLkAiAZKgIEkyI/ID+UkiAVQQhqIhUqAgAgGSoCCJMiPyA/lJIQkgE4AgAgDUGAAmogEGoiDkEUaiATNgIAIA5BEGogBTYCACAOIA0pAuACNwIAIA5BCGogFSkCADcCACAbRQ0AIA0tAHhFDQAgDUHOAWoiECAOQQNqLQAAOgAAIA1BygFqIhkgDkEPai0AADoAACANIA5BAWovAAA7AcwBIA0gDkENai8AADsByAECQCAOQQxqLQAAIgRBAkYEQCANQYICaiANQZ4Bai0AADoAACANQeICaiANQZoBai0AADoAACANIA0vAJwBOwGAAiANIA0vAJgBOwHgAgwBCyAOQQRqKAIAIQogDkEIaigCACERIA4tAAAhHCANQeICaiAZLQAAOgAAIA1BggJqIBAtAAA6AAAgDSANLwHIATsB4AIgDSANLwHMATsBgAIgEyEHIAUhCCAEIQYLIA0oAowBIgRFDQcgDSgCkAEgBEEDdEEEEL4NDAcLIARBBGohBCAQQRhqIRAgREIBfCJEQgRSDQALIA1BygFqICdBAmotAAA6AAAgDUHGAWogJkECai0AADoAACANICcvAAA7AcgBIA0gJi8AADsBxAEgDS0AgAIhGSANKgL8ASE/IA0qAvgBIUAgDSoC9AEhQSANKgLwASFCIA0oAoQCIRMgDSgCiAIhFSANLQCMAiEEIA0oApACIRsgDSgClAIhLiANLQCYAiEvIA1BwgFqICJBAmotAAA6AAAgDUG+AWogJUECai0AADoAACANQboBaiAhQQJqLQAAOgAAIA0gIi8AADsBwAEgDSAlLwAAOwG8ASANICEvAAA7AbgBIA0tAKQCIRAgDSgCoAIhMCANKAKcAiExIA0tALACITIgDSgCrAIhMyANKAKoAiE0IA0tALwCIQUgDSgCuAIhNSANKAK0AiE2IA1BtgFqICRBAmotAAA6AAAgDSAkLwAAOwG0ASANLQDIAiE3IA0oAsQCITggDSgCwAIhOSANQbIBaiAgQQJqLQAAOgAAIA0gIC8AADsBsAEgDS0A1AIhDiANKALQAiE6IA0oAswCITsgDUGuAWogI0ECai0AADoAACANICMvAAA7AawBIA0oAtwCITwgDSgC2AIhPQwCCyAEIBpB8N3AABCZCQALQQIhECA+IEFeQQF0ID4gQF5BAnRyID4gP15BA3RyIARyrSFDQQIhBEECIQVBAiEOCyBDQgGDIUQCQAJAAkAgFARAIERQDQIgPiBCXkUNAiAEQf8BcUECRw0BDAILAkAgRFANACASKAJgIg4gGk8NACBCjCFCIA0oApQBIgQgDSgCjAFGBEAgDUGMAWoQ0AYLIA0oApABIhAgBEEDdGoiBSBCOAIEIAUgDjYCACANIARBAWo2ApQBAkAgBEUEQEEAIQUMAQsDQCAQIARBAWsiFEEBdiIFQQN0aiIdQQRqKgIAIEJdRQRAIAQhBQwCCyAQIARBA3RqIB0pAgA3AgAgBSEEIBRBAUsNAAsLIBAgBUEDdGoiBCBCOAIEIAQgDjYCAAsCQCBDQgKDUA0AIBIoAmQiDiAaTw0AIEGMIUEgDSgClAEiBCANKAKMAUYEQCANQYwBahDQBgsgDSgCkAEiECAEQQN0aiIFIEE4AgQgBSAONgIAIA0gBEEBajYClAECQCAERQRAQQAhBQwBCwNAIBAgBEEBayIUQQF2IgVBA3RqIh1BBGoqAgAgQV1FBEAgBCEFDAILIBAgBEEDdGogHSkCADcCACAFIQQgFEEBSw0ACwsgECAFQQN0aiIEIEE4AgQgBCAONgIACwJAIENCBINQDQAgEigCaCIOIBpPDQAgQIwhQCANKAKUASIEIA0oAowBRgRAIA1BjAFqENAGCyANKAKQASIQIARBA3RqIgUgQDgCBCAFIA42AgAgDSAEQQFqNgKUAQJAIARFBEBBACEFDAELA0AgECAEQQFrIhRBAXYiBUEDdGoiHUEEaioCACBAXUUEQCAEIQUMAgsgECAEQQN0aiAdKQIANwIAIAUhBCAUQQFLDQALCyAQIAVBA3RqIgQgQDgCBCAEIA42AgALIENCCINQDQIgEigCbCIOIBpPDQIgP4whPyANKAKUASIEIA0oAowBRgRAIA1BjAFqENAGCyANKAKQASIQIARBA3RqIgUgPzgCBCAFIA42AgAgDSAEQQFqNgKUAQJAIARFBEBBACEFDAELA0AgECAEQQFrIhJBAXYiBUEDdGoiFEEEaioCACA/XUUEQCAEIQUMAgsgECAEQQN0aiAUKQIANwIAIAUhBCASQQFLDQALCyAQIAVBA3RqIgQgPzgCBCAEIA42AgAMAgsgEigCYCAYTw0AIA1BngFqIA1BygFqLQAAOgAAIA1BmgFqIA1BxgFqLQAAOgAAIA0gDS8ByAE7AZwBIA0gDS8BxAE7AZgBIBMhCiAVIREgGSEcIBshCCAuIQcgBCEGIEIhPgsCQCBDQgKDUA0AID4gQV5FDQAgEEH/AXFBAkYNACASKAJkIBhPDQAgDUGeAWogDUHCAWotAAA6AAAgDUGaAWogDUG+AWotAAA6AAAgDSANLwHAATsBnAEgDSANLwG8ATsBmAEgMSEKIDAhESAvIRwgNCEIIDMhByAQIQYgQSE+CwJAIENCBINQDQAgPiBAXkUNACAFQf8BcUECRg0AIBIoAmggGE8NACANQZ4BaiANQboBai0AADoAACANQZoBaiANQbYBai0AADoAACANIA0vAbgBOwGcASANIA0vAbQBOwGYASA2IQogNSERIDIhHCA5IQggOCEHIAUhBiBAIT4LIENCCINQDQAgPiA/XkUNACAOQQJGDQAgEigCbCAYTw0AIA1BngFqIA1BsgFqLQAAOgAAIA1BmgFqIA1BrgFqLQAAOgAAIA0gDS8BsAE7AZwBIA0gDS8BrAE7AZgBIDshCiA6IREgNyEcID0hCCA8IQcgDiEGID8hPgsgDUGgAWogDUGMAWoQwwMgDSgCoAENAAsLIA1BggJqIA1BngFqLQAAOgAAIA1B4gJqIA1BmgFqLQAAOgAAIA0gDS8BnAE7AYACIA0gDS8BmAE7AeACIA0oAowBIgRFDQAgDSgCkAEgBEEDdEEEEL4NC0ECIAZB/wFxQQJGDQAaIBcgDS8BgAI7AAkgFyANLwHgAjsAFSAXIBE2AhAgFyAKNgIMIBcgHDoACCAXIAc2AgQgFyAINgIAIBdBC2ogDUGCAmotAAA6AAAgF0EXaiANQeICai0AADoAACAGCzoAFCANQfACaiQAIB4gDy0ATEECRwR/IB4gDykCQDcCCCAeIA8pAjg3AhggHkEQaiAPQcgAaikCADcCAEEDBUEECzYCACAPQeAAaiQAIAMgAygCAEEBazYCACACIAIoAgBBAWs2AgAgASABKAIAQQFrNgIAIAAgACgCAEEBazYCACAWKAIQQQRHBEBBgYnEAC0AABpBJEEEENwMIgxFDQMgDEEANgIAIAwgFikCEDcCBCAMQQxqIBZBGGopAgA3AgAgDEEUaiAWQSBqKQIANwIAIAxBHGogFkEoaikCADcCAAsgFkEwaiQAIAwPCxDUDQALENUNAAtBBEEkQYirxAAoAgAiAEHPByAAGxEAAAALiAMCBn0BfwJAIAIgBUkEQCABIAVPDQEgAyAFSQRAIAQgAkEMbGoiBSoCACAEIAFBDGxqIgwqAgAiCJMiBiAEIANBDGxqIgQqAgQgDCoCBCIJkyIKlCAFKgIEIAmTIgcgBCoCACAIkyIIlJMiCSAJlCAHIAQqAgggDCoCCCIHkyILlCAFKgIIIAeTIgcgCpSTIgogCpQgByAIlCAGIAuUkyIHIAeUkpIiBhCSASEIIAACf0EBIAZDAAAAAFsNABpBACAGiyIGQwAAgH9bDQAaQQEgBkMAQBwvXw0AGiAGIAZDAAAANJRfCzoARSAAQQE6AEQgAEIANwIYIAAgAzYCOCAAIAI2AjQgACABNgIwIABC/////w83AjwgAEEANgIIIABCgICAgMAANwIAIAAgCSAIlTgCFCAAIAcgCJU4AhAgACAKIAiVOAIMIABBIGpCADcCACAAQShqQgA3AgAPCyADIAVBoKfDABCZCQALIAIgBUGAp8MAEJkJAAsgASAFQZCnwwAQmQkAC+sCAQ59IAIqAgghDiACKgIEIQ8gAioCACEQIAMqAhwiBiABKgIoIgWUIAMqAiAiByABKgIkIguUkyIMIAyUIAcgASoCLCIRlCADKgIkIgQgBZSTIg0gDZQgBCALlCAGIBGUkyILIAuUkpIQkgEiBUOsxSc3X0UEQCAMIAWVIQkgCyAFlSEKIA0gBZUhCAsgAEMAAAAAIAQgECAGlCAPIAeUkiAOIASUkiIElCIFIARDAAAAAF0iARsiDDgCCCAAQwAAAAAgByAElCIHIAEbIg04AgQgAEMAAAAAIAYgBJQiBiABGyIEOAIAIAAgCSAQIASTIAZDAAAAACABG5MiBiAIlCAPIA2TIAdDAAAAACABG5MiByAKlJIgDiAMkyAFQwAAAAAgARuTIgQgCZSSIgmUIgU4AhQgACAKIAmUIgo4AhAgACAIIAmUIgg4AgwgACAEIAWTOAIgIAAgByAKkzgCHCAAIAYgCJM4AhgL7wICCX0DfwJAIAIgBCgCACIQSwRAIAQoAgQiDyACTw0BIAIgBCgCCCIRSwRAIAEgD0EkbGoiDyoCACABIBBBJGxqIgIqAgAiB5MiDSABIBFBJGxqIgEqAgQgAioCBCIGkyIIlCAPKgIEIAaTIgYgASoCACAHkyIOlJMiDCAMlCAGIAEqAgggAioCCCIGkyIHlCAPKgIIIAaTIgYgCJSTIgggCJQgBiAOlCANIAeUkyIHIAeUkpIiBkMAAIAoXgRAIAwgBhCSASIGlSEKIAcgBpUhCyAIIAaVIQkLIAAgCjgCICAAIAs4AhwgACAJOAIYIABBADoAMCAAIAQpAgA3AgAgACAFKQIANwIMIAAgAykCADcCJCAAQQhqIARBCGooAgA2AgAgAEEUaiAFQQhqKAIANgIAIABBLGogA0EIaigCADYCAA8LIBEgAkHkt8IAEJkJAAsgECACQcS3wgAQmQkACyAPIAJB1LfCABCZCQAL6AICCn0BfyMAQdAAayINJAAgAioCACABKgIQkyIJIAEqAgQiA5QgAioCBCABKgIUkyIKIAEqAgAiBZSTIgYgBpIhBiAKIAEqAggiCJQgAioCCCABKgIYkyIEIAOUkyIHIAeSIQcgDSAEIAEqAgwiCyAGlCADIAeUIAUgBCAFlCAJIAiUkyIEIASSIgSUk5KSIgw4AhQgDSAJIAsgB5QgCCAElCADIAaUk5KSIgM4AgwgDSAKIAsgBJQgBSAGlCAIIAeUk5KSIgU4AhAgDUEYaiIBQRRqIABBFGooAgA2AgAgAUEIaiAAQQhqKAIANgIAIA0gACkCDDcCJCANIAApAgA3AxggDUE0aiABIA1BDGoQ/wJBASEBAkAgAyANKgI0kyIDIAOUIAUgDSoCOJMiAyADlJIgDCANKgI8kyIDIAOUkiIDQwAAgCheRQ0AIAMQkgEgACoCGF8NAEEAIQELIA1B0ABqJAAgAQuCAwIEfwJ+IAAgARCDBSICBH8gAgUgATUCJCEGIAAoAgAiACgCCCECIAAoAgAgAmtBB00EQCAAIAJBCBDlBiAAKAIIIQILIAAoAgQgAmogBjcAACAAIAJBCGoiAzYCCCABKAIYIQQgASgCHCIFrSEGIAAoAgAgA2tBB00EQCAAIANBCBDlBiAAKAIIIQMLIAAgA0EIaiICNgIIIAAoAgQgA2ogBjcAACAFBEAgBCAFQQN0aiEFA0AgBEEEajUCACEGIAQ1AgAhByAAKAIAIAJrQQdNBEAgACACQQgQ5QYgACgCCCECCyAAKAIEIAJqIAc3AAAgACACQQhqIgM2AgggACgCACADa0EHTQRAIAAgA0EIEOUGIAAoAgghAwsgACADQQhqIgI2AgggACgCBCADaiAGNwAAIAUgBEEIaiIERw0ACwsgATUCICEGIAAoAgAgAmtBB00EQCAAIAJBCBDlBiAAKAIIIQILIAAgAkEIajYCCCAAKAIEIAJqIAY3AABBAAsLuRwDG38FfQR+IwBBMGsiFCQAAkACQAJAIABFDQAgACgCACIRQX9GDQEgACARQQFqNgIAIAFFDQAgASgCACIRQX9GDQEgASARQQFqNgIAIAJFDQAgAigCACIRQX9GDQEgAiARQQFqNgIAIANFDQAgAygCACIRQX9GDQEgAyARQQFqNgIAIBQgCzYCDEEAIQsgFEEQaiEbIABBBGohDSABQQRqIRIgAkEEaiEPIANBBGohESAFQQBHIQUgB0EAR60hLiAJQQBHrSEvIwBB8ABrIg4kACAKvSEtIAi9ISwCQCAUQQxqIgcoAgAQBEEBRgRAIA4gBzYCDCAOQbC3wAA2AjwgDiAvPgIoIA4gLj4CHCAOIAZB//8DcTYCGCAOIAZBEHY2AhQgDiAFNgIQIA4gBEEAIARBIEkbNgI0IA4gLT4CLCAOIC1CIIg+AjAgDiAsPgIgIA4gLEIgiD4CJCAOIA5BDGo2AjgMAQsgDkGwt8AANgI8IA4gLz4CKCAOIC4+AhwgDiAGQf//A3E2AhggDiAGQRB2NgIUIA4gLT4CLCAOIC1CIIg+AjAgDiAsPgIgIA4gLEIgiD4CJCAOQQA2AjggDiAFNgIQIA4gBEEAIARBIEkbNgI0CyAOQeAAaiIFQQhqIBFBCGooAgA2AgAgDiARKQIANwNgIA5BQGshF0EAIQlBACERQQAhB0IAIS0jAEGAA2siDCQAIAxBCGogDkEQaiIEQQhqKQIANwMAIAxBEGogBEEQaikCADcDAEEYIRAgDEEYaiAEQRhqKQIANwMAIAxBIGogBEEgaikCADcDACAMQShqIARBKGopAgA3AwAgDCAPNgI4IAwgEjYCNCAMIA02AjAgDCAEKQIANwMAIAxBADoAeCAMIAU2AnQgDCAFKgIIIic4AmwgDCAnOAJoIAwgJzgCZCAMICc4AmAgDCAFKgIEIic4AlwgDCAnOAJYIAwgJzgCVCAMICc4AlAgDCAFKgIAIic4AkwgDCAnOAJIIAwgJzgCRCAMICc4AkAgDCAMNgJwAn9BBCANKAJoIhhFDQAaIAxBADYCkAEgDEKAgICAwAA3AogBIAxBiAFqIgQQ0AYgDCgCjAFCgICAgPD///9+NwIAIAxBATYCkAEgDEGUAWogBBDDAwJAAkAgDCgClAFFBEBBBCEGDAELIAxBhAJqIR0gDEH1AmohHiANKAKIASEcIA0oAowBIRYgDSgCZCEhQ///f38hJ0EEIQYDQCAnIAwqApwBjF8NAQJAAkACQAJAAkAgDCgCmAEiBCAYSQRAICEgBEEHdGoiEy0AeEEBcSIFBEAgEygCbCINIBZJIQQgHCANQQR0akEAIAQbQQhqQQAgBBshIiATKAJoIg0gFkkhBCAcIA1BBHRqQQAgBBtBCGpBACAEGyEjIBMoAmQiDSAWSSEEIBwgDUEEdGpBACAEG0EIakEAIAQbISQgEygCYCINIBZJIQQgHCANQQR0akEAIAQbQQhqQQAgBBshHwsgDEGwAWogEyAMQUBrEPkBIAwqArABIisgJ10hBCAMKgK8ASEoIAwqArgBISkgDCoCtAEhKiAFRQ0BIAwgIjYCzAEgDCAjNgLIASAMICQ2AsQBIAwgHzYCwAFCACEuIAxB2AFqQgA3AwAgDEIANwPQASAMQQQ2AtwCIAxBBDYCvAIgDEEENgKcAiAMQQQ2AvwBICcgKl5BAXQgJyApXkECdHIgJyAoXkEDdHIgBHIiJa0hLEEAIQRBACEVA0ACQCAsIC6Ip0EBcUUNACAMQcABaiAEaigCACINRQ0AIA0oAgAiBSAMKAJwIhIoAjgiECgCEE8NACAQKAIMIAVBqAFsaiIQKAIARQ0AIA0oAgQiDSAQKAIERw0AIAwoAnQhDyASIBIoAjQiEkEMaigCACASQRBqKAIAIAUgDSAQQQhqEMcERQ0AIAxB6AJqIBAoAjggECgCPCISKAIIQQFrQXhxakEIaiAQQfwAaiAPIBIoAkQRAgAgDEHmAmoiJiAeQQJqLQAAOgAAIAwgHi8AADsB5AIgDCgC+AIhECAMKAL8AiESIAwtAPQCISAgDCoC6AIiKCAPKgIAkyIpICmUIAwqAuwCIikgDyoCBJMiKiAqlJIgDCoC8AIiKiAPKgIIkyIrICuUkhCSASErIAxB5AFqIBVqIg9BDGogIDoAACAPQQhqICo4AgAgD0EEaiApOAIAIA8gKDgCACAMQdABaiAEaiArOAIAIA9BHGogEjYCACAPQRhqIBA2AgAgD0EUaiANNgIAIA9BEGogBTYCACAPQQ1qIAwvAeQCOwAAIA9BD2ogJi0AADoAACAMLQB4RQ0AICBFDQAgDEGoAWogD0EMaigCACIZNgIAIAwgD0EEaikCADcDoAEgKLwhGiAFIQkgDSERIBIhByAQIQYMBAsgBEEEaiEEIBVBIGohFSAuQgF8Ii5CBFINAAsgDEGoAWogHUEIaigCADYCACAMIB0pAgA3A6ABIAwoAoACIQ0gDCgCkAIhECAMKAKUAiESIAwoApgCIQQgDCgCnAIhBQJAIAwoAvwBIg9BBUcEQCAsQgGDUA0GIAwqAtABIiggJ11FDQYgD0EERw0BDAYLIARBBEYNBCAMKAKoASEZIBAhCSANIRogEiERIAUhByAEIQYMAwsgEygCYCAWTw0EIAwoAvgBIREgDCgC9AEhCSAMKALwASEZIAwpAugBIS0gDCgC5AEhGiANIQcgDyEGICghJwwECyAEIBhB8N3AABCZCQALAkAgJyAqXkEBdCAnICleQQJ0ciAnICheQQN0ciAEciISrSIsQgGDUA0AIBMoAmAiECAYTw0AICuMISsgDCgCkAEiBCAMKAKIAUYEQCAMQYgBahDQBgsgDCgCjAEiDSAEQQN0aiIFICs4AgQgBSAQNgIAIAwgBEEBajYCkAECQCAERQRAQQAhBQwBCwNAIA0gBEEBayIPQQF2IgVBA3RqIhVBBGoqAgAgK11FBEAgBCEFDAILIA0gBEEDdGogFSkCADcCACAFIQQgD0EBSw0ACwsgDSAFQQN0aiIEICs4AgQgBCAQNgIACwJAICxCAoNQDQAgEygCZCIQIBhPDQAgKowhKiAMKAKQASIEIAwoAogBRgRAIAxBiAFqENAGCyAMKAKMASINIARBA3RqIgUgKjgCBCAFIBA2AgAgDCAEQQFqNgKQAQJAIARFBEBBACEFDAELA0AgDSAEQQFrIg9BAXYiBUEDdGoiFUEEaioCACAqXUUEQCAEIQUMAgsgDSAEQQN0aiAVKQIANwIAIAUhBCAPQQFLDQALCyANIAVBA3RqIgQgKjgCBCAEIBA2AgALAkAgLEIEg1ANACATKAJoIhAgGE8NACApjCEpIAwoApABIgQgDCgCiAFGBEAgDEGIAWoQ0AYLIAwoAowBIg0gBEEDdGoiBSApOAIEIAUgEDYCACAMIARBAWo2ApABAkAgBEUEQEEAIQUMAQsDQCANIARBAWsiD0EBdiIFQQN0aiIVQQRqKgIAICldRQRAIAQhBQwCCyANIARBA3RqIBUpAgA3AgAgBSEEIA9BAUsNAAsLIA0gBUEDdGoiBCApOAIEIAQgEDYCAAsgEkEISQ0DIBMoAmwiECAYTw0DICiMISggDCgCkAEiBCAMKAKIAUYEQCAMQYgBahDQBgsgDCgCjAEiDSAEQQN0aiIFICg4AgQgBSAQNgIAIAwgBEEBajYCkAECQCAERQRAQQAhBQwBCwNAIA0gBEEBayISQQF2IgVBA3RqIg9BBGoqAgAgKF1FBEAgBCEFDAILIA0gBEEDdGogDykCADcCACAFIQQgEkEBSw0ACwsgDSAFQQN0aiIEICg4AgQgBCAQNgIADAMLIAwpA6ABIS0LIAwoAogBIgRFDQQgDCgCjAEgBEEDdEEEEL4NDAQLAkAgLEICg1ANACAMKgLUASIoICddRQ0AIAVBBEYNACATKAJkIBZPDQAgDCgCoAIhByAMKQKkASEtIAwoAqABIRogECEZIBIhCSAEIREgBSEGICghJwsCQCAsQgSDUA0AIAwqAtgBIiggJ11FDQAgDCgCvAIiBEEERg0AIBMoAmggFk8NACAMKAKkAiEaIAwpAqgCIS0gDCgCsAIhGSAMKAK0AiEJIAwoArgCIREgDCgCwAIhByAEIQYgKCEnCyAlQQhJDQAgDCoC3AEiKCAnXUUNACAMKALcAiIEQQRGDQAgEygCbCAWTw0AIAwoAsQCIRogDCkCyAIhLSAMKALQAiEZIAwoAtQCIQkgDCgC2AIhESAMKALgAiEHIAQhBiAoIScLIAxBlAFqIAxBiAFqEMMDIAwoApQBDQALCyAMKAKIASIERQ0AIAwoAowBIARBA3RBBBC+DQtBGCEQQQQgBkEERg0AGiAXIAY2AhggFyARNgIUIBcgCTYCECAXIBk2AgwgFyAtNwIEIBcgGjYCAEEcIRAgBwshBCAQIBdqIAQ2AgAgDEGAA2okACAOKAJYIgRBBEcEQCAbIA4pAkA3AgggGyAOKQJQNwIYIBsgDigCXDYCBCAbQRBqIA5ByABqKQIANwIACyAbIAQ2AgAgDkHwAGokACADIAMoAgBBAWs2AgAgAiACKAIAQQFrNgIAIAEgASgCAEEBazYCACAAIAAoAgBBAWs2AgAgFCgCEEEERwRAQYGJxAAtAAAaQSRBBBDcDCILRQ0DIAtBADYCACALIBQpAhA3AgQgC0EMaiAUQRhqKQIANwIAIAtBFGogFEEgaikCADcCACALQRxqIBRBKGopAgA3AgALIBRBMGokACALDwsQ1A0ACxDVDQALQQRBJEGIq8QAKAIAIgBBzwcgABsRAAAAC+0CAgp9AX8gAioCACIHIAeUIAIqAggiBSAFlJIQkgEhBiABKgIEIghDAAAAACAFIAaVIAZDAAAANF8iDxuUIQwgCEMAAIA/IAcgBpUgDxuUIQ0CQAJAAkACQAJAAkACQAJAAkAgAioCBCIJIAEqAgAiC4wiCmBFDQAgBiAIX0UNACAJIAtfDQELIAkgC14NAUEAIQEgCSAKXUUNBSAGIAhfRQ0HDAYLQQEhASADRQ0BIAUhDCAJIQogByENDAYLQQAhASAGIAhfDQEgCyEKDAULIAggBpMhBiAJIAuSIgggCyAJkyIOXkUNASAGIA5eRQ0BCyAFIQwgCyEKIAchDQwDCyAIIA5dRQ0AIAYgCF4NAQsgCSEKDAELIAUhDCAHIQ0LQQIhAiAAIAUgDJMiBSAFlCAJIAqTIgUgBZQgByANkyIHIAeUkpIQkgEgBF4Ef0ECBSAAIAw4AgggACAKOAIEIAAgDTgCACABCzoADAvpAgEBfyMAQfAAayIHJAAgByACNgIMIAcgATYCCCAHIAQ2AhQgByADNgIQIAcCfwJAAkACQCAAQf8BcUEBaw4CAQIACyAHQdzpwwA2AhhBAgwCCyAHQd7pwwA2AhhBAgwBCyAHQeDpwwA2AhhBBws2AhwCQCAFKAIARQRAIAdBAzYCXCAHQZjqwwA2AlggB0IDNwJkIAcgB0EQaq1CgICAgND8AIQ3A0ggByAHQQhqrUKAgICA0PwAhDcDQAwBCyAHQSBqIgBBEGogBUEQaikCADcDACAAQQhqIAVBCGopAgA3AwAgByAFKQIANwMgIAdBBDYCXCAHQczqwwA2AlggB0IENwJkIAcgB0EQaq1CgICAgND8AIQ3A1AgByAHQQhqrUKAgICA0PwAhDcDSCAHIACtQoCAgIDw/ACENwNACyAHIAdBGGqtQoCAgIDg/ACENwM4IAcgB0E4ajYCYCAHQdgAaiAGEJELAAv1AgIBfwp9IwBB4ABrIgYkACAGIAEqAgwiDTgCUCAGIAEqAggiB4w4AkwgBiABKgIEIgiMOAJIIAYgASoCACIJjDgCRCAGIA0gCSABKgIUIg6UIAggASoCECIPlJMiCiAKkiIKlCAIIAggASoCGCIQlCAHIA6UkyILIAuSIguUIAkgByAPlCAJIBCUkyIMIAySIgyUk5IgEJM4AlwgBiANIAyUIAkgCpQgByALlJOSIA6TOAJYIAYgDSALlCAHIAyUIAggCpSTkiAPkzgCVCAGQQxqIAZBxABqIAMgBCACIAUQlQIgACAGKAIMBH8gACAGKAJANgI0IAAgBigCMDYCMCAAIAYoAiw2AiwgACAGKAIoNgIoIAAgBigCPDYCJCAAIAYoAjg2AiAgACAGKAI0NgIcIAAgBigCGDYCGCAAIAYoAhQ2AhQgACAGKAIQNgIQIAAgBigCJDYCDCAAIAYpAhw3AgRBAQVBAAs2AgAgBkHgAGokAAurBQIUfQR/IwBBMGsiGCQAIBhBDGoiGSABIAIQ6gIgGCoCJCEHIBgqAgwhDSAYKgIYIQ4gGCoCKCEIIBgqAhAhDyAYKgIcIRAgGCoCLCEJIBgqAhQhBCAYKgIgIREgGSABIAMQ6gIgGCoCJCEKIBgqAgwhEiAYKgIYIRMgGCoCKCELIBgqAhAhFCAYKgIcIRUgACAJIAkgESARIAQiDCAEIBFdIhobIAQgBFwbIgQgBCAJXRsgBCAEXBsiFyAYKgIsIhYgFiAYKgIgIgYgBiAYKgIUIgQgBCAGXSIbGyAEIARcGyIFIAUgFl0bIAUgBVwbIgUgBSAXXxs4AhQgACAIIAggECAQIA8gDyAQXSIZGyAPIA9cGyIFIAUgCF0bIAUgBVwbIhcgCyALIBUgFSAUIBQgFV0iAxsgFCAUXBsiBSAFIAtdGyAFIAVcGyIFIAUgF18bOAIQIAAgByAHIA4gDiANIA0gDl0iAhsgDSANXBsiBSAFIAddGyAFIAVcGyIXIAogCiATIBMgEiASIBNdIgEbIBIgElwbIgUgBSAKXRsgBSAFXBsiBSAFIBdfGzgCDCAAIAwgDCARIBobIBEgEVwbIgwgDCAJIAkgDF4bIAkgCVwbIgwgBCAEIAYgGxsgBiAGXBsiBCAEIBYgBCAWXRsgFiAWXBsiBCAEIAxgGzgCCCAAIA8gDyAQIBkbIBAgEFwbIgQgBCAIIAQgCF0bIAggCFwbIgYgFCAUIBUgAxsgFSAVXBsiBCAEIAsgBCALXRsgCyALXBsiBCAEIAZgGzgCBCAAIA0gDSAOIAIbIA4gDlwbIgQgBCAHIAQgB10bIAcgB1wbIgYgEiASIBMgARsgEyATXBsiBCAEIAogBCAKXRsgCiAKXBsiBCAEIAZgGzgCACAYQTBqJAALhgMCAX8BfSABKgIAIQMgACgCACICKAIIIQAgAigCACAAa0EDTQRAIAIgAEEEEOUGIAIoAgghAAsgAigCBCAAaiADOAAAIAIgAEEEaiIANgIIIAEqAgQhAyACKAIAIABrQQNNBEAgAiAAQQQQ5QYgAigCCCEACyACKAIEIABqIAM4AAAgAiAAQQRqIgA2AgggASoCCCEDIAIoAgAgAGtBA00EQCACIABBBBDlBiACKAIIIQALIAIoAgQgAGogAzgAACACIABBBGoiADYCCCABKgIMIQMgAigCACAAa0EDTQRAIAIgAEEEEOUGIAIoAgghAAsgAigCBCAAaiADOAAAIAIgAEEEaiIANgIIIAEqAhAhAyACKAIAIABrQQNNBEAgAiAAQQQQ5QYgAigCCCEACyACKAIEIABqIAM4AAAgAiAAQQRqIgA2AgggASoCFCEDIAIoAgAgAGtBA00EQCACIABBBBDlBiACKAIIIQALIAIgAEEEajYCCCACKAIEIABqIAM4AABBAAuMAwIDfgx/IAEoAgwiB0EEayEPIAEoAhAiCCACKAIIIgkgAigCBCIKIAIoAgAiC0HKyp+JenNBufPd8XlsQQV3c0G5893xeWxBBXdzQbnz3fF5bCIMcSECIAxBGXatQoGChIiQoMCAAX4hBSABKAIIIQ0gASgCBCEQA0ACQCACIAdqKQAAIgQgBYUiA0KBgoSIkKDAgAF9IANCf4WDQoCBgoSIkKDAgH+DIgNQDQACQANAIA0gDyADeqdBA3YgAmogCHEiEUECdGsoAgAiBksEQAJAIBAgBkEUbGoiBigCBCALRw0AIAZBBGoiBigCBCAKRw0AIAYoAgggCUYNAwsgA0IBfSADgyIDQgBSDQEMAwsLIAYgDUHE+MAAEJkJAAsgACABNgIEIABBADYCACAAIAdBACARa0ECdGo2AggPCyAEIARCAYaDQoCBgoSIkKDAgH+DUARAIA5BCGoiDiACaiAIcSECDAELCyAAIAk2AhAgACAKNgIMIAAgCzYCCCAAIAw2AgQgACABNgIAC+gCAQV/IwBBIGsiBCQAAkACQAJ/IAJFBEBByI/BACEDQQAMAQsCfyACQQhPBEAgAkH/////AU0EQEF/IAJBA3RBB25BAWtndiICQf7///8DSw0FIAJBAWoMAgsMBAtBBEEIIAJBBEkbCyICQQJ0IgVBB2ohAyADIAVJDQIgAkEIaiIHIANBeHEiBWohAyADIAVJDQIgA0H4////B0sNAgJAIANFBEBBCCEGDAELQYGJxAAtAAAaIANBCBDcDCIGRQ0CCyAFIAZqIgNB/wEgBxDnDRogAkEBayIFIAJBA3ZBB2wgAkEJSRsLIQIgAEEANgIYIAAgAjYCFCAAIAU2AhAgACADNgIMIABChICAgIABNwIEIAAgATYCACAEQSBqJAAPC0EIIANBiKvEACgCACIAQc8HIAAbEQAAAAsgBEEANgIYIARBATYCDCAEQfyPwQA2AgggBEIENwIQIARBCGpB7JDBABCRCwAL6AIBBX8jAEEgayIEJAACQAJAAn8gAkUEQEHAksIAIQNBAAwBCwJ/IAJBCE8EQCACQf////8BTQRAQX8gAkEDdEEHbkEBa2d2IgJB/v///wNLDQUgAkEBagwCCwwEC0EEQQggAkEESRsLIgJBAnQiBUEHaiEDIAMgBUkNAiACQQhqIgcgA0F4cSIFaiEDIAMgBUkNAiADQfj///8HSw0CAkAgA0UEQEEIIQYMAQtBgYnEAC0AABogA0EIENwMIgZFDQILIAUgBmoiA0H/ASAHEOcNGiACQQFrIgUgAkEDdkEHbCACQQlJGwshAiAAQQA2AhggACACNgIUIAAgBTYCECAAIAM2AgwgAEKEgICAgAE3AgQgACABNgIAIARBIGokAA8LQQggA0GIq8QAKAIAIgBBzwcgABsRAAAACyAEQQA2AhggBEEBNgIMIARBlJvCADYCCCAEQgQ3AhAgBEEIakGEnMIAEJELAAv1AgIDfxJ9AkACQCADIAEoAgAiBEsEQCABKAIEIgUgA08NASABKAIIIgYgA0kNAiAGIANBxLjCABCZCQALIAQgA0GkuMIAEJkJAAsgBSADQbS4wgAQmQkACyACIAZBJGxqIgMqAgwhCiACIARBJGxqIgQqAgwhCyACIAVBJGxqIgIqAgwhDCADKgIQIQ0gBCoCECEOIAIqAhAhDyADKgIUIRAgBCoCFCERIAIqAhQhEiADKgIYIRMgBCoCGCEUIAIqAhghFSADKgIcIRYgBCoCHCEXIAIqAhwhGCAAIAEqAiQiByAEKgIglCABKgIoIgggAioCIJSSIAEqAiwiCSADKgIglJI4AhQgACAHIBeUIAggGJSSIAkgFpSSOAIQIAAgByAUlCAIIBWUkiAJIBOUkjgCDCAAIAcgEZQgEiAIlJIgECAJlJI4AgggACAHIA6UIAggD5SSIA0gCZSSOAIEIAAgByALlCAIIAyUkiAKIAmUkjgCAAv6AgEIfyMAQSBrIgIkACAAKAIAIQQCQAJAIAFB////PyAAKAIUIAAoAhhqIgMgA0H///8/TxsgACgCCCIDayIFTwRAIAQgA2shBgwBCyAFIAQgA2siBk0NASADIAVqIgUgA0kNAEEEIQcgBUEEdCEIIAVBgICAwABJQQJ0IQkCQCAERQRAQQAhBwwBCyACIARBBHQ2AhwgAiAAKAIENgIUCyACIAc2AhggAkEIaiAJIAggAkEUahCOByACKAIIDQAgAigCDCEBIAAgBTYCACAAIAE2AgQMAQsgASAGTQ0AIAMgASADaiIBSwRAQQBBABC+DAALQQQhAyABQQR0IQUgAUGAgIDAAElBAnQhBgJAIARFBEBBACEDDAELIAIgBEEEdDYCHCACIAAoAgQ2AhQLIAIgAzYCGCACQQhqIAYgBSACQRRqEI4HIAIoAggEQCACKAIMIAIoAhAQvgwACyACKAIMIQQgACABNgIAIAAgBDYCBAsgAkEgaiQAC+gCAgF/Cn0jAEHgAWsiBCQAIAIqAgAgASoCEJMiCyABKgIEIgWUIAIqAgQgASoCFJMiDCABKgIAIgeUkyIIIAiSIQggDCABKgIIIgqUIAIqAgggASoCGJMiBiAFlJMiCSAJkiEJIAQgBiABKgIMIg0gCJQgBSAJlCAHIAYgB5QgCyAKlJMiBiAGkiIGlJOSkiIOOAIMIAQgCyANIAmUIAogBpQgBSAIlJOSkiIFOAIEIAQgDCANIAaUIAcgCJQgCiAJlJOSkiIHOAIIIARB2AFqQgA3AgAgBEIANwLQASAEQoKAgIAwNwIoIARCgICAgBA3AiAgBEEwakEAQaABEOcNGiAEQRBqIAAoAgQgACgCCCAEQSBqIARBBGogAxAiIAQqAhAgBZMiBSAFlCAEKgIUIAeTIgUgBZSSIAQqAhggDpMiBSAFlJIQkgEhBSAELQAcIQAgBEHgAWokACAFIAWMIAUgABsgAxsL2QIBB39BASEJAkACQCACRQ0AIAEgAkEBdGohCiAAQYD+A3FBCHYhCyAAQf8BcSENA0AgAUECaiEMIAcgAS0AASICaiEIIAsgAS0AACIBRwRAIAEgC0sNAiAIIQcgCiAMIgFGDQIMAQsCQAJAIAcgCE0EQCAEIAhJDQEgAyAHaiEBA0AgAkUNAyACQQFrIQIgAS0AACEHIAFBAWohASAHIA1HDQALQQAhCQwFCyAHIAhB7PHDABDHDQALIAggBEHs8cMAEMUNAAsgCCEHIAogDCIBRw0ACwsgBkUNACAFIAZqIQMgAEH//wNxIQEDQCAFQQFqIQACQCAFLQAAIgLAIgRBAE4EQCAAIQUMAQsgACADRwRAIAUtAAEgBEH/AHFBCHRyIQIgBUECaiEFDAELQdzxwwAQyA0ACyABIAJrIgFBAEgNASAJQQFzIQkgAyAFRw0ACwsgCUEBcQvcAgIBfwp9IwBBMGsiBiQAIAMqAgAgAioCEJMiDSACKgIEIgiUIAMqAgQgAioCFJMiDiACKgIAIgmUkyIHIAeSIQcgDiACKgIIIguUIAMqAgggAioCGJMiCiAIlJMiDCAMkiEMIAYgCiACKgIMIg8gB5QgCCAMlCAJIAogCZQgDSALlJMiCiAKkiIKlJOSkiIQOAIIIAYgDSAPIAyUIAsgCpQgCCAHlJOSkiIIOAIAIAYgDiAPIAqUIAkgB5QgCyAMlJOSkiIJOAIEIAZBDGogASAGIAQQRiAGKAIYIQECQCAIIAYqAgwiCJMiByAHlCAJIAYqAhAiCZMiByAHlJIgECAGKgIUIgeTIgsgC5SSEJIBIAVeRSABQf8BcUECR3FFBEAgAEECOgAMDAELIAYgATYCGCAGIAc4AhQgBiAJOAIQIAYgCDgCDCAAIAZBDGogAhCkBgsgBkEwaiQAC/MCAgJ/AX4jAEEgayIGJAACQAJAAkAgAEUNACAAKAIAIgVBf0YNASAAIAVBAWo2AgAgAkUNACACKAIAIgVBf0YNASACIAVBAWo2AgAgA0UNACADKAIAIgVBf0YNASADIAVBAWo2AgAgBEUNACAEKAIAIgVBf0YNASAEIAVBAWo2AgAgBkEIaiAEQQxqKQIANwMAIAYgBCkCBDcDACAGQRhqIANBBGoiBUEIaigCADYCACAGIAUpAgA3AxAgAEEEaiABvSIHpyAHQiCIpxDuCiIFRQ0CIAVB9ABqIAUoAjAgBSgCNCIFKAIIQQFrQXhxakEIaiAFIAYgAigCBCACKAIIIgUoAghBAWtBeHFqQQhqIAUQrgQhBSAEIAQoAgBBAWs2AgAgAyADKAIAQQFrNgIAIAIgAigCAEEBazYCACAAIAAoAgBBAWs2AgAgBkEgaiQAIAVBAXEPCxDUDQALENUNAAtBjLbAAEHMAEGAt8AAEJQMAAvCAgEEfwJAAkACQCAAKAIMRQ0AIAAoAhAgA0cNACAAKAIUIARGDQELIAUoAgAhCQJAIAAoAhhFDQAgCUUNACAAKAIcIAUoAgRHDQAgACgCICAFKAIIRg0BCyAAKAIABEAgBSgCSCAAKAIIcUUNASAFKAJMIAAoAgRxRQ0BCwJAIAAoAiQiB0UNACAFLQCcASEIIAdBCHFBACAIGw0BIAhFIAdBEHFBAEdxDQEgB0EBcSEIAkAgCQRAIAIgBSgCBCICTQ0CIAEgAkHwAmxqIgEoAgBFDQIgASgCBCAFKAIIRw0CIAEtAOkCIQEgCEUNASABQQFHDQEMAwsgCA0CDAELIAdBAnFBAEcgAUEBS3ENASAHQQRxRQ0AIAFFDQELIAAoAigiAQ0BQQEhBgsgBg8LIAEgAyAEIAUgACgCLCgCFBEQAAvaAgIEfwl9IAQoAgwiByADKAIAIgVBA2oiBk8EQAJAIAQoAgQiCCAFQQJ0aiIEIAEpAgA3AgAgBEEIaiABQQhqKAIANgIAIAVBBmogB0sNACAIIAZBAnRqIgYgAikCADcCACAGQQhqIAJBCGooAgA2AgAgBUEMaiIFIAdLDQAgBEEgaiAAKgIgIAEqAgiUOAIAIARBHGogACoCHCABKgIElDgCACAEQRhqIAAqAhggASoCAJQ4AgAgACoCACEPIAAqAgwhECAAKgIEIQwgACoCFCERIAIqAgghCSAAKgIQIQ0gAioCBCEKIAAqAgghDiACKgIAIQsgAyAFNgIAIARBLGogCSARlCAKIA2UIAsgDpSSkjgCACAEQShqIAkgDZQgCiAQlCALIAyUkpI4AgAgBEEkaiAJIA6UIAogDJQgCyAPlJKSOAIADwsLQbr6wABBHUHE+8AAEOQLAAuHAwIDfQN/IwBBEGshBSAAvCEGAkAgAIsiAbwiBEH////jBE0EQAJ/AkACQCAEQYCAgPcDTwRAIARBgIDg/ANJDQIgBEGAgPCABEkNAUMAAIC/IAGVIQBBAwwDC0F/IARBgICAzANPDQIaIARBgICABE8NBCAFIAAgAJQ4AgwgBSoCDBogAA8LIAFDAADAv5IgAUMAAMA/lEMAAIA/kpUhAEECDAELIARBgIDA+QNPBEAgAUMAAIC/kiABQwAAgD+SlSEAQQEMAQsgASABkkMAAIC/kiABQwAAAECSlSEAQQALIQUgACAAlCICIAKUIgEgAUNHEtq9lEOYyky+kpQhAyACIAEgAUMlrHw9lEMN9RE+kpRDqaqqPpKUIQEgBEGAgID3A08EQCAFQQJ0IgRBiL7DAGoqAgAgACADIAGSlCAEQZi+wwBqKgIAkyAAk5MiACAAjCAGQQBOGw8LIAAgACADIAGSlJMhAAwBCyAAIABcDQBD2g/JP0PaD8m/IAZBAE4bDwsgAAv0AgIHfQN/IwBBQGoiCiQAIABBCGoiCyoCACEDIAAqAgAhBCAAKgIEIQUgCkEgaiIMIAsoAgA2AgAgCiAAKQIANwIYIAogA4wiAzgCFCADIAEqAggiCJMiAyAIIAwqAgCTIgYgAyAGYBsiA0MAAAAAIANDAAAAAGAbIQMgCiAFjCIFOAIQIAUgASoCBCIGkyIFIAYgCioCHJMiByAFIAdgGyIFQwAAAAAgBUMAAAAAYBshBSAKIASMIgQ4AgwgBCABKgIAIgeTIgQgByAKKgIYkyIJIAQgCWAbIgRDAAAAACAEQwAAAABgGyEEAn0CQAJAIAINACAEQwAAAABcDQAgBUMAAAAAXA0AIANDAAAAAFsNAQsgBCAElCAFIAWUkiADIAOUkhCSAQwBCyAKQSRqIApBDGogAUEAELMCIAoqAiQgB5MiAyADlCAKKgIoIAaTIgMgA5SSIAoqAiwgCJMiAyADlJIQkgGMCyEDIApBQGskACADC8QIAg9/AX4jAEFAaiIIJAACQAJAAkAgAEUNACAAKAIAIglBf0YNASAAIAlBAWo2AgAgAkUNACACKAIAIglBf0YNASACIAlBAWo2AgAgBEUNACAEKAIAIglBf0YNASAEIAlBAWo2AgAgAkEEaiEMIARBBGohDSAHQQBHIQ4jAEGAAWsiByQAAkACQCAAQQRqIgogA70iF6ciEiAXQiCIpyITEO4KIgkEQCAKIAG9IhenIBdCIIinEO4KIgpFDQEgCigCMCEPIAooAjQiECgCCCERIAkoAjAhFCAJKAI0IhUoAgghFiAHQQE6ABEgByAOOgAQIAcgBTgCDCAHIAY4AgggB0HEAGogCkH0AGogDCAPIBFBAWtBeHFqQQhqIBAgCUH0AGogDSAUIBZBAWtBeHFqQQhqIBUgB0EIahDdAgJAAkAgBy0AeCIMQQVHBEAgB0EIaiIJQTBqIg0gB0HEAGoiCkEwaigCADYCACAJQShqIg4gCkEoaikCADcDACAJQSBqIg8gCkEgaikCADcDACAJQRhqIhAgCkEYaikCADcDACAJQRBqIhEgCkEQaikCADcDACAJQQhqIApBCGopAgA3AwAgB0EGaiIJIAdB+wBqLQAAOgAAIAcgBykCRDcDCCAHIAcvAHk7AQQgDEEERw0BCyAIIAcpAkQ3AgAgCEEEOgA8IAggBy8AQTsAPSAIQThqIAdBxABqIglBOGooAgA2AgAgCEEwaiAJQTBqKQIANwIAIAhBKGogCUEoaikCADcCACAIQSBqIAlBIGopAgA3AgAgCEEYaiAJQRhqKQIANwIAIAhBEGogCUEQaikCADcCACAIQQhqIAlBCGopAgA3AgAgCEE/aiAHQcMAai0AADoAAAwBCyAIIAcpAwg3AgggCCAHLwEEOwA9IAhBOGogDSgCADYCACAIQTBqIA4pAwA3AgAgCEEoaiAPKQMANwIAIAhBIGogECkDADcCACAIQRhqIBEpAwA3AgAgCEEQaiAHQRBqKQMANwIAIAhBP2ogCS0AADoAACAIIAw6ADwgCCATNgIEIAggEjYCAAsgB0GAAWokAAwCC0GMtsAAQcwAQei4wAAQlAwAC0GMtsAAQcwAQYC3wAAQlAwACyAEIAQoAgBBAWs2AgAgAiACKAIAQQFrNgIAIAAgACgCAEEBazYCACAILQA8QQRHBEBBgYnEAC0AABpBxABBBBDcDCILRQ0DIAtBADYCACALIAgpAgA3AgQgC0EMaiAIQQhqKQIANwIAIAtBFGogCEEQaikCADcCACALQRxqIAhBGGopAgA3AgAgC0EkaiAIQSBqKQIANwIAIAtBLGogCEEoaikCADcCACALQTRqIAhBMGopAgA3AgAgC0E8aiAIQThqKQIANwIACyAIQUBrJAAgCw8LENQNAAsQ1Q0AC0EEQcQAQYirxAAoAgAiAEHPByAAGxEAAAAL2AIBCX0gACABKgIMIgZDAAAAP5QgASoCACIDQwAAAD+UkiIIIAaTIgYgBpQgASoCECIEQwAAAD+UIAEqAgQiB0MAAAA/lJIiBiAEkyIEIASUkiABKgIUIgVDAAAAP5QgASoCCCIJQwAAAD+UkiIEIAWTIgUgBZSSIgUgCCADkyIDIAOUIAYgB5MiAyADlJIgBCAJkyIDIAOUkiIDQwAAAAAgA0MAAAAAXhsiAyADIAVdGxCSATgCDCAAIAIqAhggBCACKgIMIgkgBiACKgIAIgOUIAggAioCBCIHlJMiBSAFkiILlCADIAggAioCCCIFlCAEIAOUkyIKIAqSIgqUIAcgByAElCAGIAWUkyIEIASSIgSUk5KSkjgCCCAAIAIqAhQgBiAJIAqUIAUgBJQgAyALlJOSkpI4AgQgACACKgIQIAggCSAElCAHIAuUIAUgCpSTkpKSOAIAC+ACAgF/Cn0jAEHgAWsiBCQAIAIqAgAgASoCEJMiCyABKgIEIgWUIAIqAgQgASoCFJMiDCABKgIAIgeUkyIIIAiSIQggDCABKgIIIgqUIAIqAgggASoCGJMiBiAFlJMiCSAJkiEJIAQgBiABKgIMIg0gCJQgBSAJlCAHIAYgB5QgCyAKlJMiBiAGkiIGlJOSkiIOOAIMIAQgCyANIAmUIAogBpQgBSAIlJOSkiIFOAIEIAQgDCANIAaUIAcgCJQgCiAJlJOSkiIHOAIIIARB2AFqQgA3AgAgBEIANwLQASAEQoKAgIAwNwIoIARCgICAgBA3AiAgBEEwakEAQaABEOcNGiAEQRBqIAAgBEEgaiAEQQRqIAMQHCAEKgIQIAWTIgUgBZQgBCoCFCAHkyIFIAWUkiAEKgIYIA6TIgUgBZSSEJIBIQUgBC0AHCEAIARB4AFqJAAgBSAFjCAFIAAbIAMbC+ACAgF/Cn0jAEHgAWsiBCQAIAIqAgAgASoCEJMiCyABKgIEIgWUIAIqAgQgASoCFJMiDCABKgIAIgeUkyIIIAiSIQggDCABKgIIIgqUIAIqAgggASoCGJMiBiAFlJMiCSAJkiEJIAQgBiABKgIMIg0gCJQgBSAJlCAHIAYgB5QgCyAKlJMiBiAGkiIGlJOSkiIOOAIMIAQgCyANIAmUIAogBpQgBSAIlJOSkiIFOAIEIAQgDCANIAaUIAcgCJQgCiAJlJOSkiIHOAIIIARB2AFqQgA3AgAgBEIANwLQASAEQoKAgIAwNwIoIARCgICAgBA3AiAgBEEwakEAQaABEOcNGiAEQRBqIAAgBEEgaiAEQQRqIAMQHyAEKgIQIAWTIgUgBZQgBCoCFCAHkyIFIAWUkiAEKgIYIA6TIgUgBZSSEJIBIQUgBC0AHCEAIARB4AFqJAAgBSAFjCAFIAAbIAMbC+ACAgF/Cn0jAEHgAWsiBCQAIAIqAgAgASoCEJMiCyABKgIEIgWUIAIqAgQgASoCFJMiDCABKgIAIgeUkyIIIAiSIQggDCABKgIIIgqUIAIqAgggASoCGJMiBiAFlJMiCSAJkiEJIAQgBiABKgIMIg0gCJQgBSAJlCAHIAYgB5QgCyAKlJMiBiAGkiIGlJOSkiIOOAIMIAQgCyANIAmUIAogBpQgBSAIlJOSkiIFOAIEIAQgDCANIAaUIAcgCJQgCiAJlJOSkiIHOAIIIARB2AFqQgA3AgAgBEIANwLQASAEQoKAgIAwNwIoIARCgICAgBA3AiAgBEEwakEAQaABEOcNGiAEQRBqIAAgBEEgaiAEQQRqIAMQICAEKgIQIAWTIgUgBZQgBCoCFCAHkyIFIAWUkiAEKgIYIA6TIgUgBZSSEJIBIQUgBC0AHCEAIARB4AFqJAAgBSAFjCAFIAAbIAMbC+ACAgF/Cn0jAEHgAWsiBCQAIAIqAgAgASoCEJMiCyABKgIEIgWUIAIqAgQgASoCFJMiDCABKgIAIgeUkyIIIAiSIQggDCABKgIIIgqUIAIqAgggASoCGJMiBiAFlJMiCSAJkiEJIAQgBiABKgIMIg0gCJQgBSAJlCAHIAYgB5QgCyAKlJMiBiAGkiIGlJOSkiIOOAIMIAQgCyANIAmUIAogBpQgBSAIlJOSkiIFOAIEIAQgDCANIAaUIAcgCJQgCiAJlJOSkiIHOAIIIARB2AFqQgA3AgAgBEIANwLQASAEQoKAgIAwNwIoIARCgICAgBA3AiAgBEEwakEAQaABEOcNGiAEQRBqIAAgBEEgaiAEQQRqIAMQHSAEKgIQIAWTIgUgBZQgBCoCFCAHkyIFIAWUkiAEKgIYIA6TIgUgBZSSEJIBIQUgBC0AHCEAIARB4AFqJAAgBSAFjCAFIAAbIAMbC+ACAgF/Cn0jAEHgAWsiBCQAIAIqAgAgASoCEJMiCyABKgIEIgWUIAIqAgQgASoCFJMiDCABKgIAIgeUkyIIIAiSIQggDCABKgIIIgqUIAIqAgggASoCGJMiBiAFlJMiCSAJkiEJIAQgBiABKgIMIg0gCJQgBSAJlCAHIAYgB5QgCyAKlJMiBiAGkiIGlJOSkiIOOAIMIAQgCyANIAmUIAogBpQgBSAIlJOSkiIFOAIEIAQgDCANIAaUIAcgCJQgCiAJlJOSkiIHOAIIIARB2AFqQgA3AgAgBEIANwLQASAEQoKAgIAwNwIoIARCgICAgBA3AiAgBEEwakEAQaABEOcNGiAEQRBqIAAgBEEgaiAEQQRqIAMQHiAEKgIQIAWTIgUgBZQgBCoCFCAHkyIFIAWUkiAEKgIYIA6TIgUgBZSSEJIBIQUgBC0AHCEAIARB4AFqJAAgBSAFjCAFIAAbIAMbC/cCAgp9AX8jAEEgayIMJAAgASoCACICQ6uqqj6UIAEqAgwiA0Orqqo+lJIgASoCGCIEQ6uqqj6UkiIHIASTIgQgBJQgASoCBCIIQ6uqqj6UIAEqAhAiCUOrqqo+lJIgASoCHCIFQ6uqqj6UkiIEIAWTIgUgBZSSIAEqAggiCkOrqqo+lCABKgIUIgtDq6qqPpSSIAEqAiAiBkOrqqo+lJIiBSAGkyIGIAaUkiIGIAcgA5MiAyADlCAEIAmTIgMgA5SSIAUgC5MiAyADlJIiAyAHIAKTIgIgApQgBCAIkyICIAKUkiAFIAqTIgIgApSSIgJDAAAAACACQwAAAABeGyICIAIgA10bIgIgAiAGXRsQkgEhAiABKgIkIgNDAAAAAGBFBEAgDEEANgIYIAxBATYCDCAMQaydwgA2AgggDEIENwIQIAxBCGpBuLrDABCRCwALIAAgBTgCCCAAIAQ4AgQgACAHOAIAIAAgAiADkjgCDCAMQSBqJAAL5AIBBX8jAEEgayIDJAACQAJAAkAgAUUEQCAAQQhqQaiAwAApAgA3AgAgAEGggMAAKQIANwIADAELAn8gAUEITwRAIAFB/////wFNBEBBfyABQQN0QQduQQFrZ3YiAUH+////A0sNBSABQQFqDAILDAQLQQRBCCABQQRJGwsiAUECdCIEQQdqIQIgAiAESQ0CIAFBCGoiBiACQXhxIgRqIQIgAiAESQ0CIAJB+P///wdLDQICQCACRQRAQQghBQwBC0GBicQALQAAGiACQQgQ3AwiBUUNAgsgBCAFakH/ASAGEOcNIQIgAEEANgIMIAAgAUEBayIENgIEIAAgAjYCACAAIAQgAUEDdkEHbCABQQlJGzYCCAsgA0EgaiQADwtBCCACQYirxAAoAgAiAEHPByAAGxEAAAALIANBADYCGCADQQE2AgwgA0GcscAANgIIIANCBDcCECADQQhqQYyywAAQkQsAC+oCAgh9A38jAEEgayILJAACQCABKAIIIgwEQCABKAIEIgoqAgghAyAKKgIEIQQgCioCACEFAkAgDEEBRgRAIAMhBiAEIQcgBSEIDAELIAogDEEMbGohDCAKQQxqIQogBSEIIAQhByADIQYDQCAGIApBCGoqAgAiCSAGIAlgGyEGIAcgCkEEaioCACICIAIgB18bIQcgAyAJIAMgCV8bIQMgBCACIAIgBGAbIQQgCCAKKgIAIgIgAiAIXxshCCAFIAIgAiAFYBshBSAMIApBDGoiCkcNAAsLIAEqAmAiAkMAAAAAYEUNASAAIAYgApI4AhQgACAHIAKSOAIQIAAgCCACkjgCDCAAIAMgApM4AgggACAEIAKTOAIEIAAgBSACkzgCACALQSBqJAAPC0G6nsIAQdIAQZyfwgAQlAwACyALQQA2AhggC0EBNgIMIAtBrJ3CADYCCCALQgQ3AhAgC0EIakG0ncIAEJELAAuJAwEXfSABQRxqKgIAIQIgAUE0aioCACEDIAFBzABqKgIAIQQgAUEgaioCACEFIAFBOGoqAgAhBiABQdAAaioCACEHIAFBJGoqAgAhCCABQTxqKgIAIQkgAUHUAGoqAgAhCiABQRBqKgIAIQsgAUEoaioCACEMIAFBQGsqAgAhDSABQdgAaioCACEOIAFBFGoqAgAhDyABQSxqKgIAIRAgAUHEAGoqAgAhESABKgIAIRIgASoCGCETIAEqAjAhFCABKgJIIRUgASoCBCEWIAEqAgghFyABKgIMIRggACABQdwAaioCADgCXCAAIBE4AlggACAQOAJUIAAgDzgCUCAAIA44AkwgACANOAJIIAAgDDgCRCAAIAs4AkAgACAKOAI8IAAgCTgCOCAAIAg4AjQgACAYOAIwIAAgBzgCLCAAIAY4AiggACAFOAIkIAAgFzgCICAAIAQ4AhwgACADOAIYIAAgAjgCFCAAIBY4AhAgACAVOAIMIAAgFDgCCCAAIBM4AgQgACASOAIAC/MCAQR/IAAoAgwhAgJAAkAgAUGAAk8EQCAAKAIYIQMCQAJAIAAgAkYEQCAAQRRBECAAKAIUIgIbaigCACIBDQFBACECDAILIAAoAggiASACNgIMIAIgATYCCAwBCyAAQRRqIABBEGogAhshBANAIAQhBSABIgIoAhQhASACQRRqIAJBEGogARshBCACQRRBECABG2ooAgAiAQ0ACyAFQQA2AgALIANFDQIgACAAKAIcQQJ0QairxABqIgEoAgBHBEAgA0EQQRQgAygCECAARhtqIAI2AgAgAkUNAwwCCyABIAI2AgAgAg0BQcSuxABBxK7EACgCAEF+IAAoAhx3cTYCAAwCCyACIAAoAggiAEcEQCAAIAI2AgwgAiAANgIIDwtBwK7EAEHArsQAKAIAQX4gAUEDdndxNgIADwsgAiADNgIYIAAoAhAiAQRAIAIgATYCECABIAI2AhgLIAAoAhQiAEUNACACIAA2AhQgACACNgIYCwuDAwIFfwF+IwBBQGoiBCQAQQEhBgJAIAAtAAQNACAALQAFIQcgACgCACIFKAIcIghBBHFFBEAgBSgCFEGf68MAQZzrwwAgBxtBAkEDIAcbIAUoAhgoAgwRBAANASAFKAIUIAFBBCAFKAIYKAIMEQQADQEgBSgCFEHs6sMAQQIgBSgCGCgCDBEEAA0BIAIgBSADKAIMEQMAIQYMAQsgB0UEQCAFKAIUQaHrwwBBAyAFKAIYKAIMEQQADQEgBSgCHCEICyAEQQE6ABsgBCAFKQIUNwIMIARBgOvDADYCNCAEIARBG2o2AhQgBCAFKQIINwIkIAUpAgAhCSAEIAg2AjggBCAFKAIQNgIsIAQgBS0AIDoAPCAEIAk3AhwgBCAEQQxqIgU2AjAgBSABQQQQ6AINACAEQQxqQezqwwBBAhDoAg0AIAIgBEEcaiADKAIMEQMADQAgBCgCMEGk68MAQQIgBCgCNCgCDBEEACEGCyAAQQE6AAUgACAGOgAEIARBQGskACAAC+cCAQV/IwBB8ABrIgUkAAJAAkAgAiADKAIAIgZLBEAgAygCBCIHIAJPDQEgAygCCCIIIAJPDQIgBUEIaiIJQQhqIAEgBkEkbGoiBkEIaigCADYCACAFQShqIAEgCEEkbGoiCEEIaigCADYCACAFQRxqIAEgB0EkbGoiB0EIaigCADYCACAFIAYpAgA3AwggBSAIKQIANwMgIAUgBykCADcCFCAFQQA2AmwgBUIANwJkQQEhBiAFQUBrIAkgBUHkAGpBARBLIAVBOGogBUHcAGopAgA3AwAgBSAFKQJUNwMwAkAgBSgCUEECRgRAIAAgASACIAVBMGpBBHIgAyAEELUEDAELIAVBQGsiBkEIakEANgIAIAVCADcDQCAAIAEgAiAGIAMgBBC1BEEAIQYLIAAgBjoANCAFQfAAaiQADwsgBiACQfS3wgAQmQkACyAHIAJBhLjCABCZCQALIAggAkGUuMIAEJkJAAvRAgIKfQF/IAEqAgAiCCAIlCABKgIIIgUgBZSSEJIBIQQgACoCBCIGQwAAAAAgBSAElSAEQwAAADRfIg0blCEKIAZDAACAPyAIIASVIA0blCELAkACQAJAAkACQAJAAkACQAJAIAEqAgQiByAAKgIAIgmMIgNgRQ0AIAQgBl9FDQAgByAJXw0BCyAHIAleDQFBASEBIAMgB15FDQUgBCAGX0UNBwwGC0EAIQEgAkUNASAFIQogByEDIAghCwwGC0EBIQEgBCAGXw0BIAkhAwwFCyAGIASTIQQgByAJkiIGIAkgB5MiDF5FDQEgBCAMXkUNAQsgBSEKIAkhAyAIIQsMAwsgBiAMXUUNACAEIAZeDQELIAchAwwBCyAFIQogCCELCyAKIAWTIgUgBZQgAyAHkyIDIAOUIAsgCJMiAyADlJKSEJIBIgMgAyADjCACGyABGwvYAgIBfwl9IwBB0ABrIgUkACADKgIAIAIqAhCTIgwgAioCBCIIlCADKgIEIAIqAhSTIg0gAioCACIJlJMiBiAGkiEGIA0gAioCCCILlCADKgIIIAIqAhiTIgcgCJSTIgogCpIhCiAFIAcgAioCDCIOIAaUIAggCpQgCSAHIAmUIAwgC5STIgcgB5IiB5STkpI4AhggBSANIA4gB5QgCSAGlCALIAqUk5KSOAIUIAUgDCAOIAqUIAsgB5QgCCAGlJOSkjgCECABQQhqIgMqAgAhCCABKgIAIQkgASoCBCEGIAVBMGogAygCADYCACAFIAiMOAIkIAUgBow4AiAgBSAJjDgCHCAFIAEpAgA3AiggBUE0aiIBIAVBHGogBUEQaiAEELMCIAVBCGogAUEIaigCADYCACAFIAUpAjQ3AwAgBSAFLQBAOgAMIAAgBSACEKQGIAVB0ABqJAAL5gICA38BfiACrSEGIAAoAgAiACgCCCEEIAAoAgAgBGtBB00EQCAAIARBCBDlBiAAKAIIIQQLIAAgBEEIaiIDNgIIIAAoAgQgBGogBjcAACACBEAgASACQQR0aiEEA0AgASgCBCECIAEoAgAhBSAAKAIAIANrQQNNBEAgACADQQQQ5QYgACgCCCEDCyAAKAIEIANqIAU2AAAgACADQQRqIgM2AgggACgCACADa0EDTQRAIAAgA0EEEOUGIAAoAgghAwsgACgCBCADaiACNgAAIAAgA0EEaiIDNgIIIAEoAgwhBSABKAIIIQIgACgCACADa0EDTQRAIAAgA0EEEOUGIAAoAgghAwsgACgCBCADaiACNgAAIAAgA0EEaiICNgIIIAAoAgAgAmtBA00EQCAAIAJBBBDlBiAAKAIIIQILIAAgAkEEaiIDNgIIIAAoAgQgAmogBTYAACAEIAFBEGoiAUcNAAsLQQALzwIDAn8JfQF+IwBB4ABrIgQkACADKgIAIAIqAhCTIgwgAioCBCIJlCADKgIEIAIqAhSTIg0gAioCACIKlJMiByAHkiEHIA0gAioCCCILlCADKgIIIAIqAhiTIgYgCZSTIgggCJIhCCAEIAYgAioCDCIOIAeUIAkgCJQgCiAGIAqUIAwgC5STIgYgBpIiBpSTkpI4AiQgBCANIA4gBpQgCiAHlCALIAiUk5KSOAIgIAQgDCAOIAiUIAsgBpQgCSAHlJOSkjgCHCAEQTxqIgMgASAEQRxqQQEQRiAEQTBqIANBCGopAgAiDzcDACAEQQhqIA83AwAgBCAEKQI8Ig83AyggBCAPNwMAIAQgBCgCUEEAIAQoAkwiAUEDSSIDGyIFNgIUIAQgAUECIAMbIgE2AhAgACAEIAIQpAYgACAFNgIUIAAgATYCECAEQeAAaiQAC4oDAQp/IwBBQGoiAiQAAkACQCAABEAgACgCAA0BIABBADYCACAAKAK4AyEDIABBgICAgHg2ArgDIANBgICAgHhHBEAgAkE4aiIEIABB9ANqKQIANwMAIAJBMGoiBSAAQewDaikCADcDACACQShqIgYgAEHkA2opAgA3AwAgAkEgaiIHIABB3ANqKQIANwMAIAJBGGoiCCAAQdQDaikCADcDACACQRBqIgkgAEHMA2opAgA3AwAgAkEIaiIKIABBxANqKQIANwMAQYGJxAAtAAAaIAIgACkCvAM3AwBByABBBBDcDCIBRQ0DIAEgAzYCBCABQQA2AgAgASACKQMANwIIIAFBEGogCikDADcCACABQRhqIAkpAwA3AgAgAUEgaiAIKQMANwIAIAFBKGogBykDADcCACABQTBqIAYpAwA3AgAgAUE4aiAFKQMANwIAIAFBQGsgBCkDADcCAAsgAkFAayQAIAEPCxDUDQALENUNAAtBBEHIAEGIq8QAKAIAIgBBzwcgABsRAAAAC/8CAQp/IwBBQGoiAiQAAkACQCAABEAgACgCAA0BIABBADYCACAAKAL8AyEDIABBADYC/AMgAwRAIAJBOGoiBCAAQbgEaikCADcDACACQTBqIgUgAEGwBGopAgA3AwAgAkEoaiIGIABBqARqKQIANwMAIAJBIGoiByAAQaAEaikCADcDACACQRhqIgggAEGYBGopAgA3AwAgAkEQaiIJIABBkARqKQIANwMAIAJBCGoiCiAAQYgEaikCADcDAEGBicQALQAAGiACIAApAoAENwMAQcgAQQQQ3AwiAUUNAyABIAM2AgQgAUEANgIAIAEgAikDADcCCCABQRBqIAopAwA3AgAgAUEYaiAJKQMANwIAIAFBIGogCCkDADcCACABQShqIAcpAwA3AgAgAUEwaiAGKQMANwIAIAFBOGogBSkDADcCACABQUBrIAQpAwA3AgALIAJBQGskACABDwsQ1A0ACxDVDQALQQRByABBiKvEACgCACIAQc8HIAAbEQAAAAvUAgMEfwF+AX0gAq0hByAAKAIAIgMoAgghBCADKAIAIARrQQdNBEAgAyAEQQgQ5QYgAygCCCEECyADIARBCGoiADYCCCADKAIEIARqIAc3AAAgAgRAIAEgAkEEdGohBgNAIAEoAgQhBCABKAIIIgWtIQcgAygCACAAa0EHTQRAIAMgAEEIEOUGIAMoAgghAAsgAyAAQQhqIgI2AgggAygCBCAAaiAHNwAAIAUEQCAFQQJ0IQUDQCAEKgIAIQggBEEEaiEEIAMgAygCACACa0EDSwR/IAIFIAMgAkEEEOUGIAMoAggLIgBBBGoiAjYCCCADKAIEIABqIAg4AAAgBUEEayIFDQAL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QcSuxAAoAgAgA3I2AgAPCwJAAkAgASAEKAIAIgMoAgRBeHFGBEAgAyECDAELIAFBGSACQQF2a0EAIAJBH0cbdCEFA0AgAyAFQR12QQRxakEQaiIEKAIAIgJFDQIgBUEBdCEFIAIhAyACKAIEQXhxIAFHDQALCyACKAIIIgEgADYCDCACIAA2AgggAEEANgIYIAAgAjYCDCAAIAE2AggPCyAEIAA2AgAgACADNgIYIAAgADYCDCAAIAA2AggLvwIBA38jAEEwayIFJAACQAJAIABFDQAgACgCACIEQX9GDQEgACAEQQFqNgIAIAFFDQAgASgCACIEQX9GDQEgASAEQQFqNgIAIAJFDQAgAigCACIEQX9GDQEgAiAEQQFqNgIAIANFDQAgAygCACIEQX9GDQEgAyAEQQFqNgIAIAVBCGogAkEMaikCADcDACAFIAIpAgQ3AwAgBUEYaiABQQxqKAIANgIAIAUgASkCBDcDECAFQSBqIgRBCGogA0EMaigCADYCACAFIAMpAgQ3AyAgACgCBCAAKAIIIgYoAghBAWtBeHFqQQhqIAUgBCAGKAJIEQQAIQQgAyADKAIAQQFrNgIAIAIgAigCAEEBazYCACABIAEoAgBBAWs2AgAgACAAKAIAQQFrNgIAIAVBMGokACAEDwsQ1A0ACxDVDQALtAICBX8BfiMAQaABayIBJAAgAUGMAWogAEEUaigCACIENgIAIAFB4ABqIgNBCGoiBSAAQQhqKAIANgIAIANBFGogBDYCACADQRhqIgYgACkCDCIINwMAIANBIGoiByAENgIAIAEgCDcChAEgASAAKQIANwNgIAEgCDcCbCABQoGAgIAQNwKYASABQoCAgIAQNwKQASABQThqIAFBkAFqIgAQxQUgAEEIakIANwMAIAFCADcDkAEgAUHIAGogABDGBSABQQhqIgBBCGogBSkDADcDACAAQRBqIANBEGopAwA3AwAgAEEYaiAGKQMANwMAIABBIGogBykDADcDACAAQShqIANBKGopAwA3AwAgAUKAgICALDcDWCABIAEpA2A3AwggAiAAQdgAEOUNGiABQaABaiQAC+sCAQd/IwBBEGsiAiQAAkAgASgCBCIDRQRAIABBAjYCAAwBCyABIANBAWs2AgQCQAJAAkAgASgCACIBKAIEIgUEQCABIAVBAWsiBjYCBCAB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ACABQShqIAQoAgA2AgALIAJBMGokACABDwsQ1A0ACxDVDQALQQRBLEGIq8QAKAIAIgBBzwcgABsRAAAAC4UCAQF/IAAoAgAiAQRAIAAoAgQgAUEDdEEEEL4NCyAAKAIMIgEEQCAAKAIQIAFBDGxBBBC+DQsgACgCICIBBEAgAEEkaigCACABQQN0QQQQvg0LIABBLGooAgAiAQRAIABBMGooAgAgAUEMbEEEEL4NCyAAKAJAIgEEQCAAQcQAaigCACABQQN0QQQQvg0LIABBzABqKAIAIgEEQCAAQdAAaigCACABQQxsQQQQvg0LIAAoAmAiAQRAIAAoAmQgAUECdEEEEL4NCyAAKAJwIgEEQCAAKAJ0IAFBAnRBBBC+DQsgACgCfCIBBEAgACgCgAEgAUECdEEEEL4NCyAAQZQBQQQQvg0L8wcCCH8CfiMAQZAFayIFJAACQAJAAkAgAUUNACABKAIAIgNBf0YNASABIANBAWo2AgAgAkUNACACKAIAIgNBf0YNASACIANBAWo2AgAgBUEIaiIDQgA3A2ggA0IANwOQASADQgA3AlQgA0H4AGpCADcDACADQfAAakIANwMAIANBmAFqQgA3AwAjAEHgAGsiBEHNAGoiBkELakIANwAAIARBOmoiB0ELakIANwAAIARBJ2oiCEELakIANwAAIARBFGoiCUELakIANwAAIARBAWoiCkELakIANwAAIANB3ABqQgA3AgAgBEIANwBQIARCADcAPSAEQgA3ACogBEIANwAXIARCADcABCADQRBqQQA2AgAgA0EIakIANwMAIANCADcDACADIAA4AhQgA0KAgICA8P//v383AxggA0L////7BzcDICADQv////v///+//wA3AyggA0KAgICA8P//v383AzAgA0L////7BzcDOCADQv////v///+//wA3A0AgA0KAgICA8P//v383A0ggA0KAgID8AzcDgAEgA0IANwOIASADQv////sHNwOgASADQQA6AKgBIANBgICA/AM2AmQgA0H////7BzYCUCADIAQpAE03AKkBIANBsQFqIAZBCGopAAA3AAAgA0G4AWogBkEPaigAADYAACADQQA6AMQBIANC////+wc3ArwBIANBADoA4AEgA0L////7BzcD2AEgA0EAOgD8ASADQv////sHNwL0ASADQdQBaiAHQQ9qKAAANgAAIANBzQFqIAdBCGopAAA3AAAgAyAEKQA6NwDFASADQfABaiAIQQ9qKAAANgAAIANB6QFqIAhBCGopAAA3AAAgAyAEKQAnNwDhASADQYwCaiAJQQ9qKAAANgAAIANBhQJqIAlBCGopAAA3AAAgAyAEKQAUNwD9ASADQQA6AJgCIANC////+wc3A5ACIANBqAJqIApBD2ooAAA2AAAgA0GhAmogCkEIaikAADcAACADIAQpAAE3AJkCIANBgAI7AbwCIANBgIKAODYCuAIgA0EAOgC0AiADQv////sHNwKsAiABQQRqIgRBCGooAgAhBiAEKQIAIQsgAiACKAIAQQFrNgIAIAVB+ABqIAY2AgAgBUGUAWogAkEMaigCADYCACACKQIEIQwgASABKAIAQQFrNgIAIAUgCzcDcCAFIAw3AowBIAVB0AJqIANBwAIQ5Q0aQYGJxAAtAAAaQcgCQQgQ3AwiAUUNAiABQQA2AgAgAUEEaiAFQcwCakHEAhDlDRogBUGQBWokACABDwsQ1A0ACxDVDQALQQhByAJBiKvEACgCACIBQc8HIAEbEQAAAAuQAgICfwF+IwBBMGsiCCQAAkACQAJAIABFDQAgACgCAA0BIABBfzYCACADRQ0AIAMoAgAiB0F/Rg0BIAMgB0EBajYCACAERQ0AIAQoAgAiB0F/Rg0BIAQgB0EBajYCACAFRQ0AIAUoAgAiB0F/Rg0BIAUgB0EBajYCACAAQQRqIAG9IgmnIAlCIIinEP4HIgdFDQIgCEEEaiADQQRqIAIgBEEEaiAFQQRqELEHIAhBADYCACAHIAggBkEARxCPAyAFIAUoAgBBAWs2AgAgBCAEKAIAQQFrNgIAIAMgAygCAEEBazYCACAAQQA2AgAgCEEwaiQADwsQ1A0ACxDVDQALQfS0wABBzQBB/LXAABCUDAALtgICAn0GfyAAKAIIIgNFBEBD//9/fw8LIAAoAgQhBSADQQFxIQYCQCADQQFGBEBBACEDQ///f38hAQwBCyAFQcQAaiEAIANBfnEhB0EAIQND//9/fyEBA0AgAEEoaygCACAAQSRrKAIAIgQoAghBAWtBeHFqQQhqIAQoAqQBEQoAIQIgACgCACEEIABBBGsoAgAhCCAAQcgAaiEAIAEgASACIAEgAl0bIAIgAlwbIgIgAiAIIAQoAghBAWtBeHFqQQhqIAQoAqQBEQoAIgEgASACXhsgASABXBshASAHIANBAmoiA0cNAAsLIAYEQCAFIANBJGxqIgNBIGooAgAhACABIAEgA0EcaigCACAAKAIIQQFrQXhxakEIaiAAKAKkAREKACICIAEgAl0bIAIgAlwbIQELIAELtgICA30GfyAAKAIIIgRFBEBD//9/fw8LIAAoAgQhBiAEQQFxIQcCQCAEQQFGBEBBACEEQ///f38hAQwBCyAGQcQAaiEAIARBfnEhCEEAIQRD//9/fyEBA0AgAEEoaygCACAAQSRrKAIAIgUoAghBAWtBeHFqQQhqIAUoAqgBEQoAIQIgACgCACEFIABBBGsoAgAhCSAAQcgAaiEAIAkgBSgCCEEBa0F4cWpBCGogBSgCqAERCgAiAyADIAIgAiABIAEgAl0bIAEgAVwbIgEgASADXRsgASABXBshASAIIARBAmoiBEcNAAsLIAcEQCAGIARBJGxqIgRBIGooAgAhACAEQRxqKAIAIAAoAghBAWtBeHFqQQhqIAAoAqgBEQoAIgIgAiABIAEgAl0bIAEgAVwbIQELIAEL7AcCCH8CfiMAQZAFayIEJAACQAJAAkAgAEUNACAAKAIAIgJBf0YNASAAIAJBAWo2AgAgAUUNACABKAIAIgJBf0YNASABIAJBAWo2AgAgBEEIaiICQgA3A2ggAkIANwOQASACQgA3AlQgAkH4AGpCADcDACACQfAAakIANwMAIAJBmAFqQgA3AwAjAEHgAGsiA0HNAGoiBUELakIANwAAIANBOmoiBkELakIANwAAIANBJ2oiB0ELakIANwAAIANBFGoiCEELakIANwAAIANBAWoiCUELakIANwAAIAJB3ABqQgA3AgAgA0IANwBQIANCADcAPSADQgA3ACogA0IANwAXIANCADcABCACQgA3AwggAkIANwMAIAJBADoAqAEgAkL////7BzcDoAEgAkIANwOIASACQoCAgPwDNwOAASACQYCAgPwDNgJkIAJB////+wc2AlAgAkKAgICA8P//v383A0ggAkL////7////v/8ANwNAIAJC////+wc3AzggAkKAgICA8P//v383AzAgAkL////7////v/8ANwMoIAJC////+wc3AyAgAkKAgICA8P//v383AxggAkL////7////v/8ANwMQIAIgAykATTcAqQEgAkGxAWogBUEIaikAADcAACACQbgBaiAFQQ9qKAAANgAAIAJBADoAxAEgAkL////7BzcCvAEgAkEAOgDgASACQv////sHNwPYASACQQA6APwBIAJC////+wc3AvQBIAJB1AFqIAZBD2ooAAA2AAAgAkHNAWogBkEIaikAADcAACACIAMpADo3AMUBIAJB8AFqIAdBD2ooAAA2AAAgAkHpAWogB0EIaikAADcAACACIAMpACc3AOEBIAJBjAJqIAhBD2ooAAA2AAAgAkGFAmogCEEIaikAADcAACACIAMpABQ3AP0BIAJBADoAmAIgAkL////7BzcDkAIgAkGoAmogCUEPaigAADYAACACQaECaiAJQQhqKQAANwAAIAIgAykAATcAmQIgAkGAAjsBvAIgAkEHNgK4AiACQQA6ALQCIAJC////+wc3AqwCIABBBGoiA0EIaigCACEFIAMpAgAhCiABIAEoAgBBAWs2AgAgBEH4AGogBTYCACAEQZQBaiABQQxqKAIANgIAIAEpAgQhCyAAIAAoAgBBAWs2AgAgBCAKNwNwIAQgCzcCjAEgBEHQAmogAkHAAhDlDRpBgYnEAC0AABpByAJBCBDcDCIARQ0CIABBADYCACAAQQRqIARBzAJqQcQCEOUNGiAEQZAFaiQAIAAPCxDUDQALENUNAAtBCEHIAkGIq8QAKAIAIgBBzwcgABsRAAAAC60jAiF/A34jAEHwAmsiHyQAAkACQCAARQ0AIAAoAgANASAAQX82AgAgAkUNACACKAIADQEgAkF/NgIAIANFDQAgAygCAA0BIANBfzYCACAERQ0AIAQoAgANASAEQX82AgAgBUUNACAFKAIADQEgBUF/NgIAIB9BCGohHCABvSInpyEWICdCIIinIRkgAkEEaiERIANBBGohDSAEQQRqIQwgBUEEaiEUIwBB8ANrIiQkAAJAAkACQCAAQQRqIhIoAhAiDiAWTQ0AIBIoAgwiECAWQfACbGoiBigCAEUNACAGKAIEIBlHDQAgBkEANgIAIAYoAgghJSAGIBIpAgA3AgQgEiAWNgIEIBJBATYCACASIBIoAhRBAWo2AhQgEiASKAIYQQFrNgIYIAYoAtwCIiZBgICAgHhHDQELIBxBgICAgHg2AtQCDAELIAYpAugCISkgBigC5AIhISAGKALgAiEiIAYoAgwh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IgIgBjcDACADIAU3AxBBgYnEAC0AABpBFEEEENwMIgBFDQQgAEEANgIAIAAgAykDEDcCBCAAQQxqIAIpAwA3AgAgA0EgaiQAIAAPCxDUDQALENUNAAtBvLPAAEHJAEG0tMAAEJQMAAtBxLTAABDIDQALQQRBFEGIq8QAKAIAIgBBzwcgABsRAAAAC6ECAgN/An4jAEEgayIDJAACQAJAAkACQCAABEAgACgCACICQX9GDQEgACACQQFqNgIAIANBCGogAEEEaiABvSIFpyAFQiCIpxCUCCADKAIIIgJFDQIgAygCDCIEIAIoAghPDQMgAigCBCAEQfADbGoiAkG8AWopAgAhBSACQcQBaikCACEGIAAgACgCAEEBazYCACADQRhqIgIgBjcDACADIAU3AxBBgYnEAC0AABpBFEEEENwMIgBFDQQgAEEANgIAIAAgAykDEDcCBCAAQQxqIAIpAwA3AgAgA0EgaiQAIAAPCxDUDQALENUNAAtBvLPAAEHJAEG0tMAAEJQMAAtBxLTAABDIDQALQQRBFEGIq8QAKAIAIgBBzwcgABsRAAAAC6ECAgN/AX4jAEEgayIDJAACQAJAAkACQCAABEAgACgCACICQX9GDQEgACACQQFqNgIAIANBCGogAEEEaiABvSIFpyAFQiCIpxCUCCADKAIIIgJFDQIgAygCDCIEIAIoAghPDQMgAigCBCAEQfADbGoiAkGwAWopAgAhBSACQbgBaigCACECIAAgACgCAEEBazYCACADQRhqIgQgAjYCACADIAU3AxBBgYnEAC0AABpBEEEEENwMIgBFDQQgAEEANgIAIAAgAykDEDcCBCAAQQxqIAQoAgA2AgAgA0EgaiQAIAAPCxDUDQALENUNAAtBvLPAAEHJAEG0tMAAEJQMAAtBxLTAABDIDQALQQRBEEGIq8QAKAIAIgBBzwcgABsRAAAAC6ECAgN/AX4jAEEgayIDJAACQAJAAkACQCAABEAgACgCACICQX9GDQEgACACQQFqNgIAIANBCGogAEEEaiABvSIFpyAFQiCIpxCUCCADKAIIIgJFDQIgAygCDCIEIAIoAghPDQMgAigCBCAEQfADbGoiAkHMAWopAgAhBSACQdQBaigCACECIAAgACgCAEEBazYCACADQRhqIgQgAjYCACADIAU3AxBBgYnEAC0AABpBEEEE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1A0ACxDVDQALQfS0wABBzQBB7LXAABCUDAALIAIgA0GQuMAAEJkJAAvtAQIFfwF+AkACQAJAAkAgAEUNACAAKAIADQEgAEF/NgIAIAJFDQAgAigCACIFQX9GDQEgAiAFQQFqNgIAIABBBGogAb0iCKcgCEIgiKcQ/wciA0UNAiACKAIIIQUgAigCBCIGKAIAIQQgBiAEQQFqNgIAIARBAEgNAyADIAMoAnBBIHI2AnAgAygCMCIEKAIAIQcgBCAHQQFrNgIAIAdBAUYEQCADQTBqELIICyADIAU2AjQgAyAGNgIwIAIgAigCAEEBazYCACAAQQA2AgAPCxDUDQALENUNAAtBjLbAAEHMAEGQt8AAEJQMAAsAC6cBAQF/IwBBQGoiASQAAkAgAARAIAAoAgANASABQThqIABBNGooAgA2AgAgAUEwaiAAQSxqKQIANwMAIAFBKGogAEEkaikCADcDACABQSBqIABBHGopAgA3AwAgAUEYaiAAQRRqKQIANwMAIAFBEGogAEEMaikCADcDACABIAApAgQ3AwggAEE4QQQQvg0gAUEIahCuBiABQUBrJAAPCxDUDQALENUNAAuQAwEEfyMAQUBqIgEkACABQQxqIQAjAEEgayICJAAgAkEANgIYIAJBCGpBCEGgBSACQRRqEI4HIAIoAggEQCACKAIMIAIoAhAQvgwACyACKAIMIgNBgARqQQA2AgAgA0IANwP4AyADQdgCakEDNgIAIANCgICAgBA3A9ACIANBsAFqQQI2AgAgA0KAgICAEDcDqAEgA0EBNgIIIANCgICAgBA3AwAgAEEANgIwIABCgICAgMAANwIoIABCBDcCICAAQgA3AhggAEIENwIQIAAgAzYCDCAAQQQ2AgggAEIBNwIAIAJBIGokAEGBicQALQAAGkE4QQQQ3AwiAEUEQEEEQThBiKvEACgCACIBQc8HIAEbEQAAAAsgAEEANgIAIAAgASkCDDcCBCAAQQxqIAFBFGopAgA3AgAgAEEUaiABQRxqKQIANwIAIABBHGogAUEkaikCADcCACAAQSRqIAFBLGopAgA3AgAgAEEsaiABQTRqKQIANwIAIABBNGogAUE8aigCADYCACABQUBrJAAgAAujAQAjAEEQayIDJAAgACgCACEAIANBgQE2AgggAyABrSACrUIghoS/EAA2AgwgAyAA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aikDADcDACACIAIpA/ACNwOIAiACIAIpA+AHNwPIByACIAIpA9gINwPACCAbQYGAgIB4Rw0ECyAIIQEMCwsgAkKBygA3A4gFIAJBiAVqEKQLIQUgAkGoAmoiCygCBCEJIAsoAggiCgRAIAkhBANAIAQoAgAQtgkgBEEEaiEEIApBAWsiCg0ACwsgCygCACIEBEAgCSAEQQJ0QQQQvg0LIAJBsAZqEIEKCyAVBEAgASEEA0AgBBDeByAEQUBrIQQgFUEBayIVDQALCyAGBEAgASAGQQZ0QQQQvg0LIAUhAQsgAwRAIAghBANAAkAgBCgCAEUNACAEQQRqKAIAIgVFDQAgBRC2CQsgBEEsaiEEIANBAWsiAw0ACwsgG0UNCCAIIBtBLGxBBBC+DQwICyACQdgBaiACQaACaigCADYCACACQdABaiACQZgCaikDADcCACACQcgBaiACQZACaikDADcCACACQeQBaiACQdAHaigCADYCACACQfwBaiACQcgIaikDADcCACACIAIpA4gCNwLAASACIAIpA8gHNwLcASACIAIpA8AINwL0ASACIE86AIUCIAIgDDoAhAIgAkEANgLwASACIAs2AuwBIAIgHDYC6AEgAiAVNgK8ASACIAE2ArgBIAIgBjYCtAEgAiADrSBjQiCGhDcCrAEgAiAINgKoASACIBs2AqQBAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCACKAJUIgFFDQAgAiABQQFrNgJUIAIoAlAhPSACQSBqIQRBgYnEAC0AABpBCEEEENwMIgFFBEBBBEEIQYirxAAoAgAiAEHPByAAGxEAAAALIAFCgYCAgBA3AgAgBEHgwsAANgIEIAQgATYCACACIAIpAyA3AqAHIAJBAjYChAggAiA9NgKACCACQYgFaiACQYAIahCrAiACKAKMBSEBIAIoAogFIkFBgYCAgHhGDSAgQUGAgICAeEYEQEEAQeiJwABB+ILAABCiCCEBDCELAkACQAJ/AkACQAJAAkACQAJAAkACQCACKAKECARAIAIoAoAIIhMoAgQiBEEHTQRAIAJCgcoANwOIBSACQYgFahCkCyEFDAILIAIoApAFIRwgEyAEQQhrNgIEIBMgEygCACIEQQhqNgIAIAJBGGogBCkAABCoBiACKAIcISEgAigCGARAICEhBQwCC0GkkgEgISAhQaSSAU8bIQYgIUUNA0EAIRtBgYnEAC0AABogBkE4bCIEQQQQ3AwiD0UNBSACQQA2AvgIIAIgDzYC9AggAiAGNgLwCCACQbgGaiFHIAJBkAVqISJBACEEA0AgAkGIBWohOkEAIQVBACEOQgAhW0EAIQlBACEkQQAhMkEAIS1BACEZQQAhKUEAITlBACE1QQAhJyMAQZACayIDJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAn8CQAJAAn8gEygCBCIIQQRPBEAgEyAIQQRrIgY2AgQgEyATKAIAIgtBBGo2AgAgBkEDTQRAIANCgcoANwO4ASADQbgBahCkCwwCCyALKAAAITggEyAIQQhrIgY2AgQgEyALQQhqNgIAIAZBBEkNAyALKAAEITwgEyAIQQxrIgY2AgQgEyALQQxqNgIAIAZBA0sNAiADQoHKADcDuAEgA0G4AWoQpAsMBAsgA0KBygA3A7gBIANBuAFqEKQLCyEFIDpBgICAgHg2AgAgOiAFNgIEDBcLIAsoAAghPiATIAhBEGsiBjYCBCATIAtBEGo2AgAgBkEHTQRAIANCgcoANwO4ASADQbgBahCkCyEGDBULIAsoAAwhQiATIAhBGGs2AgQgEyALQRhqNgIAIANBOGogCykAEBCoBiADKAI8IQggAygCOARAIAghBgwVC0HhMCAIIAhB4TBPGyErIAhFBEBBBCEVDBYLQYGJxAAtAAAaICtBqAFsIgZBBBDcDCIJRQ1ZIANBADYCTCADIAk2AkggAyArNgJEIANBwAFqISkDQCATKAIEIgZBB00EQCADQoHKADcDuAEgA0G4AWoQpAshBgwVCyATIAZBCGsiKzYCBCATIBMoAgAiBkEIaiIsNgIAIANBMGogBikAABCoBiADKAI0IQYgAygCMA0UQcSIASAGIAZBxIgBTxshJwJAIAZFBEBBBCEGQQAhCgwBC0GBicQALQAAGiAnQTxsIglBBBDcDCIFRQ0EQQAhFSADQQA2AsABIAMgBTYCvAEgAyAnNgK4AUEAIQoDQCArQQRJDQYgEyArQQRrIg42AgQgEyAVICxqIglBBGoiCzYCACAOQQRJDQYgCSgAACEdIBMgDkEEayIJNgIEIBMgC0EEaiIONgIAIAlBBEkNBiALNQAAIWAgEyAJQQRrIgk2AgQgEyAOQQRqIgs2AgAgCUEESQ0HIA41AAAhXCATIAlBBGsiCTYCBCATIAtBBGoiDjYCACAJQQRJDQcgCygAACERIBMgCUEEayIJNgIEIBMgDkEEaiILNgIAIAlBBEkNByAONQAAIV0gEyAJQQRrIgk2AgQgEyALQQRqIg42AgAgCUEESQ0IIAs1AAAhWiATIAlBBGsiCTYCBCATIA5BBGoiCzYCACAJQQNNDQkgDioAACF3IBMgCUEEayIJNgIEIBMgC0EEaiIONgIAAkAgCUEDSwRAIAsoAAAhICATIAlBBGsiCTYCBCATIA5BBGoiCzYCACAJQQRJDQwgDigAACEXIBMgCUEEayIJNgIEIBMgC0EEaiIONgIAIAlBBEkNDSALKgAAIXggEyAJQQRrIgk2AgQgEyAOQQRqIgs2AgAgCUEESQ0NIA4oAAAhDCATIAlBBGsiCTYCBCATIAtBBGoiIzYCACAJQQRJDQ4gCygAACEOIBMgCUEEayIJNgIEIBMgI0EEaiILNgIAIAlBBE8EQCAjKgAAIXkgEyAJQQRrIiM2AgQgEyALQQRqIgk2AgAgI0EETw0CCyADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBDBcLIANCgcoANwPoAQwWCyBcQiCGIGCEIVwgWkIghiBdhCFaIAsoAAAhCyATICNBBGsiKzYCBCATIAlBBGo2AgAgCSgAACEJIAMoArgBIApGBEAgA0G4AWoQyQYgAygCvAEhBQsgBSAVaiIjIAw2AgAgI0E4aiAXNgIAICNBNGogIDYCACAjQTBqIHc4AgAgI0EoaiBaNwIAICNBJGogETYCACAjQRxqIFw3AgAgI0EYaiAdNgIAICNBFGogeTgCACAjQRBqIHg4AgAgI0EMaiAJNgIAICNBCGogCzYCACAjQQRqIA42AgAgAyAKQQFqIgo2AsABIBVBPGohFSAGIApHDQALIAMoArwBIQYgAygCuAEiJ0GCgICAeEgNFQsCQAJAIBMoAgQiC0EESQ0AIBMoAgAhDiATIAtBBGsiCTYCBCATIA5BBGo2AgAgCUEESQ0AIA4oAAAhQyATIAtBCGsiCTYCBCATIA5BCGo2AgAgCUEDSw0BCyADQQA6ALsBIANBJTsAuQEgA0EANgK8ASADQQE6ALgBIANBuAFqEKQLIQUMEwsgDjUABCFvIBMgC0EMayIJNgIEIBMgDkEMajYCAAJAAkAgCUEESQ0AIA41AAghWyATIAtBEGsiCTYCBCATIA5BEGo2AgAgCUEESQ0AIA4oAAwhOSATIAtBFGsiCTYCBCATIA5BFGo2AgAgCUEDSw0BCyADQQA6ALsBIANBJTsAuQEgA0EANgK8ASADQQE6ALgBIANBuAFqEKQLIQUMEwsgDjUAECFlIBMgC0EYayIJNgIEIBMgDkEYajYCACAJQQNNBEAgA0KBygA3A7gBIANBuAFqEKQLIQUMEwsgDjUAFCFmIBMgC0EcayIJNgIEIBMgDkEcajYCACAJQQNNBEAgA0KBygA3A7gBIANBuAFqEKQLIQUMEwsgDigAGCFIIBMgC0EgayIJNgIEIBMgDkEgajYCAAJAIAkEQCAOKAAcIRAgEyALQSFrIis2AgQgEyAOQSFqNgIAAkACQAJAIA4tACAiMg4CAgEAC0GBicQALQAAGkEMQQQQ3AwiBUUNYCAFIDI2AgQgBUGEgICAeDYCAAwWCyADQbgBaiATEPoDIAMoArwBIQUgAygCuAENFSADQZgBaiIJQRBqIClBEGopAgA3AwAgCUEIaiApQQhqKQIANwMAIAMgKSkCADcDmAEgEygCBCErQQEhMgsCQAJAAkAgKwRAIBMgK0EBazYCBCATIBMoAgAiCUEBajYCACAJLQAAIkAOAgMCAQsgA0KBygA3A7gBIANBuAFqEKQLIQUMFwtBgYnEAC0AABpBDEEEENwMIgVFDWAgBSBANgIEIAVBhICAgHg2AgAMFgsgA0G4AWogExD6AyADKAK8ASEZIAMoArgBBEAgGSEFDBYLIANB6AFqIglBEGogKUEQaikCADcDACAJQQhqIClBCGopAgA3AwAgAyApKQIANwPoAUEBIUALIANBgAFqIgtBEGoiEiADQegBaiIJQRBqKQMANwMAIAtBCGoiMyAJQQhqKQMANwMAIAMgAykD6AE3A4ABIANBBzYCtAEgAyATNgKwASADQbgBaiADQbABahD2BCADKAK8ASEgIAMoArgBIg5BA0YNDSAOQQJGBEBBAEHIi8AAQfiCwAAQogghBQwVCyADKALAASEUIANBuAFqIANBsAFqEPYEIAMoArwBIRcgAygCuAEiCUEDRg0OIAlBAkYEQEEBQciLwABB+ILAABCiCCEFDBULAkAgAygCtAEiDARAIAMoArABIi4oAgQiFUEDSw0BIANCgcoANwO4ASADQbgBahCkCyEFDBYLQQJByIvAAEH4gsAAEKIIIQUMFQsgAygCwAEhJiAuIBVBBGsiCzYCBCAuIC4oAgAiEUEEajYCAAJAIAxBAUcEQAJAIAtBBEkNACARKAAAISUgLiAVQQhrIgs2AgQgLiARQQhqNgIAIAtBBEkNACARKAAEIQ0gLiAVQQxrIgs2AgQgLiARQQxqNgIAIAtBA0sNAgsgA0EAOgC7ASADQSU7ALkBIANBADYCvAEgA0EBOgC4ASADQbgBahCkCyEFDBYLQQNByIvAAEH4gsAAEKIIIQUMFQsgETUACCFkIC4gFUEQayILNgIEIC4gEUEQajYCAAJAAkAgDEECRwRAIBE1AAwhYiADIAxBA2siNTYCtAEgC0EHTQRAIANCgcoANwO4ASADQbgBahCkCyEFDBgLIC4gFUEYayIVNgIEIC4gEUEYaiIMNgIAIANBKGogESkAEBCoBiADKAIsIREgAygCKARAIBEhBQwYC0HEnQEgESARQcSdAU8bISsgEQRAQYGJxAAtAAAaICtBNGwiC0EEENwMIi1FDRNBACE1IANBADYCwAEgAyAtNgK8ASADICs2ArgBQQAhCwNAIBVFBEAgA0KBygA3A+gBIANB6AFqEKQLIQUMGQsgLiAVQQFrNgIEIC4gDEEBaiIdNgIAAkACQCAVQQVJDQAgDC0AACEfIC4gFUEFayIMNgIEIC4gHUEEaiIVNgIAIAxBBEkNACAdKAAAIRggLiAMQQRrIgw2AgQgLiAVQQRqIh02AgAgDEEDSw0BCyADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBIANB6AFqEKQLIQUMGQsgFTUAACFgIC4gDEEEayIMNgIEIC4gHUEEaiIVNgIAIAxBA00EQCADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBIANB6AFqEKQLIQUMGQsgHTUAACFcIC4gDEEEayIMNgIEIC4gFUEEaiIdNgIAIAxBA00EQCADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBIANB6AFqEKQLIQUMGQsgFSoAACF9IC4gDEEEayIMNgIEIC4gHUEEaiIVNgIAIAxBA00EQCADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBIANB6AFqEKQLIQUMGQsgHSoAACF3IC4gDEEEayIMNgIEIC4gFUEEaiIdNgIAAkACQCAMQQRJDQAgFSoAACF4IC4gDEEEayIMNgIEIC4gHUEEaiIVNgIAIAxBBEkNACAdKAAAISMgLiAMQQRrIgw2AgQgLiAVQQRqIh02AgAgDEEDSw0BCyADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBIANB6AFqEKQLIQUMGQsgFTUAACFdIC4gDEEEayIMNgIEIC4gHUEEaiIVNgIAIAxFDRUgHTUAACFaIC4gDEEBayIMNgIEIC4gFUEBaiIdNgIAIBUtAAAiJEECTwRAQYGJxAAtAAAaQQxBBBDcDCIFRQ1kIAUgJDoABCAFQYKAgIB4NgIADBkLIAxBA00EQCADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBIANB6AFqEKQLIQUMGQsgLiAMQQRrIgw2AgQgLiAdQQRqIhU2AgACQCAMQQRPBEAgHSoAACF5IC4gDEEEayIMNgIEIC4gFUEEaiIdNgIAIAxBA0sNAQsgA0EAOgDrASADQSU7AOkBIANBADYC7AEgA0EBOgDoASADQegBahCkCyEFDBkLIFxCIIYgYIQhXCBaQiCGIF2EIVogFSgAACEsIC4gDEEEayIVNgIEIC4gHUEEaiIMNgIAIB0oAAAhHSADKAK4ASALRgRAIANBuAFqEMoGIAMoArwBIS0LIC0gNWoiKyAsNgIAICtBMWogJDoAACArQTBqIB86AAAgK0EsaiB5OAIAICtBJGogWjcCACArQSBqICM2AgAgK0EcaiB4OAIAICtBGGogdzgCACArQRRqIH04AgAgK0EMaiBcNwIAICtBCGogGDYCACArQQRqIB02AgAgAyALQQFqIgs2AsABIDVBNGohNSALIBFHDQALIAMoArwBIQwgAygCuAEiK0GCgICAeE4NAiAMIQUMGAtBACELQQQhDAwCC0EEQciLwABB+ILAABCiCCEFDBYLIAMoArQBITULAkAgNQRAIAMgNUEBazYCtAEgAygCsAEiESgCBCIVQQFLDQEgA0KBygA3A7gBIANBuAFqEKQLDBQLQQVByIvAAEH4gsAAEKIIDBMLIBEgFUECazYCBCARIBEoAgAiFUECajYCACAVLwAAITUgA0G4AWohLCMAQRBrIh0kAAJAIANBsAFqIhEoAgQiFUUEQCAsQQA2AgAMAQsgESAVQQFrNgIEIBEoAgAiESgCBCIVQQRPBEAgLEEBNgIAIBEgFUEEazYCBCARIBEoAgAiFUEEajYCACAsIBUoAAA2AgQMAQsgHUKBygA3AwggHUEIahCkCyEVICxBAjYCACAsIBU2AgQLIB1BEGokACADKAK4ASIVQQJGDREgFQ0BQQZByIvAAEH4gsAAEKIIDBILIANCgcoANwO4ASADQbgBahCkCyEFDBMLIFtCIIYgb4QhWyBmQiCGIGWEIVwgYkIghiBkhCFaIAMoArwBISwgA0HoAGoiEUEIaiItIANBmAFqIhVBCGopAwA3AwAgEUEQaiIdIBVBEGopAwA3AwAgA0HQAGoiFUEIaiIRIDMpAwA3AwAgFUEQaiIkIBIpAwA3AwAgAyADKQOYATcDaCADIAMpA4ABNwNQIAMoAkwiIyADKAJERgRAIANBxABqEMsGCyADKAJIIhUgI0GoAWxqIhggBTYCBCAYIDI2AgAgGCADKQNoNwIIIBggGTYCJCAYIEA2AiAgGCADKQNQNwIoIBggDjYCQCAYICA2AkQgGCAUNgJIIBggCTYCTCAYIBc2AlAgGCAmNgJUIBggKzYCWCAYIAw2AlwgGCALNgJgIBggJTYCZCAYIA02AmggGCBaNwJsIBggLDYCdCAYICc2AnwgGCAGNgKAASAYIAo2AoQBIBggQzYCiAEgGCBbNwKMASAYIDk2ApQBIBggXDcCmAEgGCBINgKgASAYIBA2AqQBIBggNTsBeCAYQRBqIC0pAwA3AgAgGEEYaiAdKQMANwIAIBhBMGogESkDADcCACAYQThqICQpAwA3AgAgAyAjQQFqIic2AkwgCEEBayIIDQALIBUhBiADKAJEIitBgoCAgHhODRUMFAsgA0KBygA3A7gBIANBuAFqEKQLCyEFIDpBgICAgHg2AgAgOiAFNgIEDBQLQQQgCRC+DAALIANBADoA6wEgA0ElOwDpASADQQA2AuwBIANBAToA6AEMDgsgA0EAOgDrASADQSU7AOkBIANBADYC7AEgA0EBOgDoAQwNCyADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBDAwLIANCgcoANwPoAQwLCyADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBDAoLIANBADoA6wEgA0ElOwDpASADQQA2AuwBIANBAToA6AEMCQsgA0EAOgDrASADQSU7AOkBIANBADYC7AEgA0EBOgDoAQwICyAgIQUMBgsgFyEFDAULQQQgCxC+DAALIANCgcoANwPoASADQegBahCkCyEFDAILIAMoArwBCyEFICtFDQEgDCArQTRsQQQQvg0MAQsgAygCuAEiCEUNACADKAK8ASAIQTRsQQQQvg0LICcEQCAGICdBPGxBBBC+DQsgBSEGDAELIANB6AFqEKQLIQYgAygCuAEiBUUNACADKAK8ASAFQTxsQQQQvg0LIAMoAkghCSADKAJMIicEQCAJQYABaiEFA0AgBUEEaygCACIIBEAgBSgCACAIQTxsQQQQvg0LIAVBKGsoAgAiCARAIAVBJGsoAgAgCEE0bEEEEL4NCyAFQagBaiEFICdBAWsiJw0ACwsgAygCRCIFRQ0AIAkgBUGoAWxBBBC+DQsgOkGAgICAeDYCACA6IAY2AgQMAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCATKAIEIhkEQCATIBlBAWsiBTYCBCATIBMoAgAiF0EBajYCAAJAIBctAAAiI0ECTwRAQYGJxAAtAAAaQQxBBBDcDCIIRQ0BIAggIzoABCAIQYKAgIB4NgIADA8LIAUEQCATIBlBAmsiCDYCBCATIBdBAmo2AgACQCAXLQABIixBAk8EQEGBicQALQAAGkEMQQQQ3AwiCEUNASAIICw6AAQgCEGCgICAeDYCAAwRCwJAAkACQCAIBEAgEyAZQQNrNgIEIBMgF0EDajYCAEEAIQtBBCEMIBctAAIiBQ4CDgIBCyADQoHKADcDuAEgA0G4AWoQpAshCAwTC0GBicQALQAAGkEMQQQQ3AwiCEUNASAIIAU2AgQgCEGEgICAeDYCAAwSCyAIQQVJDQUgEyAZQQdrIgY2AgQgEyAXQQdqNgIAQYSAgIB4IQpCACFgAkACQAJAAkAgFygAAyIFDgYBAg0MCw4ACyADQQE6AOgBIAMgBa03A/ABIANB6AFqQfyQwABB+ILAABDeCCEIDBQLIANBAzYCnAEgAyATNgKYASADQegBaiADQZgBahDQAyADKALsASEIIAMoAugBIgpBgYCAgHhGDRMgCkGAgICAeEYEQEEAQcCRwABB+ILAABCiCCEIDBQLAkAgAygCnAEiBQRAIAMoAvABIQsgAyAFQQFrNgKcASADKAKYASIMKAIEIgZBBEkNAyAMKAIAIQ4gDCAGQQRrIgU2AgQgDCAOQQRqNgIAIAVBBEkNAyAOKAAAIQkgDCAGQQhrIgU2AgQgDCAOQQhqNgIAIAVBBEkNAyAOKAAEIS0gDCAGQQxrIgU2AgQgDCAOQQxqNgIAAkAgBUEESQ0AIA4oAAghNSAMIAZBEGsiBTYCBCAMIA5BEGo2AgAgBUEESQ0AIA4oAAwhKSAMIAZBFGsiBTYCBCAMIA5BFGo2AgAgBUEETw0CCyADQQA6AOsBIANBJTsA6QEgA0EANgLsASADQQE6AOgBIANB6AFqEKQLIQ4MFAtBAUHAkcAAQfiCwAAQogghDgwTCyAONQAQIVwgDCAGQRhrNgIEIAwgDkEYajYCACAONQAUIVogA0HoAWogA0GYAWoQ0AMgAygC7AEhDiADKALoASIMQYGAgIB4Rg0SIAxBgICAgHhHDQhBAkHAkcAAQfiCwAAQogghDgwSCyAGBEAgEyAZQQhrNgIEIBMgF0EIajYCAAJAIBctAAciNUECTwRAQYGJxAAtAAAaQQxBBBDcDCIIRQ0BIAggNToABCAIQYKAgIB4NgIADBULIAZBCE0EQCADQoHKADcD6AEgA0HoAWoQpAshCAwVCyATIBlBEGsiLTYCBCATIBdBEGoiBjYCACADQQhqIBcpAAgQqAYgAygCDCEIIAMoAggNFCAIRQRAQQQhC0GYgMAAIQ5BACEtQQAhCUEAITJBACEMQQAhCEGAgICAeCEKDA4LIANBmAFqQYCABCAIIAhBgIAETxsiBRDTBEGBicQALQAAGiAFQQR0IgpBBBDcDCILBEAgA0H8AWogA0GgAWopAgA3AgAgAyADKQKYATcC9AEgA0EANgLwASADIAs2AuwBIAMgBTYC6AFBACEMA0AgLUEDTQRAIANCgcoANwOYASADQZgBahCkCyEIDBULIBMgLUEEayIFNgIEIBMgBkEEajYCAAJAAkACQAJAAkAgBUEITwRAIAYoAAAhHyATIC1BDGsiBTYCBCATIAZBDGo2AgAgBikABCJaQoCAgIAQWgRAIANBAToAmAEgAyBaNwOgASADQZgBaiADQdAAakHQgMAAEN4IIQgMGwsgBUUNASATIC1BDWsiLTYCBCATIAZBDWoiDjYCACAGLQAMIhhBAk8EQEGBicQALQAAGkEMQQQQ3AwiCEUNYyAIIBg6AAQgCEGCgICAeDYCAAwbCyAfQbnz3fF5bCEXIAMoAvwBRQRAIANB9AFqIAsgDBCUAQsgCEEBayEIIFqnIREgAygC9AEiKUEEayEKIBdBGXYiIK1CgYKEiJCgwIABfiFcQQAhGSADKAL4ASENIBchBkEAIQUCQANAIAYgDXEiHSApaikAACJdIFyFIlpCgYKEiJCgwIABfSBaQn+Fg0KAgYKEiJCgwIB/gyFbA0AgW1AEQCBdQoCBgoSIkKDAgH+DIVtBASEJIAVBAUcEQCBbeqdBA3YgHWogDXEhJCBbQgBSIQkLIFsgXUIBhoNCAFINAyAdIBlBCGoiGWohBiAJIQUMAgsgDCAKIFt6p0EDdiAdaiANcUECdGsoAgAiBk0NISBbQgF9IFuDIVsgBkEEdCIJIAtqKAIEIB9HDQALCyADKALwASIMIAZNDSAgCSADKALsASILaiIFIBg6AAwgBSARNgIIDAYLICQgKWosAAAiBkEATgRAICkgKSkDAEKAgYKEiJCgwIB/g3qnQQN2IiRqLQAAIQYLICQgKWogIDoAACApICRBCGsgDXFqQQhqICA6AAAgKSAkQQJ0a0EEayADKAKAAiIFNgIAIAMgBUEBaiIJNgKAAiADIAMoAvwBIAZBAXFrIgU2AvwBIAMoAugBIgogAygC8AEiDEcNBEH///8/IAUgCWoiBSAFQf///z9PGyAMayIFQQFNDQIgDCAFIAxqIgpLDQIgCkEEdCEGIApBgICAwABJQQJ0IQUgAyAMBH8gAyADKALsATYCmAEgAyAMQQR0NgKgAUEEBUEACzYCnAEgA0GAAWogBSAGIANBmAFqEI4HIAMoAoABDQIMAwsgA0KBygA3A5gBIANBmAFqEKQLIQgMGQsgA0KBygA3A5gBIANBmAFqEKQLIQgMGAsgDEEBaiIKRQ1hIApBBHQhBiAKQYCAgMAASUECdCEFIAMgDAR/IAMgAygC7AE2ApgBIAMgDEEEdDYCoAFBBAVBAAs2ApwBIANBgAFqIAUgBiADQZgBahCOByADKAKAAQ0dCyADIAMoAoQBNgLsASADIAo2AugBCyAKIAxGBEAgA0HoAWoQzAYLIAMoAuwBIgsgDEEEdGoiBSAYOgAMIAUgETYCCCAFIB82AgQgBSAXNgIAIAMgDEEBaiIMNgLwAQsgDiEGIAgNAAsgAygC6AEiCEGCgICAeEgEQCALIQgMFgsgAygCgAIhLSADKAL8ASEJIAMoAvgBITIgAygC9AEhDkGAgICAeCEKDA4LDBkLDFkLIANCgcoANwPoASADQegBahCkCyEIDBILIANBADoA6wEgA0ElOwDpASADQQA2AuwBIANBAToA6AEgA0HoAWoQpAshDgwQCwxWCwxVCyADQoHKADcDuAEgA0G4AWoQpAshCAwOCwxTCyADQoHKADcDuAEgA0G4AWoQpAshCAwMCyADQoHKADcD6AEgA0HoAWoQpAshCAwLCyBaQiCGIFyEIVsgAygC8AEhMiA1QQh2rUIohiFgDAMLAkAgBgRAIBMgGUEIazYCBCATIBdBCGo2AgACQCAXLQAHIjVBAk8EQEGBicQALQAAGkEMQQQQ3AwiCEUNASAIIDU6AAQgCEGCgICAeDYCAAwNCyAGQQhNBEAgA0KBygA3A+gBIANB6AFqEKQLIQgMDQsgEyAZQRBrIi02AgQgEyAXQRBqIgY2AgAgA0EgaiAXKQAIEKgGIAMoAiQhCCADKAIgDQwCQAJ/IAhFBEBBBCELQQAhDEGYgMAAIQ5BACEyQQAhLUEAIQhBAAwBCyADQZgBakGAgAQgCCAIQYCABE8bIgUQ0wRBgYnEAC0AABogBUEEdCIKQQQQ3AwiC0UNASADQfwBaiADQaABaikCADcCACADIAMpApgBNwL0ASADQQA2AvABIAMgCzYC7AEgAyAFNgLoAUEAIQwDQCAtQQNNBEAgA0KBygA3A5gBIANBmAFqEKQLIQgMBgsgEyAtQQRrIgU2AgQgEyAGQQRqNgIAAkACQAJAAkACQCAFQQhPBEAgBigAACEfIBMgLUEMayIFNgIEIBMgBkEMajYCACAGKQAEIlpCgICAgBBaBEAgA0EBOgCYASADIFo3A6ABIANBmAFqIANB0ABqQdCAwAAQ3gghCAwMCyAFRQ0BIBMgLUENayItNgIEIBMgBkENaiIONgIAIAYtAAwiGEECTwRAQYGJxAAtAAAaQQxBBBDcDCIIRQ1cIAggGDoABCAIQYKAgIB4NgIADAwLIB9BufPd8XlsIRcgAygC/AFFBEAgA0H0AWogCyAMEJQBCyAIQQFrIQggWqchESADKAL0ASIpQQRrIQogF0EZdiIgrUKBgoSIkKDAgAF+IVxBACEZIAMoAvgBIQ0gFyEGQQAhBQJAA0AgBiANcSIdIClqKQAAIl0gXIUiWkKBgoSIkKDAgAF9IFpCf4WDQoCBgoSIkKDAgH+DIVsDQCBbUARAIF1CgIGChIiQoMCAf4MhW0EBIQkgBUEBRwRAIFt6p0EDdiAdaiANcSEkIFtCAFIhCQsgWyBdQgGGg0IAUg0DIB0gGUEIaiIZaiEGIAkhBQwCCyAMIAogW3qnQQN2IB1qIA1xQQJ0aygCACIGTQ0aIFtCAX0gW4MhWyAGQQR0IgkgC2ooAgQgH0cNAAsLIAMoAvABIgwgBk0NGSAJIAMoAuwBIgtqIgUgGDoADCAFIBE2AggMBgsgJCApaiwAACIGQQBOBEAgKSApKQMAQoCBgoSIkKDAgH+DeqdBA3YiJGotAAAhBgsgJCApaiAgOgAAICkgJEEIayANcWpBCGogIDoAACApICRBAnRrQQRrIAMoAoACIgU2AgAgAyAFQQFqIgk2AoACIAMgAygC/AEgBkEBcWsiBTYC/AEgAygC6AEiCiADKALwASIMRw0EQf///z8gBSAJaiIFIAVB////P08bIAxrIgVBAU0NAiAMIAUgDGoiCksNAiAKQQR0IQYgCkGAgIDAAElBAnQhBSADIAwEfyADIAMoAuwBNgKYASADIAxBBHQ2AqABQQQFQQALNgKcASADQYABaiAFIAYgA0GYAWoQjgcgAygCgAENAgwDCyADQoHKADcDmAEgA0GYAWoQpAshCAwKCyADQoHKADcDmAEgA0GYAWoQpAshCAwJCyAMQQFqIgpFDVogCkEEdCEGIApBgICAwABJQQJ0IQUgAyAMBH8gAyADKALsATYCmAEgAyAMQQR0NgKgAUEEBUEACzYCnAEgA0GAAWogBSAGIANBmAFqEI4HIAMoAoABDRYLIAMgAygChAE2AuwBIAMgCjYC6AELIAogDEYEQCADQegBahDMBgsgAygC7AEiCyAMQQR0aiIFIBg6AAwgBSARNgIIIAUgHzYCBCAFIBc2AgAgAyAMQQFqIgw2AvABCyAOIQYgCA0ACyADKALoASIIQYKAgIB4SARAIAshCAwPCyADKAKAAiEtIAMoAvgBITIgAygC9AEhDiADKAL8AQshCUGDgICAeCEKDAYLDBELDFELIANCgcoANwPoASADQegBahCkCyEIDAoLAkAgAygC+AEiBUUNACAFQQJ0QQtqQXhxIgYgBWpBCWoiBUUNACADKAL0ASAGayAFQQgQvg0LIAMoAugBIgVFDQkgCyAFQQR0QQQQvg0MCQsCQCAGBEAgEyAZQQhrNgIEIBMgF0EIajYCAAJAIBctAAciNUECTwRAQYGJxAAtAAAaQQxBBBDcDCIIRQ0BIAggNToABCAIQYKAgIB4NgIADAwLIAZBCE0EQCADQoHKADcD6AEgA0HoAWoQpAshCAwMCyATIBlBEGsiMjYCBCATIBdBEGoiBjYCACADQRhqIBcpAAgQqAYgAygCHCEIIAMoAhgNCyAIRQRAQQQhC0EAITJBmIDAACEOQQAhDEEAIQlBACEtQQAhCEGCgICAeCEKDAULIANBmAFqQcyZAyAIIAhBzJkDTxsiBRDTBEGBicQALQAAGiAFQRRsIgpBBBDcDCILBEAgA0H8AWogA0GgAWopAgA3AgAgAyADKQKYATcC9AEgA0EANgLwASADIAs2AuwBIAMgBTYC6AEgA0H0AWohIEEAIQwDQAJAAkACQAJAAkACQCAyQQRPBEAgEyAyQQRrIgU2AgQgEyAGQQRqNgIAIAVBA00EQCADQoHKADcDmAEgA0GYAWoQpAshCAwMCyAGKAAAIQ0gEyAyQQhrIgU2AgQgEyAGQQhqNgIAIAVBCEkNASAGKAAEISkgEyAyQRBrIgU2AgQgEyAGQRBqNgIAIAYpAAgiWkKAgICAEFoEQCADQQE6AJgBIAMgWjcDoAEgA0GYAWogA0HQAGpB0IDAABDeCCEIDAwLIAVFDQIgEyAyQRFrIjI2AgQgEyAGQRFqIgk2AgAgBi0AECIfQQJPBEBBgYnEAC0AABpBDEEEENwMIghFDVsgCCAfOgAEIAhBgoCAgHg2AgAMDAsgKSANQbnz3fF5bEEFd3NBufPd8XlsIQ4gAygC/AFFBEAgICALIAwQlQELIAhBAWshCCBapyEdIAMoAvQBIiZBBGshFyAOQRl2IhGtQoGChIiQoMCAAX4hXEEAIUAgAygC+AEhJSAOIQZBACEFAkADQCAGICVxIhggJmopAAAiXSBchSJaQoGChIiQoMCAAX0gWkJ/hYNCgIGChIiQoMCAf4MhWwNAIFtQBEAgXUKAgYKEiJCgwIB/gyFbQQEhCiAFQQFHBEAgW3qnQQN2IBhqICVxITkgW0IAUiEKCyBbIF1CAYaDQgBSDQMgGCBAQQhqIkBqIQYgCiEFDAILIAwgFyBbeqdBA3YgGGogJXFBAnRrKAIAIgZNDRkgW0IBfSBbgyFbIAZBFGwiGSALaiIKKAIAIA1HDQAgCkEEaigCACApRw0ACwsgAygC8AEiDCAGTQ0YIBkgAygC7AEiC2oiBSAfOgAQIAUgHTYCDAwHCyAmIDlqLAAAIgZBAE4EQCAmICYpAwBCgIGChIiQoMCAf4N6p0EDdiI5ai0AACEGCyAmIDlqIBE6AAAgJiA5QQhrICVxakEIaiAROgAAICYgOUECdGtBBGsgAygCgAIiBTYCACADIAVBAWoiCzYCgAIgAyADKAL8ASAGQQFxayIFNgL8ASADKALoASIKIAMoAvABIgxHDQVB5syZMyAFIAtqIgUgBUHmzJkzTxsgDGsiBUEBTQ0DIAwgBSAMaiIKSw0DIApBFGwhBiAKQefMmTNJQQJ0IQUgAyAMBH8gAyADKALsATYCmAEgAyAMQRRsNgKgAUEEBUEACzYCnAEgA0GAAWogBSAGIANBmAFqEI4HIAMoAoABDQMMBAsgA0KBygA3A5gBIANBmAFqEKQLIQgMCgsgA0KBygA3A5gBIANBmAFqEKQLIQgMCQsgA0KBygA3A5gBIANBmAFqEKQLIQgMCAsgDEEBaiIKRQ1YIApBFGwhBiAKQefMmTNJQQJ0IQUgAyAMBH8gAyADKALsATYCmAEgAyAMQRRsNgKgAUEEBUEACzYCnAEgA0GAAWogBSAGIANBmAFqEI4HIAMoAoABDRQLIAMgAygChAE2AuwBIAMgCjYC6AELIAogDEYEQCADQegBahDNBgsgAygC7AEiCyAMQRRsaiIFIB86ABAgBSAdNgIMIAUgDjYCCCAFICk2AgQgBSANNgIAIAMgDEEBaiIMNgLwAQsgCSEGIAgNAAsgAygC6AEiCEGCgICAeEgEQCALIQgMDQsgAygCgAIhLSADKAL8ASEJIAMoAvgBITIgAygC9AEhDkGCgICAeCEKDAULDBALDFALIANCgcoANwPoASADQegBahCkCyEIDAkLAkAgAygC+AEiBUUNACAFQQJ0QQtqQXhxIgYgBWpBCWoiBUUNACADKAL0ASAGayAFQQgQvg0LIAMoAugBIgVFDQggCyAFQRRsQQQQvg0MCAsgBkUNAyATIBlBCGs2AgQgEyAXQQhqNgIAIBctAAciNUECTwRAQYGJxAAtAAAaQQxBBBDcDCIIRQ1OIAggNToABCAIQYKAgIB4NgIADAgLIAZBCE0EQCADQoHKADcD6AEgA0HoAWoQpAshCAwICyATIBlBEGsiMjYCBCATIBdBEGoiBjYCACADQRBqIBcpAAgQqAYgAygCFCEIIAMoAhANByAIRQRAQQQhC0GYgMAAIQ5BACEtQQAhCUEAITJBACEMQQAhCEGBgICAeCEKDAELIANBmAFqQcyZAyAIIAhBzJkDTxsiBRDTBEGBicQALQAAGiAFQRRsIgpBBBDcDCILRQ0MIANB/AFqIANBoAFqKQIANwIAIAMgAykCmAE3AvQBIANBADYC8AEgAyALNgLsASADIAU2AugBIANB9AFqISBBACEMA0ACQAJAAkACQAJAAkAgMkEETwRAIBMgMkEEayIFNgIEIBMgBkEEajYCACAFQQNNBEAgA0KBygA3A5gBIANBmAFqEKQLIQgMDQsgBigAACENIBMgMkEIayIFNgIEIBMgBkEIajYCACAFQQhJDQEgBigABCEpIBMgMkEQayIFNgIEIBMgBkEQajYCACAGKQAIIlpCgICAgBBaBEAgA0EBOgCYASADIFo3A6ABIANBmAFqIANB0ABqQdCAwAAQ3gghCAwNCyAFRQ0CIBMgMkERayIyNgIEIBMgBkERaiIJNgIAIAYtABAiH0ECTwRAQYGJxAAtAAAaQQxBBBDcDCIIRQ1WIAggHzoABCAIQYKAgIB4NgIADA0LICkgDUG5893xeWxBBXdzQbnz3fF5bCEOIAMoAvwBRQRAICAgCyAMEJUBCyAIQQFrIQggWqchHSADKAL0ASImQQRrIRcgDkEZdiIRrUKBgoSIkKDAgAF+IVxBACFAIAMoAvgBISUgDiEGQQAhBQJAA0AgBiAlcSIYICZqKQAAIl0gXIUiWkKBgoSIkKDAgAF9IFpCf4WDQoCBgoSIkKDAgH+DIVsDQCBbUARAIF1CgIGChIiQoMCAf4MhW0EBIQogBUEBRwRAIFt6p0EDdiAYaiAlcSE5IFtCAFIhCgsgWyBdQgGGg0IAUg0DIBggQEEIaiJAaiEGIAohBQwCCyAMIBcgW3qnQQN2IBhqICVxQQJ0aygCACIGTQ0UIFtCAX0gW4MhWyAGQRRsIhkgC2oiCigCACANRw0AIApBBGooAgAgKUcNAAsLIAMoAvABIgwgBk0NEyAZIAMoAuwBIgtqIgUgHzoAECAFIB02AgwMBwsgJiA5aiwAACIGQQBOBEAgJiAmKQMAQoCBgoSIkKDAgH+DeqdBA3YiOWotAAAhBgsgJiA5aiAROgAAICYgOUEIayAlcWpBCGogEToAACAmIDlBAnRrQQRrIAMoAoACIgU2AgAgAyAFQQFqIgs2AoACIAMgAygC/AEgBkEBcWsiBTYC/AEgAygC6AEiCiADKALwASIMRw0FQebMmTMgBSALaiIFIAVB5syZM08bIAxrIgVBAU0NAyAMIAUgDGoiCksNAyAKQRRsIQYgCkHnzJkzSUECdCEFIAMgDAR/IAMgAygC7AE2ApgBIAMgDEEUbDYCoAFBBAVBAAs2ApwBIANBgAFqIAUgBiADQZgBahCOByADKAKAAQ0DDAQLIANCgcoANwOYASADQZgBahCkCyEIDAsLIANCgcoANwOYASADQZgBahCkCyEIDAoLIANCgcoANwOYASADQZgBahCkCyEIDAkLIAxBAWoiCkUNUyAKQRRsIQYgCkHnzJkzSUECdCEFIAMgDAR/IAMgAygC7AE2ApgBIAMgDEEUbDYCoAFBBAVBAAs2ApwBIANBgAFqIAUgBiADQZgBahCOByADKAKAAQ0PCyADIAMoAoQBNgLsASADIAo2AugBCyAKIAxGBEAgA0HoAWoQzQYLIAMoAuwBIgsgDEEUbGoiBSAfOgAQIAUgHTYCDCAFIA42AgggBSApNgIEIAUgDTYCACADIAxBAWoiDDYC8AELIAkhBiAIDQALIAMoAugBIghBgoCAgHhIBEAgCyEIDAgLIAMoAoACIS0gAygC/AEhCSADKAL4ASEyIAMoAvQBIQ5BgYCAgHghCgsgAyBbNwLgASADICk2AtwBIAMgCTYC0AEgAyAyNgLMASADIA42AsgBIAMgDDYCxAEgAyALNgLAASADIAg2ArwBIAMgCjYCuAEgAyAtrSA1rUL/AYNCIIYgYISENwLUAUEAIQlBACEGAkACQAJAAkACQAJAAkACQCADQbgBaiIIKAIAIgVB/////wdrQQAgBUGFgICAeEgbQQFrDgUBAgMEBQALQYGJxAAtAAAaQTBBBBDcDCIJRQ1WIAkgCCkCADcCACAJQShqIAhBKGopAgA3AgAgCUEgaiAIQSBqKQIANwIAIAlBGGogCEEYaikCADcCACAJQRBqIAhBEGopAgA3AgAgCUEIaiAIQQhqKQIANwIAQeyzwgAhBgwEC0GBicQALQAAGkEgQQQQ3AwiCUUNBCAJIAgpAgQ3AgAgCUEYaiAIQRxqKQIANwIAIAlBEGogCEEUaikCADcCACAJQQhqIAhBDGopAgA3AgBBrLPCACEGDAMLQYGJxAAtAAAaQSBBBBDcDCIJRQ0DIAkgCCkCBDcCACAJQRhqIAhBHGopAgA3AgAgCUEQaiAIQRRqKQIANwIAIAlBCGogCEEMaikCADcCAEHsssIAIQYMAgtBgYnEAC0AABpBIEEEENwMIglFDQIgCSAIKQIENwIAIAlBGGogCEEcaikCADcCACAJQRBqIAhBFGopAgA3AgAgCUEIaiAIQQxqKQIANwIAQfixwgAhBgwBC0GBicQALQAAGkEgQQQQ3AwiCUUNASAJIAgpAgQ3AgAgCUEYaiAIQRxqKQIANwIAIAlBEGogCEEUaikCADcCACAJQQhqIAhBDGopAgA3AgBBrLLCACEGCyADIAY2AgQgAyAJNgIADAELQQRBIEGIq8QAKAIAIgBBzwcgABsRAAAACyADKAIEIQsgAygCACEGIANBADYCoAEgA0KAgICAEDcCmAEgA0EDOgCIAiADQSA2AvgBIANBADYChAIgA0GQk8AANgKAAiADQQA2AvABIANBADYC6AEgAyADQZgBajYC/AFBsIDAAEEgIANB6AFqEOQNDQEgA0GIAWoiBSADQaABaigCADYCACADIAMpApgBNwOAAUGBicQALQAAGkEMQQQQ3AwiCEUNTCAIIAMpA4ABNwIAIAhBCGogBSgCADYCACAGRQ0GIAgQ3QcgAyAGNgJsQQghDAsgA0HoAGogDGogCzYCACADKQJsIVogOiAsOgAlIDogIzoAJCA6IFo3AhwgOiBCNgIYIDogPjYCFCA6IDw2AhAgOiA4NgIMIDogJzYCCCA6IBU2AgQgOiArNgIADAYLQaiTwABBNyADQdAAakHgk8AAQbyUwAAQrwgACyADQoHKADcD6AEgA0HoAWoQpAshCAwDCwJAIAMoAvgBIgVFDQAgBUECdEELakF4cSIGIAVqQQlqIgVFDQAgAygC9AEgBmsgBUEIEL4NCyADKALoASIFRQ0CIAsgBUEUbEEEEL4NDAILAkAgAygC+AEiBUUNACAFQQJ0QQtqQXhxIgYgBWpBCWoiBUUNACADKAL0ASAGayAFQQgQvg0LIAMoAugBIgVFDQEgCyAFQQR0QQQQvg0MAQsgCkUEQCAOIQgMAQsgCCAKQQJ0QQQQvg0gDiEICyA6QYCAgIB4NgIAIDogCDYCBCAnBEAgFUGAAWohBQNAIAVBBGsoAgAiBgRAIAUoAgAgBkE8bEEEEL4NCyAFQShrKAIAIgYEQCAFQSRrKAIAIAZBNGxBBBC+DQsgBUGoAWohBSAnQQFrIicNAAsLICtFDQAgFSArQagBbEEEEL4NCyADQZACaiQADAQLIAYgDEG0msAAEJkJAAsgBiAMQcSawAAQmQkACyADKAKEASADKAKIARC+DAALQQQgChC+DAALIAIoAowFIQUCQCACKAKIBSIXQYCAgIB4RwRAIEcgIikCADcCACBHQRhqIgwgIkEYaikCADcCACBHQRBqIg4gIkEQaikCADcCACBHQQhqIgggIkEIaikCADcCACACIAU2ArQGIAIgFzYCsAYCfyATKAIEIglBA00EQCACQoHKADcDiAUgAkGIBWoQpAsMAQsgEyAJQQRrIgY2AgQgEyATKAIAIhVBBGo2AgAgBkEDTQRAIAJCgcoANwOIBSACQYgFahCkCwwBCyAVKAAAIQogEyAJQQhrIgY2AgQgEyAVQQhqNgIAIAZBA00EQCACQoHKADcDiAUgAkGIBWoQpAsMAQsgFSgABCEDIBMgCUEMayIGNgIEIBMgFUEMajYCACAGQQNLDQIgAkKBygA3A4gFIAJBiAVqEKQLCyEFIAJBsAZqEPwGCyAEBEAgDyExA0AgMRD8BiAxQThqITEgBEEBayIEDQALCyACKALwCCIERQ0DIA8gBEE4bEEEEL4NDAMLIBUoAAghCyATIAlBEGs2AgQgEyAVQRBqNgIAIAJBmANqIhlBCGoiCSAIKQIANwMAIBlBEGoiBiAOKQIANwMAIBlBGGoiCCAMKQIANwMAIAIgRykCADcDmAMgFSgADCEVIAIoAvAIIARGBEAgAkHwCGoQ1QYgAigC9AghDwsgDyAbaiIOIBc2AgAgDkEEaiAFNgIAIA5BCGogAikDmAM3AgAgDkEQaiAJKQMANwIAIA5BGGogBikDADcCACAOQSBqIAgpAwA3AgAgDkE0aiAVNgIAIA5BMGogCzYCACAOQSxqIAM2AgAgDkEoaiAKNgIAIAIgBEEBaiIENgL4CCAbQThqIRsgBCAhRw0ACyACKAL0CCEFIAIoAvAIIgZBgoCAgHhIDQEgQUGAgICAeGsOAgIsBAtBAUHoicAAQfiCwAAQogghBQsgQQRAIAEgQUEEdEEEEL4NCyAFIQEMKgtBAEHAjsAAQfiCwAAQogghAQwpC0EEIQVBACEECyACQQI2ApwDIAIgPTYCmAMgAkGIBWogAkGYA2oQqwIgAigCjAUhAyACKAKIBSIKQYGAgIB4Rg0mIApBgICAgHhGBEBBAEHoicAAQfiCwAAQogghAwwnCwJAAkACQCACKAKcAwRAIAIoApgDIhEoAgQiCUEHTQRAIAJCgcoANwOIBSACQYgFahCkCyELDCoLIAIoApAFIRcgESAJQQhrIiI2AgQgESARKAIAIglBCGoiJzYCACACQRBqIAkpAAAQqAYgAigCFCELIAIoAhANKUHMmQMgCyALQcyZA08bIRsgC0UNAkEAIRVBgYnEAC0AABogG0EUbCIOQQQQ3AwiCEUNOiACQQA2ApAFIAIgCDYCjAUgAiAbNgKIBUEAIRkDQCAiRQ0GIBEgIkEBayIJNgIEIBEgJ0EBaiIONgIAICctAAAiIEECTwRAQYGJxAAtAAAaQQxBBBDcDCILRQ0/IAsgIDoABCALQYKAgIB4NgIADCoLIAlFDQcgESAJQQFrIg82AgQgESAOQQFqIgk2AgAgDi0AACIMQQJPBEBBgYnEAC0AABpBDEEEENwMIgtFDT8gCyAMOgAEIAtBgoCAgHg2AgAMKgsgD0EDTQRAIAJCgcoANwOwBiACQbAGahCkCyELDCoLIBEgD0EEayIPNgIEIBEgCUEEaiIONgIAIA9BA00EQCACQoHKADcDsAYgAkGwBmoQpAshCwwqCyAJKAAAIQkgESAPQQRrIg82AgQgESAOQQRqIhY2AgAgD0EDTQRAIAJCgcoANwOwBiACQbAGahCkCyELDCoLIA4oAAAhNCARIA9BBGsiDjYCBCARIBZBBGoiDzYCACAOQQNNBEAgAkKBygA3A7AGIAJBsAZqEKQLIQsMKgsgFigAACEaIBEgDkEEayIiNgIEIBEgD0EEaiInNgIAIA8oAAAhFiACKAKIBSAZRgRAIAJBiAVqEM0GIAIoAowFIQgLIAggFWoiDyAJNgIAIA9BEWogDDoAACAPQRBqICA6AAAgD0EMaiAWNgIAIA9BCGogGjYCACAPQQRqIDQ2AgAgAiAZQQFqIhk2ApAFIBVBFGohFSALIBlHDQALIAIoAowFIQsgAigCiAUiG0GCgICAeEgNKSAKQYCAgIB4aw4CASoDC0EBQeiJwABB+ILAABCiCCELDCgLQQBBwI7AAEH4gsAAEKIIIQMMKAtBBCELQQAhGQsgPSgCBCIJQQdNBEAgAkKBygA3A4gFIAJBiAVqEKQLIQ8MBgsgPSAJQQhrIgw2AgQgPSA9KAIAIglBCGoiJDYCACACQQhqIAkpAAAQqAYgAigCDCEPIAIoAggNBUHVqgUgDyAPQdWqBU8bIScgD0UEQEEAISJBBCEPDAcLQQAhFUGBicQALQAAGiAnQQxsIg5BBBDcDCIIRQ02IAJBADYCkAUgAiAINgKMBSACICc2AogFQQAhIgNAAkAgDEEETwRAID0gDEEEayIONgIEID0gFSAkaiIJQQRqIgw2AgAgDkEESQ0GIAkoAAAhNCA9IA5BBGsiDjYCBCA9IAxBBGoiCTYCACAOQQNLDQEgAkKBygA3A7AGIAJBsAZqEKQLDAcLIAJCgcoANwOwBiACQbAGahCkCwwGCyAMNQAAIV4gPSAOQQRrIgw2AgQgPSAJQQRqNgIAIAk1AAAhXyACKAKIBSAiRgRAIAJBiAVqEM4GIAIoAowFIQgLIAggFWoiCSA0NgIAIAlBBGogX0IghiBehDcCACACICJBAWoiIjYCkAUgFUEMaiEVIA8gIkcNAAsgAigCjAUhDyACKAKIBSInQYGAgIB4Sg0GDAULQQQgBBC+DAALIAJCgcoANwOwBiACQbAGahCkCyELDCILIAJCgcoANwOwBiACQbAGahCkCyELDCELIAJCgcoANwOwBiACQbAGahCkCwshDyACKAKIBSIJRQ0AIAggCUEMbEEEEL4NCyAKBEAgAyAKQQR0QQQQvg0LIBsEQCALIBtBFGxBBBC+DQsgDyEDDCALAkAgQUGAgICAeGsOAgEiAAsgAigCoAchDiACIAIoAqQHNgLoAiACIA42AuQCIAIgIjYC4AIgAiAPNgLcAiACICc2AtgCIAIgGTYC1AIgAiALNgLQAiACIBs2AswCIAIgFzYCyAIgAiADNgLEAiACIAo2AsACIAIgBDYCvAIgAiAFNgK4AiACIAY2ArQCIAIgHDYCsAIgAiABNgKsAiACIEE2AqgCIAIoAlQiAUUNASACIAFBAWs2AlQgAigCUCEQIAJBATYCjAcgAiAQNgKIByAQKAIEIgFBB00EQCACQoHKADcDiAUgAkGIBWoQpAshAQwcCyAQIAFBCGs2AgQgECAQKAIAIgFBCGo2AgAgAiABKQAAEKgGIAIoAgQhBSACKAIABEAgBSEBDBwLQaEWIAUgBUGhFk8bIQMCQCAFRQRAQQAhCUEIIQEMAQtBgYnEAC0AABogA0HwAmwiBEEIENwMIgFFDTQgAkEANgKYByACIAE2ApQHIAIgAzYCkAcgAkGQBWohEkEAIQ9BACEJA0ACQAJAAkACQAJAIBAoAgQiBEEETwRAIBAgBEEEayIGNgIEIBAgECgCACIDQQRqNgIAIAMoAAAiFA4CAgMBCyACQoHKADcDiAUgAkGIBWoQpAshAQwhCyACQQE6AIgFIAIgFK03A5AFIAJBiAVqQZCIwABB+ILAABDeCCEBDCALAkACQCAGBEAgECAEQQVrIgE2AgQgECADQQVqNgIAIAMtAAQiDA4CBQIBCyACQoHKADcDiAUgAkGIBWoQpAshAQwhC0GBicQALQAAGkEMQQQQ3AwiAUUNOCABIAw2AgQgAUGEgICAeDYCAAwgCyABQQNLDQEgAkKBygA3A4gFIAJBiAVqEKQLIQEMHwsCQAJAIAZBBE8EQCAQIARBCGs2AgQgECADQQhqNgIAIAMoAAQhDCACQYgFaiAQEPoDIAIoAowFIRUgAigCiAUNAiACQbAGaiIBQRBqIhEgEkEQaiIgKQIANwMAIAFBCGoiFyASQQhqIhopAgA3AwAgAiASKQIANwOwBiACQYgFaiAQEPoDIAIoAowFIRkgAigCiAUEQCAZIQEMIgsgAkHYCGoiAUEQaiIYICApAgA3AwAgAUEIaiIjIBopAgA3AwAgAkGIAmoiAUEIaiIsIBcpAwA3AwAgAUEQaiIdIBEpAwA3AwAgAiASKQIANwPYCCACIAIpA7AGNwOIAgJAIBAoAgQiAQRAIBAgAUEBazYCBCAQIBAoAgAiAUEBajYCACABLQAAISggAkGIBWogEBCSAiACKAKMBSEbIAIoAogFDQwgAkGYA2oiAUEgaiIcIBJBIGoiFikCADcDACABQRhqIgogEkEYaiILKQIANwMAIAFBEGoiCCAgKQIANwMAIAFBCGoiBiAaKQIANwMAIAIgEikCADcDmAMCQAJAAkAgECgCBCIhBEAgECAhQQFrIgE2AgQgECAQKAIAIjBBAWoiAzYCAEEAIQ4gMC0AACIEDgIDAgELIAJCgcoANwOIBSACQYgFahCkCyEBDCYLQYGJxAAtAAAaQQxBBBDcDCIBRQ09IAEgBDYCBCABQYSAgIB4NgIADCULAn8CQAJAAkACQCAhQQVPBEAgECAhQQVrIgE2AgQgECAwQQVqNgIAIDAoAAEiBA4CAgMBCyACQoHKADcDiAUgAkGIBWoQpAshAQwpCyACQQE6AIgFIAIgBK03A5AFIAJBiAVqQZCIwABB+ILAABDeCCEBDCgLIAJBiAVqIBAQkgIgAigCiAVFDQEgAigCjAUhAQwnCyABQQRPBEAgECAhQQlrNgIEIBAgMEEJajYCACAwKAAFDAILIAJBADoAiwUgAkElOwCJBSACQQA2AowFIAJBAToAiAUgAkGIBWoQpAshAQwmCyAXIBopAgA3AwAgESAgKQIANwMAIAJBsAZqIgFBGGogCykCADcDACABQSBqIBYpAgA3AwAgAiASKQIANwOwBiACKAKMBQshAUGBicQALQAAGkEwQQQQ3AwiDkUNPyAOIAE2AgQgDiAENgIAIA4gAikDsAY3AgggDkEQaiAXKQMANwIAIA5BGGogESkDADcCACAOQSBqIAJBsAZqIgFBGGopAwA3AgAgDkEoaiABQSBqKQMANwIAIBAoAgAhAyAQKAIEIQELIAFBBEkNIiAQIAFBBGsiBDYCBCAQIANBBGo2AgAgBEEESQ0iIAMoAAAhTCAQIAFBCGsiBDYCBCAQIANBCGo2AgAgBEEESQ0iIAM1AAQhYSAQIAFBDGsiBDYCBCAQIANBDGo2AgAgBEEESQ0iIAM1AAghaiAQIAFBEGsiBDYCBCAQIANBEGo2AgAgBEEESQ0iIAMoAAwhOyAQIAFBFGsiBDYCBCAQIANBFGo2AgAgBEEESQ0iIAM1ABAhYyAQIAFBGGsiBDYCBCAQIANBGGo2AgAgBEEESQ0iIAM1ABQhayAQIAFBHGsiBDYCBCAQIANBHGo2AgAgBEEESQ0iIAMoABghTSAQIAFBIGsiBDYCBCAQIANBIGo2AgAgBEEESQ0iIAMqABwhgQEgECABQSRrIgQ2AgQgECADQSRqNgIAIARBBEkNIiADKgAgIYIBIBAgAUEoayIENgIEIBAgA0EoajYCACAEQQRJDSIgAyoAJCGDASAQIAFBLGsiBDYCBCAQIANBLGo2AgAgBEEESQ0iIAMqACghhAEgECABQTBrIgQ2AgQgECADQTBqNgIAIAJB8AhqIgtBCGoiISAGKQMANwMAIAtBEGoiESAIKQMANwMAIAtBGGoiICAKKQMANwMAIAtBIGoiGiAcKQMANwMAIAIgAikDmAM3A/AIIARBBEkNDSADKgAsIYUBIBAgAUE0ayIENgIEIBAgA0E0ajYCACAEQQRJDQ0gAygAMCFRIBAgAUE4ayIENgIEIBAgA0E4ajYCACAEQQRJDQ0gAzUANCFnIBAgAUE8ayIENgIEIBAgA0E8ajYCAAJAIARBBEkNACADNQA4IWwgECABQUBqIgQ2AgQgECADQUBrNgIAIARBBEkNACADKAA8IUUgECABQcQAayIENgIEIBAgA0HEAGo2AgAgBEEETw0CCyACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQYMIQsgAkKBygA3A4gFIAJBiAVqEKQLIQEMIgsgAzUAQCFoIBAgAUHIAGsiBDYCBCAQIANByABqNgIAIARBBEkNDCADNQBEIW0gECABQcwAayIENgIEIBAgA0HMAGo2AgAgBEEESQ0MIAMoAEghSyAQIAFB0ABrIgQ2AgQgECADQdAAajYCACAEQQRJDQwgAzUATCFpIBAgAUHUAGsiBDYCBCAQIANB1ABqNgIAAkACQCAEQQRJDQAgAzUAUCFuIBAgAUHYAGsiBDYCBCAQIANB2ABqNgIAIARBBEkNACADKABUIUQgECABQdwAayIENgIEIBAgA0HcAGo2AgAgBEEETw0BCyACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQYMIAsgAzUAWCFvIBAgAUHgAGsiBDYCBCAQIANB4ABqNgIAIARBBEkNDSADNQBcIVsgECABQeQAayIENgIEIBAgA0HkAGo2AgAgBEEESQRAIAJBADoAiwUgAkElOwCJBSACQQA2AowFIAJBAToAiAUgAkGIBWoQpAshBgwgCyADKABgIUogECABQegAayIENgIEIBAgA0HoAGo2AgAgBEEESQ0OIAMqAGQhfiAQIAFB7ABrIgQ2AgQgECADQewAajYCACAEQQRJDQ4gAygAaCEqIBAgAUHwAGsiBDYCBCAQIANB8ABqNgIAIARBBEkNDiADNQBsIWUgECABQfQAayIENgIEIBAgA0H0AGo2AgAgBEEESQ0PIAM1AHAhZiAQIAFB+ABrIgQ2AgQgECADQfgAajYCACAEQQRJDQ8gAygAdCE/IBAgAUH8AGsiBDYCBCAQIANB/ABqNgIAIARBBEkNDyADNQB4IWQgECABQYABayIENgIEIBAgA0GAAWo2AgAgBEEESQ0QIAM1AHwhYiAQIAFBhAFrIgQ2AgQgECADQYQBajYCACAEQQRJDREgAyoAgAEhdiAQIAFBiAFrIgQ2AgQgECADQYgBajYCACAEQQRJDREgAygAhAEhTyAQIAFBjAFrIgQ2AgQgECADQYwBajYCACAEQQRJDREgAzUAiAEhYCAQIAFBkAFrIgQ2AgQgECADQZABajYCAAJAAkAgBEEESQ0AIAM1AIwBIV0gECABQZQBayIENgIEIBAgA0GUAWo2AgAgBEEESQ0AIAMoAJABITAgECABQZgBayIENgIEIBAgA0GYAWo2AgAgBEEETw0BCyACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQYMIAsgAzUAlAEhXCAQIAFBnAFrIgQ2AgQgECADQZwBajYCACAEQQNNBEAgAkEAOgCLBSACQSU7AIkFIAJBADYCjAUgAkEBOgCIBSACQYgFahCkCyEGDCALIAM1AJgBIVogECABQaABayIENgIEIBAgA0GgAWo2AgAgBEEDTQRAIAJBADoAiwUgAkElOwCJBSACQQA2AowFIAJBAToAiAUgAkGIBWoQpAshBgwgCyADKACcASFGIBAgAUGkAWsiBDYCBCAQIANBpAFqNgIAIARFDRIgAyoAoAEhfyAQIAFBpQFrIgQ2AgQgECADQaUBajYCACADLQCkASIXQQJPBEBBgYnEAC0AABpBDEEEENwMIgZFDTogBiAXOgAEIAZBgoCAgHg2AgAMIAsgBEUNEyAQIAFBpgFrIgQ2AgQgECADQaYBajYCACADLQClASIIQQJPBEBBgYnEAC0AABpBDEEEENwMIgZFDTogBiAIOgAEIAZBgoCAgHg2AgAMIAsgBEEDTQRAIAJBADoAiwUgAkElOwCJBSACQQA2AowFIAJBAToAiAUgAkGIBWoQpAshBgwgCyAQIAFBqgFrIgQ2AgQgECADQaoBajYCACAEQQhJDRQgAyoApgEhgAEgECABQbIBayIENgIEIBAgA0GyAWo2AgAgAykAqgEicEKAgICAEFoEQCACQQE6AIgFIAIgcDcDkAUgAkGIBWogAkGfCWpB0IDAABDeCCEGDCALIARBCEkNFSAQIAFBugFrIgQ2AgQgECADQboBajYCACADKQCyASJxQoCAgIAQWgRAIAJBAToAiAUgAiBxNwOQBSACQYgFaiACQZ8JakHQgMAAEN4IIQYMIAsgBEEISQ0WIBAgAUHCAWsiBDYCBCAQIANBwgFqNgIAIAMpALoBInJCgICAgBBaBEAgAkEBOgCIBSACIHI3A5AFIAJBiAVqIAJBnwlqQdCAwAAQ3gghBgwgCyAEQQNNBEAgAkKBygA3A4gFIAJBiAVqEKQLIQYMIAsgECABQcYBazYCBCAQIANBxgFqNgIAIAMoAMIBIVIgAkGIBWogEBCwAyACKAKMBSEGIAIoAogFIgtBgICAgHhGDR8gECgCBCIEQQNNBEAgAkEAOgCLBSACQSU7AIkFIAJBADYCjAUgAkEBOgCIBSACQYgFahCkCyEEDB8LIAIoApAFIRwgECAEQQRrIgE2AgQgECAQKAIAIgNBBGo2AgAgAUEDTQRAIAJBADoAiwUgAkElOwCJBSACQQA2AowFIAJBAToAiAUgAkGIBWoQpAshBAwfCyADKAAAITQgECAEQQhrIgE2AgQgECADQQhqNgIAIAFBA00EQCACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQQMHwsgAyoABCF6IBAgBEEMayIBNgIEIBAgA0EMajYCACABQQNNBEAgAkEAOgCLBSACQSU7AIkFIAJBADYCjAUgAkEBOgCIBSACQYgFahCkCyEEDB8LIAMqAAgheyAQIARBEGsiATYCBCAQIANBEGo2AgAgAUUNFyADKgAMIXwgECAEQRFrIgE2AgQgECADQRFqNgIAIAMtABAiJ0ECTwRAQYGJxAAtAAAaQQxBBBDcDCIERQ06IAQgJzoABCAEQYKAgIB4NgIADB8LIAFBA00EQCACQoHKADcDiAUgAkGIBWoQpAshBAwfCyAQIARBFWsiATYCBCAQIANBFWo2AgAgAUEESQ0YIAMoABEhFiAQIARBGWsiATYCBCAQIANBGWo2AgAgAygAFSIiQQRPBEAgAkEBOgCIBSACICKtNwOQBSACQYgFakHgjMAAQfiCwAAQ3gghBAwfCyABRQRAIAJCgcoANwOIBSACQYgFahCkCyEEDB8LIBAgBEEaayIBNgIEIBAgA0EaajYCACABRQ0ZIAMtABkhJCAQIARBG2siATYCBCAQIANBG2o2AgAgAy0AGiIKQQJPBEBBgYnEAC0AABpBDEEEENwMIgRFDTogBCAKOgAEIARBgoCAgHg2AgAMHwsgAUEISQ0aIBAgBEEjayIBNgIEIBAgA0EjajYCACADKQAbInNCgICAgBBaBEAgAkEBOgCIBSACIHM3A5AFIAJBiAVqIAJBnwlqQdCAwAAQ3gghBAwfCyABQQ9LDQEgAkKBygA3A4gFIAJBiAVqEKQLIQQMHgsgAkKBygA3A4gFIAJBiAVqEKQLIQEMIAsgakIghiBhhCFqIGtCIIYgY4QhayBsQiCGIGeEIWwgbUIghiBohCFtIG5CIIYgaYQhbiBbQiCGIG+EIWcgZkIghiBlhCFjIGJCIIYgZIQhYSBdQiCGIGCEIV8gWkIghiBchCFeIHCnIU4gcachByBypyEeIANBL2o1AAAhXCADNQAjIVogAykAJyFdIBAgBEEzazYCBCAQIANBM2o2AgAgAkGACGoiAUEIaiAhKQMANwMAIAFBEGogESkDADcDACABQRhqICApAwA3AwAgAUEgaiAaKQMANwMAIAJBwAhqIgFBCGogLCkDADcDACABQRBqIB0pAwA3AwAgAiACKQPwCDcDgAggAiACKQOIAjcDwAggAkGoCGoiAUEQaiAYKQMANwMAIAFBCGogIykDADcDACACQf4HaiACQZ4Jai0AADoAACACIAIpA9gINwOoCCACIAIvAJwJOwH8ByBcQiCGIF1CIIiEIWggWiBdQiCGhCFpIHOnIRoMAgsgFSEBDB4LIBAgBEEJazYCBCAQIANBCWo2AgAgAygABSFOQQEhDAsgAkHgB2oiBEEQaiIlIAJBwAhqIgFBEGopAwA3AwAgBEEIaiINIAFBCGopAwA3AwAgAkHIB2oiBEEIaiIfIAJBqAhqIgFBCGopAwA3AwAgBEEQaiIYIAFBEGopAwA3AwAgAkGgB2oiBEEIaiIjIAJBgAhqIgFBCGopAwA3AwAgBEEQaiIsIAFBEGopAwA3AwAgBEEYaiIdIAFBGGopAwA3AwAgBEEgaiIhIAFBIGopAwA3AwAgAiACKQPACDcD4AcgAiACKQOoCDcDyAcgAiACKQOACDcDoAcgAkGeB2oiESACQf4Hai0AADoAACACIAIvAfwHOwGcByACKAKQByAJRgRAIwBBIGsiASQAIAJBkAdqIjMoAgAiJkEBaiIDRQ03QQQgJkEBdCIEIAMgAyAESRsiBCAEQQRNGyIgQfACbCEDIARBopbkAklBA3QhBCABICYEfyABICZB8AJsNgIcIAEgMygCBDYCFEEIBUEACzYCGCABQQhqIAQgAyABQRRqEI4HIAEoAggEQCABKAIMIAEoAhAQvgwACyABKAIMIQQgMyAgNgIAIDMgBDYCBCABQSBqJAALIA8gAigClAciAWoiBCAUNgIAIARBIGogaDcDACAEQRhqIGk3AwAgBEE4aiAVNgIAIARBNWogCDoAACAEQTRqIBc6AAAgBEEwaiCAATgCACAEQSxqIH84AgAgBEEoaiBGNgIAIARBFGogUjYCACAEQRBqIB42AgAgBEEMaiAHNgIAIARBCGogTjYCACAEQQRqIAw2AgAgBEE8aiACKQPgBzcCACAEQcQAaiANKQMANwIAIARBzABqICUpAwA3AgAgBEHUAGogGTYCACAEQfAAaiBRNgIAIARB9ABqIGw3AgAgBEH8AGogRTYCACAEQYABaiBtNwMAIARBiAFqIEs2AgAgBEGMAWogbjcCACAEQZQBaiBENgIAIARBmAFqIGc3AwAgBEGgAWogSjYCACAEQaQBaiB+OAIAIARBqAFqIE02AgAgBEGsAWoggQE4AgAgBEGwAWogggE4AgAgBEG0AWoggwE4AgAgBEG4AWoghAE4AgAgBEG8AWoghQE4AgAgBEHAAWogGzYCACAEQdgAaiACKQPIBzcDACAEQeAAaiAfKQMANwMAIARB6ABqIBgpAwA3AwAgBEHsAWogDjYCACAEQfABaiBMNgIAIARB9AFqIGo3AgAgBEH8AWogOzYCACAEQYACaiBrNwMAIARBjAJqICo2AgAgBEGQAmogYzcDACAEQZgCaiA/NgIAIARBnAJqIGE3AgAgBEGkAmogdjgCACAEQagCaiBPNgIAIARBrAJqIF83AgAgBEG0AmogMDYCACAEQbgCaiBeNwMAIARBwAJqIBY2AgAgBEHEAmogGjYCACAEQcgCaiA0NgIAIARBzAJqIHo4AgAgBEHQAmogezgCACAEQdQCaiB8OAIAIARB2AJqICc6AAAgBEGIAmogKDoAACAEQeQBaiAhKQMANwIAIARB3AFqIB0pAwA3AgAgBEHUAWogLCkDADcCACAEQcwBaiAjKQMANwIAIARBxAFqIAIpA6AHNwIAIARB3AJqIAs2AgAgBEHgAmogBjYCACAEQeQCaiAcNgIAIARB6gJqIAo6AAAgBEHpAmogIjoAACAEQegCaiAkOgAAIARB2wJqIBEtAAA6AAAgBEHZAmogAi8BnAc7AAAgAiAJQQFqIgk2ApgHIA9B8AJqIQ8gBSAJRw0ACyACKAKQByIDQYKAgIB4SA0cCwJAAkAgECgCBCIFQQRPBEAgECAFQQRrIgQ2AgQgECAQKAIAIgZBBGo2AgACQAJAIAQEQCAGNQAAIVogECAFQQVrIg42AgQgECAGQQVqIg82AgAgBi0ABCILDgIFAgELIAJCgcoANwOIBSACQYgFahCkCyEEDBsLQYGJxAAtAAAaQQxBBBDcDCIERQ02IAQgCzYCBCAEQYSAgIB4NgIADBoLIA5BA0sNASACQoHKADcDiAUgAkGIBWoQpAshBAwZCyACQoHKADcDiAUgAkGIBWoQpAshBAwYCyAQIAVBCWsiDjYCBCAQIAZBCWoiDzYCACAGKAAFIQpBASELCyAOQQhJDRQgECAOQQhrNgIEIBAgD0EIajYCACAPKQAAIlxCgICAgBBaBEAgAkEBOgCIBSACIFw3A5AFIAJBiAVqIAJBnwlqQdCAwAAQ3gghBAwXCyACQYgFaiACQYgHahCTAyACKAKMBSEGIAIoAogFIgRBgYCAgHhHBEAgBEGAgICAeEcNA0EBQbiKwABB+ILAABCiCCEGCyAJBEAgASEEA0ACQCAEKAIARQ0AIARB7AFqKAIAIgUEQCAFQTBBBBC+DQsgBEHcAmooAgAiBUUNACAEQeACaigCACAFQQN0QQQQvg0LIARB8AJqIQQgCUEBayIJDQALCyADRQRAIAYhAQwcCyABIANB8AJsQQgQvg0gBiEBDBsLQQRBiLzAAEH4gsAAEKIIIQEMIAtBBUGIvMAAQfiCwAAQogghAQwZCyACIAIoApAFNgKUAyACIAY2ApADIAIgBDYCjAMgAiBcQiCGIFqENwKEAyACIAk2AoADIAIgATYC/AIgAiADNgL4AiACIAo2AvQCIAIgCzYC8AIgAkGIBWohGEEAIQFBACEGQQAhKEEAIQpBACEaQQAhHEEAIRlCACFbQQAhJ0IAIV5BACEbQQAhMEEAIThBACEXQQAhEUEAISJBACEkQQAhKUEAITJBACEtQQAhNEMAAAAAIXZBACE1QQAhK0EAISNBACE5QQAhO0EAISBDAAAAACF7QwAAAAAhfCMAQfABayINJAACQCACQdAAaiIFKAIEIgRFBEAgGEECNgIADAELIAUgBEEBazYCBAJAIAUoAgAiHygCBCIEQQdNBEAgDUKBygA3A6gBIA1BqAFqEKQLIQQMAQsgHyAEQQhrNgIEIB8gHygCACIEQQhqNgIAIA1BCGogBCkAABCoBiANKAIMIQkgDSgCCARAIAkhBAwBC0HhMCAJIAlB4TBPGyEIAkAgCUUEQEEIIQEMAQtBgYnEAC0AABoCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCEGoAWwiBEEIENwMIhwEQCANQQA2AhwgDSAcNgIYIA0gCDYCFCANQagBaiIEQQhqISwgBEEEaiEdA0ACQAJAAkACQAJAIB8oAgQiCEEETwRAIB8gCEEEayIENgIEIB8gHygCACILQQRqNgIAIAsoAAAiFQ4CAgMBCyANQoHKADcDqAEgDUGoAWoQpAshBAwSCyANQQE6AKgBIA0gFa03A7ABIA1BqAFqQZCIwABB+ILAABDeCCEEDBELAkACQCAEBEAgHyAIQQVrIgU2AgQgHyALQQVqNgIAIAstAAQiKg4CBQIBCyANQoHKADcDqAEgDUGoAWoQpAshBAwSC0GBicQALQAAGkEMQQQQ3AwiBEUNRCAEICo2AgQgBEGEgICAeDYCAAwRCyAFQQNLDQEgDUKBygA3A6gBIA1BqAFqEKQLIQQMEAsCQAJAIARBBE8EQCAfIAhBCGsiATYCBCAfIAtBCGo2AgAgCygABCEqIA1BCzYChAEgDSAfNgKAASABQQRJDQIgHyAIQQxrNgIEIB8gC0EMajYCAEEAISICQAJAAkAgCygACCIBDgICAQALIA1BAToAqAEgDSABrTcDsAEgDUGoAWpBkIjAAEH4gsAAEN4IIQQMEwtBASEiCyANQagBaiANQYABahDyAiANKAKsASIEIQEgDSgCqAENECAERQRAQQFBuIjAAEH4gsAAEKIIIQQgDSgCHCEKDBILIA0gDSgCsAEiJDYCjAEgDSAENgKIAQJAAkAgDSgChAEiDwRAIA0gD0EBayIBNgKEAQJAAkACQAJAAkAgDSgCgAEiDCgCBCIGQQRPBEAgDCAGQQRrIgU2AgQgDCAMKAIAIghBBGo2AgAgCCgAACIXDgMDBAIBCyANQoHKADcDqAEgDUGoAWoQpAshAQwXCyANQQE6AKgBIA0gF603A7ABIA1BqAFqQcCMwABB+ILAABDeCCEBDBYLIA1BqAFqIAwQkgIgDSgCqAENAkGBicQALQAAGkEsQQQQ3AwiGg0EQQRBLEGIq8QAKAIAIgBBzwcgABsRAAAACyAFQQRPBEAgDCAGQQhrNgIEIAwgCEEIajYCACAIKAAEIRoMBQsgDUEAOgCrASANQSU7AKkBIA1BADYCrAEgDUEBOgCoASANQagBahCkCyEBDBQLIAVBBE8EQCAMIAZBCGs2AgQgDCAIQQhqNgIAIAgoAAQhGgwECyANQQA6AKsBIA1BJTsAqQEgDUEANgKsASANQQE6AKgBIA1BqAFqEKQLIQEMEwsgDSgCrAEhAQwSC0ECQbiIwABB+ILAABCiCCEBDBELIBogHSkCADcCACAaQShqIB1BKGooAgA2AgAgGkEgaiAdQSBqKQIANwIAIBpBGGogHUEYaikCADcCACAaQRBqIB1BEGopAgA3AgAgGkEIaiAdQQhqKQIANwIACwJAIAEEQCANIA9BAmsiATYChAEgDCgCBCIIQQNLDQEgDUKBygA3A6gBIA1BqAFqEKQLIQEMEAtBA0G4iMAAQfiCwAAQogghAQwPCyAMIAhBBGsiBTYCBCAMIAwoAgAiC0EEajYCACABRQ0IIAsoAAAhKSANIA9BA2siBjYChAECQAJAAkAgBQRAIAwgCEEFayIFNgIEIAwgC0EFajYCACALLQAEIhsOAgMCAQsgDUKBygA3A6gBIA1BqAFqEKQLIQEMEQtBgYnEAC0AABpBDEEEENwMIgFFDUcgASAbNgIEIAFBhICAgHg2AgAMEAsgBUEESQ0IIAwgCEEJayIBNgIEIAwgC0EJajYCACABQQNNBEAgDUKBygA3A6gBIA1BqAFqEKQLIQEMEAsgCygABSEyIAwgCEENazYCBCAMIAtBDWo2AgAgCygACSEtIA1BqAFqIAwQ+gMgDSgCrAEhASANKAKoAQ0PIA1B2AFqIgVBEGogLEEQaikCADcDACAFQQhqICxBCGopAgA3AwAgDSAsKQIANwPYAUEBIRsLAkAgBgRAIA0gD0EEayIINgKEASANQagBaiAMEPoDIA0oAqwBIQYgDSgCqAFFDQEgBiEBDBALQQVBuIjAAEH4gsAAEKIIIQEMDwsgDUGQAWoiBUEQaiIDICxBEGopAgA3AwAgBUEIaiILICxBCGopAgA3AwAgDSAsKQIANwOQAQJAIAgEQCANIA9BBWsiCDYChAEgDCgCBCIOQQNNBEAgDUEAOgCrASANQSU7AKkBIA1BADYCrAEgDUEBOgCoASANQagBahCkCyEBDBELIAwgDkEEayIFNgIEIAwgDCgCACIWQQRqNgIAIAVBA00EQCANQQA6AKsBIA1BJTsAqQEgDUEANgKsASANQQE6AKgBIA1BqAFqEKQLIQEMEQsgFigAACE0IAwgDkEIayIFNgIEIAwgFkEIajYCACAFQQRJDQsgFioABCF2IAwgDkEMayIFNgIEIAwgFkEMajYCACAWKAAIIhlBBE8EQCANQQE6AKgBIA0gGa03A7ABIA1BqAFqQeCMwABB+ILAABDeCCEBDBELIAVBBEkNDCAMIA5BEGsiBTYCBCAMIBZBEGo2AgAgFigADCIwQQRJDQEgDUEBOgCoASANIDCtNwOwASANQagBakHgjMAAQfiCwAAQ3gghAQwQC0EGQbiIwABB+ILAABCiCCEBDA8LAkAgCARAIA0gD0EGayIINgKEASAFQQFNBEAgDUKBygA3A6gBIA1BqAFqEKQLIQEMEQsgDCAOQRJrIgU2AgQgDCAWQRJqNgIAIAVBBEkNDSAWLwAQIREgDCAOQRZrIgU2AgQgDCAWQRZqNgIAIAVBA00EQCANQoHKADcDqAEgDUGoAWoQpAshAQwRCyAWKAASITUgDCAOQRprIgU2AgQgDCAWQRpqNgIAIAVBBEkNDiAWKAAWISsgDCAOQR5rIgU2AgQgDCAWQR5qNgIAIAVBA00EQCANQoHKADcDqAEgDUGoAWoQpAshAQwRCyAWKAAaISMgDCAOQSJrIgU2AgQgDCAWQSJqNgIAIAVBA00EQCANQoHKADcDqAEgDUGoAWoQpAshAQwRCyAWKAAeITkgDCAOQSZrIgU2AgQgDCAWQSZqNgIAIAVBA00EQCANQoHKADcDqAEgDUGoAWoQpAshAQwRCyAWKAAiITsgDCAOQSprIgU2AgQgDCAWQSpqNgIAIAVBBEkNDyAWKAAmISAgDCAOQS5rIgU2AgQgDCAWQS5qNgIAIBYoACoiKEEDSQ0BIA1BAToAqAEgDSAorTcDsAEgDUGoAWpBwIzAAEH4gsAAEN4IIQEMEAtBB0G4iMAAQfiCwAAQogghAQwPCwJAIAgEQCANIA9BB2siCDYChAEgBUEDSw0BIA1CgcoANwOoASANQagBahCkCyEBDBALQQhBuIjAAEH4gsAAEKIIIQEMDwsgDCAOQTJrIgU2AgQgDCAWQTJqNgIAAkAgCARAIBYoAC4hJyANIA9BCGsiCDYChAEgBUEDSw0BIA1BADoAqwEgDUElOwCpASANQQA2AqwBIA1BAToAqAEgDUGoAWoQpAshAQwQC0EJQbiIwABB+ILAABCiCCEBDA8LIAwgDkE2ayIFNgIEIAwgFkE2ajYCAAJAIAgEQCAWKgAyIXsgDSAPQQlrIgg2AoQBIAVBA0sNASANQQA6AKsBIA1BJTsAqQEgDUEANgKsASANQQE6AKgBIA1BqAFqEKQLIQEMEAtBCkG4iMAAQfiCwAAQogghAQwPCyAMIA5BOmsiBTYCBCAMIBZBOmo2AgAgCARAIBYqADYhfCANIA9BCms2AoQBIAVBD0sNAiANQoHKADcDqAEgDUGoAWoQpAshAQwPC0ELQbiIwABB+ILAABCiCCEBDA4LIA1CgcoANwOoASANQagBahCkCyEEDBELIBZBxgBqNQAAIVwgFjUAOiFaIBYpAD4hXSAMIA5BygBrNgIEIAwgFkHKAGo2AgAgDUHoAGoiCEEIaiANQdgBaiIFQQhqKQMANwMAIAhBEGogBUEQaikDADcDACANQdAAaiIFQQhqIAspAwA3AwAgBUEQaiADKQMANwMAIA0gDSkD2AE3A2ggDSANKQOQATcDUCBcQiCGIF1CIIiEIV4gWiBdQiCGhCFbDAILIA1CgcoANwOoASANQagBahCkCyEEDA4LIB8gCEEJazYCBCAfIAtBCWo2AgAgCygABSEbQQEhKgsgDUE4aiIIQRBqIgwgDUHoAGoiBUEQaikDADcDACAIQQhqIhYgBUEIaikDADcDACANQSBqIghBCGoiDiANQdAAaiIFQQhqKQMANwMAIAhBEGoiDyAFQRBqKQMANwMAIA0gDSkDaDcDOCANIA0pA1A3AyAgDSgCFCAKRgRAIwBBIGsiBSQAIA1BFGoiISgCACIcQQFqIgtFDUNBBCAcQQF0IgggCyAIIAtLGyIIIAhBBE0bIgNBqAFsIQsgCEGxmIwGSUEDdCEIIAUgHAR/IAUgHEGoAWw2AhwgBSAhKAIENgIUQQgFQQALNgIYIAVBCGogCCALIAVBFGoQjgcgBSgCCARAIAUoAgwgBSgCEBC+DAALIAUoAgwhCCAhIAM2AgAgISAINgIEIAVBIGokACANKAIYIRwLIBwgOGoiBSAVNgIAIAVBFGogATYCACAFQRBqIC02AgAgBUEMaiAyNgIAIAVBCGogGzYCACAFQQRqICo2AgAgDCkDACFdIBYpAwAhXCANKQM4IVogBUHIAGogXjcDACAFQUBrIFs3AwAgBUEYaiBaNwMAIAVBIGogXDcDACAFQShqIF03AwAgBUH8AGogBjYCACAFQfgAaiApNgIAIAVB9QBqIDA6AAAgBUH0AGogGToAACAFQfAAaiB2OAIAIAVB7ABqIDQ2AgAgBUHqAGogKDoAACAFQegAaiAROwEAIAVB5ABqICA2AgAgBUHgAGogOzYCACAFQdwAaiA5NgIAIAVB2ABqICM2AgAgBUHUAGogKzYCACAFQdAAaiA1NgIAIAVBPGogJDYCACAFQThqIAQ2AgAgBUE0aiAaNgIAIAVBMGogFzYCACAFQZABaiAPKQMANwMAIAVBiAFqIA4pAwA3AwAgBUGAAWogDSkDIDcDACAFQZgBaiAnNgIAIAVBnAFqIHs4AgAgBUGgAWogfDgCACAFQaQBaiAiOgAAIA0gCkEBaiIKNgIcIDhBqAFqITggCSAKRw0ACyANKAIYIQEgDSgCFCIIQYKAgIB4Tg0NIAEhBAwOCww/CyANQoHKADcDqAEgDUGoAWoQpAshAQwGC0EEQbiIwABB+ILAABCiCCEBDAULIA1CgcoANwOoASANQagBahCkCyEBDAQLIA1CgcoANwOoASANQagBahCkCyEBDAMLIA1CgcoANwOoASANQagBahCkCyEBDAILIA1CgcoANwOoASANQagBahCkCyEBDAELIA1CgcoANwOoASANQagBahCkCyEBCyAXQQJJDQAgGkEsQQQQvg0LIAQgBCgCACIEQQFrNgIAIARBAUYEQCANQYgBahCyCAsLIAEhBCANKAIcIQoLIA0oAhghHAsgCgRAIBxBOGohBQNAAkAgBUE4aygCAEUNACAFKAIAIgEoAgAhBiABIAZBAWs2AgAgBkEBRgRAIAUQsggLIAVBCGsoAgBBAkkNACAFQQRrKAIAQSxBBBC+DQsgBUGoAWohBSAKQQFrIgoNAAsLIA0oAhQiAUUNASAcIAFBqAFsQQgQvg0MAQsCQAJAAkAgHygCBCIFQQRPBEAgHyAFQQRrIgQ2AgQgHyAfKAIAIgZBBGo2AgACQAJAIAQEQCAGNQAAIVogHyAFQQVrIgQ2AgQgHyAGQQVqIgs2AgAgBi0ABCIaDgIFAgELIA1CgcoANwOoASANQagBahCkCyEEDAULQYGJxAAtAAAaQQxBBBDcDCIERQ02IAQgGjYCBCAEQYSAgIB4NgIADAQLIARBA0sNASANQoHKADcDqAEgDUGoAWoQpAshBAwDCyANQoHKADcDqAEgDUGoAWoQpAshBAwCCyAfIAVBCWsiBDYCBCAfIAZBCWoiCzYCACAGKAAFIRxBASEaCwJAIARBCE8EQCAfIARBCGs2AgQgHyALQQhqNgIAIAspAAAiXEKAgICAEFoEQCANQQE6AKgBIA0gXDcDsAEgDUGoAWogDUHYAWpB0IDAABDeCCEEDAMLIA1BqAFqIB8QsAMgDSgCrAEhBCANKAKoASILQYCAgIB4RwRAIA0oArABIQkgDUGoAWogHxCwAyANKAKsASEFIA0oAqgBIgZBgICAgHhHDQIgCwRAIAQgC0EDdEEEEL4NCyAFIQQLIAoEQCABQThqIQUDQAJAIAVBOGsoAgBFDQAgBSgCACIGKAIAIQkgBiAJQQFrNgIAIAlBAUYEQCAFELIICyAFQQhrKAIAQQJJDQAgBUEEaygCAEEsQQQQvg0LIAVBqAFqIQUgCkEBayIKDQALCyAIRQ0DIAEgCEGoAWxBCBC+DQwDCyANQoHKADcDqAEgDUGoAWoQpAshBAwBCyAYIA0oArABNgIwIBggBTYCLCAYIAY2AiggGCAJNgIkIBggBDYCICAYIAs2AhwgGCBcQiCGIFqENwIUIBggCjYCECAYIAE2AgwgGCAINgIIIBggHDYCBCAYIBo2AgAMAgsgCgRAIAFBOGohBQNAAkAgBUE4aygCAEUNACAFKAIAIgYoAgAhCSAGIAlBAWs2AgAgCUEBRgRAIAUQsggLIAVBCGsoAgBBAkkNACAFQQRrKAIAQSxBBBC+DQsgBUGoAWohBSAKQQFrIgoNAAsLIAhFDQAgASAIQagBbEEIEL4NCyAYQQM2AgAgGCAENgIECyANQfABaiQAIAIoAowFIQQCQAJAIAIoAogFIgtBA0cEQCACQdADaiIBQShqIgkgAkGIBWoiA0EwaigCADYCACABQSBqIgggA0EoaikCADcDACABQRhqIgYgA0EgaikCADcDACABQRBqIgUgA0EYaikCADcDACACQdgDaiIBIANBEGopAgA3AwAgAiACKQKQBTcD0AMgC0ECRw0BQQZBiLzAAEH4gsAAEKIIIQQLIDdBAjYCACA3IAQ2AgQMAQsgAkGYA2oiA0EwaiAJKAIANgIAIANBKGogCCkDADcCACADQSBqIAYpAwA3AgAgA0EYaiAFKQMANwIAIANBEGogASkDADcCACACIAIpA9ADNwKgAyACIAQ2ApwDIAIgCzYCmAMgAkGIBWohFEEAIQVBACEbQQAhF0EAIQpBACEqQQAhKCMAQcAKayISJAACQCACQdAAaiIEKAIEIgFFBEAgFEECNgIADAELIAQgAUEBazYCBCAEKAIAIQMgEkEDNgIoIBIgAzYCJAJAIAMoAgQiAUEHTQRAIBJCgcoANwPABSASQcAFahCkCyEEDAELIAMgAUEIayILNgIEIAMgAygCACIBQQhqIg82AgAgEkEYaiABKQAAEKgGIBIoAhwhBCASKAIYDQBBgIAIIAQgBEGAgAhPGyEVAkACQAJAAkACQCAERQRAQQMhBUEEIQkMAQtBgYnEAC0AABogFUEDdCIBQQQQ3AwiCUUNNiASQQA2AsgFIBIgCTYCxAUgEiAVNgLABQNAIAtBBEkNBSADIAtBBGsiCzYCBCADIAUgD2oiAUEEaiIGNgIAIAtBA00NBSABKAAAIQggAyALQQRrIgs2AgQgAyAGQQRqNgIAIAYoAAAhBiASKALABSAbRgRAIBJBwAVqENAGIBIoAsQFIQkLIAUgCWoiASAINgIAIAFBBGogBjYCACASIBtBAWoiGzYCyAUgBUEIaiEFIAQgG0cNAAsgEigCxAUhCSASKALABSIVQYKAgIB4SARAIAkhBAwGCyASKAIoIgVFDQEgEigCJCEDCyASIAVBAWs2AiggAygCBCIBQQdNBEAgEkKBygA3A8AFIBJBwAVqEKQLIQQMAwsgAyABQQhrIgs2AgQgAyADKAIAIgFBCGoiBTYCACASQRBqIAEpAAAQqAYgEigCFCEEIBIoAhANAkHVqgUgBCAEQdWqBU8bIRoCQCAERQRAQQQhBQwBC0GBicQALQAAGiAaQQxsIgZBBBDcDCIBRQ01IBJBADYCiAggEiABNgKECCASIBo2AoAIQQghGgNAAkACQAJAIAtBBE8EQCADIAtBBGsiBjYCBCADIAVBBGo2AgACQAJAAkAgBSgAACIPDgIBAgALIBJBAToAwAUgEiAPrTcDyAUgEkHABWpBkIjAAEH4gsAAEN4IIQQMAwsCQAJAIAYEQCADIAtBBWsiCDYCBCADIAVBBWoiBjYCACAFLQAEIg4OAgcCAQsgEkKBygA3A8AFIBJBwAVqEKQLIQQMBAtBgYnEAC0AABpBDEEEENwMIgRFDT4gBCAONgIEIARBhICAgHg2AgAMAwsgCEEDSwRAQQEhDkF3IQhBCSEMIAYhCgwECyASQoHKADcDwAUgEkHABWoQpAshBAwCCwJAIAZBBE8EQCADIAtBCGsiBjYCBCADIAVBCGoiCjYCACAGQQNNDQEgBSgABCEOQXQhCEEMIQwMBAsgEkKBygA3A8AFIBJBwAVqEKQLIQQMAgsgEkKBygA3A8AFIBJBwAVqEKQLIQQMAQsgEkKBygA3A8AFIBJBwAVqEKQLIQQLIBIoAoAIIgFFDQYgEigChAggAUEMbEEEEL4NDAYLIAMgCCALaiIINgIEIAMgBSAMaiIGNgIAIAooAAAhCgsgEigCgAggF0YEQCASQYAIahDOBiASKAKECCEBCyABIBpqIgUgCjYCACAFQQRrIA42AgAgBUEIayAPNgIAIBIgF0EBaiIXNgKICCAaQQxqIRogCCELIAYhBSAEIBdHDQALIBIoAoQIIQUgEigCgAgiGkGCgICAeEgEQCAFIQQMBAsLAkACQCALQQRPBEAgAyALQQRrIgE2AgQgAyADKAIAIgRBBGo2AgACQAJAIAEEQCAEKAAAIRggAyALQQVrIgg2AgQgAyAEQQVqIgY2AgAgBC0ABCIODgIFAgELIBJCgcoANwPABSASQcAFahCkCyEEDAYLQYGJxAAtAAAaQQxBBBDcDCIERQ06IAQgDjYCBCAEQYSAgIB4NgIADAULIAhBA0sNASASQoHKADcDwAUgEkHABWoQpAshBAwECyASQoHKADcDwAUgEkHABWoQpAshBAwDCyADIAtBCWsiCDYCBCADIARBCWoiBjYCACAEKAAFIQpBASEOCwJAAkACQAJAAkACQAJAAkAgCEEITwRAIAMgCEEIazYCBCADIAZBCGo2AgAgBikAACJaQoCAgIAQWgRAIBJBAToAwAUgEiBaNwPIBSASQcAFaiASQYAIakHQgMAAEN4IIQQMCwsCQAJAIBIoAigiAQRAIBIgAUEBazYCKCASKAIkIQEgEkECNgIwIBIgATYCLCASQcAFaiASQSxqEKsCIBIoAsQFIQQgEigCwAUiJkGBgICAeEYNCyAmQYCAgIB4RgRAQQBB6InAAEH4gsAAEKIIIQQMDAsCQCASKAIwIgEEQCASKALIBSEjIBIgAUEBazYCMCASKAIsIjMoAgQiAUEHTQRAIBJCgcoANwPABSASQcAFahCkCyEBDA0LIDMgAUEIazYCBCAzIDMoAgAiAUEIajYCACASQQhqIAEpAAAQqAYgEigCDCEGIBIoAggEQCAGIQEMDQtBqhUgBiAGQaoVTxshCCAGRQ0DQYGJxAAtAAAaIAhBgANsIgFBCBDcDCIZRQ0GIBJBADYCPCASIBk2AjggEiAINgI0IBJBwAVqQQRyISwDQCASIDM2ArgFIDMoAgQiCEEESQ0IIDMgCEEEayIBNgIEIDMgMygCACILQQRqNgIAIAFBA00EQCASQoHKADcDwAUgEkHABWoQpAshAQwNCyALKAAAIR0gMyAIQQhrIgE2AgQgMyALQQhqNgIAIBJBAzYCvAUgAUEESQ0JIAsoAAQhMCAzIAhBDGsiATYCBCAzIAtBDGo2AgAgAUEDTQRAIBJCgcoANwPABSASQcAFahCkCyEBDA0LIAsoAAghISAzIAhBEGs2AgQgMyALQRBqNgIAIAsoAAwhESASQcAFaiASQbgFahBgIBIoAsAFIQEgEi0A/QciH0EDRg0MIBJBgAhqICxBuQIQ5Q0aIB9BAkYEQEECQZiPwABB+ILAABCiCCEBDA0LAkAgEigCvAUiCwRAAkAgEigCuAUiFigCBCIDQQRJDQAgEi8B/gchICAWKAIAIQ8gFiADQQRrIgg2AgQgFiAPQQRqNgIAIAhBBEkNACAPKAAAIRwgFiADQQhrIgg2AgQgFiAPQQhqNgIAIAhBBEkNACAPKgAEIXogFiADQQxrIgg2AgQgFiAPQQxqNgIAIAhBBEkNACAPKgAIIX0gFiADQRBrIgg2AgQgFiAPQRBqNgIAIAhBBEkNACAPKgAMIXcgFiADQRRrIgg2AgQgFiAPQRRqNgIAIAhBA0sNAgsgEkEAOgDDBSASQSU7AMEFIBJBADYCxAUgEkEBOgDABSASQcAFahCkCyEBDA4LQQNBmI/AAEH4gsAAEKIIIQEMDQsgDyoAECF4IBYgA0EYayIINgIEIBYgD0EYajYCAAJAIAtBAUcEQCAIQQRJDQwgDyoAFCF5IBYgA0EcayIINgIEIBYgD0EcajYCACAIQQNLDQEgEkKBygA3A8AFIBJBwAVqEKQLIQEMDgtBBEGYj8AAQfiCwAAQogghAQwNCyAPKAAYIQwgFiADQSBrNgIEIBYgD0EgajYCACAPKAAcIRYgEkH8AmogEkGACGpBuQIQ5Q0aIDMoAgQiDUEDTQRAIBJCgcoANwPABSASQcAFahCkCyEBDA0LIDMgDUEEayIINgIEIDMgMygCACIlQQRqNgIAIAhBA00EQCASQoHKADcDwAUgEkHABWoQpAshAQwNCyAlKAAAIQ8gMyANQQhrIgg2AgQgMyAlQQhqNgIAIAhBA00EQCASQoHKADcDwAUgEkHABWoQpAshAQwNCyAlKAAEIQMgMyANQQxrIgg2AgQgMyAlQQxqNgIAIAhBA00EQCASQoHKADcDwAUgEkHABWoQpAshAQwNCyAlKAAIIQsgMyANQRBrNgIEIDMgJUEQajYCACAlKAAMIQggEkFAayASQfwCakG5AhDlDRogEigCNCAqRgRAIBJBNGoQ2QYgEigCOCEZCyAZIChqIg0gDzYCACANQUBrIAE2AgAgDUE8aiAWNgIAIA1BOGogDDYCACANQTRqIHk4AgAgDUEwaiB4OAIAIA1BLGogdzgCACANQShqIH04AgAgDUEkaiB6OAIAIA1BIGogHDYCACANQRxqIBE2AgAgDUEYaiAhNgIAIA1BFGogMDYCACANQRBqIB02AgAgDUEMaiAINgIAIA1BCGogCzYCACANQQRqIAM2AgAgDUHEAGogEkFAa0G5AhDlDRogDUH+AmogIDsBACANQf0CaiAfOgAAIBIgKkEBaiIqNgI8IChBgANqISggBiAqRw0ACyASKAI4IQEgEigCNCIIQYKAgIB4SA0MICZBgICAgHhrDgIBDQQLQQFB6InAAEH4gsAAEKIIIQEMCwtBAEHAjsAAQfiCwAAQogghBAwLC0ECQfiPwABB+ILAABCiCCEEDAoLQQghAQsgEkHABWogEkEkahCTAyASKALEBSEDIBIoAsAFIgZBgYCAgHhHBEAgBkGAgICAeEcNBkEDQfiPwABB+ILAABCiCCEDCyAmBEAgBCAmQQR0QQQQvg0LIAgEQCABIAhBgANsQQgQvg0LIAMhBAwICyASQoHKADcDwAUgEkHABWoQpAshBAwJC0EIIAEQvgwACyASQoHKADcDwAUgEkHABWoQpAshAQwDCyASQoHKADcDwAUgEkHABWoQpAshAQwCCyASQoHKADcDwAUgEkHABWoQpAshAQwBCyAUIBIoAsgFNgJIIBQgAzYCRCAUIAY2AkAgFCAqNgI8IBQgATYCOCAUIAg2AjQgFCAjNgIwIBQgBDYCLCAUICY2AiggFCAbNgIkIBQgCTYCICAUIBU2AhwgFCBaPgIYIBQgGDYCFCAUIBc2AhAgFCAFNgIMIBQgGjYCCCAUIAo2AgQgFCAONgIADAgLIBIoAjQiBkUNACASKAI4IAZBgANsQQgQvg0LICYEQCAEICZBBHRBBBC+DQsgASEECyAaRQ0CIAUgGkEMbEEEEL4NDAILQQFB+I/AAEH4gsAAEKIIIQQMAQsgGkUNACAFIBpBDGxBBBC+DQsgFUUNASAJIBVBA3RBBBC+DQwBCyASQoHKADcDgAggEkGACGoQpAshBCASKALABSIBRQ0AIAkgAUEDdEEEEL4NCyAUQQM2AgAgFCAENgIECyASQcAKaiQAIAIoAowFIQQCQAJAIAIoAogFIgFBA0cEQCACQYAEaiACQZAFakHEABDlDRogAUECRw0BQQdBiLzAAEH4gsAAEKIIIQQLIDdBAjYCACA3IAQ2AgQMAQsgAkG4BmogAkGABGpBxAAQ5Q0aIAIgBDYCtAYgAiABNgKwBiACQYgFaiEkQQAhFkEAITJBACEIQQAhBUEAIQNBACEXQQAhKkEAIS1BACEMQQAhOEEAIRVBACEJQgAhW0EAITRBACEZQQAhKEEAITBBACEiQQAhJ0EAISlCACFeQgAhX0IAIWFBACE1QQAhK0IAIWNBACEOQQAhOSMAQeARayIHJAACQCACQdAAaiIEKAIEIgFFBEAgJEECNgIADAELIAQgAUEBazYCBCAEKAIAIR4gB0EDNgI4IAcgHjYCNAJAIB4oAgQiAUEHTQRAIAdCgcoANwPgDCAHQeAMahCkCyEEDAELIB4gAUEIazYCBCAeIB4oAgAiAUEIajYCACAHQShqIAEpAAAQqAYgBygCLCEBIAcoAigEQCABIQQMAQtBhxwgASABQYccTxshGgJAAkACQAJAAkACQAJAIAFFBEBBBCEGDAELQYGJxAAtAAAaIBpBpAJsIgZBBBDcDCIERQ0BIAdBADYCRCAHIAQ2AkAgByAaNgI8IAdBqA9qIUIgB0HgDGoiBEEIaiE8IAdB9AlqIUMgBEEEciEzA0ACQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAeKAIEIg9BBE8EQCAeIA9BBGsiGjYCBCAeIB4oAgAiFkEEajYCACAWKAAAIgQOAgIDAQsgB0KBygA3A+AMIAdB4AxqEKQLIQQMJgsgB0EBOgDgDCAHIAStNwPoDCAHQeAMakGQiMAAQfiCwAAQ3gghBAwlCwJAAkAgGgRAIB4gD0EFayIKNgIEIB4gFkEFajYCAEGAgICAeCELQQAhBCAWLQAEIgYOAh8CAQsgB0KBygA3A+AMIAdB4AxqEKQLIQQMJgtBgYnEAC0AABpBDEEEENwMIgRFDVkgBCAGNgIEIARBhICAgHg2AgAMJQsgCkEDSw0BIAdCgcoANwPgDCAHQeAMahCkCyEEDCQLIBpBBEkNDSAeIA9BCGsiBDYCBCAeIBZBCGo2AgAgFigABCE5IAdBETYCjAYgByAeNgKIBiAEQQdNBEAgB0KBygA3A+AMIAdB4AxqEKQLIQQMJAsgHiAPQRBrNgIEIB4gFkEQajYCACAHQSBqIBYpAAgQqAYgBygCJCEJIAcoAiAEQCAJIQQMJAtBwhAgCSAJQcIQTxshCwJAIAlFBEBBACEVQQghBAwBC0GBicQALQAAGiALQfADbCIEQQgQ3AwiCEUNWUEAIQwgB0EANgL8BiAHIAg2AvgGIAcgCzYC9AZBACEVA0AgHigCBCIFQQhJDQMgHiAFQQhrIgQ2AgQgHiAeKAIAIgZBCGo2AgAgBikAACJbQoCAgIAQWgRAIAdBAToA4AwgByBbNwPoDCAHQeAMaiAHQdgMakHQgMAAEN4IIQQMJQsgBEEISQ0EIB4gBUEQayIENgIEIB4gBkEQajYCACAGKQAIImVCgICAgBBaBEAgB0EBOgDgDCAHIGU3A+gMIAdB4AxqIAdB2AxqQdCAwAAQ3gghBAwlCyAEQQhJDQUgHiAFQRhrIgQ2AgQgHiAGQRhqNgIAIAYpABAiZkKAgICAEFoEQCAHQQE6AOAMIAcgZjcD6AwgB0HgDGogB0HYDGpB0IDAABDeCCEEDCULIARBBEkNBiAeIAVBHGsiBDYCBCAeIAZBHGo2AgAgBEEDTQRAIAdCgcoANwPgDCAHQeAMahCkCyEEDCULIAYoABghGCAeIAVBIGs2AgQgHiAGQSBqNgIAIAYoABwhIyAHQQQ2AtwMIAcgHjYC2AwgB0HgDGogB0HYDGoQYCAHKALgDCEEIActAJ0PIg1BA0YNJCAHQaAPaiAzQbkCEOUNGiANQQJGBEBBAEHIj8AAQfiCwAAQogghBAwlCwJAIAcoAtwMIgYEQCAHKALYDCIKKAIEIgtFDQkgBy8Bng8hLCAKIAtBAWs2AgQgCiAKKAIAIgNBAWo2AgAgAy0AACIfQQJJDQFBgYnEAC0AABpBDEEEENwMIgRFDVsgBCAfOgAEIARBgoCAgHg2AgAMJgtBAUHIj8AAQfiCwAAQogghBAwlCwJAIAZBAUcEQAJAIAtBBUkNACAKIAtBBWsiBTYCBCAKIANBBWo2AgAgBUEESQ0AIAMoAAEhHSAKIAtBCWsiBTYCBCAKIANBCWo2AgAgBUEESQ0AIAMqAAUhfiAKIAtBDWsiBTYCBCAKIANBDWo2AgAgBUEESQ0AIAMqAAkhfyAKIAtBEWsiBTYCBCAKIANBEWo2AgAgBUEESQ0AIAMqAA0hgAEgCiALQRVrIgU2AgQgCiADQRVqNgIAIAVBA0sNAgsgB0EAOgDjDCAHQSU7AOEMIAdBADYC5AwgB0EBOgDgDCAHQeAMahCkCyEEDCYLQQJByI/AAEH4gsAAEKIIIQQMJQsgAyoAESF6IAogC0EZayIFNgIEIAogA0EZajYCAAJAIAZBAkcEQAJAIAVBBEkNACADKgAVIX0gCiALQR1rIgU2AgQgCiADQR1qNgIAIAVBBEkNACADKAAZISogCiALQSFrIgU2AgQgCiADQSFqNgIAIAVBBEkNACADKgAdIXcgCiALQSVrIgU2AgQgCiADQSVqNgIAIAVBA0sNAgsgB0EAOgDjDCAHQSU7AOEMIAdBADYC5AwgB0EBOgDgDCAHQeAMahCkCyEEDCYLQQNByI/AAEH4gsAAEKIIIQQMJQsgAyoAISF4IAogC0EpazYCBCAKIANBKWo2AgAgAyoAJSF5IAdB7AlqIAdBoA9qQbkCEOUNGiAHQeAMaiAeEPoDIAcoAuQMIQYgBygC4AwNCCAHQagMaiIFQRBqIhsgPEEQaiIKKQIANwMAIAVBCGoiMCA8QQhqIgMpAgA3AwAgByA8KQIANwOoDCAHQeAMaiAeEPoDIAcoAuQMIQUgBygC4AwEQCAFIQQMJQsgB0HADGoiC0EQaiIhIAopAgA3AwAgC0EIaiIRIAMpAgA3AwAgByA8KQIANwPADAJAAkAgHigCBCIDQQRJDQAgHigCACEKIB4gA0EEayILNgIEIB4gCkEEajYCACALQQRJDQAgCigAACEgIB4gA0EIayILNgIEIB4gCkEIajYCACALQQNLDQELIAdBADoA4wwgB0ElOwDhDCAHQQA2AuQMIAdBAToA4AwgB0HgDGoQpAshBAwlCyAKNQAEIWQgHiADQQxrIgs2AgQgHiAKQQxqNgIAAkACQCALQQRJDQAgCjUACCFiIB4gA0EQayILNgIEIB4gCkEQajYCACALQQRJDQAgCigADCEXIB4gA0EUayILNgIEIB4gCkEUajYCACALQQNLDQELIAdBADoA4wwgB0ElOwDhDCAHQQA2AuQMIAdBAToA4AwgB0HgDGoQpAshBAwlCyAKNQAQIWAgHiADQRhrIgs2AgQgHiAKQRhqNgIAIAtBBEkNCSAKNQAUIV0gHiADQRxrIgs2AgQgHiAKQRxqNgIAIAtBBEkNCSAKKAAYIRogHiADQSBrIgs2AgQgHiAKQSBqNgIAIAtBBEkNCSAKNQAcIVwgHiADQSRrIgs2AgQgHiAKQSRqNgIAAkACQCALQQRJDQAgCjUAICFaIB4gA0EoayILNgIEIB4gCkEoajYCACALQQRJDQAgCigAJCEZIB4gA0EsayILNgIEIB4gCkEsajYCACALQQRPDQELIAdBADoA4wwgB0ElOwDhDCAHQQA2AuQMIAdBAToA4AwgB0HgDGoQpAshBAwlCyBbpyEcIGWnIRYgZqchDiBiQiCGIGSEIWIgXUIghiBghCFgIFpCIIYgXIQhXSAKNQAoIVwgHiADQTBrNgIEIB4gCkEwajYCACAKNQAsIVogB0GwB2ogB0HsCWpBuQIQ5Q0aIAdBmAdqIgtBEGoiDyAbKQMANwMAIAtBCGoiCiAwKQMANwMAIAdBgAdqIgtBCGoiAyARKQMANwMAIAtBEGoiCyAhKQMANwMAIAcgBykDqAw3A5gHIAcgBykDwAw3A4AHIFwgWkIghoQhWiAHKAL0BiAVRgRAIAdB9AZqENcGIAcoAvgGIQgLIAggDGoiESAYNgIAIBFByABqIAQ2AgAgEUHEAGogfTgCACARQUBrIHo4AgAgEUE8aiCAATgCACARQThqIH84AgAgEUE0aiB+OAIAIBFBMGogHTYCACARQSxqIHk4AgAgEUEoaiB4OAIAIBFBJGogdzgCACARQSBqICo2AgAgEUEYaiBaNwIAIBFBFGogGTYCACARQQxqIF03AgAgEUEIaiAaNgIAIBFBBGogIzYCACARQcwAaiAHQbAHakG5AhDlDRogEUGcA2ogBjYCACARQZgDaiAONgIAIBFBlANqIBY2AgAgEUGQA2ogHDYCACARQYgDaiAfOgAAIBFBhgNqICw7AQAgEUGFA2ogDToAACARQaADaiAHKQOYBzcDACARQagDaiAKKQMANwMAIBFBsANqIA8pAwA3AwAgEUG4A2ogBTYCACARQbwDaiAHKQOABzcCACARQcQDaiADKQMANwIAIBFBzANqIAspAwA3AgAgEUHkA2ogYDcCACARQeADaiAXNgIAIBFB2ANqIGI3AwAgEUHUA2ogIDYCACAHIBVBAWoiFTYC/AYgDEHwA2ohDCAJIBVHDQALIAcoAvgGIQQgBygC9AYiC0GCgICAeEgNJAsgB0HgDGogB0GIBmoQ1QIgBygC5AwiMiEFIAcoAuAMIgxBgYCAgHhGDRkgDEGAgICAeEYEQEEBQeiNwABB+ILAABCiCCEFDBoLIAcpAugMIV4gB0HgDGogB0GIBmoQ1QIgBygC5AwiKiEFIAcoAuAMIhlBgYCAgHhGDRggGUGAgICAeEYEQEECQeiNwABB+ILAABCiCCEFDBkLIAcpAugMIWEgB0HgDGogB0GIBmoQ1QIgBygC5AwiLSEFIAcoAuAMIjBBgYCAgHhGDRcgMEGAgICAeEYEQEEDQeiNwABB+ILAABCiCCEFDBgLAkAgBygCjAYiBQRAIAcpAugMIWMgByAFQQFrNgKMBiAHKAKIBiIGKAIEIgVBB00EQCAHQoHKADcD4AwgB0HgDGoQpAshBQwZCyAGIAVBCGs2AgQgBiAGKAIAIgVBCGo2AgAgB0EYaiAFKQAAEKgGIAcoAhwhBSAHKAIYDRggByAFNgLwCSAHIAY2AuwJQYCABCAFIAVBgIAETxshBgJAAkACQCAFRQRAQQQhAwwBC0GBicQALQAAGiAGQQR0IgVBBBDcDCIDRQ0BCyAHQQA2AqgPIAcgAzYCpA8gByAGNgKgDyAHQeAMaiAHQewJahDUAgJAIAcoAuAMIhZBgYCAgHhHBEBBACEaQQghDgNAIBZBgICAgHhGDQQgBykC6AwhWiAHKALkDCEFIAcoAqAPIBpGBEAgB0GgD2oQzAYgBygCpA8hAwsgAyAOaiIGIFo3AgAgBkEEayAFNgIAIAZBCGsgFjYCACAHIBpBAWoiGjYCqA8gDkEQaiEOIAdB4AxqIAdB7AlqENQCIAcoAuAMIhZBgYCAgHhHDQALIAcoAuQMIQUgBygCpA8hAyAaRQ0BIAMhAQNAIAEoAgAiBgRAIAFBBGooAgAgBkECdEEEEL4NCyABQRBqIQEgGkEBayIaDQALDAELIAcoAuQMIQULIAcoAqAPIgFFDRogAyABQQR0QQQQvg0MGgtBBCAFEL4MAAsgBygCpA8hCSAHKAKgDyIpQYKAgIB4Tg0BIAkhBQwYC0EEQeiNwABB+ILAABCiCCEFDBcLIAdB4AxqIAdBiAZqEI4CIAcoAuQMIgUgBygC4AwiIkGBgICAeEYNFRogB0GYBmoiICA8QQhqIhcoAgA2AgAgByA8KQIANwOQBiAiQYCAgIB4RgRAQQVB6I3AAEH4gsAAEKIIDBYLIAdB4AxqIAdBiAZqEKUBIAcoAuQMIg8hCCAHKALgDCIWQYGAgIB4Rg0UIAdBoAZqIgZBGGoiAyA8QRhqIgopAgA3AwAgBkEQaiIIIDxBEGoiDikCADcDACAGQQhqIgYgFykCADcDACAHIDwpAgA3A6AGIBZBgICAgHhGBEBBBkHojcAAQfiCwAAQogghCAwVCyBDIAcpA6AGNwIAIENBGGogAykDADcCACBDQRBqIAgpAwA3AgAgQ0EIaiAGKQMANwIAIAcgDzYC8AkgByAWNgLsCQJAIAcoAowGIgYEQCAHIAZBAWs2AowGIAcoAogGIQggB0EBNgKkDyAHIAg2AqAPIAgoAgQiBkEISQ0KIAggBkEIazYCBCAIIAgoAgAiBkEIajYCACAGKQAAImRCgICAgBBaBEAgB0EBOgDgDCAHIGQ3A+gMIAdB4AxqIAdB2AxqQdCAwAAQ3gghCAwWCyAHQeAMaiAHQaAPahCyAyAHKALkDCIDIQggBygC4AwiKEGBgICAeEYNFSAoQYCAgIB4Rw0BQQFB7I7AAEH4gsAAEKIIIQgMFQtBB0HojcAAQfiCwAAQogghCAwUCyAHNQLoDCFdIAdB4AxqIAdBiAZqEI4CIAcoAuQMIjQhCCAHKALgDCInQYGAgIB4Rg0SIAdByAZqIhwgFygCADYCACAHIDwpAgA3A8AGICdBgICAgHhGBEBBCEHojcAAQfiCwAAQogghCAwTCyAHQeAMaiAHQYgGahClASAHKALkDCEIIAcoAuAMIhZBgYCAgHhGDREgB0HQBmoiBkEYaiIPIAopAgA3AwAgBkEQaiIKIA4pAgA3AwAgBkEIaiIGIBcpAgA3AwAgByA8KQIANwPQBiAWQYCAgIB4RgRAQQlB6I3AAEH4gsAAEKIIIQgMEgsgQiAHKQPQBjcCACBCQRhqIA8pAwA3AgAgQkEQaiAKKQMANwIAIEJBCGogBikDADcCACAHIAg2AqQPIAcgFjYCoA8CQCAHKAKMBiIKBEAgBygCiAYiGygCBCIIQQhJDQsgGyAIQQhrIgY2AgQgGyAbKAIAIg9BCGo2AgAgDykAACJiQoCAgIAQVA0BIAdBAToA4AwgByBiNwPoDCAHQeAMaiAHQdgMakHQgMAAEN4IIQgMEgtBCkHojcAAQfiCwAAQogghCAwRCwJAIApBAUcEQCAGRQ0MIBsgCEEJayIGNgIEIBsgD0EJajYCACAPLQAIIjVBAkkNAUGBicQALQAAGkEMQQQQ3AwiCEUNWSAIIDU6AAQgCEGCgICAeDYCAAwSC0ELQeiNwABB+ILAABCiCCEIDBELAkAgCkECRwRAIAZBCEkNDSAbIAhBEWsiBjYCBCAbIA9BEWo2AgAgDykACSJgQoCAgIAQVA0BIAdBAToA4AwgByBgNwPoDCAHQeAMaiAHQdgMakHQgMAAEN4IIQgMEgtBDEHojcAAQfiCwAAQogghCAwRCwJAIApBA0cEQCAGRQ0OIBsgCEESayIGNgIEIBsgD0ESajYCACAPLQARIitBAkkNAUGBicQALQAAGkEMQQQQ3AwiCEUNWSAIICs6AAQgCEGCgICAeDYCAAwSC0ENQeiNwABB+ILAABCiCCEIDBELIApBBEcEQCAHIApBBWs2AowGIAdBATYCrAwgByAbNgKoDCAGQQdNBEAgB0KBygA3A7AHIAdBsAdqEKQLIQgMEgsgGyAIQRprIjg2AgQgGyAPQRpqIhY2AgAgB0EQaiAPKQASEKgGIAcoAhQhCCAHKAIQDRFBqtUCIAggCEGq1QJPGyEXIAhFBEBBBCEIQQAhDgwRC0GBicQALQAAGiAXQRhsIgZBBBDcDCIjRQ1WQQAhBiAHQQA2ArgHIAcgIzYCtAcgByAXNgKwB0EAIQ4DQCA4QQRJDRAgGyA4QQRrIhE2AgQgGyAGIBZqIgpBBGoiFzYCACARQQRJDRAgCigAACEPIBsgEUEEayIKNgIEIBsgF0EEaiIRNgIAIApBBEkNECAXNQAAIVwgGyAKQQRrIhc2AgQgGyARQQRqIgo2AgAgF0EESQ0QIBE1AAAhWiAbIBdBBGsiFzYCBCAbIApBBGoiITYCACAXQQRJDRAgCigAACEKIBsgF0EEayIRNgIEIBsgIUEEaiIXNgIAIBFBBEkNECBaQiCGIFyEIVwgITUAACFaIBsgEUEEayI4NgIEIBsgF0EEajYCACBaIBc1AABCIIaEIVogBygCsAcgDkYEQCAHQbAHahDTBiAHKAK0ByEjCyAGICNqIhcgDzYCACAXQRBqIFo3AgAgF0EMaiAKNgIAIBdBBGogXDcCACAHIA5BAWoiDjYCuAcgBkEYaiEGIAggDkcNAAsgBygCtAchCCAHKAKwByIXQYCAgIB4aw4CEREQC0EOQeiNwABB+ILAABCiCCEIDBALIB4gD0EJazYCBCAeIBZBCWo2AgAgFigABSEVQQEhBAwaCyAHQoHKADcD4AwgB0HgDGoQpAshBAwgCyAHQoHKADcD4AwgB0HgDGoQpAshBAwfCyAHQoHKADcD4AwgB0HgDGoQpAshBAweCyAHQoHKADcD4AwgB0HgDGoQpAshBAwdCyAHQoHKADcD4AwgB0HgDGoQpAshBAwcCyAGIQQMGwsgB0EAOgDjDCAHQSU7AOEMIAdBADYC5AwgB0EBOgDgDCAHQeAMahCkCyEEDBoLIAdCgcoANwPgDCAHQeAMahCkCyEIDAoLIAdCgcoANwPgDCAHQeAMahCkCyEIDAYLIAdCgcoANwPgDCAHQeAMahCkCyEIDAULIAdCgcoANwPgDCAHQeAMahCkCyEIDAQLIAdCgcoANwPgDCAHQeAMahCkCyEIDAMLIAdCgcoANwPgDCAHQeAMahCkCyEEDBULIAdBADoAwwwgB0ElOwDBDCAHQQA2AsQMIAdBAToAwAwgB0HADGoQpAshCCAHKAKwByIBRQ0BIAcoArQHIAFBGGxBBBC+DQwBCyAHQbAHaiAHQagMahDVAiAHKAK0ByEGAkAgBygCsAciCkGBgICAeEcEQCAKQYCAgIB4Rw0BQQFB3JDAAEH4gsAAEKIIIQYLIBcEQCAIIBdBGGxBBBC+DQsgBiEIDAELIAcgBykCuAc3AvQMIAcgBjYC8AwgByAKNgLsDCAHIA42AugMIAcgCDYC5AwgByAXNgLgDCAHQbAHaiAHQYgGahDQASAHKAK0ByEIAkAgBygCsAciBkGBgICAeEYNACAGQYCAgIB4RgRAQQ9B6I3AAEH4gsAAEKIIIQgMAQsgByAHKAK4BzYCsAwgByAINgKsDCAHIAY2AqgMIAdBsAdqIAdBiAZqENABIAcoArQHIQgCQCAHKAKwByIGQYGAgIB4Rg0AIAZBgICAgHhGBEBBEEHojcAAQfiCwAAQogghCAwBCyAHIAcoArgHNgLIDCAHIAg2AsQMIAcgBjYCwAwgB0GwB2ogB0GIBmoQ1AIgBygCtAchCCAHKAKwByIXQYGAgIB4RwRAIBdBgICAgHhHDQ1BEUHojcAAQfiCwAAQogghCAsgB0HADGoQmgkLIAdBqAxqEJoJCyAHQeAMaiIGKAIAIgEEQCAGKAIEIAFBGGxBBBC+DQsgBigCDCIBBEAgBigCECABQQJ0QQQQvg0LCyAHQaAPahCCCwsgJwRAIDQgJ0ECdEEEEL4NCwsgKARAIAMgKEECdEEEEL4NCwsgB0HsCWoQggsLICIEQCAFICJBAnRBBBC+DQsgCAshBSAaBEAgCSEBA0AgASgCACIGBEAgAUEEaigCACAGQQJ0QQQQvg0LIAFBEGohASAaQQFrIhoNAAsLIClFDQAgCSApQQR0QQQQvg0LIDAEQCAtIDBBAnRBBBC+DQsLIBkEQCAqIBlBAnRBBBC+DQsLIAwEQCAyIAxBAnRBBBC+DQsLIAsEQCAEIAtB8ANsQQgQvg0LIAUhBAwJCyAHKQK4ByFfIAdBgAZqIh8gICgCADYCACAHQdAFaiIKQQhqIhggQykCADcDACAKQRBqIiMgB0HsCWoiBkEQaikCADcDACAKQRhqIiwgBkEYaikCADcDACAKQSBqIh0gBkEgaikCADcDACAHQcgFaiIbIBwoAgA2AgAgByAHKQOQBjcD+AUgByAHKQLsCTcD0AUgByAHKQPABjcDwAUgB0GYBWoiCkEgaiIhIAdBoA9qIgZBIGopAgA3AwAgCkEYaiIRIAZBGGopAgA3AwAgCkEQaiIgIAZBEGopAgA3AwAgCkEIaiIcIEIpAgA3AwAgB0H4BGoiCkEIaiIWIDwpAgA3AwAgCkEQaiIPIAdB4AxqIgZBEGopAgA3AwAgCkEYaiIKIAZBGGooAgA2AgAgByAHKQKgDzcDmAUgByAHKQLgDDcD+AQgB0HwBGoiBiAHQbAMaigCADYCACAHQeAEaiIOIAdByAxqKAIANgIAIAcgBykCqAw3A+gEIAcgBykCwAw3A9gEIAtBgICAgHhGDQggB0HQBGoiDSAfKAIANgIAIAdBoARqIiVBCGoiHyAYKQMANwMAICVBEGoiGCAjKQMANwMAICVBGGoiIyAsKQMANwMAICVBIGoiLCAdKQMANwMAIAdBmARqIh0gGygCADYCACAHIAcpA/gFNwPIBCAHIAcpA9AFNwOgBCAHIAcpA8AFNwOQBCAHQegDaiIlQSBqIhsgISkDADcDACAlQRhqIiEgESkDADcDACAlQRBqIhEgICkDADcDACAlQQhqIiAgHCkDADcDACAHQcgDaiIlQQhqIhwgFikDADcDACAlQRBqIhYgDykDADcDACAlQRhqIg8gCigCADYCACAHIAcpA5gFNwPoAyAHIAcpA/gENwPIAyAHQcADaiIKIAYoAgA2AgAgB0GwA2oiBiAOKAIANgIAIAcgBykD6AQ3A7gDIAcgBykD2AQ3A6gDIAtBgYCAgHhGDQggZEIghiBdhCFbIGKnIQ4gYKchOCAHQaADaiANKAIANgIAIAdB8AJqIg1BCGogHykDADcDACANQRBqIBgpAwA3AwAgDUEYaiAjKQMANwMAIA1BIGogLCkDADcDACAHQegCaiAdKAIANgIAIAcgBykDyAQ3A5gDIAcgBykDoAQ3A/ACIAcgBykDkAQ3A+ACIAdBuAJqIh1BIGogGykDADcDACAdQRhqICEpAwA3AwAgHUEQaiARKQMANwMAIB1BCGogICkDADcDACAHQZgCaiIgQRhqIA8oAgA2AgAgIEEQaiAWKQMANwMAICBBCGogHCkDADcDACAHIAcpA+gDNwO4AiAHIAcpA8gDNwOYAiAHQZACaiAKKAIANgIAIAcgBykDuAM3A4gCIAdBgAJqIAYoAgA2AgAgByAHKQOoAzcD+AELIAdB8AFqIhQgB0GgA2ooAgA2AgAgB0HAAWoiCkEIaiImIAdB8AJqIgZBCGopAwA3AwAgCkEQaiIlIAZBEGopAwA3AwAgCkEYaiINIAZBGGopAwA3AwAgCkEgaiIfIAZBIGopAwA3AwAgB0G4AWoiGCAHQegCaigCADYCACAHIAcpA5gDNwPoASAHIAcpA/ACNwPAASAHIAcpA+ACNwOwASAHQYgBaiIKQSBqIiMgB0G4AmoiBkEgaikDADcDACAKQRhqIiwgBkEYaikDADcDACAKQRBqIh0gBkEQaikDADcDACAKQQhqIhsgBkEIaikDADcDACAHQegAaiIKQQhqIiEgB0GYAmoiBkEIaikDADcDACAKQRBqIhEgBkEQaikDADcDACAKQRhqIiAgBkEYaigCADYCACAHIAcpA7gCNwOIASAHIAcpA5gCNwNoIAdB4ABqIhwgB0GQAmooAgA2AgAgB0HQAGoiFiAHQYACaigCADYCACAHIAcpA4gCNwNYIAcgBykD+AE3A0ggC0GCgICAeEYNByAHKAJEIhIgBygCPEYEQCMAQSBrIj4kACAHQTxqIkgoAgAiEEEBaiIKRQ0+QQQhRkEEIBBBAXQiBiAKIAYgCksbIgYgBkEETRsiD0GkAmwhCiAGQZ3wwANJQQJ0IQYCQCAQRQRAQQAhRgwBCyA+IBBBpAJsNgIcID4gSCgCBDYCFAsgPiBGNgIYID5BCGogBiAKID5BFGoQjgcgPigCCARAID4oAgwgPigCEBC+DAALID4oAgwhBiBIIA82AgAgSCAGNgIEID5BIGokAAsgBygCQCIGIBJBpAJsaiIKIAU2AkwgCiAiNgJIIAogGjYCRCAKIAk2AkAgCiApNgI8IAogYzcCNCAKIC02AjAgCiAwNgIsIAogYTcCJCAKICo2AiAgCiAZNgIcIAogXjcCFCAKIDI2AhAgCiAMNgIMIAogFTYCCCAKIAQ2AgQgCiALNgIAIAogBykD6AE3AlAgCkHYAGogFCgCADYCACAKICg2AoQBIAogAzYCiAEgCiBbNwKMASAKICc2ApQBIAogNDYCmAEgCkH8AGogHykDADcCACAKQfQAaiANKQMANwIAIApB7ABqICUpAwA3AgAgCkHkAGogJikDADcCACAKIAcpA8ABNwJcIAogBykDsAE3ApwBIApBpAFqIBgoAgA2AgAgCkHIAWogIykDADcCACAKQcABaiAsKQMANwIAIApBuAFqIB0pAwA3AgAgCkGwAWogGykDADcCACAKIAcpA4gBNwKoASAKQegBaiAgKAIANgIAIApB4AFqIBEpAwA3AgAgCkHYAWogISkDADcCACAKIAcpA2g3AtABIApB9AFqIBwoAgA2AgAgCiAHKQNYNwLsASAKQYACaiAWKAIANgIAIAogBykDSDcC+AEgCiA5NgKgAiAKICs6AJ0CIAogNToAnAIgCiA4NgKYAiAKIA42ApQCIAogXzcCjAIgCiAINgKIAiAKIBc2AoQCIAcgEkEBaiIWNgJEIAFBAWsiAQ0ACyAGIQQgBygCPCIaQYKAgIB4SA0HCwJAAkAgHigCBCIEQQRPBEAgHiAEQQRrIgE2AgQgHiAeKAIAIglBBGo2AgACQAJAIAEEQCAJNQAAIVogHiAEQQVrIg42AgQgHiAJQQVqIgU2AgAgCS0ABCIIDgIFAgELIAdCgcoANwPgDCAHQeAMahCkCyEEDAgLQYGJxAAtAAAaQQxBBBDcDCIERQ09IAQgCDYCBCAEQYSAgIB4NgIADAcLIA5BA0sNASAHQoHKADcD4AwgB0HgDGoQpAshBAwGCyAHQoHKADcD4AwgB0HgDGoQpAshBAwFCyAeIARBCWsiDjYCBCAeIAlBCWoiBTYCACAJKAAFIQNBASEICwJAAkACQAJAIA5BCE8EQCAeIA5BCGs2AgQgHiAFQQhqNgIAIAUpAAAiXUKAgICAEFoEQCAHQQE6AOAMIAcgXTcD6AwgB0HgDGogB0HYDGpB0IDAABDeCCEEDAkLAkACQCAHKAI4IgEEQCAHIAFBAWsiATYCOCAHKAI0IhwoAgQiBEEHTQRAIAdCgcoANwPgDCAHQeAMahCkCyEEDAsLIBwgBEEIayIFNgIEIBwgHCgCACIEQQhqIgs2AgAgB0EIaiAEKQAAEKgGIAcoAgwhBCAHKAIIDQpBzJkDIAQgBEHMmQNPGyEVIARFBEBBACEOQQQhBQwDC0EAIQ5BgYnEAC0AABogFUEUbCIBQQQQ3AwiMEUNQCAHQQA2AqgPIAcgMDYCpA8gByAVNgKgD0EQIRUDQAJAIAVBBE8EQCAcIAVBBGsiATYCBCAcIAtBBGoiBTYCAAJAIAFBBE8EQCALKAAAIQ8gHCABQQRrIgE2AgQgHCAFQQRqIgk2AgAgAUEESQ0JIAUoAAAhCiAcIAFBBGsiBTYCBCAcIAlBBGoiATYCACAFQQNLDQEgB0KBygA3A+AMIAdB4AxqEKQLIQQMDgsgB0KBygA3A+AMIAdB4AxqEKQLIQQMDQsgCSgAACEJIBwgBUEEayIFNgIEIBwgAUEEaiIMNgIAIAVBCEkNCCABKAAAIQEgHCAFQQhrIgU2AgQgHCAMQQhqIgs2AgAgDCkAACJcQoCAgIAQVA0BIAdBAToA4AwgByBcNwPoDCAHQeAMaiAHQdgMakHQgMAAEN4IIQQMDAsgB0KBygA3A+AMIAdB4AxqEKQLIQQMCwsgBygCoA8gDkYEQCAHQaAPahDNBiAHKAKkDyEwCyAVIDBqIgwgXD4CACAMQQRrIAo2AgAgDEEIayABNgIAIAxBDGsgCTYCACAMQRBrIA82AgAgByAOQQFqIg42AqgPIBVBFGohFSAEIA5HDQALIAcoAqQPIQUgBygCoA8iFUGCgICAeE4NASAFIQQMCgtBAUGokMAAQfiCwAAQogghBAwJCyAHKAI4IQELAkACQAJAIAEEQCAHIAFBAWs2AjggBygCNCEBIAdBAjYC8AkgByABNgLsCSAHQeAMaiAHQewJahCrAiAHKALkDCEEIAcoAuAMIhFBgYCAgHhGDQMgEUGAgICAeEYEQEEAQeiJwABB+ILAABCiCCEEDAQLAkACQCAHKALwCQRAIAcoAuwJIiEoAgQiAUEHTQRAIAdCgcoANwPgDCAHQeAMahCkCyELDAILIAcoAugMIRwgISABQQhrIhk2AgQgISAhKAIAIhdBCGo2AgAgByAXKQAAEKgGIAcoAgQhCyAHKAIADQFBgIAEIAsgC0GAgARPGyEMIAtFDQRBACEqQYGJxAAtAAAaIAxBBHQiAUEEENwMIihFDQogB0EANgLoDCAHICg2AuQMIAcgDDYC4AxBCCEMA0ACQAJ/IBlBA00EQCAHQoHKADcDoA8gB0GgD2oQpAsMAQsgISAZQQRrIgk2AgQgISAMIBdqIgFBBGoiCjYCACAJQQNNBEAgB0KBygA3A6APIAdBoA9qEKQLDAELIAEoAAAhDyAhIAlBBGsiATYCBCAhIApBBGoiCTYCACABQQNNBEAgB0KBygA3A6APIAdBoA9qEKQLDAELIAooAAAhCiAhIAFBBGsiGTYCBCAhIAlBBGoiATYCACAZQQNLDQEgB0KBygA3A6APIAdBoA9qEKQLCyELIAcoAuAMIgFFDQMgKCABQQR0QQQQvg0MAwsgCSgAACEJICEgGUEEayIZNgIEICEgAUEEajYCACABKAAAIQEgBygC4AwgKkYEQCAHQeAMahDMBiAHKALkDCEoCyAMIChqIiAgCTYCACAgQQRqIAE2AgAgIEEEayAKNgIAICBBCGsgDzYCACAHICpBAWoiKjYC6AwgDEEQaiEMIAsgKkcNAAsgBygC5AwhCyAHKALgDCIMQYKAgIB4SA0BIBFBgICAgHhrDgICBgULQQFB6InAAEH4gsAAEKIIIQsLIBEEQCAEIBFBBHRBBBC+DQsgCyEEDAQLQQBBwI7AAEH4gsAAEKIIIQQMAwtBAkGokMAAQfiCwAAQogghBAwCC0EAISpBBCELCyAHQeAMaiAHQTRqEJMDIAcoAuQMIQEgBygC4AwiCUGBgICAeEcEQCAJQYCAgIB4Rw0GQQNBqJDAAEH4gsAAEKIIIQELIBEEQCAEIBFBBHRBBBC+DQsgDARAIAsgDEEEdEEEEL4NCyABIQQLIBVFDQcgBSAVQRRsQQQQvg0MBwsgB0KBygA3A+AMIAdB4AxqEKQLIQQMBwsgB0KBygA3A+AMIAdB4AxqEKQLIQQMBAsgB0KBygA3A+AMIAdB4AxqEKQLIQQMAwtBBCABEL4MAAsgJCAHKALoDDYCSCAkIAE2AkQgJCAJNgJAICQgKjYCPCAkIAs2AjggJCAMNgI0ICQgHDYCMCAkIAQ2AiwgJCARNgIoICQgDjYCJCAkIAU2AiAgJCAVNgIcICQgXUIghiBahDcCFCAkIBY2AhAgJCAGNgIMICQgGjYCCCAkIAM2AgQgJCAINgIADAcLQQQgBhC+DAALIAcoAqAPIgFFDQAgBygCpA8gAUEUbEEEEL4NCyAWBEAgBiEBA0AgASgCAEGAgICAeEcEQCABEJkCCyABQaQCaiEBIBZBAWsiFg0ACwsgGkUNAyAGIBpBpAJsQQQQvg0MAwsgFgRAIAYhAQNAIAEoAgBBgICAgHhHBEAgARCZAgsgAUGkAmohASAWQQFrIhYNAAsLIBpFDQIgBiAaQaQCbEEEEL4NDAILIAcoAvQGIgFFDQAgCCABQfADbEEIEL4NCyAHKAJAIQUgBygCRCIWBEAgBSEBA0AgASgCAEGAgICAeEcEQCABEJkCCyABQaQCaiEBIBZBAWsiFg0ACwsgBygCPCIBRQ0AIAUgAUGkAmxBBBC+DQsgJEEDNgIAICQgBDYCBAsgB0HgEWokACACKAKMBSEDIAIoAogFIgRBA0cEQCACQcQEaiACQZAFaiIBQcQAEOUNGiAEQQJHDRVBCEGIvMAAQfiCwAAQogghAwsgN0ECNgIAIDcgAzYCBCACQbAGahDoBwsgAkGYA2oQrgYLIAJB8AJqEJwHDBkLIBshAQwWCyACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQYMEwsgAkEAOgCLBSACQSU7AIkFIAJBADYCjAUgAkEBOgCIBSACQYgFahCkCyEGDBILIAJBADoAiwUgAkElOwCJBSACQQA2AowFIAJBAToAiAUgAkGIBWoQpAshBgwRCyACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQYMEAsgAkEAOgCLBSACQSU7AIkFIAJBADYCjAUgAkEBOgCIBSACQYgFahCkCyEGDA8LIAJBADoAiwUgAkElOwCJBSACQQA2AowFIAJBAToAiAUgAkGIBWoQpAshBgwOCyACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQYMDQsgAkKBygA3A4gFIAJBiAVqEKQLIQYMDAsgAkKBygA3A4gFIAJBiAVqEKQLIQYMCwsgAkKBygA3A4gFIAJBiAVqEKQLIQYMCgsgAkKBygA3A4gFIAJBiAVqEKQLIQYMCQsgAkKBygA3A4gFIAJBiAVqEKQLIQYMCAsgAkKBygA3A4gFIAJBiAVqEKQLIQQMBgsgAkKBygA3A4gFIAJBiAVqEKQLIQQMBQsgAkKBygA3A4gFIAJBiAVqEKQLIQQMBAsgAkKBygA3A4gFIAJBiAVqEKQLIQQMAwsgAkKBygA3A4gFIAJBiAVqEKQLIQQMAQsgN0GwAWogAkHEBGpBxAAQ5Q0aIDdB9AFqIAJB2ABqQcwAEOUNGiA3QcACaiACQaQBakHkABDlDRogN0GkA2ogAkGoAmpBxAAQ5Q0aIAJBiAVqIgZBIGogAkHwAmoiBUEgaikCADcDACAGQRhqIAVBGGopAgA3AwAgBkEQaiAFQRBqKQIANwMAIAEgBUEIaikCADcDACAGQTBqIAJBmANqIgFBCGopAgA3AwAgAkHABWogAUEQaikCADcDACACQcgFaiABQRhqKQIANwMAIAJB0AVqIAFBIGopAgA3AwAgAkHYBWogAkHAA2opAgA3AwAgAkHgBWogAUEwaigCADYCACACIAIpAvACNwOIBSACIAIpApgDNwOwBSACQeQFaiACQbAGakHMABDlDRogNyAGQagBEOUNIgEgdUIghiB0hDcCsAQgASBTNgKsBCABIFk2AqgEIAEgWDYCpAQgASBXNgKgBCABIFY2ApwEIAEgVTYCmAQgASCPATgClAQgASCOATgCkAQgASCNATgCjAQgASCMATgCiAQgASCLATgChAQgASCKATgCgAQgASCJATgC/AMgASCIATgC+AMgASCHATgC9AMgASCGATgC8AMgASBUNgLsAyABIDE2AugDIAEgAzYCrAEgASAENgKoAQwYCyAJBEAgASExA0ACQCAxKAIARQ0AIDFB7AFqKAIAIgUEQCAFQTBBBBC+DQsgMUHcAmooAgAiBUUNACAxQeACaigCACAFQQN0QQQQvg0LIDFB8AJqITEgCUEBayIJDQALCyADRQRAIAQhAQwFCyABIANB8AJsQQgQvg0gBCEBDAQLIAsEQCAGIAtBA3RBBBC+DQsgBCEGCyAOBEAgDkEwQQQQvg0LIAYhAQwBCyACQQA6AIsFIAJBJTsAiQUgAkEANgKMBSACQQE6AIgFIAJBiAVqEKQLIQEgDkUNACAOQTBBBBC+DQsgAigClAchBSAJBEAgBSEEA0ACQCAEKAIARQ0AIARB7AFqKAIAIgYEQCAGQTBBBBC+DQsgBEHcAmooAgAiBkUNACAEQeACaigCACAGQQN0QQQQvg0LIARB8AJqIQQgCUEBayIJDQALCyACKAKQByIERQ0AIAUgBEHwAmxBCBC+DQsgN0ECNgIAIDcgATYCBAsgAkGoAmoQ/gUMBQsgAigCiAUiCEUNACACKAKMBSAIQRRsQQQQvg0LIAoEQCADIApBBHRBBBC+DQsgCyEDCyBBBEAgASBBQQR0QQQQvg0LIAQEQCAFITEDQCAxEPwGIDFBOGohMSAEQQFrIgQNAAsLIAYEQCAFIAZBOGxBBBC+DQsgAyEBCyACKAKgByIEKAIAIQUgBCAFQQFrNgIAIAVBAUcNACACQaAHahCyCAsgN0ECNgIAIDcgATYCBAsgAkGkAWoQoAQMCAsgDiAEEL4MAAsgAkGIBWoQpAshASAWRQ0EIA9FDQQgDxC2CQwECyAKBEAgMCAKQQJ0QQQQvg0LIAQLIQEgDgRAIAggDkECdEEEEL4NCwwBCyAEIQEgDkUNACAIIA5BAnRBBBC+DQsgAkGIBWoQ+AYLIAIoAqwIIQUgAwRAIAUhBANAAkAgBCgCAEUNACAEQQRqKAIAIgZFDQAgBhC2CQsgBEEsaiEEIANBAWsiAw0ACwsgAigCqAgiBEUNACAFIARBLGxBBBC+DQsgN0ECNgIAIDcgATYCBAsgAkHYAGoQnQcMAgsgN0ECNgIAIDcgMTYCBAwBCyA3QQI2AgAgNyADNgIECyACQaAJaiQADAcLQQQgDhC+DAALQQQgBhC+DAALQQQgARC+DAALQQRBDEGIq8QAKAIAIgBBzwcgABsRAAAAC0EIIAQQvgwAC0EAQQAQvgwAC0EEQTBBiKvEACgCACIAQc8HIAAbEQAAAAsgLygCjAkhBAJAAkAgLygCiAkiAUECRwRAIC9B0ARqIC9BkAlqQbAEEOUNGiAvIAQ2AswEIC9BFGoiBCAvQcwEakG0BBDlDRogNkEMaiAEQbAEaigCADYCACA2IC8pArwENwIEIDZB+ANqIC9B+ANqQcQAEOUNGiA2QYQCaiAvQYQCakHMABDlDRogNkHQAmogL0HQAmpB5AAQ5Q0aIDZBtANqIC9BtANqQcQAEOUNGiA2QTRqIC9BNGooAgA2AgAgNkEsaiAvQSxqKQIANwIAIDZBJGogL0EkaikCADcCACA2QRxqIARBCGopAgA3AgAgNiAvKQIUNwIUIDYgLykCODcCOCA2QUBrIARBLGopAgA3AgAgNkHIAGogBEE0aikCADcCACA2QdAAaiAvQdAAaikCADcCACA2QdgAaiAEQcQAaikCADcCACA2QeAAaiAEQcwAaikCADcCACA2QegAaiAvQegAaigCADYCACA2QewAaiAEQdgAakHMABDlDRogNkG4AWogL0G4AWpBzAAQ5Q0aIDYgATYCECA2QQE2AgAgLygCCCIBBEAgLygCDCABQQEQvg0LIC8oAgQiAUGDAUsNAQwCCyAvIAQ2AswEIC9BAjYCyAQCQCAvQcgEaiIBKAIAQQJHBEAgAUH0AWoQnQcgAUHAAmoQoAQgAUGkA2oQ/gUgARCcByABQShqEK4GIAFB3ABqEOgHIAFBqAFqEOMGDAELIAEoAgQQ3QcLIDZBAjYCACAvKAIIIgEEQCBQIAFBARC+DQsgLygCBCIBQYQBSQ0BCyABEAILIC9BwA1qJAAgACAAKAIAQQFrNgIAQQAhACBJKAIEQQJHBEBBgYnEAC0AABpBwARBBBDcDCIARQ0DIABBADYCACAAQQRqIElBBGpBvAQQ5Q0aCyBJQcAEaiQAIAAPCxDUDQALENUNAAtBBEHABEGIq8QAKAIAIgBBzwcgABsRAAAAC6kBAgF/AX0jAEHQAWsiAyQAIANByAFqQgA3AgAgA0IANwLAASADQoKAgIAwNwIYIANCgICAgBA3AhAgA0EgakEAQaABEOcNGiADIAAgA0EQaiABIAIQHiADKgIAIAEqAgCTIgQgBJQgAyoCBCABKgIEkyIEIASUkiADKgIIIAEqAgiTIgQgBJSSEJIBIQQgAy0ADCEAIANB0AFqJAAgBCAEjCAEIAAbIAIbC6kBAgF/AX0jAEHQAWsiAyQAIANByAFqQgA3AgAgA0IANwLAASADQoKAgIAwNwIYIANCgICAgBA3AhAgA0EgakEAQaABEOcNGiADIAAgA0EQaiABIAIQHSADKgIAIAEqAgCTIgQgBJQgAyoCBCABKgIEkyIEIASUkiADKgIIIAEqAgiTIgQgBJSSEJIBIQQgAy0ADCEAIANB0AFqJAAgBCAEjCAEIAAbIAIbC6kBAgF/AX0jAEHQAWsiAyQAIANByAFqQgA3AgAgA0IANwLAASADQoKAgIAwNwIYIANCgICAgBA3AhAgA0EgakEAQaABEOcNGiADIAAgA0EQaiABIAIQHCADKgIAIAEqAgCTIgQgBJQgAyoCBCABKgIEkyIEIASUkiADKgIIIAEqAgiTIgQgBJSSEJIBIQQgAy0ADCEAIANB0AFqJAAgBCAEjCAEIAAbIAIbC6kBAgF/AX0jAEHQAWsiAyQAIANByAFqQgA3AgAgA0IANwLAASADQoKAgIAwNwIYIANCgICAgBA3AhAgA0EgakEAQaABEOcNGiADIAAgA0EQaiABIAIQICADKgIAIAEqAgCTIgQgBJQgAyoCBCABKgIEkyIEIASUkiADKgIIIAEqAgiTIgQgBJSSEJIBIQQgAy0ADCEAIANB0AFqJAAgBCAEjCAEIAAbIAIbC6kBAgF/AX0jAEHQAWsiAyQAIANByAFqQgA3AgAgA0IANwLAASADQoKAgIAwNwIYIANCgICAgBA3AhAgA0EgakEAQaABEOcNGiADIAAgA0EQaiABIAIQHyADKgIAIAEqAgCTIgQgBJQgAyoCBCABKgIEkyIEIASUkiADKgIIIAEqAgiTIgQgBJSSEJIBIQQgAy0ADCEAIANB0AFqJAAgBCAEjCAEIAAbIAIbC7MBAgF/AX0jAEEwayIDJAAgAyACIAEoAgQgASgCCBDRAiABKgJgIgRDAAAAAGBFBEAgA0EANgIoIANBATYCHCADQaydwgA2AhggA0IENwIgIANBGGpBtJ3CABCRCwALIAAgBCADKgIUkjgCFCAAIAQgAyoCEJI4AhAgACAEIAMqAgySOAIMIAAgAyoCCCAEkzgCCCAAIAMqAgQgBJM4AgQgACADKgIAIASTOAIAIANBMGokAAuZAQEDfyMAQYABayIEJAAgACgCACEAA0AgAiAEakH/AGogAEEPcSIDQTByIANB1wBqIANBCkkbOgAAIAJBAWshAiAAQRBJIQMgAEEEdiEAIANFDQALIAJBgAFqIgBBgQFPBEAgAEGAAUHM68MAEMQNAAsgAUEBQdzrwwBBAiACIARqQYABakEAIAJrEIECIQAgBEGAAWokACAAC5gBAQN/IwBBgAFrIgQkACAAKAIAIQADQCACIARqQf8AaiAAQQ9xIgNBMHIgA0E3aiADQQpJGzoAACACQQFrIQIgAEEQSSEDIABBBHYhACADRQ0ACyACQYABaiIAQYEBTwRAIABBgAFBzOvDABDEDQALIAFBAUHc68MAQQIgAiAEakGAAWpBACACaxCBAiEAIARBgAFqJAAgAAunAQECfyMAQRBrIgIkAAJAIAEoAgQiA0UEQCAAQQA2AgAMAQsgASADQQFrNgIEIAEoAgAiASgCBCIDQQRPBEAgAEEBNgIAIAEgA0EEazYCBCABIAEoAgAiAUEEajYCACAAIAEqAAA4AgQMAQsgAkEAOgALIAJBJTsACSACQQA2AgwgAkEBOgAIIAJBCGoQpAshASAAQQI2AgAgACABNgIECyACQRBqJAALtQEBAn8jAEEQayIBJAACQAJAIAAEQCAAKAIADQEgACgCBCECIABCADcCAAJAIAJFBEBBACEADAELIAFBCGoiAiAAQRBqKAIANgIAQYGJxAAtAAAaIAEgACkCCDcDAEEQQQQQ3AwiAEUNAyAAQQA2AgAgACABKQMANwIEIABBDGogAigCADYCAAsgAUEQaiQAIAAPCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALwgEBA30gAyoCABCSASEFIAMqAgQQkgEhBiADKgIIEJIBIQcgAEMAAAAAQwAAgD8gBpUgBkMAAAAAWxs4AiQgAEMAAAAAQwAAgD8gBZUgBUMAAAAAWxs4AiAgAEMAAAAAQwAAgD8gApUgAkMAAAAAWxs4AhwgAEEYaiABQQhqKAIANgIAIAAgASkCADcCECAAIAQpAgA3AgAgAEEIaiAEQQhqKQIANwIAIABDAAAAAEMAAIA/IAeVIAdDAAAAAFsbOAIoC74BAQl9QYGJxAAtAAAaIAEqAhQhByABKgIQIQggASoCDCEJIAEqAgghCiABKgIEIQsgASoCACEMIAIqAgghBCACKgIEIQUgAioCACEGQRhBBBDcDCIBRQRAQQRBGEGIq8QAKAIAIgBBzwcgABsRAAAACyABIAQgB5Q4AhQgASAFIAiUOAIQIAEgBiAJlDgCDCABIAQgCpQ4AgggASAFIAuUOAIEIAEgBiAMlDgCACAAQYjYwgA2AgQgACABNgIAC54BAQZ9AkACQAJAIAIqAgAiAyADlCACKgIIIgQgBJSSEJIBIgdDAAAAAFwEQCABKgIAIgUgAioCBJQiCCAEIAQgB5UgASoCBCIElCIGlCADIAMgB5UgBJQiA5QgCJOSXg0BIAWMIQUMAwsgASoCACACKgIEmCEFDAELQwAAAAAhBgtDAAAAACEDCyAAIAY4AgggACAFOAIEIAAgAzgCAAueAQEHfQJAAkACQCACKgIAIgUgBZQgAioCCCIGIAaUkhCSASIHQwAAAABcBEAgASoCACIEIAIqAgSUIgMgBSAHlSABKgIEIgmUIgggBZQgA5MgBiAHlSAJlCIDIAaUkl4NASAEjCEEDAMLIAEqAgAgAioCBJghBAwBC0MAAAAAIQMLQwAAAAAhCAsgACADOAIIIAAgBDgCBCAAIAg4AgALsQECAX8BfSMAQTBrIgIkACACIAEqAgAgASoCBBCGByABKgIIIgNDAAAAAGBFBEAgAkEANgIoIAJBATYCHCACQaydwgA2AhggAkIENwIgIAJBGGpBtJ3CABCRCwALIAAgAyACKgIUkjgCFCAAIAMgAioCEJI4AhAgACADIAIqAgySOAIMIAAgAioCCCADkzgCCCAAIAIqAgQgA5M4AgQgACACKgIAIAOTOAIAIAJBMGokAAuxAQIBfwF9IwBBMGsiAiQAIAIgASoCACABKgIEENQDIAEqAggiA0MAAAAAYEUEQCACQQA2AiggAkEBNgIcIAJBrJ3CADYCGCACQgQ3AiAgAkEYakG0ncIAEJELAAsgACADIAIqAhSSOAIUIAAgAyACKgIQkjgCECAAIAMgAioCDJI4AgwgACACKgIIIAOTOAIIIAAgAioCBCADkzgCBCAAIAIqAgAgA5M4AgAgAkEwaiQAC6YBAgF/BH0jAEEgayICJAAgASoCDCIDQwAAAABgRQRAIAJBADYCGCACQQE2AgwgAkGsncIANgIIIAJCBDcCECACQQhqQbSdwgAQkQsACyABKgIEIQQgASoCACEFIAAgASoCCCIGIAOSOAIUIAAgBCADkjgCECAAIAUgA5I4AgwgACAGjCADkzgCCCAAIASMIAOTOAIEIAAgBYwgA5M4AgAgAkEgaiQAC6YDAgl/AX4CQAJAIAAEQCAAKAIAIgNBf0YNASAAIANBAWo2AgAgAb0iDKchAyAMQiCIpyEIIAK9IgynIQUgDEIgiKchBgJAIABBBGoiBCgCOCIHIANNDQAgBSAHTw0AIAggA0EMbCAEKAI0IgNqIgcoAgBHDQAgAyAFQQxsaiIDKAIAIAZHDQAgBCgCCCIFIAcoAgQiBk0NACADKAIEIQcgBCgCECEIAkAgBCgCBCAGQQR0aiIKKAIIIgMgBCgCFCIESQRAA0AgCCADQThsaiILKAI0IAdGDQIgBCALKAIoIgNLDQALCyAEIApBACAFIAZLGygCDCIDTQ0BA0AgCCADQThsaiIGKAIwIAdGDQEgBCAGKAIsIgNLDQALDAELIAMgBE8NACAIIANBOGxqIgMoAjAgBU8NACADQQAgAygCNCAFSRshCQsgACAAKAIAQQFrNgIAIAlFBEBBAA8LQYGJxAAtAAAaQQhBBBDcDCIARQ0CIAAgCTYCBCAAQQA2AgAgAA8LENQNAAsQ1Q0AC0EEQQhBiKvEACgCACIAQc8HIAAbEQAAAAuTAQEHfSAAIAEqAhgiAiABKgIIIgMgASoCFCIEIAMgBGAbkjgCFCAAIAIgASoCBCIFIAEqAhAiBiAFIAZgG5I4AhAgACACIAEqAgAiByABKgIMIgggByAIYBuSOAIMIAAgAyAEIAMgBF8bIAKTOAIIIAAgBSAGIAUgBl8bIAKTOAIEIAAgByAIIAcgCF8bIAKTOAIAC5oBAgR9AX8CQAJAIABFDQAgACgCAA0BIABBfzYCACABRQ0AIAEoAgAiBkF/Rg0BIAEgBkEBajYCACABKgIEIgMgA5QgASoCCCIEIASUkiABKgIMIgUgBZSSEJIBIQIgACAFIAKVOAIwIAAgBCAClTgCLCAAIAMgApU4AiggASABKAIAQQFrNgIAIABBADYCAA8LENQNAAsQ1Q0AC5gBAgF/AX4CQAJAAkAgAARAIAAoAgAiA0F/Rg0BIAAgA0EBajYCACACQQZPDQIgAEEEaiABvSIEpyAEQiCIpxDCCSIDRQ0DIANB6QJqLQAAIQMgACAAKAIAQQFrNgIAQQEgAnRB/wFxIgAgA3EgAEYPCxDUDQALENUNAAtBzrfAAEEZENMNAAtBnLLAAEHQAEGcs8AAEJQMAAu/AQICfwF+IwBBEGsiBSQAAkACQAJAIAAEQCAAKAIADQEgAEF/NgIAIAJBBk8NAiAAQQRqIAG9IgenIAdCIIinEMIJIgZFDQMgBSAEOAIMIAUgAzgCCCAGQTBqIgYgBi0AuQJBASACQf8BcSICdHI6ALkCIAYgAkEMbGpBEGogBUEIaikCADcCACAAQQA2AgAgBUEQaiQADwsQ1A0ACxDVDQALQc63wABBGRDTDQALQZyywABB0ABBrLPAABCUDAALqwYBCX8jAEEgayIGJAAgBiABNgIQIAYgADYCDCAGIAE2AgggBiADNgIcIAYgAjYCGCAGIAM2AhQgBkEUaiEKQQAhAEEAIQMjAEEgayIHJAAgBkEIaiILKAIEIQwCQAJAAkACQAJAAkACQCALKAIIIgFFBEBBBCECDAELQQQhAiABIAFBA24iA0EDbEcgA2oiAwRAIANBDGwhBSADQarVqtUASw0DIAVBAEgNA0GBicQALQAAGkEEIQAgBUEEENwMIgJFDQMLQQAhBUEAIQADQCABQQJNDQIgAiAFaiIIIAUgDGoiCSoCADgCACAIQQRqIAlBBGopAgA3AgAgBUEMaiEFIABBAWohACABQQNrIgENAAsLIAcgADYCHCAHIAI2AhggByADNgIUIAooAgQhAwJAIAooAggiBUUEQCAHIAdBFGpBBEEAIAQQugggBygCBCEFIAcoAgAhAQwBC0EAIQBBBCECIAUgBUEDbiIBQQNsRyABaiIIBEAgCEEMbCEBIAhBqtWq1QBLDQYgAUEASA0GQYGJxAAtAAAaQQQhACABQQQQ3AwiAkUNBgtBACEJIAIhASADIQADQCAFQQFGDQQgBUECTQ0FIAEgACgCADYCACABQQRqIAApAgQ3AgAgAUEMaiEBIAlBAWohCSAAQQMgBSAFQQNPGyINQQJ0aiEAIAUgDWsiBQ0ACyAHQQhqIAdBFGogAiAJIAQQugggBygCDCEFIAcoAgghASAIRQ0AIAIgCEEMbEEEEL4NCyAKKAIAIgAEQCADIABBAnRBBBC+DQsgCygCACIABEAgDCAAQQJ0QQQQvg0LIAYgATYCACAGIAU2AgQgB0EgaiQADAULQeSawABBywBBoJzAABDQCwALIAAgBRC+DAALQQFBAUHUusAAEJkJAAtBAkECQeS6wAAQmQkACyAAIAEQvgwACwJAAkAgBigCACIARQRAQQAhAQwBCyAGKAIEIQJBgYnEAC0AABpBDEEEENwMIgFFDQEgASACNgIIIAEgADYCBCABQQA2AgALIAZBIGokACABDwtBBEEMQYirxAAoAgAiAEHPByAAGxEAAAALtQEBA38jAEHgAGsiAiQAAkACQCAABEAgACgCAA0BIABBADYCACAAKALUAiEDIABBgICAgHg2AtQCIANBgICAgHhHBEAgAiAAQdgCakHgABDlDSEAQYGJxAAtAAAaQegAQQQQ3AwiAUUNAyABIAM2AgQgAUEANgIAIAFBCGogAEHgABDlDRoLIAJB4ABqJAAgAQ8LENQNAAsQ1Q0AC0EEQegAQYirxAAoAgAiAEHPByAAGxEAAAALlgEBB30gASoCACIFIAIqAgAiBpQgASoCBCIHIAIqAgQiCJSSIAEqAggiCSACKgIIIgqUkiIEQwAAAABfIgFBACADG0UEQCAAIAogCSAElJM4AgggACAIIAcgBJSTOAIEIAAgBiAFIASUkzgCACAAIAE6AAwPCyAAIAIpAgA3AgAgAEEIaiACQQhqKAIANgIAIABBAToADAuRAQEJfSACKgIAIgQgASoCACIGlCACKgIEIgUgASoCBCIHlJIgASoCCCIIIAIqAggiA5SSIAQgASoCDCIJlCAFIAEqAhAiCpSSIAMgASoCFCILlJJeIQIgACAIIAsgAhsgAyABKgIYIgOUkjgCCCAAIAcgCiACGyAFIAOUkjgCBCAAIAYgCSACGyAEIAOUkjgCAAusAQEEfUEAIQMCQCABKgIAIAIqAgCUIgUgBZQgASoCBCACKgIElCIGIAaUkiABKgIIIAIqAgiUIgcgB5SSIgRDAAAAAF4EQCAEEJIBIQRBgYnEAC0AABpBDEEEENwMIgNFDQEgAyAHIASVOAIIIAMgBiAElTgCBCADIAUgBJU4AgALIABBmPnCADYCBCAAIAM2AgAPC0EEQQxBiKvEACgCACIAQc8HIAAbEQAAAAugAQIBfwF+AkACQAJAIABFDQAgACgCAA0BIABBfzYCACACRQ0AIAIoAgAiA0F/Rg0BIAIgA0EBajYCACAAQQRqIAG9IgSnIARCIIinEMIJIgNFDQIgAyACKQIENwKYASADQaABaiACQQxqKAIANgIAIAIgAigCAEEBazYCACAAQQA2AgAPCxDUDQALENUNAAtBnLLAAEHQAEGss8AAEJQMAAugAQIBfwF+AkACQAJAIABFDQAgACgCAA0BIABBfzYCACACRQ0AIAIoAgAiA0F/Rg0BIAIgA0EBajYCACAAQQRqIAG9IgSnIARCIIinEMIJIgNFDQIgAyACKQIENwK0ASADQbwBaiACQQxqKAIANgIAIAIgAigCAEEBazYCACAAQQA2AgAPCxDUDQALENUNAAtBnLLAAEHQAEGss8AAEJQMAAunBgEJfyMAQSBrIgUkACAFIAE2AhAgBSAANgIMIAUgATYCCCAFIAM2AhwgBSACNgIYIAUgAzYCFCAFQRRqIQlBACEAQQAhAyMAQSBrIgYkACAFQQhqIgooAgQhCwJAAkACQAJAAkACQAJAIAooAggiAUUEQEEEIQIMAQtBBCECIAEgAUEDbiIDQQNsRyADaiIDBEAgA0EMbCEEIANBqtWq1QBLDQMgBEEASA0DQYGJxAAtAAAaQQQhACAEQQQQ3AwiAkUNAwtBACEEQQAhAANAIAFBAk0NAiACIARqIgcgBCALaiIIKgIAOAIAIAdBBGogCEEEaikCADcCACAEQQxqIQQgAEEBaiEAIAFBA2siAQ0ACwsgBiAANgIcIAYgAjYCGCAGIAM2AhQgCSgCBCEDAkAgCSgCCCIERQRAIAYgBkEUakEEQQAQ6AggBigCBCEEIAYoAgAhAQwBC0EAIQBBBCECIAQgBEEDbiIBQQNsRyABaiIHBEAgB0EMbCEBIAdBqtWq1QBLDQYgAUEASA0GQYGJxAAtAAAaQQQhACABQQQQ3AwiAkUNBgtBACEIIAIhASADIQADQCAEQQFGDQQgBEECTQ0FIAEgACgCADYCACABQQRqIAApAgQ3AgAgAUEMaiEBIAhBAWohCCAAQQMgBCAEQQNPGyIMQQJ0aiEAIAQgDGsiBA0ACyAGQQhqIAZBFGogAiAIEOgIIAYoAgwhBCAGKAIIIQEgB0UNACACIAdBDGxBBBC+DQsgCSgCACIABEAgAyAAQQJ0QQQQvg0LIAooAgAiAARAIAsgAEECdEEEEL4NCyAFIAE2AgAgBSAENgIEIAZBIGokAAwFC0HkmsAAQcsAQaCcwAAQ0AsACyAAIAQQvgwAC0EBQQFBtLrAABCZCQALQQJBAkHEusAAEJkJAAsgACABEL4MAAsCQAJAIAUoAgAiAEUEQEEAIQEMAQsgBSgCBCECQYGJxAAtAAAaQQxBBBDcDCIBRQ0BIAEgAjYCCCABIAA2AgQgAUEANgIACyAFQSBqJAAgAQ8LQQRBDEGIq8QAKAIAIgBBzwcgABsRAAAAC5UBAgJ/AX4CQAJAIAAEQCAAKAIAIgJBf0YNASAAIAJBAWo2AgAgAEEEaiABvSIEpyAEQiCIpxDCCSIDRQ0CQQYhAiADQegCai0AAEE3a0H/AXEiA0EITQRAIANBAnRBkLzAAGooAgAhAgsgACAAKAIAQQFrNgIAIAIPCxDUDQALENUNAAtBnLLAAEHQAEGcs8AAEJQMAAueAQIBfwF+AkACQAJAIAAEQCAAKAIADQEgAEF/NgIAIAJBBk8NAgJAAkACQCADDgIBAAILQQEhBAsgAEEEaiABvSIFpyAFQiCIpxDCCSIDRQ0EIAMgAkEcbGpB2AFqIAQ6AAAgAEEANgIADwtBzrfAAEEZENMNAAsQ1A0ACxDVDQALQc63wABBGRDTDQALQZyywABB0ABBrLPAABCUDAALmgECAn8BfgJAAkAgAARAIAAoAgANASAAQX82AgAgAEEEaiABvSIFpyAFQiCIpxD/ByIDRQ0CIAJB//8DcSEEAkAgAkEQdiICIAMoAkhGBEAgAygCTCAERg0BCyADIAQ2AkwgAyACNgJIIAMgAygCcEEQcjYCcAsgAEEANgIADwsQ1A0ACxDVDQALQYy2wABBzABBkLfAABCUDAALmgECAn8BfgJAAkAgAARAIAAoAgANASAAQX82AgAgAEEEaiABvSIFpyAFQiCIpxD/ByIDRQ0CIAJB//8DcSEEAkAgAkEQdiICIAMoAlBGBEAgAygCVCAERg0BCyADIAQ2AlQgAyACNgJQIAMgAygCcEEQcjYCcAsgAEEANgIADwsQ1A0ACxDVDQALQYy2wABBzABBkLfAABCUDAAL5wICBX8BfSMAQSBrIgIkACACIAA4AgwgAiAAQwAAAACUIgc4AhAgAiAHOAIIIAIgAIw4AhggAiAHjCIAOAIcIAIgADgCFCMAQSBrIgMkACADQRBqIgUgAkEUaiIEQQhqKAIANgIAIANBHGogAkEIaiIGQQhqKAIANgIAQYGJxAAtAAAaIAMgBCkCADcDCCADIAYpAgA3AhRBJEEEENwMIgRFBEBBBEEkQYirxAAoAgAiAkHPByACGxEAAAALIARCgYCAgBA3AgAgBCADKQMINwIIIAQgATgCICAEQRBqIAUpAwA3AgAgBEEYaiADQRhqKQMANwIAIAJB1OHCADYCBCACIAQ2AgAgA0EgaiQAQYGJxAAtAAAaIAIoAgQhBCACKAIAIQVBDEEEENwMIgNFBEBBBEEMQYirxAAoAgAiAkHPByACGxEAAAALIAMgBDYCCCADIAU2AgQgA0EANgIAIAJBIGokACADC6QBAgF/A34jAEEQayIIJAAgCCAEIAUgBiAHIAMgAigCACABLQAAIgEQ5wMgCCgCDCEEIAgoAgghBSAIIAgoAgAgCCgCBCAGIAcgAyACKAIEIgIgARDnAyAIKQIAIQkgCCkCCCEKIAggBSAEIAYgByADIAIgARDnAyAIKQIAIQsgACAIKQIINwIYIAAgCzcCECAAIAo3AgggACAJNwIAIAhBEGokAAuUAQIBfwR9IwBBMGsiBSQAIAVBDGogASACIAMQRiAFKAIYIQECQCACKgIAIAUqAgwiCJMiBiAGlCACKgIEIAUqAhAiBpMiByAHlJIgAioCCCAFKgIUIgeTIgkgCZSSEJIBIAReRQRAIAAgATYCDCAAIAc4AgggACAGOAIEIAAgCDgCAAwBCyAAQQI6AAwLIAVBMGokAAuWAQICfwN9IwBBQGoiBCQAIAFBCGoiBSoCACEGIAEqAgAhByABKgIEIQggBEEgaiAFKAIANgIAIAQgBow4AhQgBCAIjDgCECAEIAeMOAIMIAQgASkCADcCGCAEQSRqIgEgBEEMaiACIAMQswIgACAEKQIkNwIAIABBCGogAUEIaigCADYCACAAIAQtADA6AAwgBEFAayQAC7gBAQN/IwBBIGsiAyQAIAMgACgCACIFEBIiADYCACADIAI2AgQgACACRgRAEBUiBBALIgAgASACEBAhASAEQYQBTwRAIAQQAgsgAEGEAU8EQCAAEAILIAUgAUEAEBEgAUGEAU8EQCABEAILIANBIGokAA8LIANBADYCCCMAQRBrIgAkACAAIANBBGo2AgwgACADNgIIQQAgAEEIakG0vcAAIABBDGpBtL3AACADQQhqQaS+wAAQugQAC5QBAgF/BH0jAEEwayIFJAAgBUEMaiABIAIgAxBLIAUoAhghAQJAIAIqAgAgBSoCDCIIkyIGIAaUIAIqAgQgBSoCECIGkyIHIAeUkiACKgIIIAUqAhQiB5MiCSAJlJIQkgEgBF5FBEAgACABNgIMIAAgBzgCCCAAIAY4AgQgACAIOAIADAELIABBAjoADAsgBUEwaiQAC9MDAQR/IwBBMGsiAyQAIANBDGohAiAAQQBHIQRBgYnEAC0AABoCQAJAQYACQcAAENwMIgAEQCAAQQA6AMgBIABCgYCAgBA3A8ABIABBAToAnAEgAEIENwKUASAAQgA3AowBIABCgICAgMAANwKEASAAQQA6AIABIABCADcDQCAAQgA3AwBBgYnEAC0AABpBgAJBwAAQ3AwiAUUNAiABQQA6AMgBIAFCgYCAgBA3A8ABIAFBAToAnAEgAUIENwKUASABQgA3AowBIAFCgICAgMAANwKEASABQQA6AIABIAFCADcDQCABQgA3AwAgAiAEOgAgIAIgATYCHCACQQE2AhggAiAANgIUIAJBATYCECACIAE2AgwgAkEBNgIIIAIgADYCBCACQQE2AgAMAQsMAQtBgYnEAC0AABpBKEEEENwMIgBFBEBBBEEoQYirxAAoAgAiAEHPByAAGxEAAAALIABBADYCACAAIAMpAgw3AgQgAEEMaiADQRRqKQIANwIAIABBFGogA0EcaikCADcCACAAQRxqIANBJGopAgA3AgAgAEEkaiADQSxqKAIANgIAIANBMGokACAADwtBwABBgAJBiKvEACgCACIAQc8HIAAbEQAAAAu7CwIEfxV9IwBBMGsiBCQAIARBBGohAyMAQeAAayICJAAgACoCHCEIIAAqAhghBiAAKgIUIQcCQAJAAkAgACoCECIRQwAAAABcDQAgB0MAAAAAXA0AIAZDAAAAAFwNACAIQwAAAABcDQAgACoCIEMAAAAAXA0AIAAqAiRDAAAAAFwNACAAKgIoQwAAAABcDQAgACoCAEMAAAAAXA0AIAAqAgRDAAAAAFwNACAAKgIIQwAAAABcDQAgACoCDCIJQwAAgD9bIAlDAACAv1tyDQELIAEqAhwhCiABKgIYIQ8gASoCFCEQAkACQCABKgIQIhJDAAAAAFwNACAQQwAAAABcDQAgD0MAAAAAXA0AIApDAAAAAFwNACABKgIgQwAAAABcDQAgASoCJEMAAAAAXA0AIAEqAihDAAAAAFwNACABKgIAQwAAAABcDQAgASoCBEMAAAAAXA0AIAEqAghDAAAAAFwNACABKgIMIglDAACAP1sgCUMAAIC/W3INAQsgAkMAAAAAQwAAgD9DAAAAAEMAAIA/IAiVIgkgCEMAAAAAWyIFGyILQwAAAABDAACAPyAKlSIIIApDAAAAAFsbIgySIhmVIBlDAAAAAFsbIhMgCyAGlCAMIA+UkpQiDTgCFCACIBMgCyAHlCAMIBCUkpQiDjgCECACIBEgC5QgEiAMlJIgE5QiDDgCDCACQTxqIAAQ+wECfSAFBEAgAioCWCETIAIqAlQhESACKgJQIRUgAioCTCELIAIqAkghGiACKgJEIRYgAioCQCEXIAIqAjwhGCACKgJcDAELIAkgDiAHkyIHIA0gBpMiBpRDAAAAAJKUIhUgAioCWJIhEyAJIAwgEZMiCyAGlEMAAAAAkpQiFiACKgJUkiERIBUgAioCUJIhFSAJIAsgB5RDAAAAAJKUIhcgAioCSJIhGiAWIAIqAkSSIRYgFyACKgJAkiEXIAYgBpQiFCALIAuUIhggByAHlCIHkpIhBiAJIAcgBpKUIAIqAkySIQsgCSAYIAaSlCACKgI8kiEYIAkgFCAGkpQgAioCXJILIQkgAkE8aiABEPsBAn0gCkMAAAAAWwRAIAIqAlwhBiACKgJYIQ8gAioCVCEQIAIqAlAhDCACKgJMIQcgAioCSCESIAIqAkQhDSACKgJAIQ4gAioCPAwBCyAIIA4gEJMiCiANIA+TIgaUQwAAAACSlCINIAIqAliSIQ8gCCAMIBKTIgcgBpRDAAAAAJKUIg4gAioCVJIhECANIAIqAlCSIQwgCCAHIAqUQwAAAACSlCIUIAIqAkiSIRIgDiACKgJEkiENIBQgAioCQJIhDiAGIAaUIgYgByAHlCIUIAogCpQiB5KSIQogCCAGIAqSlCACKgJckiEGIAggByAKkpQgAioCTJIhByAIIBQgCpKUIAIqAjySCyEIIAIgCSAGkjgCOCACIBMgD5I4AjQgAiARIBCSOAIwIAIgFSAMkjgCLCACIAsgB5I4AiggAiAaIBKSOAIkIAIgFiANkjgCICACIBcgDpI4AhwgAiAYIAiSOAIYIAMgAkEMaiAZIAJBGGoQngIMAgsgAyAAKQIANwIAIANBKGogAEEoaigCADYCACADQSBqIABBIGopAgA3AgAgA0EYaiAAQRhqKQIANwIAIANBEGogAEEQaikCADcCACADQQhqIABBCGopAgA3AgAMAQsgAyABKQIANwIAIANBKGogAUEoaigCADYCACADQSBqIAFBIGopAgA3AgAgA0EYaiABQRhqKQIANwIAIANBEGogAUEQaikCADcCACADQQhqIAFBCGopAgA3AgALIAJB4ABqJAAgAEEoaiADQShqKAIANgIAIABBIGogA0EgaikCADcCACAAQRhqIANBGGopAgA3AgAgAEEQaiADQRBqKQIANwIAIABBCGogA0EIaikCADcCACAAIAQpAgQ3AgAgBEEwaiQAC4sBAQV9IAIqAgAiBSAFlCACKgIEIgYgBpSSIAIqAggiByAHlJIiCCABKgIAIgQgBJRfIgFBACADG0UEQCAAIAcgBCAIEJIBlSIElDgCCCAAIAYgBJQ4AgQgACAFIASUOAIAIAAgAToADA8LIAAgAikCADcCACAAQQhqIAJBCGooAgA2AgAgAEEBOgAMC5EBAQR9IwBBIGsiAyQAIANBBGogASACEP8CIAMoAhAhAQJAIAIqAgAgAyoCBCIHkyIFIAWUIAIqAgQgAyoCCCIFkyIGIAaUkiACKgIIIAMqAgwiBpMiCCAIlJIQkgEgBF5FBEAgACABNgIMIAAgBjgCCCAAIAU4AgQgACAHOAIADAELIABBAjoADAsgA0EgaiQAC7MBAgF9AX8jAEHAAWsiAyQAIAEqAmAhBCADQeAAaiIFIAEQ3wEgAyAFIAIQqgICQAJAIAMoAgBBgICAgHhGBEBBACEBDAELIANB4ABqIANB4AAQ5Q0aQYGJxAAtAAAaQeQAQQQQ3AwiAUUNASABIANB4ABqQeAAEOUNIAQ4AmALIABBsJDDADYCBCAAIAE2AgAgA0HAAWokAA8LQQRB5ABBiKvEACgCACIAQc8HIAAbEQAAAAuJAQECfyAALQAIIQEgACgCACICRQRAIAFBAEcPCwJAIAFFBEAgACgCBCEBIAJBAUcNASAALQAJRQ0BIAEtABxBBHENASABKAIUQazrwwBBASABKAIYKAIMEQQARQ0BCyAAQQE6AAhBAQ8LIAAgASgCFEGT6MMAQQEgASgCGCgCDBEEACIAOgAIIAALwAICA38BfgJAAkACQCAARQ0AIAAoAgANASAAQX82AgAgAkUNACACKAIAIgRBf0YNASACIARBAWo2AgAgAEEEaiABvSIHpyAHQiCIpxD+ByIERQ0CIANBAEchAwJAAkAgBCoCgAEgAkEEaiIFKgIAXA0AIAQqAoQBIAUqAgRcDQAgBCoCiAEgBSoCCFsNAQsgBEGAAWohBgJAAkAgBC0A4QJBAWsOAwICAAELIAYgBSkCADcCACAGQQhqIAVBCGooAgA2AgAMAQsgBiAFKQIANwIAIAZBCGogBUEIaigCADYCACADRQ0AIAQtANACBEAgBCAEKAK4AkEEcjYCuAILIARBADYCzAIgBEEAOgDQAgsgAiACKAIAQQFrNgIAIABBADYCAA8LENQNAAsQ1Q0AC0H0tMAAQc0AQfy1wAAQlAwAC8ACAgN/AX4CQAJAAkAgAEUNACAAKAIADQEgAEF/NgIAIAJFDQAgAigCACIEQX9GDQEgAiAEQQFqNgIAIABBBGogAb0iB6cgB0IgiKcQ/gciBEUNAiADQQBHIQMCQAJAIAQqAowBIAJBBGoiBSoCAFwNACAEKgKQASAFKgIEXA0AIAQqApQBIAUqAghbDQELIARBjAFqIQYCQAJAIAQtAOECQQFrDgMCAgABCyAGIAUpAgA3AgAgBkEIaiAFQQhqKAIANgIADAELIAYgBSkCADcCACAGQQhqIAVBCGooAgA2AgAgA0UNACAELQDQAgRAIAQgBCgCuAJBBHI2ArgCCyAEQQA2AswCIARBADoA0AILIAIgAigCAEEBazYCACAAQQA2AgAPCxDUDQALENUNAAtB9LTAAEHNAEH8tcAAEJQMAAulAgMCfwF+AX0CQAJAAkAgAEUNACAAKAIADQEgAEF/NgIAIAJFDQAgAigCACIEQX9GDQEgAiAEQQFqNgIAIABBBGogAb0iBqcgBkIgiKcQ/gciBEUNAiADQQBHIQMCQCACQQRqIgUqAgAiB0MAAAAAXCAFKgIEQwAAAABcciAFKgIIQwAAAABcckUNACAELQDhAg0AIAQgByAEKgKgApI4AqACIAQgBSoCBCAEKgKkApI4AqQCIAQgBSoCCCAEKgKoApI4AqgCIANFDQAgBC0A0AIEQCAEIAQoArgCQQRyNgK4AgsgBEEANgLMAiAEQQA6ANACCyACIAIoAgBBAWs2AgAgAEEANgIADwsQ1A0ACxDVDQALQfS0wABBzQBB/LXAABCUDAALugIDAn8BfgF9AkACQAJAIABFDQAgACgCAA0BIABBfzYCACACRQ0AIAIoAgAiBEF/Rg0BIAIgBEEBajYCACAAQQRqIAG9IganIAZCIIinEP4HIgRFDQIgA0EARyEDAkAgAkEEaiIFKgIAIgdDAAAAAFwgBSoCBEMAAAAAXHIgBSoCCEMAAAAAXHJFDQAgBC0A4QINACAEIAcgBCoC9AGUIAQqAoABkjgCgAEgBCAFKgIEIAQqAvgBlCAEKgKEAZI4AoQBIAQgBSoCCCAEKgL8AZQgBCoCiAGSOAKIASADRQ0AIAQtANACBEAgBCAEKAK4AkEEcjYCuAILIARBADYCzAIgBEEAOgDQAgsgAiACKAIAQQFrNgIAIABBADYCAA8LENQNAAsQ1Q0AC0H0tMAAQc0AQfy1wAAQlAwAC6UCAwJ/AX4BfQJAAkACQCAARQ0AIAAoAgANASAAQX82AgAgAkUNACACKAIAIgRBf0YNASACIARBAWo2AgAgAEEEaiABvSIGpyAGQiCIpxD+ByIERQ0CIANBAEchAwJAIAJBBGoiBSoCACIHQwAAAABcIAUqAgRDAAAAAFxyIAUqAghDAAAAAFxyRQ0AIAQtAOECDQAgBCAHIAQqAqwCkjgCrAIgBCAFKgIEIAQqArACkjgCsAIgBCAFKgIIIAQqArQCkjgCtAIgA0UNACAELQDQAgRAIAQgBCgCuAJBBHI2ArgCCyAEQQA2AswCIARBADoA0AILIAIgAigCAEEBazYCACAAQQA2AgAPCxDUDQALENUNAAtB9LTAAEHNAEH8tcAAEJQMAAuTAQIBfwF+AkACQAJAIABFDQAgACgCAA0BIABBfzYCACACRQ0AIAIoAgAiBEF/Rg0BIAIgBEEBajYCACAAQQRqIAG9IgWnIAVCIIinEP4HIgRFDQIgBCACQQRqIANBAEcQmgUgAiACKAIAQQFrNgIAIABBADYCAA8LENQNAAsQ1Q0AC0H0tMAAQc0AQfy1wAAQlAwAC5ABAgJ/A34jAEEgayIBJAACQCAABEAgACgCACICQX9GDQEgACACQQFqNgIAIAApAgQhAyAAKQIMIQQgACkCFCEFIAFBBhATIgI2AgQgASAFNwIYIAEgBDcCECABIAM3AgggAUEEaiABQQhqQQYQzQcgACAAKAIAQQFrNgIAIAFBIGokACACDwsQ1A0ACxDVDQALkQECAX8EfSMAQSBrIgUkACAFIAEgAiADEDwgBSgCDCEBAkAgAioCACAFKgIAIgiTIgYgBpQgAioCBCAFKgIEIgaTIgcgB5SSIAIqAgggBSoCCCIHkyIJIAmUkhCSASAEXkUEQCAAIAE2AgwgACAHOAIIIAAgBjgCBCAAIAg4AgAMAQsgAEECOgAMCyAFQSBqJAALjwEBBH8CQEEIIAAoAgAiAkGAgICAeHMiASABQQhPGyIBQQFrQQdJDQAgAQRAIAJFDQEgACgCBCACQQEQvg0MAQsgAC0ABEEDRw0AIAAoAggiAigCACIDIAJBBGooAgAiASgCABEGACABKAIEIgQEQCADIAQgASgCCBC+DQsgAkEMQQQQvg0LIABBDEEEEL4NC4MBAQJ/AkAgACgCECIBRQ0AIAEgAUECdEELakF4cSICakEJaiIBRQ0AIAAoAgwgAmsgAUEIEL4NCyAAKAIAIgEEQCAAKAIEIAFBFGxBBBC+DQsgACgCHCIBBEAgACgCICABQQxsQQQQvg0LIAAoAigiAQRAIAAoAiwgAUECdEEEEL4NCwuQAQMBfwF+AX0CQAJAAkAgAARAIAAoAgAiA0F/Rg0BIAAgA0EBajYCACACQQZPDQIgAEEEaiABvSIEpyAEQiCIpxDCCSIDRQ0DIAMgAkEMbGpBQGsqAgAhBSAAIAAoAgBBAWs2AgAgBQ8LENQNAAsQ1Q0AC0HOt8AAQRkQ0w0AC0GcssAAQdAAQZyzwAAQlAwAC5EBAwF/AX4BfQJAAkACQCAABEAgACgCACIDQX9GDQEgACADQQFqNgIAIAJBBk8NAiAAQQRqIAG9IgSnIARCIIinEMIJIgNFDQMgAyACQQxsakHEAGoqAgAhBSAAIAAoAgBBAWs2AgAgBQ8LENQNAAsQ1Q0AC0HOt8AAQRkQ0w0AC0GcssAAQdAAQZyzwAAQlAwAC44BAgJ/AX4CQAJAIAAEQCAAKAIADQEgAEF/NgIAIABBBGogAb0iBacgBUIgiKcQ/wciA0UNAgJAAkAgAy0AYkEBTQRAIAINAkECIQQMAQsgAkUNAQsgAyAEOgBiIAMgAygCcEGAAnI2AnALIABBADYCAA8LENQNAAsQ1Q0AC0GMtsAAQcwAQZC3wAAQlAwAC44BAgJ/AX4jAEEQayIDJAACQAJAIAAEQCAAKAIAIgJBf0YNASAAIAJBAWo2AgAgAEEEaiABvSIEpyAEQiCIpxDtCiICRQ0CIANBCGogAikD2AI3AwAgAygCDCECIAAgACgCAEEBazYCACADQRBqJAAgAg8LENQNAAsQ1Q0AC0H0tMAAQc0AQey1wAAQlAwAC5gBAgF/AX4CQAJAAkACQCAABEAgACgCAA0BIABBfzYCACAAQQRqIAG9IgWnIAVCIIinEP4HIgRFDQIgBCoCnAIgAlsNBCADRQ0DIAQtANACRQ0DIARBADoA0AIgBCAEKAK4AkEEcjYCuAIMAwsQ1A0ACxDVDQALQfS0wABBzQBB/LXAABCUDAALIAQgAjgCnAILIABBADYCAAuHAQEBfyMAQTBrIgEkAAJAIAAEQCAAKAIADQEgAUEoaiAAQSRqKQIANwMAIAFBIGogAEEcaikCADcDACABQRhqIABBFGopAgA3AwAgAUEQaiAAQQxqKQIANwMAIAEgACkCBDcDCCAAQSxBBBC+DSABQQhqEJwHIAFBMGokAA8LENQNAAsQ1Q0AC90CAQR/IwBBMGsiAiQAIAJBCGohAyMAQSBrIgAkACAAQQA2AhggAEEIakEIQcALIABBFGoQjgcgACgCCARAIAAoAgwgACgCEBC+DAALIAAoAgwiAUHYCGpBADYCACABQgA3A9AIIAFB6AVqQQM2AgAgAUKAgICAEDcD4AUgAUH4AmpBAjYCACABQoCAgIAQNwPwAiABQQE2AgggAUKAgICAEDcDACADQgQ3AiAgA0IANwIYIANCBDcCECADIAE2AgwgA0EENgIIIANCATcCACAAQSBqJABBgYnEAC0AABpBLEEEENwMIgBFBEBBBEEsQYirxAAoAgAiAEHPByAAGxEAAAALIABBADYCACAAIAIpAgg3AgQgAEEMaiACQRBqKQIANwIAIABBFGogAkEYaikCADcCACAAQRxqIAJBIGopAgA3AgAgAEEkaiACQShqKQIANwIAIAJBMGokACAAC5wPAQp/IwBBMGsiBiQAAkAgAARAIAAoAgANASAGQShqIABBJGooAgA2AgAgBkEgaiAAQRxqKQIANwMAIAZBGGogAEEUaikCADcDACAGQRBqIABBDGopAgA3AwAgBiAAKQIENwMIIABBKEEEEL4NIAZBCGoiBxB4IAdBFGohBCAHKAIUIQMCQAJAAkACQAJAAkACQAJAAkAgBygCEEEBaw4FAQIDBAgACyADIAMoAoQCIgBBAWs2AoQCIABBAUcNByADELcBIAMtAIgCIQAgA0EBOgCIAiAARQ0HIAMoAtABIgAEQCADKALMASAAQRxsQQQQvg0LIANBhAFqEK8GIANBpAFqEK8GIANBwAJBwAAQvg0MBwsgAyADKALEASIAQQFrNgLEASAAQQFHDQYgAyADKAJAIgBBAXI2AkAgAEEBcQ0FQQAhACADKAJAIgFBPnFBPkYEQANAIABBBk0EQEEAIQEDQCABIAB2IQQgAUEBaiEBIARFDQALCyAAIABBC0lqIQAgAygCQCIBQT5xQT5GDQALCyADKAIEIQQgA0EANgIEAkAgAygCACICQQF2IgggAUEBdiIKRiIFDQAgBA0AA0AgAEEGTQRAQQAhAQNAIAEgAHYhBCABQQFqIQEgBEUNAAsLIAAgAEELSWohACADKAIEIgRFDQALCyAFRQRAA0ACQCAIQR9xIgBBH0YEQCAEKAIARQRAQQAhAANAIABBBk0EQEEAIQEDQCABIAB2IQUgAUEBaiEBIAVFDQALCyAAIABBC0lqIQAgBCgCAEUNAAsLIAQoAgAhACAEQegGQQQQvg0gACEEDAELIAQgAEEcbGpBHGoiCS0AAEEBcQ0AQQAhAANAIABBBk0EQEEAIQEDQCABIAB2IQUgAUEBaiEBIAVFDQALCyAAIABBC0lqIQAgCS0AAEEBcUUNAAsLIAogAkECaiICQQF2IghHDQALCyAEDQMMBAsgAyADKAI8IgBBAWs2AjwgAEEBRw0FIAMQxwEgAy0AQCEAIANBAToAQCAARQ0FIANBBGoQrwYgA0EcahCvBiADQcQAQQQQvg0MBQsgAyADKAIAIgBBAWs2AgAgAEEBRw0EIAQQuAsMBAsgAyADKAIAIgBBAWs2AgAgAEEBRw0DIAQQuQsMAwsgBEHoBkEEEL4NCyADIAJBfnE2AgALIAMtAMgBIQAgA0EBOgDIASAARQ0AIAMoAgQhACADKAIAQX5xIgEgAygCQEF+cSIFRwRAA0AgAUE+cUE+RgRAIAAoAgAhBCAAQegGQQQQvg0gBCEACyAFIAFBAmoiAUcNAAsLIAAEQCAAQegGQQQQvg0LIANBhAFqEK8GIANBgAJBwAAQvg0LIAdBHGohBCAHKAIcIQICQAJAAkACQAJAAkACQAJAAkAgBygCGEEBaw4FAQIDBAgACyACIAIoAoQCIgBBAWs2AoQCIABBAUcNByACELcBIAItAIgCIQAgAkEBOgCIAiAARQ0HIAIoAtABIgAEQCACKALMASAAQTRsQQQQvg0LIAJBhAFqEK8GIAJBpAFqEK8GIAJBwAJBwAAQvg0MBwsgAiACKALEASIAQQFrNgLEASAAQQFHDQYgAiACKAJAIgBBAXI2AkAgAEEBcQ0FQQAhACACKAJAIgFBPnFBPkYEQANAIABBBk0EQEEAIQEDQCABIAB2IQQgAUEBaiEBIARFDQALCyAAIABBC0lqIQAgAigCQCIBQT5xQT5GDQALCyACKAIEIQQgAkEANgIEAkAgAigCACIIQQF2IgkgAUEBdiIKRiIFDQAgBA0AA0AgAEEGTQRAQQAhAQNAIAEgAHYhBCABQQFqIQEgBEUNAAsLIAAgAEELSWohACACKAIEIgRFDQALCyAFRQRAA0ACQCAJQR9xIgBBH0YEQCAEKAIARQRAQQAhAANAIABBBk0EQEEAIQEDQCABIAB2IQUgAUEBaiEBIAVFDQALCyAAIABBC0lqIQAgBCgCAEUNAAsLIAQoAgAhACAEQdAMQQQQvg0gACEEDAELIAQgAEE0bGpBNGoiCS0AAEEBcQ0AQQAhAANAIABBBk0EQEEAIQEDQCABIAB2IQUgAUEBaiEBIAVFDQALCyAAIABBC0lqIQAgCS0AAEEBcUUNAAsLIAogCEECaiIIQQF2IglHDQALCyAEDQMMBAsgAiACKAI8IgBBAWs2AjwgAEEBRw0FIAIQxwEgAi0AQCEAIAJBAToAQCAARQ0FIAJBBGoQrwYgAkEcahCvBiACQcQAQQQQvg0MBQsgAiACKAIAIgBBAWs2AgAgAEEBRw0EIAQQuAsMBAsgAiACKAIAIgBBAWs2AgAgAEEBRw0DIAQQuQsMAwsgBEHQDEEEEL4NCyACIAhBfnE2AgALIAItAMgBIQAgAkEBOgDIASAARQ0AIAIoAgQhACACKAIAQX5xIgEgAigCQEF+cSIFRwRAA0AgAUE+cUE+RgRAIAAoAgAhBCAAQdAMQQQQvg0gBCEACyAFIAFBAmoiAUcNAAsLAkAgAEUEQAwBCyAAQdAMQQQQvg0LIAJBhAFqEK8GIAJBgAJBwAAQvg0LIAZBMGokAA8LENQNAAsQ1Q0AC4UBAQJ/IwBBEGsiBCQAAkAgAUEHakEAIAFrcSIDQQhrIANLDQAgAiADaiICIANJDQAgAkGAgICAeEEEIAEgAUEETRsiAWtLDQAgACABNgIAIAAgASACakEBa0EAIAFrcTYCBCAEQRBqJAAPC0G8zsMAQSsgBEEPakHozsMAQZTPwwAQrwgAC4IBAQF/IAAoAhwiAQRAIAAoAiAgAUEDdEEEEL4NCyAAKAIIIgEEQCAAKAIMIAFBDGxBBBC+DQsgACgCKCIBBEAgACgCLCABQQR0QQQQvg0LIAAoAjQiAQRAIAAoAjggAUGAA2xBCBC+DQsgACgCQCIBBEAgACgCRCABQQN0QQQQvg0LC5wBAQJ/IwBBEGsiASQAAkACQCAABEAgACgCAEF/Rg0BIAFBCGoiAiAAQdgAaigCADYCAEGBicQALQAAGiABIAApAlA3AwBBEEEEENwMIgBFDQIgAEEANgIAIAAgASkDADcCBCAAQQxqIAIoAgA2AgAgAUEQaiQAIAAPCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALmwEBAn8jAEEQayIBJAACQAJAIAAEQCAAKAIAQX9GDQEgAUEIaiICIABBMGooAgA2AgBBgYnEAC0AABogASAAKQIoNwMAQRBBBBDcDCIARQ0CIABBADYCACAAIAEpAwA3AgQgAEEMaiACKAIANgIAIAFBEGokACAADwsQ1A0ACxDVDQALQQRBEEGIq8QAKAIAIgBBzwcgABsRAAAAC5sBAQJ/IwBBEGsiASQAAkACQCAABEAgACgCAEF/Rg0BIAFBCGoiAiAAQTxqKAIANgIAQYGJxAAtAAAaIAEgACkCNDcDAEEQQQQQ3AwiAEUNAiAAQQA2AgAgACABKQMANwIEIABBDGogAigCADYCACABQRBqJAAgAA8LENQNAAsQ1Q0AC0EEQRBBiKvEACgCACIAQc8HIAAbEQAAAAucAQECfyMAQRBrIgEkAAJAAkAgAARAIAAoAgBBf0YNASABQQhqIgIgAEHMAGooAgA2AgBBgYnEAC0AABogASAAKQJENwMAQRBBBBDcDCIARQ0CIABBADYCACAAIAEpAwA3AgQgAEEMaiACKAIANgIAIAFBEGokACAADwsQ1A0ACxDVDQALQQRBEEGIq8QAKAIAIgBBzwcgABsRAAAAC5wBAQJ/IwBBEGsiASQAAkACQCAABEAgACgCAEF/Rg0BIAFBCGoiAiAAQeQAaigCADYCAEGBicQALQAAGiABIAApAlw3AwBBEEEEENwMIgBFDQIgAEEANgIAIAAgASkDADcCBCAAQQxqIAIoAgA2AgAgAUEQaiQAIAAPCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALgwEBBn8CQCAABEAgACgCAA0BIAAoAiAhBCAAKAIcIQEgACgCFCEFIAAoAhAhAiAAKAIIIQYgACgCBCEDIABBPEEEEL4NIAMEQCAGIANB1AFsQQQQvg0LIAIEQCAFIAJBDGxBBBC+DQsgAQRAIAQgAUEMbEEEEL4NCw8LENQNAAsQ1Q0AC4oBAQF/AkACQCAARQ0AIAAoAgANASAAQX82AgAgAkUNACACKAIAIgNBf0YNASACIANBAWo2AgAgAiABIAAoAgxJBH8gACgCCCABQdQBbGoiASACKQIENwJcIAFB5ABqIAJBDGooAgA2AgAgAigCAEEBawUgAws2AgAgAEEANgIADwsQ1A0ACxDVDQALigEBAX8CQAJAIABFDQAgACgCAA0BIABBfzYCACACRQ0AIAIoAgAiA0F/Rg0BIAIgA0EBajYCACACIAEgACgCDEkEfyAAKAIIIAFB1AFsaiIBIAIpAgQ3AmggAUHwAGogAkEMaigCADYCACACKAIAQQFrBSADCzYCACAAQQA2AgAPCxDUDQALENUNAAuKAQEBfwJAAkAgAEUNACAAKAIADQEgAEF/NgIAIAJFDQAgAigCACIDQX9GDQEgAiADQQFqNgIAIAIgASAAKAIMSQR/IAAoAgggAUHUAWxqIgEgAikCBDcCdCABQfwAaiACQQxqKAIANgIAIAIoAgBBAWsFIAMLNgIAIABBADYCAA8LENQNAAsQ1Q0AC50BAgF/AX4CQAJAAkAgAEUNACAAKAIADQEgAEF/NgIAIAJFDQAgAigCACIDQX9GDQEgAiADQQFqNgIAIABBBGogAb0iBKcgBEIgiKcQ/gciA0UNAiADQaABaiACQQRqIANB1AJqIANBMGoQnQEgAiACKAIAQQFrNgIAIABBADYCAA8LENQNAAsQ1Q0AC0H0tMAAQc0AQfy1wAAQlAwAC5IBAgF/AX4CQAJAIAEEQCABKAIAIgNBf0YNASABIANBAWo2AgAgAUEEaiACvSIEpyAEQiCIpxDuCiIDRQ0CIAMrAgQhAiADKAIAIQMgASABKAIAQQFrNgIAIAAgAkQAAAAAAAAAACADGzkDCCAAIANBAEc2AgAPCxDUDQALENUNAAtBjLbAAEHMAEGAt8AAEJQMAAubAQECfyMAQRBrIgEkAAJAAkAgAARAIAAoAgBBf0YNASABQQhqIgIgAEEMaigCADYCAEGBicQALQAAGiABIAApAgQ3AwBBEEEEENwMIgBFDQIgAEEANgIAIAAgASkDADcCBCAAQQxqIAIoAgA2AgAgAUEQaiQAIAAPCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALmwEBAn8jAEEQayIBJAACQAJAIAAEQCAAKAIAQX9GDQEgAUEIaiICIABBFGooAgA2AgBBgYnEAC0AABogASAAKQIMNwMAQRBBBBDcDCIARQ0CIABBADYCACAAIAEpAwA3AgQgAEEMaiACKAIANgIAIAFBEGokACAADwsQ1A0ACxDVDQALQQRBEEGIq8QAKAIAIgBBzwcgABsRAAAAC7wlAih/BH4jAEEgayIMJAAgDCABNgIQIAwgADYCDCAMIAE2AgggDCADNgIcIAwgAjYCGCAMIAM2AhQgDEEUaiEZIAQhA0EAIQBBACEEIwBBIGsiDSQAIAxBCGoiHygCBCEgQQQhAkEEIQYCQAJAAkACQAJAAkAgHygCCCIBBEAgAUEDbiIOIAEgDkEDbEdqIgUEQCAFQQxsIQ4gBUGq1arVAEsNAyAOQQBIDQNBgYnEAC0AABpBBCEAIA5BBBDcDCIGRQ0DC0EAIQADQCABQQJNDQIgBCAGaiIOIAQgIGoiCCoCADgCACAOQQRqIAhBBGopAgA3AgAgBEEMaiEEIABBAWohACABQQNrIgENAAsLIA0gADYCECANIAY2AgwgDSAFNgIIIBkoAgQhDkEAIQZBACEFIBkoAggiBARAQQAhACAEQQNuIgEgBCABQQNsR2oiBgRAIAZBDGwhASAGQarVqtUASw0GIAFBAEgNBkGBicQALQAAGkEEIQAgAUEEENwMIgJFDQYLIAIhASAOIQADQCAEQQFGDQQgBEECTQ0FIAEgACgCADYCACABQQRqIAApAgQ3AgAgAUEMaiEBIAVBAWohBSAAQQMgBCAEQQNPGyIIQQJ0aiEAIAQgCGsiBA0ACwsgDSAFNgIcIA0gAjYCGCANIAY2AhQjAEHQAWsiGiQAIBpBDGohIiANQQhqIQAgA0EAIANB//8DcUGAAkkbIRAjAEHgAWsiCCQAAkAgDUEUaiIBKAIIBEAgCEHYAGogAEEIaigCADYCACAIQeQAaiABQQhqKAIANgIAIAhCBDcCSCAIQgA3AkAgCEKAgICAwAA3AjggCEIENwIwIAhCADcCKCAIQoCAgICAAjcCICAIQv////v///+/fzcCGCAIQv////v3//+/fzcCECAIQv////v3//+//wA3AgggCEGAgICAeDYCaCAIQYCAgIB4NgKAASAIQYCAgIB4NgKkASAIQQA7AcgBIAggACkCADcCUCAIIAEpAgA3AlwgCEHMAWohG0EAIQJBACEEIwBBgAFrIgUkACAIQQhqIgYoAlwhEiAQQQFxRQRAAkAgBigCeCIAQYCAgIB4Rg0AIAAEQCAGKAJ8IABBAnRBBBC+DQsgBigChAEiAARAIAYoAogBIABBAnRBBBC+DQsgBigCkAEiAEUNACAGKAKUASAAQQR0QQQQvg0LIAZBgICAgHg2AngLIBBBCHFFBEACQCAGKAJgIgBBgICAgHhGDQAgAARAIAYoAmQgAEEMbEEEEL4NCyAGKAJsIgBFDQAgBigCcCAAQSRsQQQQvg0LIAZBgICAgHg2AmALIBBBAnEiI0UEQAJAIAYoApwBIgBBgICAgHhGDQAgAARAIAYoAqABIABBAnRBBBC+DQsgBigCqAEiAARAIAYoAqwBIABBAnRBBBC+DQsgBigCtAEiAEUNACAGKAK4ASAAQQJ0QQQQvg0LIAZBgICAgHg2ApwBCwJAIAYvAcABQX9zIBBxIiRB8ABxRQ0AIAVBADYCECAFQRxqQdCSwgApAwA3AgAgBUKAgICAwAA3AgggBUHIksIAKQMANwIUQQQhEUEEIQECQAJAAkACQAJAAkAgBigCUCILBEAgC0EMbCEAIAtBqtWq1QBLDQEgAEEASA0BQYGJxAAtAAAaQQQhByAAQQQQ3AwiAUUNAQsgBUEANgIwIAUgATYCLCAFIAs2AigCQCASBEAgEkEMbCEAIBJBqtWq1QBLDQEgAEEASA0BQYGJxAAtAAAaQQQhAiAAQQQQ3AwiEUUNAQsgBSARNgI4IAUgEjYCNCAFQQA2AjwCfkH4rsQAKQMAQgBSBEBBiK/EACkDACEuQYCvxAApAwAMAQtBiK/EAEICNwMAQfiuxABCATcDAEICIS5CAQshLSAFQcgAakHQksIAKQMANwMAIAUgLTcDUEGAr8QAIC1CAXw3AwAgBSAuNwNYIAVByJLCACkDADcDQCAGKAJYIQMgEkUNBiAQQSBxIRwgAyASQQxsaiEdIAYoAkwhDyAQQcAAcUUNAiAFQdAAaiElIAMhBANAIAsgBCgCACIBTQ0EIAUgDyABQQxsaiAFQQhqIAVBKGoQqwEiFjYCYCALIAQoAgQiAU0NBSAFIA8gAUEMbGogBUEIaiAFQShqEKsBIhc2AmQgCyAEKAIIIgFNDQYgBSAPIAFBDGxqIAVBCGogBUEoahCrASITNgJoAkACQAJAIBYgF0YNACATIBZGDQAgHEUNASATIBdHDQEMAgsgHA0BCwJAIBYgF00EQCATIBZJBEAgBUHoAGohASAFQeAAaiECIAVB5ABqIQcMAgsgBUHoAGoiACAFQeQAaiIBIBMgF0kiBxshAiABIAAgBxshByAFQeAAaiEBDAELIBMgFk8EQCAFQeQAaiEBIAVB4ABqIQIgBUHoAGohBwwBCyAFQegAaiIAIAVB5ABqIgIgEyAXSSIHGyEBIAIgACAHGyECIAVB4ABqIQcLIAUgASgCACImNgJ0IAUgAigCACInNgJwIAUgBygCACIoNgJsIAUpA1AgBSkDWCAFQewAahDNAyEuIAUoAkhFBEAjAEEwayIJJAAgCSAlNgIoIAVBQGsiBygCDCEAIAkgCUEoajYCLAJAIABBAWoiAARAIAcoAgQiASABQQFqQQN2QQdsIAFBCEkbIgFBAXYgAEkEQAJAAkACfyAAIAFBAWogACABSxsiAUEITwRAQX8gAUEDdEEHbkEBa2d2QQFqIAFB/////wFNDQEaELoKIAkoAiAaDAYLQQRBCCABQQRJGwsiAK1CDH4iLUIgiKcNACAtpyICQQdqIQEgASACSQ0AIAFBeHEiCiAAQQhqIhRqIQEgASAKSQ0AIAFB+f///wdJDQELELoKIAkoAhAaDAMLQQghAgJAIAFFDQBBgYnEAC0AABogAUEIENwMIgINAEEIIAFBiKvEACgCACIAQc8HIAAbEQAAAAsgAiAKakH/ASAUEOcNIQogAEEBayIUIABBA3ZBB2wgAEEJSRshKSAHKAIAIQAgBygCDCIhBH8gCkEIaiEqIAApAwBCf4VCgIGChIiQoMCAf4MhLUEAIR4DQCAtUARAIAAhAQNAIB5BCGohHiABKQMIIS0gAUEIaiIAIQEgLUJ/hUKAgYKEiJCgwIB/gyItUA0ACwsgCiAJKAIsKAIAIgEpAwAgAUEIaikDACAHKAIAIC16p0EDdiAeaiIrQXRsakEMaxDNA6ciLCAUcSICaikAAEKAgYKEiJCgwIB/gyIvUARAQQghAQNAIAEgAmohAiABQQhqIQEgCiACIBRxIgJqKQAAQoCBgoSIkKDAgH+DIi9QDQALCyAtQgF9IC2DIS0gCiAveqdBA3YgAmogFHEiAWosAABBAE4EQCAKKQMAQoCBgoSIkKDAgH+DeqdBA3YhAQsgASAKaiAsQRl2IgI6AAAgKiABQQhrIBRxaiACOgAAIAogAUF/c0EMbGoiASAHKAIAICtBf3NBDGxqIgIpAAA3AAAgAUEIaiACQQhqKAAANgAAICFBAWsiIQ0ACyAHKAIAIQAgBygCDAVBAAshAiAHIAo2AgAgBygCBCEBIAcgFDYCBCAHICkgAms2AgggAUUNAiABIAFBDGxBE2pBeHEiAWpBCWoiAkUNAiAAIAFrIAJBCBC+DQwCCyAHIAlBLGpB3wFBDBDIAQwBCxC6CiAJKAIIGgsgCUEwaiQACyAuQhmIIi9C/wCDQoGChIiQoMCAAX4hMCAupyECQQAhByAFKAJEIQogBSgCQCEJQQAhAANAIAIgCnEiAiAJaikAACIuIDCFIi1CgYKEiJCgwIABfSAtQn+Fg0KAgYKEiJCgwIB/gyItQgBSBEADQAJAICggCSAteqdBA3YgAmogCnFBdGxqIgFBDGsoAgBHDQAgJyABQQhrKAIARw0AICYgAUEEaygCAEYNBAsgLUIBfSAtgyItQgBSDQALCyAuQoCBgoSIkKDAgH+DIS1BASEBIABBAUcEQCAteqdBA3YgAmogCnEhFSAtQgBSIQELIC0gLkIBhoNCAFIEQCAJIBVqLAAAIgFBAE4EQCAJIAkpAwBCgIGChIiQoMCAf4N6p0EDdiIVai0AACEBCyAJIBVqIC+nQf8AcSIAOgAAIAkgFUEIayAKcWpBCGogADoAACAJIBVBdGxqQQxrIgBBCGogBUH0AGooAgA2AgAgACAFKQJsNwIAIAUgBSgCTEEBajYCTCAFIAUoAkggAUEBcWs2AkggBSgCNCAYRgRAIAVBNGoQzgYgBSgCOCERCyARIBhBDGxqIgAgEzYCCCAAIBc2AgQgACAWNgIAIAUgGEEBaiIYNgI8BSACIAdBCGoiB2ohAiABIQAMAQsLCyAdIARBDGoiBEcNAAsMBgsgAiAAEL4MAAsgByAAEL4MAAsgHEUEQEEAIQJBASEHA0AgCyACIANqIgAoAgAiAU0NAiAPIAFBDGxqIAVBCGogBUEoahCrASEEIAsgAEEEaigCACIBTQ0DIA8gAUEMbGogBUEIaiAFQShqEKsBIQkgCyAAQQhqKAIAIgFNDQQgDyABQQxsaiAFQQhqIAVBKGoQqwEhCiAFKAI0IAdBAWtGBEAgBUE0ahDOBiAFKAI4IRELIAIgEWoiASAENgIAIAFBCGogCjYCACABQQRqIAk2AgAgAkEMaiECIAUgBzYCPCAHQQFqIQcgAEEMaiAdRw0ACwwECyADIQIDQCALIAIoAgAiAU0NASAPIAFBDGxqIAVBCGogBUEoahCrASEAIAsgAkEEaigCACIBTQ0CIA8gAUEMbGogBUEIaiAFQShqEKsBIQcgCyACQQhqKAIAIgFNDQMgDyABQQxsaiAFQQhqIAVBKGoQqwEhAQJAIAAgB0YNACAAIAFGDQAgASAHRg0AIAUoAjQgBEYEQCAFQTRqEM4GIAUoAjghEQsgESAEQQxsaiIJIAE2AgggCSAHNgIEIAkgADYCACAFIARBAWoiBDYCPAsgHSACQQxqIgJHDQALDAMLIAEgC0HMiMMAEJkJAAsgASALQdyIwwAQmQkACyABIAtB7IjDABCZCQALAkAgBSgCKCIBIAUoAjAiAEsEQCABQQxsIQIgBSgCLCEEAkAgAEUEQEEEIQEgBCACQQQQvg0MAQsgBCACQQQgAEEMbCICEL8MIgFFDQILIAUgADYCKCAFIAE2AiwLIAZB1ABqIQAgBkHIAGoiASgCACICBEAgBigCTCACQQxsQQQQvg0LIAEgBSkCKDcCACABQQhqIAVBMGooAgA2AgAgACgCACIBBEAgAyABQQxsQQQQvg0LIAAgBSkCNDcCACAAQQhqIAVBPGooAgA2AgAgBigCYEGAgICAeEcEQCAGEDALIAYoAnhBgICAgHhHBEAgBUHsAGogBiAGKAKcAUGAgICAeEdBABAyCwJAIAUoAkQiAEUNACAAIABBDGxBE2pBeHEiAGpBCWoiAUUNACAFKAJAIABrIAFBCBC+DQsCQCAFKAIYIgBFDQAgACAAQQJ0QQtqQXhxIgBqQQlqIgFFDQAgBSgCFCAAayABQQgQvg0LIAUoAggiAEUNASAFKAIMIABBFGxBBBC+DQwBC0EEIAIQvgwACyAkQf8BcSIBQQdxBH8gBUFAayAGICNBAEcgEEEEcUECdhAyIAVBEGogBUHMAGopAgA3AwAgBSAFKQJENwMIIAUoAkAFQQILIQAgAUEIcQRAIAYQMAsgBigCXCASRwRAIAYQYwsgGyAANgIAIAYgEDsBwAEgGyAFKQMINwIEIBtBDGogBUEQaikDADcCACAFQYABaiQAIAgoAihFBEAgCEEIahBjCyAiIAhBCGpBxAEQ5Q0aIAhB4AFqJAAMAQsgCEEANgIYIAhBATYCDCAIQZiHwwA2AgggCEIENwIQIAhBCGpBjIjDABCRCwALQYGJxAAtAAAaQcwBQQQQ3AwiAEUEQEEEQcwBQYirxAAoAgAiAEHPByAAGxEAAAALIABCgYCAgBA3AgAgAEEIaiAaQQxqQcQBEOUNGiANQYjrwgA2AgQgDSAANgIAIBpB0AFqJAAgDSgCBCEAIA0oAgAhASAZKAIAIgIEQCAOIAJBAnRBBBC+DQsgHygCACICBEAgICACQQJ0QQQQvg0LIAwgATYCACAMIAA2AgQgDUEgaiQADAULQeSawABBywBBoJzAABDQCwALIAAgDhC+DAALQQFBAUGUusAAEJkJAAtBAkECQaS6wAAQmQkACyAAIAEQvgwAC0GBicQALQAAGiAMKAIEIQEgDCgCACECQQxBBBDcDCIARQRAQQRBDEGIq8QAKAIAIgBBzwcgABsRAAAACyAAIAI2AgQgAEEANgIAIAAgATYCCCAMQSBqJAAgAAubAQECfyMAQRBrIgEkAAJAAkAgAARAIAAoAgBBf0YNASABQQhqIgIgAEEQaigCADYCAEGBicQALQAAGiABIAApAgg3AwBBEEEEENwMIgBFDQIgAEEANgIAIAAgASkDADcCBCAAQQxqIAIoAgA2AgAgAUEQaiQAIAAPCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALmwEBAn8jAEEQayIBJAACQAJAIAAEQCAAKAIAQX9GDQEgAUEIaiICIABBKGooAgA2AgBBgYnEAC0AABogASAAKQIgNwMAQRBBBBDcDCIARQ0CIABBADYCACAAIAEpAwA3AgQgAEEMaiACKAIANgIAIAFBEGokACAADwsQ1A0ACxDVDQALQQRBEEGIq8QAKAIAIgBBzwcgABsRAAAAC5sBAQJ/IwBBEGsiASQAAkACQCAABEAgACgCAEF/Rg0BIAFBCGoiAiAAQTRqKAIANgIAQYGJxAAtAAAaIAEgACkCLDcDAEEQQQQQ3AwiAEUNAiAAQQA2AgAgACABKQMANwIEIABBDGogAigCADYCACABQRBqJAAgAA8LENQNAAsQ1Q0AC0EEQRBBiKvEACgCACIAQc8HIAAbEQAAAAubAQECfyMAQRBrIgEkAAJAAkAgAARAIAAoAgBBf0YNASABQQhqIgIgAEEYaigCADYCAEGBicQALQAAGiABIAApAhA3AwBBEEEEENwMIgBFDQIgAEEANgIAIAAgASkDADcCBCAAQQxqIAIoAgA2AgAgAUEQaiQAIAAPCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALmwEBAn8jAEEQayIBJAACQAJAIAAEQCAAKAIAQX9GDQEgAUEIaiICIABBJGooAgA2AgBBgYnEAC0AABogASAAKQIcNwMAQRBBBBDcDCIARQ0CIABBADYCACAAIAEpAwA3AgQgAEEMaiACKAIANgIAIAFBEGokACAADwsQ1A0ACxDVDQALQQRBEEGIq8QAKAIAIgBBzwcgABsRAAAAC5sBAQJ/IwBBEGsiASQAAkACQCAABEAgACgCAEF/Rg0BIAFBCGoiAiAAQRxqKAIANgIAQYGJxAAtAAAaIAEgACkCFDcDAEEQQQQQ3AwiAEUNAiAAQQA2AgAgACABKQMANwIEIABBDGogAigCADYCACABQRBqJAAgAA8LENQNAAsQ1Q0AC0EEQRBBiKvEACgCACIAQc8HIAAbEQAAAAubAQECfyMAQRBrIgEkAAJAAkAgAARAIAAoAgBBf0YNASABQQhqIgIgAEEsaigCADYCAEGBicQALQAAGiABIAApAiQ3AwBBEEEEENwMIgBFDQIgAEEANgIAIAAgASkDADcCBCAAQQxqIAIoAgA2AgAgAUEQaiQAIAAPCxDUDQALENUNAAtBBEEQQYirxAAoAgAiAEHPByAAGxEAAAALhgEBAn8CQCAAKAIQIAFNDQAgACgCDCABQfACbGoiAygCAEUNACADKAIEIAJHDQAgA0EIaiEEIAMtAMACQQFxDQAgA0EBNgLAAiAAKAIkIgMgACgCHEYEQCAAQRxqENAGCyAAIANBAWo2AiQgACgCICADQQN0aiIAIAI2AgQgACABNgIACyAEC4QBAQJ/AkAgACgCECABTQ0AIAAoAgwgAUGoAWxqIgMoAgBFDQAgAygCBCACRw0AIANBCGohBCADLQB4QQFxDQAgA0EBNgJ4IAAoAiQiAyAAKAIcRgRAIABBHGoQ0AYLIAAgA0EBajYCJCAAKAIgIANBA3RqIgAgAjYCBCAAIAE2AgALIAQLhwECAX0BfyMAQTBrIgQkACAEQQhqIAAgASACQ///f38QQSAEKAIcQQRGBEBBoMvCABDIDQALIAQtABQhACAEKgIIIAEqAgCTIgMgA5QgBCoCDCABKgIEkyIDIAOUkiAEKgIQIAEqAgiTIgMgA5SSEJIBIQMgBEEwaiQAIAMgA4wgAyAAGyACGwuOAQEIfSABKgIYIQUgASoCDCIGIAEqAgAiB5MiAiAClCABKgIQIgIgASoCBCIIkyIDIAOUkiABKgIUIgMgASoCCCIJkyIEIASUkhCSASEEIAAgAyAJkkMAAAA/lDgCCCAAIAIgCJJDAAAAP5Q4AgQgACAGIAeSQwAAAD+UOAIAIAAgBSAEQwAAAD+UkjgCDAumAQEBfyMAQaACayIDJAAgA0HgAGoiBCABEN8BIAMgBCACEKoCAkACQCADKAIAQYCAgIB4RgRAQQAhAQwBCyADQcABaiADQeAAEOUNGkGBicQALQAAGkHgAEEEENwMIgFFDQEgASADQcABakHgABDlDRoLIABB5NvCADYCBCAAIAE2AgAgA0GgAmokAA8LQQRB4ABBiKvEACgCACIAQc8HIAAbEQAAAAu/AQIBfwJ+QYGJxAAtAAAaQegAQQQQ3AwiAEUEQEEEQegAQYirxAAoAgAiAEHPByAAGxEAAAALIABBADYCKCAAQoCAgIDAADcCICAAQgQ3AhggAEL/////DzcCECAAQgQ3AgggAEIANwIAIABCBDcCTCAAQgA3AkQgAEKAgICAwAA3AjwgAEEAOwFkIABBoIDAACkCACIBNwIsIABBNGpBqIDAACkCACICNwIAIAAgATcCVCAAQdwAaiACNwIAIAALmAEBA38CQAJAIAAEQCAAKAIAIgNBf0YNASAAIANBAWo2AgAgACgCBCICKAIIIQQgAigCBCECIAAgAzYCAEEAIQAgASAESQRAQYGJxAAtAAAaQQhBBBDcDCIARQ0DIAAgAiABQagBbGo2AgQgAEEANgIACyAADwsQ1A0ACxDVDQALQQRBCEGIq8QAKAIAIgBBzwcgABsRAAAAC8gGAQl/IwBBIGsiBiQAIAYgATYCECAGIAA2AgwgBiABNgIIIAYgAzYCHCAGIAI2AhggBiADNgIUIAZBFGohCUEAIQBBACECIwBBMGsiBCQAIAZBCGoiCigCBCELAkACQAJAAkACQAJAIAooAggiAUUEQEEEIQMMAQtBBCEDIAEgAUEDbiICQQNsRyACaiICBEAgAkEMbCEFIAJBqtWq1QBLDQMgBUEASA0DQYGJxAAtAAAaQQQhACAFQQQQ3AwiA0UNAwtBACEFQQAhAANAIAFBAk0NAiADIAVqIgcgBSALaiIIKgIAOAIAIAdBBGogCEEEaikCADcCACAFQQxqIQUgAEEBaiEAIAFBA2siAQ0ACwsgBCAANgIgIAQgAzYCHCAEIAI2AhggCSgCBCEDAkAgCSgCCCIFRQRAIARBgICAgHg2AiQgBCAEQRhqIARBJGoQgAogBCgCBCEFIAQoAgAhAQwBCwJAIAVBAXEgBUEBdmoiB0UEQEEEIQIMAQsgB0EDdCEBIAdB/////wBLBEBBACEADAYLQYGJxAAtAAAaQQQhACABQQQQ3AwiAkUNBQtBACEIIAIhASADIQADQCAFQQFGDQQgASAAKQIANwIAIAFBCGohASAIQQFrIQggAEECIAUgBUECTxsiDEECdGohACAFIAxrIgUNAAsgCEUEQCAEQYCAgIB4NgIkIARBCGogBEEYaiAEQSRqEIAKIAQoAgwhBSAEKAIIIQEgB0UNASACIAdBA3RBBBC+DQwBCyAEQQAgCGs2AiwgBCACNgIoIAQgBzYCJCAEQRBqIARBGGogBEEkahCACiAEKAIUIQUgBCgCECEBCyAJKAIAIgAEQCADIABBAnRBBBC+DQsgCigCACIABEAgCyAAQQJ0QQQQvg0LIAYgATYCACAGIAU2AgQgBEEwaiQADAQLQeSawABBywBBoJzAABDQCwALIAAgBRC+DAALQQFBAUGEusAAEJkJAAsgACABEL4MAAtBgYnEAC0AABogBigCBCEBIAYoAgAhAkEMQQQQ3AwiAEUEQEEEQQxBiKvEACgCACIAQc8HIAAbEQAAAAsgACACNgIEIABBADYCACAAIAE2AgggBkEgaiQAIAALgAEBA38jAEEgayIBJAACQCAABEAgACgCACICQX9GDQEgACACQQFqNgIAIAFBCGogACgCFCICIAAoAhgiAxBiIAEoAghBAkcEQANAIAFBCGogAiADEGIgASgCCEECRw0ACwsgACAAKAIAQQFrNgIAIAFBIGokAA8LENQNAAsQ1Q0AC34BBX0CfyABKgIEIgYgAioCBIyUIAIqAgAgASoCACIHlJMgAioCCCABKgIIIgiUkyIJQwAAAABeBEBBASAEDQEaCyAJIAcgAioCDJQgBiACKgIQlJIgCCACKgIUlJKVIgVDAAAAAGAgAyAFYHELIQEgACAFOAIEIAAgATYCAAuRAQICfQF/IwBBIGsiBCQAIAEqAgAiAiAClCABKgIEIgIgApSSIAEqAggiAiAClJIQkgEhAiABKgIMIgNDAAAAAGBFBEAgBEEANgIYIARBATYCDCAEQaydwgA2AgggBEIENwIQIARBCGpBuLrDABCRCwALIABBADYCCCAAQgA3AgAgACACIAOSOAIMIARBIGokAAuSAQIEfwF+IwBBIGsiAiQAIAEoAgBBgICAgHhGBEAgASgCDCEDIAJBFGoiBEEIaiIFQQA2AgAgAkKAgICAEDcCFCAEQcDFwwAgAxC+AhogAkEQaiAFKAIAIgM2AgAgAiACKQIUIgY3AwggAUEIaiADNgIAIAEgBjcCAAsgAEG0ysMANgIEIAAgATYCACACQSBqJAALfwICfwJ+IwBBQGoiAyQAIANBHGoiBCABIAJBARBGIANBEGogBEEIaikCACIFNwMAIAMgAykCHCIGNwMIIAMoAjAhAiADKAIsIQEgAEEIaiAFNwIAIAAgBjcCACAAIAJBACABQQNJIgIbNgIUIAAgAUECIAIbNgIQIANBQGskAAuFAQICfwF+AkACQCAABEAgACgCACICQX9GDQEgACACQQFqNgIAIABBBGogAb0iBKcgBEIgiKcQ7goiAkUNAiACQcwAaigCACEDIAJByABqKAIAIQIgACAA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DCEQAkAgBEEATA0AIApBAWshEgJAIARBAXFFBEAgBCEJDAELIBAgBkEMbGoiByANIARBAWoiCSAEIBJGIgwbNgIIIAcgD0EBIAwbNgIEIAdBADYCACAGQQFqIQYLIARBAUYNACAJIAprQQFqIQwgECAGQQxsaiEHA0AgB0EANgIAIAdBDGpBADYCACAHQQRqQQEgDyAMGzYCACAHQQhqIAlBAWoiDiANIAwbNgIAIAdBFGogDSAJQQJqIgkgDiASRiIOGzYCACAHQRBqIA9BASAOGzYCACAMQQJqIQwgB0EYaiEHIAZBAmohBiAJIApHDQALCyAFIAY2AhACQAJAIAQgBkkEQCAQIARBDGxqIgYoAgANASAGQQE2AgAgBSAGKQIENwIAIAZBADYCCCAGIAUoAhQiBjYCBCAFIAUoAhhBAWo2AhggESAGNgIEIBEgBDYCACAIQTBqJAAMAgsgBCAGQZidwAAQmQkACyAIQQA2AiggCEEBNgIcIAhBvJ3AADYCGCAIQgQ3AiAgCEEYakHEncAAEJELAAsgCygCDCEQIAsoAgghDwsgC0EgakIANwMAIAtBGGpCADcDACALQgA3AxAgBUEcaiITIAK9IhenIgwgF0IgiKciERCgBSgCACEJIBMgA70iF6ciDSAXQiCIpyISEKAFKAIAIQogCUF/RgRAIAUoAjAiCUF/Rg0DIAVBKGoiBCgCACAJRgRAIAQQzAYLIAUgCUEBajYCMCAFKAIsIAlBBHRqIgRCfzcCCCAEIBE2AgQgBCAMNgIAAkAgBSgCJCIHIAxLBEAgByEEDAELIAcgDEEBaiIESQRAIAQgByIGayEOIA4gEygCACAGa0sEQCAFQRxqIAcgDhCwBiAFKAIkIQYLIAUoAiAgBkEDdGohBCAOQQJPBEAgDCAHayIWQQdxIQggByAMa0F4TQRAIBZBeHEhBwNAIARC/////w83AgAgBEE4akL/////DzcCACAEQTBqQv////8PNwIAIARBKGpC/////w83AgAgBEEgakL/////DzcCACAEQRhqQv////8PNwIAIARBEGpC/////w83AgAgBEEIakL/////DzcCACAEQUBrIQQgB0EIayIHDQALCyAIBEADQCAEQv////8PNwIAIARBCGohBCAIQQFrIggNAAsLIAYgDmpBAWshBgsgBEL/////DzcC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aiABQRxqEOsKIAEoAgQiBUGEAU8EQCAFEAILIAEoAhwiBUGEAUkNACAFEAILIAJBqAFqIQIgBEEBaiEEDAELCyAAIAAoAgBBAWs2AgAgA0EQaiQADwsQ1A0ACxDVDQAL1AEBBH8jAEEQayIFJAAgBUEIaiEGQYGJxAAtAAAaQRhBBBDcDCIERQRAQQRBGEGIq8QAKAIAIgRBzwcgBBsRAAAACyAEIAM4AhQgBCACOAIQIAQgATgCDCAEIAA4AgggBEKBgICAEDcCACAGQcSVwwA2AgQgBiAENgIAQYGJxAAtAAAaIAUoAgwhBiAFKAIIIQdBDEEEENwMIgRFBEBBBEEMQYirxAAoAgAiBEHPByAEGxEAAAALIAQgBjYCCCAEIAc2AgQgBEEANgIAIAVBEGokACAEC88WAxV/A34BfQJAAkAgAEUNACAAKAIADQEgAEF/NgIAIAFFDQAgASgCACICQX9GDQEgASACQQFqNgIAIwBB4AJrIgQkACAAQQRqIggqApgBIRogCEEANgKAASAIQQA2AmggBEEBOgAHAkACQAJAAkAgAUEEaiIFKAIYIgIEQCACQQJ0IQYgAkH/////AUsNAkGBicQALQAAGkEEIQMgBkEEENwMIgpFDQIgBEEANgIQIAQgCjYCDCAEIAI2AgggAkEYbCEKIAJB1arVKksNAyAKQQBIDQNBgYnEAC0AABpBBCEHIApBBBDcDCIGRQ0DIAYhAwJAIAJBAUYNACACQQFrIgpBA3EhCSACQQJrQQNPBEAgCkF8cSEHA0AgA0L////7////v383AhAgA0L////79///v383AgggA0L////79///v/8ANwIAIANB2ABqQv////v///+/fzcCACADQdAAakL////79///v383AgAgA0HIAGpC////+/f//7//ADcCACADQUBrQv////v///+/fzcCACADQThqQv////v3//+/fzcCACADQTBqQv////v3//+//wA3AgAgA0EoakL////7////v383AgAgA0EgakL////79///v383AgAgA0EYakL////79///v/8ANwIAIANB4ABqIQMgB0EEayIHDQALCyAJRQ0AA0AgA0L////7////v383AhAgA0L////79///v383AgggA0L////79///v/8ANwIAIANBGGohAyAJQQFrIgkNAAsLIANC////+/f//7//ADcCACADQv////v///+/fzcCECADQv////v3//+/fzcCCCAEIAI2AhwgBCAGNgIYIAQgAjYCFEGBicQALQAAGiACQQR0IgZBBBDcDCILBEAgCyEDAkAgAkEBRg0AIAJBAWsiBkEDcSEJIAJBAmtBA08EQCAGQXxxIQcDQCADQn83AgggA0EAOgAEIANBfzYCACADQThqQn83AgAgA0E0akEAOgAAIANBMGpBfzYCACADQShqQn83AgAgA0EkakEAOgAAIANBIGpBfzYCACADQRhqQn83AgAgA0EUakEAOgAAIANBEGpBfzYCACADQUBrIQMgB0EEayIHDQALCyAJRQ0AA0AgA0J/NwIIIANBADoABCADQX82AgAgA0EQaiEDIAlBAWsiCQ0ACwsgA0J/NwIIIANBADoABCADQX82AgAMAgtBBCAGEL4MAAsgBEEANgIQIARCgICAgMAANwIIIARBADYCHCAEQoCAgIDAADcCFEEEIQsLIAgoAoQBIgYEQCAIKAKIASAGQQR0QQQQvg0LIAhB4ABqIRIgCEHIAGohDiAIIAI2AowBIAggCzYCiAEgCCACNgKEASAFKAIMIgMgBSgCEEGoAWxqIRMgCEGEAWohFEEAIQkDQCADQeoAaiEDIAlBGGwhECAJQQR0QQxyIREgCSACayIMIQ0gCSEHA0ACQAJAAkACQCADQeoAayIGIBNHBEAgBigCAEUNBCADLQAADQQgA0HmAGsoAgAhFSAEQYACaiADQTJrKAIAIANBLmsoAgAiBigCCEEBa0F4cWpBCGogA0ESaiAGKAKQAREBACAHQQFqIQoCQCACIAdLBEAgAiEGDAELIAoiBiACSwRAIAIhBiAHIAJrIhZBAWoiDyAIKAKEASACa0sEQCAUIAIgDxC0BiAIKAKIASELIAgoAowBIQYLIAsgBkEEdGohBSAPQQJPBEAgFkEDcSELIAIgB2tBfE0EQCANQXxxIQ0DQCAFQn83AgggBUEAOgAEIAVBfzYCACAFQThqQn83AgAgBUE0akEAOgAAIAVBMGpBfzYCACAFQShqQn83AgAgBUEkakEAOgAAIAVBIGpBfzYCACAFQRhqQn83AgAgBUEUakEAOgAAIAVBEGpBfzYCACAFQUBrIQUgDUEEayINDQALCyALBEAgDEEDcSEMA0AgBUJ/NwIIIAVBADoABCAFQX82AgAgBUEQaiEFIAxBAWsiDA0ACwsgBiACayAHaiEGCyAFQn83AgggBUEAOgAEIAVBfzYCACAGQQFqIQYLIAggBjYCjAEgBCAEKAIcIgsgCkkEfyAHIAsiAmsiDUEBaiEMIAwgBCgCFCACa0sEQCAEQRRqIAsgDBC1BiAEKAIcIQILIAQoAhggAkEYbGohBSAMQQJPBEAgDUEDcSEPIA1BAWtBA08EQCAHIAtrQXxxIQwDQCAFQv////v///+/fzcCECAFQv////v3//+/fzcCCCAFQv////v3//+//wA3AgAgBUHYAGpC////+////79/NwIAIAVB0ABqQv////v3//+/fzcCACAFQcgAakL////79///v/8ANwIAIAVBQGtC////+////79/NwIAIAVBOGpC////+/f//79/NwIAIAVBMGpC////+/f//7//ADcCACAFQShqQv////v///+/fzcCACAFQSBqQv////v3//+/fzcCACAFQRhqQv////v3//+//wA3AgAgBUHgAGohBSAMQQRrIgwNAAsLIA8EQCAJIAtrQQNxIQkDQCAFQv////v///+/fzcCECAFQv////v3//+/fzcCCCAFQv////v3//+//wA3AgAgBUEYaiEFIAlBAWsiCQ0ACwsgAiALayAHaiECCyAFQv////v///+/fzcCECAFQv////v3//+/fzcCCCAFQv////v3//+//wA3AgAgAkEBagUgCgs2AhwLIAYgB00NASARIAgoAogBIgtqIgIgFTYCACACQQRrIAc2AgAgBCgCHCICIAdNDQIgBCgCGCAQaiICIAQpAoACNwIAIAJBCGogBEGAAmoiCUEIaikCADcCACACQRBqIAlBEGopAgA3AgAgBCgCECICIAQoAghGBEAgBEEIahDPBgsgA0E+aiEDIAQoAgwgAkECdGogBzYCACAEIAJBAWo2AhAgBiECIAohCQwGCyAEQSBqEK0KIAgoAmgiBiAIKAJgRgRAIBIQ1gYLIAgoAmQgBkEHdGogBEEgakHgABDlDSICQn83AmQgAkEBNgJgIAJB7ABqQn83AgAgAkEAOgB4IAJBADoAdCAIIAZBAWo2AmggBEGAAmoiAiAOIARBB2ogBCgCDCIGIAQoAhAgBEEUakEAQQAgGhBmIARBiAFqIgpBEGogBEGUAmopAgAiFzcDACAKQQhqIARBjAJqKQIAIhg3AwAgBCAEKQKEAiIZNwOIASAOQRBqIBc3AgAgDkEIaiAYNwIAIA4gGTcCACACQRBqIBc3AwAgAkEIaiAYNwMAIARB2AJqQv////v///+/fzcDACAEQdACakL////79///v383AwAgBEHAAmpC////+////79/NwMAIARBuAJqQv////v3//+/fzcDACAEQagCakL////7////v383AwAgBEGgAmpC////+/f//79/NwMAIAQgGTcDgAIgBEL////79///v/8ANwPIAiAEQv////v3//+//wA3A7ACIARC////+/f//7//ADcDmAIgBEGgAWogAhDVBCAIKAJoRQ0CIAgoAmQgBEGgAWpB4AAQ5Q0aIAQoAhQiAgRAIAQoAhggAkEYbEEEEL4NCyAEKAIIIgIEQCAGIAJBAnRBBBC+DQsgBEHgAmokAAwICyAHIAZBlNjAABCZCQALIAcgAkGk2MAAEJkJAAtBAEEAQYTYwAAQmQkACyAJQQFqIQkgDEEBaiEMIA1BAWohDSAHQQFqIQcgA0GoAWohAyARQRBqIREgEEEYaiEQDAALAAsACyADIAYQvgwACyAHIAoQvgwACyABIAEoAgBBAWs2AgAgAEEANgIADwsQ1A0ACxDVDQALWwBBfwJ/IABDAAAAP5IgAZWNIgAgArMiASAAIAFdG0MAAAAAIABDAAAAAF4bIgBDAAAAAGAhAiACIABDAACAT11xBEAgAKkMAQtBAAtBACACGyAAQ///f09eGwtfAQF/IAAQ+AYgACgCYCIBBEAgACgCZCABQQJ0QQQQvg0LIAAoAnAiAQRAIAAoAnQgAUECdEEEEL4NCyAAKAJ8IgEEQCAAKAKAASABQQJ0QQQQvg0LIABBlAFBBBC+DQtUAQF/IwBBMGsiAyQAIANBCGogACAAQQxqIABBGGogARD/AQJ/QQAgAygCCEEERg0AGkEAIAMqAhAgAl9FDQAaIAM1AghCBFILIQAgA0EwaiQAIAALlAEBAX9BgYnEAC0AABpB+ABBBBDcDCIARQRAQQRB+ABBiKvEACgCACIAQc8HIAAbEQAAAAsgAEKAgICAgICAwD83AhQgAEIANwIMIABBfzYCCCAAQoCAgIBwNwIAIABBHGpBAEHEABDnDRogAEECOgB0IABBADYC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AmARAAAgAkEIaiACKAIYIgAgAigCHEEMaigCABEAACACKQMQIQMgAikDCCEEIAJBIGokACAAQQAgA0KY5/zyq5C/rJx/URtBACAEQvn//s+X6YTtIVEbC3ACAX8CfiMAQSBrIgIkACACQRhqIAAgASgCYBEAACACQQhqIAIoAhgiACACKAIcQQxqKAIAEQAAIAIpAxAhAyACKQMIIQQgAkEgaiQAIABBACADQoPI4MXsh8fW8wBRG0EAIARCuvHCyNTvjMk0URsLbwIBfwJ+IwBBIGsiAiQAIAJBGGogACABKAJgEQAAIAJBCGogAigCGCIAIAIoAhxBDGooAgARAAAgAikDECEDIAIpAwghBCACQSBqJAAgAEEAIANCqsa9seyiod1SURtBACAEQqbf+JLij4/9MlEbC28CAX8CfiMAQSBrIgIkACACQRhqIAAgASgCYBEAACACQQhqIAIoAhgiACACKAIcQQxqKAIAEQAAIAIpAxAhAyACKQMIIQQgAkEgaiQAIABBACADQtG6nNWj+fqpAVEbQQAgBELs0Mba2aLe3hZRGwtvAgF/An4jAEEgayICJAAgAkEYaiAAIAEoAmQRAAAgAkEIaiACKAIYIgAgAigCHEEMaigCABEAACACKQMQIQMgAikDCCEEIAJBIGokACAAQQAgA0LRupzVo/n6qQFRG0EAIARC7NDG2tmi3t4WURsLcAIBfwJ+IwBBIGsiAiQAIAJBGGogACABKAJgEQAAIAJBCGogAigCGCIAIAIoAhxBDGooAgARAAAgAikDECEDIAIpAwghBCACQSBqJAAgAEEAIANCzYz22dOKwJZWURtBACAEQvjA8rrVjo2Q+QBRGwtxAgF/An4jAEEgayICJAAgAkEYaiAAIAEoAmARAAAgAkEIaiACKAIYIgAgAigCHEEMaigCABEAACACKQMQIQMgAikDCCEEIAJBIGokACAAQQAgA0LmkdGsieHk4oB/URtBACAEQprmx7fVsrfmkn9RGwtxAgF/An4jAEEgayICJAAgAkEYaiAAIAEoAmARAAAgAkEIaiACKAIYIgAgAigCHEEMaigCABEAACACKQMQIQMgAikDCCEEIAJBIGokACAAQQAgA0KOw8nrq5P/54F/URtBACAEQsXf5eS1zeHChH9RGwtvAgF/An4jAEEgayICJAAgAkEYaiAAIAEoAmARAAAgAkEIaiACKAIYIgAgAigCHEEMaigCABEAACACKQMQIQMgAikDCCEEIAJBIGokACAAQQAgA0Lgjd2K6cfb21lRG0EAIARCvsel5/7iyc17URsLbwIBfwJ+IwBBIGsiAiQAIAJBGGogACABKAJkEQAAIAJBCGogAigCGCIAIAIoAhxBDGooAgARAAAgAikDECEDIAIpAwghBCACQSBqJAAgAEEAIANC4I3diunH29tZURtBACAEQr7Hpef+4snNe1EbC3ACAX8CfiMAQSBrIgIkACACQRhqIAAgASgCYBEAACACQQhqIAIoAhgiACACKAIcQQxqKAIAEQAAIAIpAxAhAyACKQMIIQQgAkEgaiQAIABBACADQoXgi/vW8r+nqX9RG0EAIARC2L+/5szm1+cPURsLbwIBfwJ+IwBBIGsiAiQAIAJBGGogACABKAJgEQAAIAJBCGogAigCGCIAIAIoAhxBDGooAgARAAAgAikDECEDIAIpAwghBCACQSBqJAAgAEEAIANCpuTk6uKan+MbURtBACAEQpz3nu+y5/X0QlEbC28CAX8CfiMAQSBrIgIkACACQRhqIAAgASgCYBEAACACQQhqIAIoAhgiACACKAIcQQxqKAIAEQAAIAIpAxAhAyACKQMIIQQgAkEgaiQAIABBACADQsKww9+vlfXjfFEbQQAgBELx85jf96as0UtRGwtvAgF/An4jAEEgayICJAAgAkEYaiAAIAEoAmQRAAAgAkEIaiACKAIYIgAgAigCHEEMaigCABEAACACKQMQIQMgAikDCCEEIAJBIGokACAAQQAgA0LCsMPfr5X143xRG0EAIARC8fOY3/emrNFLURsLcQIBfwJ+IwBBIGsiAiQAIAJBGGogACABKAJgEQAAIAJBCGogAigCGCIAIAIoAhxBDGooAgARAAAgAikDECEDIAIpAwghBCACQSBqJAAgAEEAIANC87iC6ZCr79LSAFEbQQAgBEKtkpCfpv20l/UAURsLcQIBfwJ+IwBBIGsiAiQAIAJBGGogACABKAJkEQAAIAJBCGogAigCGCIAIAIoAhxBDGooAgARAAAgAikDECEDIAIpAwghBCACQSBqJAAgAEEAIANC87iC6ZCr79LSAFEbQQAgBEKtkpCfpv20l/UAURsLcAIBfwJ+IwBBIGsiAiQAIAJBGGog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DCEBA0AgAUEYaiAXNwIAIAFBEGogF0KBgICAEH03AgAgAUEIaiAXQoKAgIAgfTcCACABIBdCg4CAgDB9NwIAIAFBIGohASAXQoSAgIDAAHwhFyAaIBlCBHwiGVINAAsLIBhCAFIEQCAMIARBA3RqIQEgGUKBgICAEH5CgICAgBB8IRcDQCABIBc3AgAgAUEIaiEBIBdCgYCAgBB8IRcgGEIBfSIYQgBSDQALCyAHIREMAQsgAigCCCEHIAIoAgQhDAsgA0KAgICAwAA3AjAgA0IENwIoIANCADcCICADQoCAgICAAjcCGCADQv////v///+/fzcCECADQv////v3//+/fzcCCCADQv////v3//+//wA3AgAgA0EANgI4IANBAToASyAHQf////8BcSEFAkACQAJAAkACQAJAAkACQAJAAkAgB0UEQCADQQA2AlQgA0KAgICAwAA3AkwgA0EANgJEIANCgICAgMAANwI8IAMgBTYCYCADQQQ2AlwgAyAFNgJYDAELQYGJxAAtAAAaIAdBA3QiCUEBdiIBQQQQ3AwiAkUNCUEAIQQgA0EANgJUIAMgAjYCUCADIAU2AkwgBUEYbCEBIAlBqNWq1QJLDQIgAUEASA0CQYGJxAAtAAAaQQQhBCABQQQQ3AwiAkUNAiACIQECQCAJQQhGDQAgBUEBayIEQQNxIQggBUECa0EDTwRAIARBfHEhBANAIAFC////+////79/NwIQIAFC////+/f//79/NwIIIAFC////+/f//7//ADcCACABQdgAakL////7////v383AgAgAUHQAGpC////+/f//79/NwIAIAFByABqQv////v3//+//wA3AgAgAUFAa0L////7////v383AgAgAUE4akL////79///v383AgAgAUEwakL////79///v/8ANwIAIAFBKGpC////+////79/NwIAIAFBIGpC////+/f//79/NwIAIAFBGGpC////+/f//7//ADcCACABQeAAaiEBIARBBGsiBA0ACwsgCEUNACAIQRhsIQQDQCABQv////v///+/fzcCECABQv////v3//+/fzcCCCABQv////v3//+//wA3AgAgAUEYaiEBIARBGGsiBA0ACwsgAUL////7////v383AhAgAUL////79///v383AgggAUL////79///v/8ANwIAIAMgBTYCYCADIAI2AlwgAyAFNgJYQQAhASAFQQxsIgJBAEgNA0GBicQALQAAGkEEIQEgAkEEENwMIg9FDQMgDyEBAkAgCUEIRg0AIAVBAWsiBEEDcSECIAVBAmtBA08EQCAEQXxxIQQDQCABQn83AgggAUEAOgAEIAFBfzYCACABQSxqQX82AgAgAUEoakEAOgAAIAFBIGpCfzcCACABQRxqQQA6AAAgAUEUakJ/NwIAIAFBEGpBADoAACABQTBqIQEgBEEEayIEDQALCyACRQ0AIAJBDGwhBANAIAFBfzYCCCABQQA6AAQgAUF/NgIAIAFBDGohASAEQQxrIgQNAAsLIAkgDGohFCABQX82AgggAUEAOgAEIAFBfzYCACADIAU2AkQgAyAPNgJAIAMgBTYCPCAOKAIIIRAgDigCBCETIANBPGohFUEAIQQgDCEIA0AgCCgCACIBIBBPDQUgCEEEaigCACICIBBPDQYgBEEBaiEJIBMgAkEMbGoiAioCBCEbIAIqAgAhHCACKgIIIR0gEyABQQxsaiIBKgIAIR4gASoCBCEfIAEqAgghICAEIAVPBEAgAygCPCAFIgJrIAkgAmsiCkkEQCAVIAUgChCxBiADKAJAIQ8gAygCRCECCyAPIAJBDGxqIQEgCkECTwRAIAQgBWsiBkEDcSENIAUgBGtBfE0EQCAGQXxxIQYDQCABQn83AgggAUEAOgAEIAFBfzYCACABQSxqQX82AgAgAUEoakEAOgAAIAFBIGpCfzcCACABQRxqQQA6AAAgAUEUakJ/NwIAIAFBEGpBADoAACABQTBqIQEgBkEEayIGDQALCyANBEAgEiAFa0EDcSEGA0AgAUF/NgIIIAFBADoABCABQX82AgAgAUEMaiEBIAZBAWsiBg0ACwsgAiAKakEBayECCyABQX82AgggAUEAOgAEIAFBfzYCACADIAJBAWoiBTYCRCADIAMoAmAiCiAETQR/IAkgCiICayENIA0gAygCWCACa0sEQCADQdgAaiAKIA0QtQYgAygCYCECCyADKAJcIAJBGGxqIQEgDUECTwRAIAQgCmsiBkEDcSEWIAogBGtBfE0EQCAGQXxxIQYDQCABQv////v///+/fzcCECABQv////v3//+/fzcCCCABQv////v3//+//wA3AgAgAUHYAGpC////+////79/NwIAIAFB0ABqQv////v3//+/fzcCACABQcgAakL////79///v/8ANwIAIAFBQGtC////+////79/NwIAIAFBOGpC////+/f//79/NwIAIAFBMGpC////+/f//7//ADcCACABQShqQv////v///+/fzcCACABQSBqQv////v3//+/fzcCACABQRhqQv////v3//+//wA3AgAgAUHgAGohASAGQQRrIgYNAAsLIBYEQCASIAprQQNxIQYDQCABQv////v///+/fzcCECABQv////v3//+/fzcCCCABQv////v3//+//wA3AgAgAUEYaiEBIAZBAWsiBg0ACwsgAiANakEBayECCyABQv////v///+/fzcCECABQv////v3//+/fzcCCCABQv////v3//+//wA3AgAgAkEBagUgCQs2AmALIAQgBU8NByAPIARBDGxqIAQ2AgggAygCYCIBIARNDQggAygCXCAEQRhsaiIBICAgHSAgIB9DAAAAAJQiIyAeQwAAAACUIiSSIieSIB0gHEMAAAAAlCIlIBtDAAAAAJQiJpIiKJJeGzgCFCABIB8gGyAgQwAAAACUIiEgHyAkkpIgJSAbkiAdQwAAAACUIiKSXhs4AhAgASAeIBwgISAeICOSkiAcICaSICKSXhs4AgwgASAgIB0gJyAgkyAoIB2TXhs4AgggASAfIBsgISAkIB+TkiAlIBuTICKSXhs4AgQgASAeIBwgISAjIB6TkiAmIByTICKSXhs4AgAgAygCVCIBIAMoAkxGBEAgA0HMAGoQzwYLIAMoAlAiBiABQQJ0aiAENgIAIAMgAUEBaiIBNgJUIBJBAWohEiAJIQQgFCAIQQhqIghHDQALIAMoAiAiCCADKAIYRw0BCyADQRhqENYGIAMoAlQhASADKAJQIQYLIAMoAhwgCEEHdGoiAkEBNgJgIAJC////+////79/NwNYIAJC////+////79/NwNQIAJC////+////79/NwNIIAJC////+////79/NwNAIAJC////+////79/NwM4IAJC////+////79/NwMwIAJC////+/f//7//ADcDKCACQv////v3//+//wA3AyAgAkL////79///v/8ANwMYIAJC////+/f//7//ADcDECACQv////v3//+//wA3AwggAkL////79///v/8ANwMAIAJCfzcCZCACQQA6AHQgAkEAOgB4IAJB7ABqQn83AgAgAyAIQQFqNgIgIANB5ABqIAMgA0HLAGogBiABIANB2ABqQQBBABBFIAMgAyoCfCIbOAIUIAMgAyoCeCIcOAIQIAMgAyoCdCIdOAIMIAMgAyoCcCIeOAIIIAMgAyoCbCIfOAIEIAMgAyoCaCIgOAIAIAMoAiBFDQYgAygCHCIBQf///3s2AlwgAUL////7////v383AlQgASAbOAJQIAFB////ezYCTCABQv////v///+/fzcCRCABIBw4AkAgAUH///97NgI8IAFC////+////79/NwI0IAEgHTgCMCABQf////sHNgIsIAFC////+/f//7//ADcCJCABIB44AiAgAUH////7BzYCHCABQv////v3//+//wA3AhQgASAfOAIQIAFB////+wc2AgwgAUL////79///v/8ANwIEIAEgIDgCACADKAJYIgEEQCADKAJcIAFBGGxBBBC+DQsgAygCTCIBBEAgAygCUCABQQJ0QQQQvg0LIAtBGGogA0HIABDlDRogCyAHNgIUIAsgDDYCECALIBE2AgwgC0EIaiAOQQhqKAIANgIAIAsgDikCADcCACADQYABaiQADAkLIAQgARC+DAALIAEgAhC+DAALIAEgEEGs1sIAEJkJAAsgAiAQQbzWwgAQmQkACyAEIAVBmKTCABCZCQALIAQgAUGopMIAEJkJAAtBAEEAQYikwgAQmQkAC0EEIAEQvgwACyAGIAEQvgwAC0GBicQALQAAGkHoAEEEENwMIgFFBEBBBEHoAEGIq8QAKAIAIgBBzwcgABsRAAAACyABQoGAgIAQNwIAIAFBCGogC0HgABDlDRogAEGk6MIANgIEIAAgATYCACALQeAAaiQAC1EBAn8CQCAAKAIQIgFFDQAgASABQQJ0QQtqQXhxIgJqQQlqIgFFDQAgACgCDCACayABQQgQvg0LIAAoAgAiAQRAIAAoAgQgAUEEdEEEEL4NCwtQAQJ/AkAgAARAIAAoAgAiA0F/Rg0BIAAgA0EBajYCACABIAAoAgxJBEAgACgCCCABQdQBbGotADQhAgsgACADNgIAIAIPCxDUDQALENUNAAuwAQEBf0GBicQALQAAGkHIAEEEENwMIgBFBEBBBEHIAEGIq8QAKAIAIgBBzwcgABsRAAAACyAAQoCBgIAQNwJAIABCgYCAgCA3AjggAELvpIzYAzcCMCAAQu+kjNSDgICQwQA3AiggAEKAgID8g4CAwD83AiAgAEKAyNDLhICAwD83AhggAEKAgICFhICA+MEANwIQIABCiZGi5PPnsJc5NwIIIABCgICAgMAANwIAIAALUQECfwJAIAAoAhAiAUUNACABIAFBAnRBC2pBeHEiAmpBCWoiAUUNACAAKAIMIAJrIAFBCBC+DQsgACgCACIBBEAgACgCBCABQRRsQQQQvg0LC1cBAn8jAEEgayIDJAAgA0EEaiIEIAEgAhD/AiAAQQhqIARBCGopAgA3AgAgACADKQIENwIAIABBACADKAIYIAMoAhQiARs2AhQgACABNgIQIANBIGokAAt4AgF/AX0jAEHgAGsiAiQAIAIgARDfAUGBicQALQAAGiABKgJgIQNB5ABBBBDcDCIBRQRAQQRB5ABBiKvEACgCACIAQc8HIAAbEQAAAAsgASACQeAAEOUNIgEgAzgCYCAAQbCQwwA2AgQgACABNgIAIAJB4ABqJAALlAEAAkAgAARAIAAoAgANASAAQoCBgIAQNwJAIABChICAgCA3AjggAELvpIzYwwA3AjAgAELvpIzUg4CAkMEANwIoIABCgICAgICAgMA/NwIgIABCgMjQy4SAgMA/NwIYIABCgICA9IOAgPjBADcCECAAQomRouTz57CXOTcCCCAAQoCAgIAQNwIADwsQ1A0ACxDVDQALlAEAAkAgAARAIAAoAgANASAAQoCBgIAQNwJAIABCgYCAgCA3AjggAELvpIzYAzcCMCAAQu+kjNSDgICQwQA3AiggAEKAgID8g4CAwD83AiAgAEKAyNDLhICAwD83AhggAEKAgICFhICA+MEANwIQIABCiZGi5PPnsJc5NwIIIABCgICAgMAANwIADwsQ1A0ACxDVDQALlQEAAkAgAARAIAAoAgANASAAQoCBgIAQNwJAIABCgYCAgCA3AjggAELvpIzYwwA3AjAgAELvpIzUg4CAkMEANwIoIABCgICAgICAgMA/NwIgIABCgMjQy4SAgMA/NwIYIABCgICA9IOAgPjBADcCECAAQomRouTz57CXOTcCCCAAQoCAgIDAADcCAA8LENQNAAsQ1Q0AC1QBAX8jAEEwayIEJAAgBEEIaiABIAIgA0P//39/EEEgBCgCHEEERgRAQaDLwgAQyA0ACyAAIAQpAgg3AgAgAEEIaiAEQRBqKQIANwIAIARBMGokAAtOAQN9IAEqAgAiAiAClCABKgIIIgIgApSSEJIBIQICfwJAIAEqAgQiBCAAKgIAIgOMYEUNACADIARgRQ0AQQEgAiAAKgIEXw0BGgtBAAsLcAEBfyMAQdABayICJAAgAkEMaiABEKkBQYGJxAAtAAAaQcQBQQQQ3AwiAUUEQEEEQcQBQYirxAAoAgAiAEHPByAAGxEAAAALIAEgAkEMakHEARDlDSEBIABBiOvCADYCBCAAIAE2AgAgAkHQAWokAAvsAgEDfyMAQaABayICJAACQCAABEAgACgCAA0BIAJBBGoiASAAQQRqQZwBEOUNGiAAQaABQQQQvg0gASgCkAEiACgCACEDIAAgA0EBazYCACADQQFGBEAgAUGQAWoQsggLIAEoAmAiAARAIAEoAmQgAEEHdEEQEL4NCyABKAJsIgAEQCABKAJwIABBAnRBBBC+DQsgASgCeCIABEAgASgCfCAAQQJ0QQQQvg0LIAEoAoQBIgAEQCABKAKIASAAQQR0QQQQvg0LIAEoAgAiAARAIAEoAgQgAEEDdEEEEL4NCyABKAIMIgAEQCABKAIQIABBAnRBBBC+DQsgASgCGCIABEAgASgCHCAAQQJ0QQQQvg0LIAEoAiQiAARAIAEoAiggAEECdEEEEL4NCyABKAIwIgAEQCABKAI0IABBARC+DQsgASgCPCIABEAgASgCQCAAQRhsQQQQvg0LIAJBoAFqJAAPCxDUDQALENUNAAvwAgEDfyMAQaABayIBJAAgAUEEaiEAQYGJxAAtAAAaQQhBBBDcDCICRQRAQQRBCEGIq8QAKAIAIgBBzwcgABsRAAAACyAAQYquj+EDNgKYASAAQYzpwQA2ApQBIAAgAjYCkAEgAEIENwKIASAAQgA3AoABIABCgICAgMAANwJ4IABCBDcCcCAAQgA3AmggAEKAgICAgAI3AmAgAEL////7////v383AlggAEL////79///v383AlAgAEL////79///v/8ANwJIIABCBDcCQCAAQgA3AjggAEKAgICAEDcCMCAAQgQ3AiggAEIANwIgIABCgICAgMAANwIYIABCBDcCECAAQgA3AgggAEKAgICAwAA3AgAgAkKBgICAEDcCAEGBicQALQAAGkGgAUEEENwM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Qv////v///+/fzcCWCAAQv////v3//+/fzcCUCAAQv////v3//+//wA3AkggAEKAgICAwAA3AgAgAEIANwIIIABCBDcCECAAQoCAgIDAADcCGCAAQgA3AiAgAEIENwIoIABCgICAgBA3AjAgAEIANwI4IABCBDcCQEGBicQALQAAGkGgAUEEENwMIgBFBEBBBEGgAUGIq8QAKAIAIgBBzwcgABsRAAAACyAAQQA2AgAgAEEEaiABQQRqQZwBEOUNGiABQaABaiQAIAAL5QEBAn8jAEHABGsiAiQAAkAgAARAIAAoAgANASACQQRqIgEgAEEEakG8BBDlDRogAEHABEEEEL4NIAEoAoQCQYCAgIB4RwRAIAFBhAJqEJ0HCyABKALQAkGAgICAeEcEQCABQdACahCgBAsgASgCtANBgICAgHhHBEAgAUG0A2oQ/gULIAEoAhBBAkcEQCABQRBqEJwHCyABKAI4QQJHBEAgAUE4ahCuBgsgASgCbEECRwRAIAFB7ABqEOgHCyABKAK4AUECRwRAIAFBuAFqEOMGCyACQcAEaiQADwsQ1A0ACxDVDQALYAEBfyMAQcABayIDJAAgA0G4AWpCADcCACADQgA3ArABIANCgoCAgDA3AgggA0KAgICAEDcCACADQRBqQQBBoAEQ5w0aIAAgASADIAJBABAfIABBAzYCECADQcABaiQAC2ABAX8jAEHAAWsiAyQAIANBuAFqQgA3AgAgA0IANwKwASADQoKAgIAwNwIIIANCgICAgBA3AgAgA0EQakEAQaABEOcNGiAAIAEgAyACQQAQHiAAQQM2AhAgA0HAAWokAAtgAQF/IwBBwAFrIgMkACADQbgBakIANwIAIANCADcCsAEgA0KCgICAMDcCCCADQoCAgIAQNwIAIANBEGpBAEGgARDnDRogACABIAMgAkEAECAgAEEDNgIQIANBwAFqJAALYAEBfyMAQcABayIDJAAgA0G4AWpCADcCACADQgA3ArABIANCgoCAgDA3AgggA0KAgICAEDcCACADQRBqQQBBoAEQ5w0aIAAgASADIAJBABAcIABBAzYCECADQcABaiQAC2ABAX8jAEHAAWsiAyQAIANBuAFqQgA3AgAgA0IANwKwASADQoKAgIAwNwIIIANCgICAgBA3AgAgA0EQakEAQaABEOcNGiAAIAEgAyAC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diECIAFBAWohASACRQ0ACwsgBSAFQQtJaiEFIAMtADRFDQALCyADKAIAIQEgA0EANgIAIAFFDQ8gBEHwAGoiAUEoaiADQSxqKQIANwMAIAFBIGogA0EkaikCADcDACABQRhqIANBHGopAgA3AwAgAUEQaiADQRRqKQIANwMAIAFBCGogA0EMaikCADcDACAEIAMpAgQ3A3AgA0E4QQQQvg0gBCgCWCEBDAELIAMoAgAhAiADQQA2AgAgAkUNECADQQE6ADQgBEHwAGoiAkEoaiADQSxqKQIANwMAIAJBIGogA0EkaikCADcDACACQRhqIANBHGopAgA3AwAgAkEQaiADQRRqKQIANwMAIAJBCGogA0EMaikCADcDACAEIAMpAgQ3A3ALIAggBCkDcDcBACAIQShqIARB8ABqIgJBKGopAwA3AQAgCEEgaiACQSBqKQMANwEAIAhBGGogAkEYaikDADcBACAIQRBqIAJBEGopAwA3AQAgCEEIaiACQQhqKQMANwEAQQAFQQELIQIgASABKAIAIgFBAWs2AgAgAUEBRw0EIARB2ABqEPMJDAQLIAlBAWohCSAFIAFBDGoiAWogAkcNAAsLIAZBADoAAAtBASECCyACRQ0DCyAEKAIgIgFBhAFPBEAgARACCyAEQaABaiQADAkLAkAgBi0AGA0AELULIAQoAhggBkEQaigCAEkgBikDCCIVIAQpAxAiFFYgFCAVURsNACAGQQE6ABgLIARBADYCgAEgBEEBNgJ0IARB/JTAADYCcCAEQgQ3AnggBEHwAGpBxIbAABCRCwALIARB2ABqIA8QkgMgBEEANgKAASAEQQE2AnQgBEH8lMAANgJwIARCBDcCeCAEQfAAakHUhsAAEJELAAtBgYnEAC0AABpBNEEEENwMIgFFDQQgAUEANgIAIAEgCCkBADcBBCABQQxqIAhBCGopAQA3AQAgAUEUaiAIQRBqKQEANwEAIAFBHGogCEEYaikBADcBACABQSRqIAhBIGopAQA3AQAgAUEsaiAIQShqKQEANwEAIAQgARAGNgJwIARBCGogECAEQSBqIARB8ABqEOsKIAQoAgwiAUGEAU8EQCABEAILIAQoAnAiAUGEAUkNASABEAIMAQsLIARCADcCZCAEQoGAgIDAADcCXCAEQeiRwAA2AlggBEHXAGogBEHYAGoQlAsACyAJIANBxIXAABCYCQALQdiHwAAQyA0AC0EEQTRBiKvEACgCACIAQc8HIAAbEQAAAAtB6IfAABDIDQALIABBADYCACAOQRBqJAAPCxDUDQALENUNAAtUAQR9IAAgAioCGCIEIAEqAgAiA5I4AhQgACADIAIqAhQiBZI4AhAgACADIAIqAhAiBpI4AgwgACAEIAOTOAIIIAAgBSADkzgCBCAAIAYgA5M4AgALTgAgACAALQC6AkEBIAFB/wFxIgF0cjoAugIgACABQRxsaiIAQZwBaiAFOAIAIABBmAFqIAQ4AgAgAEGUAWogAjgCACAAQZABaiADOAIAC20BA31BgYnEAC0AABogASoCCCECIAEqAgQhAyABKgIAIQRBDEEEENwMIgFFBEBBBEEMQYirxAAoAgAiAEHPByAAGxEAAAALIAEgAjgCCCABIAM4AgQgASAEOAIAIABBlJjDADYCBCAAIAE2AgALbQIBfwF9QYGJxAAtAAAaIAEqAgwhA0EQQQQQ3AwiAkUEQEEEQRBBiKvEACgCACIAQc8HIAAbEQAAAAsgAiADOAIMIAIgASkCADcCACACQQhqIAFBCGooAgA2AgAgAEHElcMANgIEIAAgAjYCAAttAQN9QYGJxAAtAAAaIAEqAgghAiABKgIEIQMgASoCACEEQQxBBBDcDCIBRQRAQQRBDEGIq8QAKAIAIgBBzwcgABsRAAAACyABIAI4AgggASADOAIEIAEgBDgCACAAQfSSwwA2AgQgACABNgIAC4ECAgJ/AX4CQCAABEAgACgCAA0BIABBfzYCACACQQBHIQYgA0EARyEHIARBAEchBCAFQQBHIQUCQAJAIABBBGogAb0iCKcgCEIgiKcQ/gciAgRAIAItAIACIgNBAXEgBkYNASADQQJxQQF2IAdGDQEgA0EEcUECdiAERg0BDAILQfS0wABBzQBB/LXAABCUDAALAkAgAi0A4QINACAFRQ0AIAItANACBEAgAiACKAK4AkEEcjYCuAILIAJBADYCzAIgAkEAOgDQAgsgAiADQfgBcSAGRUEAQQIgBxtyQQBBBCAEG3JyOgCAAiACEKsFCyAAQQA2AgAPCxDUDQALENUNAAvBAgIBfwF+AkAgAARAIAAoAgAiAkF/Rg0BIAAgAkEBajYCAAJAIABBBGogAb0iA6cgA0IgiKcQ7goiAgRAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAJBMGooAgAgAkE0aigCACICKAIIQQFrQXhxakEIaiACKAKcAREFACICQf8BcUEEaw4PDgABAgMEBQYHCAkKCwwNEAtBBiECDA8LQQQhAgwOC0ERIQIMDQtBByECDAwLQQghAgwLC0EJIQIMCgtBCiECDAkLQQshAgwIC0EMIQIMBwtBDSECDAYLQQ4hAgwFC0EPIQIMBAtBECECDAMLQaC4wABBFEHYuMAAENALAAtBBSECDAELQYy2wABBzABBgLfAABCUDAALIAAgACgCAEEBazYCACACQf8BcQ8LENQNAAsQ1Q0AC0IBAX8CQCABBEAgASgCAEF/Rg0BIAAgASgCBEEDRwR/IAEoAgghAkEBBUEACzYCACAAIAI2AgQPCxDUDQALENUNAAu8AQAgAEL////7////v383A1ggAEL////7////v383A1AgAEL////7////v383A0ggAEL////7////v383A0AgAEL////7////v383AzggAEL////7////v383AzAgAEL////79///v/8ANwMoIABC////+/f//7//ADcDICAAQv////v3//+//wA3AxggAEL////79///v/8ANwMQIABC////+/f//7//ADcDCCAAQv////v3//+//wA3AwALTAEBfwJAAn8gACgCACIEBEBBACAEIAEgAiADIAAoAgQoAhQREABFDQEaCyAAKAIIIgQNAUEBCw8LIAQgASACIAMgACgCDCgCGBEQAAtZAQF/IwBBwAFrIgQkACAEQbgBakIANwIAIARCADcCsAEgBEKCgICAMDcCCCAEQoCAgIAQNwIAIARBEGpBAEGgARDnDRogACABIAQgAiADEB0gBEHAAWokAAtZAQF/IwBBwAFrIgQkACAEQbgBakIANwIAIARCADcCsAEgBEKCgICAMDcCCCAEQoCAgIAQNwIAIARBEGpBAEGgARDnDRogACABIAQgAiADEB4gBEHAAWokAAtZAQF/IwBBwAFrIgQkACAEQbgBakIANwIAIARCADcCsAEgBEKCgICAMDcCCCAEQoCAgIAQNwIAIARBEGpBAEGgARDnDRogACABIAQgAiADECAgBEHAAWokAAtZAQF/IwBBwAFrIgQkACAEQbgBakIANwIAIARCADcCsAEg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gyIMQoCAgICAgIAIhCAJQgGGQv7///////8PgyAJQjSIp0H/D3EiBRsiCkIBgyELIAlCgICAgICAgPj/AIMhCAJAAkAgDFAEQEEDIAhCgICAgICAgPj/AFENAxogCEIAUg0BQQQMAwsgCFANAQtCgICAgICAgCAgCkIBhiAKQoCAgICAgIAIUSIAGyEKQgJCASAAGyEIQct3Qcx3IAAbIAVqIQUgC1AMAQsgBUGzCGshBUIBIQggC1ALIQAgAiAFOwHoCCACIAg3A+AIIAJCATcD2AggAiAKNwPQCCACIAAiBjoA6ggCfyAAQQJGBEBBASEHQQAMAQsgA0UEQEGy58MAQQEgCUIAUxshByAJQj+IpwwBC0Gy58MAQbPnwwAgCUIAUxshB0EBCyEAAn8CQAJAAkACQAJAQQMgBkECa0H/AXEiAyADQQNPG0EBaw4DAQIDAAsgAkEDNgKYCCACQbTnwwA2ApQIIAJBAjsBkAhBASEDIAJBkAhqDAQLIAJBAzYCmAggAkG358MANgKUCCACQQI7AZAIQQEhAyACQZAIagwDC0ECIQMgAkECOwGQCCAERQ0BIAJBoAhqIAQ2AgAgAkEAOwGcCCACQQI2ApgIIAJBiefDADYClAggAkGQCGoMAgtBdEEFIAXBIgNBAEgbIANsIgNBwP0ASQRAIAJBkAhqIAJB0AhqIAJBEGogA0EEdkEVaiIGQYCAfkEAIARrIARBgIACTxsiAxDEASADwSEDAkAgAigCkAhFBEAgAkHACGogAkHQCGogAkEQaiAGIAMQKgwBCyACQcgIaiACQZgIaigCADYCACACIAIpApAINwPACAsgAyACLgHICCIDSARAIAJBCGogAigCwAggAigCxAggAyAEIAJBkAhqEKsEIAIoAgwhAyACKAIIDAMLQQIhAyACQQI7AZAIIARFBEBBASEDIAJBATYCmAggAkG658MANgKUCCACQZAIagwDCyACQaAIaiAENgIAIAJBADsBnAggAkECNgKYCCACQYnnwwA2ApQIIAJBkAhqDAILQcHnwwBBJUHo58MAEPwKAAtBASEDIAJBATYCmAggAkG658MANgKUCCACQZAIagshBiACIAM2AswIIAIgBjYCyAggAiAANgLECCACIAc2AsAIIAEgAkHACGoQ4QIhACACQfAIaiQAIAAPCyABIQYjAEGAAWsiACQAIA29IQkCf0ECIA0gDWINABogCUL/////////B4MiDEKAgICAgICACIQgCUIBhkL+////////D4MgCUI0iKdB/w9xIgQbIgpCAYMhCyAJQoCAgICAgID4/wCDIQgCQAJAIAxQBEBBAyAIQoCAgICAgID4/wBRDQMaIAhCAFINAUEEDAMLIAhQDQELQoCAgICAgIAgIApCAYYgCkKAgICAgICACFEiARshCkICQgEgARshCEHLd0HMdyABGyAEaiEEIAtQDAELIARBswhrIQRCASEIIAtQCyEBIAAgBDsBeCAAIAg3A3AgAEIBNwNoIAAgCjcDYCAAIAEiAjoAegJ/IAJBAkYEQEEAIQRBAQwBCyADRQRAIAlCP4inIQRBsufDAEEBIAlCAFMbDAELQQEhBEGy58MAQbPnwwAgCUIAUxsLIQECfwJAAkACQAJAQQMgAkECa0H/AXEiAyADQQNPG0EBaw4DAQMCAAsgAEEDNgIoIABBtOfDADYCJCAAQQI7ASBBASECIABBIGoMAwsgAEEDNgIoIABBt+fDADYCJCAAQQI7ASBBASECIABBIGoMAgsgAEEgaiAAQeAAaiAAQQ9qEGsCQCAAKAIgRQRAIABB0ABqIABB4ABqIABBD2oQJwwBCyAAQdgAaiAAQShqKAIANgIAIAAgACkCIDcDUAsgACAAKAJQIAAoAlQgAC8BWEEAIABBIGoQqwQgACgCBCECIAAoAgAMAQsgAEECOwEgIABBATYCKCAAQbrnwwA2AiRBASECIABBIGoLIQMgACACNgJcIAAgAzYCWCAAIAQ2AlQgACABNgJQIAYgAEHQAGoQ4QIhASAAQYABaiQAIAELPwEBfyMAQRBrIgIkACACQdCCwAA2AgwgAiAANgIIQQAgAkEIakGElcAAIAJBDGpBhJXAACABQcySwAAQugQACzYBAX8jAEEQayICJAAgAkEIaiABEMMIIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAs2AQF/IwBBEGsiAiQAIAJBCGogARDJCiACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJAALMAACQCAABEAgACgCAA0BIABBADYCACAAQQEgASABQQFNGzYCBA8LENQNAAsQ1Q0ACz8BAX8jAEEQayICJAAgAkHcwsAANgIMIAIgADYCCEEAIAJBCGpB7NLAACACQQxqQezSwAAgAUGgzsAAELoEAAs5AQF/IwBBEGsiBCQAIAQgATYCDCAEIAA2AghBACAEQQhqQbzSwAAgBEEMakG80sAAIAIgAxC6BAALOQEBfyMAQRBrIgUkACAFIAI2AgwgBSABNgIIIAAgBUEIakHM0sAAIAVBDGpBzNLAACADIAQQugQACzkBAX8jAEEQayIEJAAgBCABNgIMIAQgADYCCEEAIARBCGpBjNPAACAEQQxqQYzTwAAgAiADELoEAAszAQF/IAAoAgAiAQRAIAAoAgQgAUECdEEEEL4NCyAAKAIUIgEEQCAAKAIYIAFBARC+DQsLPAEBfyMAQRBrIgMkACADQbiSwgA2AgwgAyAANgIIQQAgA0EIakGAkcIAIANBDGpBgJHCACABIAIQugQACzkBAX8jAEEQayIEJAAgBCABNgIMIAQgADYCCEEAIARBCGpBkJHCACAEQQxqQZCRwgAgAiADELoEAAs9ACAAQgA3AhAgAEIANwIAIABCgICAgICAgMA/NwIIIABBGGpCADcCACAAQSBqQgA3AgAgAEEoakEANgIACzYBAX8jAEEQayICJAAgAkEIaiABELAEIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokAAs2AQF/IwBBEGsiAiQAIAJBCGogARDTAiACKAIMIQEgACACKAIINgIAIAAgATYCBCACQRBqJAALNgEBfyMAQRBrIgIkACACQQhqIAEQ6wQgAigCDCEBIAAgAigCCDYCACAAIAE2AgQgAkEQaiQACz0AIABCADcCECAAQgA3AgAgAEKAgICAgICAwD83AgggAEEYakIANwIAIABBIGpCADcCACAAQShqQQA2AgALTQEBfkGBicQALQAAGiAAKQIAIQFBDEEEENwMIgBFBEBBBEEMQYirxAAoAgAiAEHPByAAGxEAAAALIAAgATcCBCAAQYCAgIB4NgIAIAALMgEBfyABKAIcIgJBEHFFBEAgAkEgcUUEQCAAIAEQxg0PCyAAIAEQrgcPCyAAIAEQrQcLLwEBfSABKgIAIgIgApQgASoCBCICIAKUkiABKgIIIgIgApSSIAAqAgAiAiAClF8LLwEBfyMAQSBrIgMkACADQQhqIAAgASACQQAQbiADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQ4gEgAygCCCEAIANBIGokACAAQQRHCy8BAX8jAEEQayIDJAAgA0EIaiAAIAEgAkEBEF8gAygCCCEAIANBEGokACAAQQFGCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEO4BIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARDxASADKAIIIQAgA0EgaiQAIABBBEcLLwEBfyMAQRBrIgMkACADQQhqIAAgASACQQEQViADKAIIIQAgA0EQaiQAIABBAUYLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQ2QEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEOMBIAMoAgghACADQSBqJAAgAEEERwswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARDMASADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQyQEgAygCCCEAIANBIGokACAAQQRHCzABAX8jAEEgayIDJAAgA0EIaiAAIAEgAkEBEIYBIAMoAgghACADQSBqJAAgAEEERwsvAQF/IwBBEGsiAyQAIANBCGogACABIAJBARBKIAMoAgghACADQRBqJAAgAEEBRgswAQF/IwBBIGsiAyQAIANBCGogACABIAJBARC8ASADKAIIIQAgA0EgaiQAIABBBEcLMAEBfyMAQSBrIgMkACADQQhqIAAgASACQQEQ2wEgAygCCCEAIANBIGokACAAQQRHCzoBAX8jAEEgayIAJAAgAEEANgIYIABBATYCDCAAQbTLwwA2AgggAEIENwIQIABBCGpB8MvDABCRCwALNwEBfyMAQSBrIgEkACABQQA2AhggAUEBNgIMIAFBnP/DADYCCCABQgQ3AhAgAUEIaiAAEJELAAs7AQF/QQEhAgJAIAAgARDlBA0AIAEoAhRBlOjDAEECIAEoAhgoAgwRBAANACAAQQRqIAEQ5QQhAgsgAgsyAQF/AkAgACgCACIAQX9GDQAgACAAKAIEIgFBAWs2AgQgAUEBRw0AIABBIEEIEL4NCwsyAQF/AkAgACgCACIAQX9GDQAgACAAKAIEIgFBAWs2AgQgAUEBRw0AIABBKEEIEL4NCwstAQF/IwBBMGsiAiQAIAJBDGogACABQQEQRiACLQAYIQAgAkEwaiQAIABBAEcLLwACQCAABEAgACgCAA0BIAAgATgCJCAAQQE2AiAgAEEANgIADwsQ1A0ACxDVDQALRQEBf0GBicQALQAAGkEQQQQQ3AwiAEUEQEEEQRBBiKvEACgCACIAQc8HIAAbEQAAAAsgAEIANwIAIABBCGpCADcCACAACy0BAX8jAEEwayICJAAgAkEMaiAAIAFBARBLIAItABghACACQTBqJAAgAEEARws2AQF9IAAgASoCACICOAIUIAAgAjgCECAAIAI4AgwgACACjCICOAIIIAAgAjgCBCAAIAI4AgALTAECfSAAKgIEIAAqAgAQ/QQiAUMAAAAAYEUEQEG49sIAQShByPfCABD8CgALQ9sPyT8gAZMiAiACIAEgAZIiASABIAJeGyABIAFcGwsvAQJ/IwBB4ABrIgMkACADQQhqIgQgACABENIBIAIgBEHYABDlDRogA0HgAGokAAsrAAJAIAAEQCAAKAIADQEgAEEANgIAIAAgAUEARzoAQA8LENQNAAsQ1Q0ACzkAIABCADcCsAEgAEKCgICAMDcCCCAAQoCAgIAQNwIAIABBuAFqQgA3AgAgAEEQakEAQaABEOcNGgssAQF/IwBBIGsiAiQAIAJBBGogACABEP8CIAItABAhACACQSBqJAAgAEEARwstAQJ9IAAqAgwgACoCACIBIAAqAgQiAiABIAJfGyIBIAAqAggiAiABIAJfG5ILKAAgACgCACgCACIAKQMAIABBCGopAwAgASgCACACQXRsakEMaxCsAwsoACAAKAIAKAIAIgApAwAgAEEIaikDACABKAIAIAJBWGxqQShrEMwDCzIBAX8gAEEANgIIIAAgASgCGDYCDCAAIAEoAgwiAjYCACAAIAIgASgCEEHwAmxqNgIECzIBAX8gAEEANgIIIAAgASgCGDYCDCAAIAEoAgwiAjYCACAAIAIgASgCEEGoAWxqNgIECygAIAAoAgAoAgAiACkDACAAQQhqKQMAIAEoAgAgAkF0bGpBDGsQzQMLMAEBfSAAIAIqAgggASoCACIDlDgCCCAAIAMgAioCBJQ4AgQgACADIAIqAgCUOAIACy4AIAAgASkCYDcCACAAQRBqIAFB8ABqKQIANwIAIABBCGogAUHoAGopAgA3AgALLAAgACABKQIYNwIAIABBEGogAUEoaikCADcCACAAQQhqIAFBIGopAgA3AgALLAAgACABKQIANwIAIABBEGogAUEQaikCADcCACAAQQhqIAFBCGopAgA3AgALLQAgACABKQI0NwIAIABBEGogAUHEAGopAgA3AgAgAEEIaiABQTxqKQIANwIACy8BAX0gACABKgIAIgIgApQgASoCBCICIAKUkhCSATgCDCAAQQA2AgggAEIANwIAC1MBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADIAA2AgQjAEEQayIAJAAgACADQQRqIgEpAgA3AgggAEEIakHcksAAQQAgASgCCEEBQQAQpgYACygAAkAgAARAIAAoAgANASAAQQA2AgAgACABOAI8DwsQ1A0ACxDVDQALLAACQCAABEAgACgCAA0BIAAgATgCCCAAQoCAgIAQNwIADwsQ1A0ACxDVDQALJQACQCAABEAgACgCAEF/Rg0BIAAoAgxBAkcPCxDUDQALENUNAAsoAAJAIAAEQCAAKAIADQEgAEEANgIAIABBAjYCDA8LENQNAAsQ1Q0ACygAAkAgAARAIAAoAgANASAAQQA2AgAgACABOAI0DwsQ1A0ACxDVDQALKAACQCAABEAgACgCAA0BIABBADYCACAAIAE4AjgPCxDUDQALENUNAAsoAAJAIAAEQCAAKAIADQEgAEEANgIAIABBAjYCIA8LENQNAAsQ1Q0ACyUAAkAgAARAIAAoAgBBf0YNASAAKAIgQQJHDwsQ1A0ACxDVDQALKAACQCAABEAgACgCAA0BIABBADYCACAAIAE2AjQPCxDUDQALENUNAAsoAAJAIAAEQCAAKAIADQEgAEEANgIAIAAgATYCOA8LENQNAAsQ1Q0ACygAAkAgAARAIAAoAgANASAAQQA2AgAgACABOAIIDwsQ1A0ACxDVDQALKAACQCAABEAgACgCAA0BIABBADYCACAAIAE4AhQPCxDUDQALENUNAAsoAAJAIAAEQCAAKAIADQEgAEEANgIAIAAgATgCKA8LENQNAAsQ1Q0ACygAAkAgAARAIAAoAgANASAAQQA2AgAgACABOAIwDwsQ1A0ACxDVDQALKAACQCAABEAgACgCAA0BIABBADYCACAAIAE2AkAPCxDUDQALENUNAAsoAAJAIAAEQCAA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AlAgASgCWCABKAJcEOkBCxkAIAAoAgAiACgCACAAQQRqKAIAIAEQ4QELGgAgAEEANgIIIABCADcCACAAIAEqAgA4AgwLHQAgAEG048IANgIEIAAgATYCACAAIAEqAhg4AggLHQAgAEGk4MIANgIEIAAgATYCACAAIAEqAgw4AggLHQAgAEH048IANgIEIAAgATYCACAAIAEqAiQ4AggLHQAgAEHE88IANgIEIAAgATYCACAAIAEqAgg4AggLHQAgAEH098IANgIEIAAgATYCACAAIAEqAgg4AggLHQAgAEHA8MIANgIEIAAgATYCACAAIAEqAmA4AggLGgAgAEEANgIIIABBkJbAADYCBCAAIAE2AgALGgAgAEEANgIIIABBrJnAADYCBCAAIAE2AgALGAAgACgCACABKAIAIAIoAgAgAygCABAKCxoAIABBADYCCCAAQcz0wAA2AgQgACABNgIACzEAIABC////9/f////+ADcCECAAQv////f//////gA3AgggAEL////3/////343AgALGgAgAEEANgIIIABBpODCADYCBCAAIAE2AgALsgQCDX0GfyABKgIYIQQjAEFAaiIQJAAgAUEMaiIRKgIAIgggASoCACIJkyIDIAOUIBEqAgQiCiABKgIEIguTIgMgA5SSIBFBCGoiEioCACIMIAFBCGoiEyoCACINkyIDIAOUkhCSASEDIBBBKGoiFEEIaiIVIBMoAgA2AgAgEEE8aiASKAIANgIAIBAgESkCADcCNCAQQQhqIhFBCGogFSkDADcDACARQRBqIBRBEGopAwA3AwAgECABKQIANwMIIBAgBDgCICAAIBEQiwQgA0MAAAA/lCIDIASUIASUQ9sPSUCUIgYgBpIhBiAEIASUIgUgBZJDAACgQJUgBEPbD0lAlCAElCAElEMAAIBAlEMAAEBAlSIHlCIOIAVDAABAQJQgAyADlEMAAIBAlJJDAABAQZUgBpSSIAKUIAcgAyADkiIDIAOUQwAAgD6UIAMgBJRDAABAQJRDAAAAPpSSlCAClJIiDxCSASEEIA4gBUMAAAA/lCAGlJIgApQQkgEhAyAPEJIBIQUgAEMAAAAAQwAAgD8gBJUgBEMAAAAAWxs4AiAgAEMAAAAAQwAAgD8gByAGkiAClCIClSACQwAAAABbGzgCHCAAIAwgDZJDAAAAP5Q4AhggACAKIAuSQwAAAD+UOAIUIAAgCCAJkkMAAAA/lDgCECAAQwAAAABDAACAPyADlSADQwAAAABbGzgCJCAAQwAAAABDAACAPyAFlSAFQwAAAABbGzgCKCAQQUBrJAALGgAgAEEANgIIIABB9OPCADYCBCAAIAE2AgALGgAgAEEANgIIIABBtOPCADYCBCAAIAE2AgALGgAgAEEANgIIIABBwPDCADYCBCAAIAE2AgALGgAgAEEANgIIIABBxPPCADYCBCAAIAE2AgALGgAgAEEANgIIIABB9PfCADYCBCAAIAE2AgALMQAgAEL////39/////4ANwIQIABC////9//////+ADcCCCAAQv////f/////fjcCAAsxACAAQv////f3/////gA3AhAgAEL////3//////4ANwIIIABC////9/////9+NwIAC1YAIABFBEAjAEEgayIAJAAgAEEANgIYIABBATYCDCAAQZzNwwA2AgggAEIENwIQIABBCGpBwM3DABCRCwALIAAgAUGIq8QAKAIAIgBBzwcgABsRAAAAC+8GAQV/AkACQAJAAkACQCAAQQRrIgUoAgAiB0F4cSIEQQRBCCAHQQNxIgYbIAFqTwRAIAZBAEcgAUEnaiIIIARJcQ0BAkACQCACQQlPBEAgAiADEKkEIgINAUEAIQAMCAtBACECIANBzP97Sw0BQRAgA0ELakF4cSADQQtJGyEBAkAgBkUEQCABQYACSQ0BIAQgAUEEckkNASAEIAFrQYGACE8NAQwJCyAAQQhrIgYgBGohCAJAAkACQAJAIAEgBEsEQCAIQdSuxAAoAgBGDQQgCEHQrsQAKAIARg0CIAgoAgQiB0ECcQ0FIAdBeHEiByAEaiIEIAFJDQUgCCAHENYEIAQgAWsiAkEQSQ0BIAUgASAFKAIAQQFxckECcjYCACABIAZqIgEgAkEDcjYCBCAEIAZqIgMgAygCBEEBcjYCBCABIAIQ0gMMDQsgBCABayICQQ9LDQIMDAsgBSAEIAUoAgBBAXFyQQJyNgIAIAQgBmoiASABKAIEQQFyNgIEDAsLQciuxAAoAgAgBGoiBCABSQ0CAkAgBCABayICQQ9NBEAgBSAHQQFxIARyQQJyNgIAIAQgBmoiASABKAIEQQFyNgIEQQAhAkEAIQEMAQsgBSABIAdBAXFyQQJyNgIAIAEg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AwggAELF3+Xktc3hwoR/NwMACyEAIABCnPmX683W+bjmADcDCCAAQr3GmrCnhMHvazcDAAsiACAAQuaR0ayJ4eTigH83AwggAEKa5se31bK35pJ/NwMACyEAIABC/deOlaPBnMG8fzcDCCAAQpjPh/fz1PPDJjcDAAshACAAQufjp8Pf/rveDDcDCCAAQsiho+yg3MyHwAA3AwALIAAgAEKqxr2x7KKh3VI3AwggAEKm3/iS4o+P/TI3AwALIQAgAEKF4Iv71vK/p6l/NwMIIABC2L+/5szm1+cPNwMACyEAIABC5IXw/7/D/94/NwMIIABCptfKzO7RwJfDADcDAAsgACAAQsKww9+vlfXjfDcDCCAAQvHzmN/3pqzRSzcDAAshACAAQvD9zLeA0sjkin83AwggAEKckeadzKe90FE3AwALIQAgAEK7mPS1kfqfkHs3AwggAELN/t2+gKPG2dwANwMACyAAIABCpuTk6uKan+MbNwMIIABCnPee77Ln9fRCNwMACyEAIABC8oHow9KTn70WNwMIIABC75nA8p3EhZ2IfzcDAAshACAAQsXWvqztgt+W7wA3AwggAELJtrbY8ISVnz43AwALIQAgAEK0m8fP6sDEjxA3AwggAEKDsNiP56e3mPQANwMACyEAIABCi+GawMS66P3hADcDCCAAQu+A5rmogIPpDjcDAAsiACAAQvO4gumQq+/S0gA3AwggAEKtkpCfpv20l/UANwMACxMAIABBnI3CADYCBCAAIAE2AgALEwAgAEGsjcIANgIEIAAgATYCAAsTACAAQbyNwgA2AgQgACABNgIACxMAIABBzI3CADYCBCAAIAE2AgALEwAgAEHcjcIANgIEIAAgATYCAAsTACAAQeyNwgA2AgQgACABNgIACxMAIABB/I3CADYCBCAAIAE2AgALEwAgAEGMjsIANgIEIAAgATYCAAsTACAAQZyOwgA2AgQgACABNgIACxMAIABBrI7CADYCBCAAIAE2AgALEwAgAEG8jsIANgIEIAAgATYCAAsTACAAQcyOwgA2AgQgACABNgIACxMAIABB3I7CADYCBCAAIAE2AgALEwAgAEHsjsIANgIEIAAgATYCAAsTACAAQfyOwgA2AgQgACABNgIACxMAIABBjI/CADYCBCAAIAE2AgALEwAgAEGcj8IANgIEIAAgATYCAAsTACAAQayPwgA2AgQgACABNgIACxMAIABBvI/CADYCBCAAIAE2AgALEwAgAEHMj8IANgIEIAAgATYCAAsTACAAQdyPwgA2AgQgACABNgIACxMAIABB7I/CADYCBCAAIAE2AgALEwAgAEH8j8IANgIEIAAgATYCAAsQACAAIAE2AgQgAEEDNgIACxAAIAAgATYCBCAAQQQ2AgALEAAgACABNgIEIABBAjYCAAsQACAAIAE2AgQgAEEBNgIACxAAIAAgATYCBCAAQQA2AgALDgAgACABQRhqIAIQ4gILEAAgAEEANgIAIAAgATYCBAsTACAAQajdwgA2AgQgACABNgIACxMAIABBiODCADYCBCAAIAE2AgALEAAgAEECNgIAIAAgATYCBAsTACAAQZjjwgA2AgQgACABNgIACxMAIABB2OPCADYCBCAAIAE2AgALEAAgAEEDNgIAIAAgATYCBAsTACAAQZjkwgA2AgQgACABNgIACw8AIAAgAUHgAGogAhDiAgsQACAAQQk2AgAgACABNgIECxMAIABBhOfCADYCBCAAIAE2AgALEAAgAEEGNgIAIAAgATYCBAsTACAAQejpwgA2AgQgACABNgIACxAAIABBBTYCACAAIAE2AgQLEwAgAEHM7MIANgIEIAAgATYCAAsOACAAIAFBNGogAhDiAgsQACAAQQg2AgAgACABNgIECxAAIABBCjYCACAAIAE2AgQLEwAgAEGk8MIANgIEIAAgATYCAAsRACAAIAEqAgAgASoCBBCGBwsQACAAQQs2AgAgACABNgIECxMAIABBqPPCADYCBCAAIAE2AgALEQAgACABKgIAIAEqAgQQ1AMLEAAgAEEMNgIAIAAgATYCBAsTACAAQdj3wgA2AgQgACABNgIACxkAIABCgICAgPD//7//ADcCCCAAQgA3AgALEAAgAEEHNgIAIAAgATYCBAsQACAAQQ02AgAgACABNgIECxMAIABByLrDADYCBCAAIAE2AgALEAAgAEEONgIAIAAgATYCBAsTACAAQeS6wwA2AgQgACABNgIACxAAIABBDzYCACAAIAE2AgQLEwAgAEGAu8MANgIEIAAgATYCAAsQACAAQRA2AgAgACABNgIECxMAIABBnLvDADYCBCAAIAE2AgALEAAgAEERNgIAIAAgATYCBAsTACAAQbi7wwA2AgQg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jP/CABCZCQALIAMgAUHM/sIAEJkJAAsLDQAgAEEAQdgAEOcNGgsNACAAKgIEIAAqAgiSC2kBAX8jAEEwayIDJAAgAyABNgIEIAMgADYCACADQQI2AgwgA0HE7sMANgIIIANCAjcCFCADIANBBGqtQoCAgIAghDcDKCADIAOtQoCAgIAghDcDICADIANBIGo2AhAgA0EIaiACEJELAAtpAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0ECNgIMIANB5O7DADYCCCADQgI3AhQgAyADQQRqrUKAgICAIIQ3AyggAyADrUKAgICAIIQ3AyAgAyADQSBqNgIQIANBCGogAhCRCwALDgAgADUCAEEBIAEQ6QQLaQEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQZjvwwA2AgggA0ICNwIUIAMgA0EEaq1CgICAgCCENwMoIAMgA61CgICAgCCENwMgIAMgA0EgajYCECADQQhqIAIQkQsACw8AQbHowwBBKyAAEPwKAAsOACAAKQMAQQEgARDpBAvMAgICfwF+IAAoAgApAwAhBCMAQYABayIDJAACfwJAAkAgASgCHCIAQRBxRQRAIABBIHENASAEQQEgARDpBAwDC0EAIQADQCAAIANqQf8AaiAEp0EPcSICQTByIAJB1wBqIAJBCkkbOgAAIABBAWshACAEQhBUIQIgBEIEiCEEIAJFDQALDAELQQAhAANAIAAgA2pB/wBqIASnQQ9xIgJBMHIgAkE3aiACQQpJGzoAACAAQQFrIQAgBEIQVCECIARCBIghBCACRQ0ACyAAQYABaiICQYEBTwRAIAJBgAFBzOvDABDEDQALIAFBAUHc68MAQQIgACADakGAAWpBACAAaxCBAgwBCyAAQYABaiICQYEBTwRAIAJBgAFBzOvDABDEDQALIAFBAUHc68MAQQIgACADakGAAWpBACAAaxCBAgshACADQYABaiQAIAALCwAgACMAaiQAIwALGQAgASgCFEHUg8AAQREgASgCGCgCDBEEAAsZACABKAIUQYiDwABBESABKAIYKAIMEQQACxkAIAEoAhRBuLDAAEEUIAEoAhgoAgwRBAALGQAgASgCFEHcsMAAQRQgASgCGCgCDBEEAAsMACAAKAIAIAEQoQwLDgAgAEGQk8AAIAEQvgILGQAgASgC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bGVtZW50cwAAUQEQAB0AAAAHAAAACAAAAAQAAAAIAAAAYSB0dXBsZSBvZiBzaXplIDIAAAAEAAAAAAAAAAEAAAAJAAAAc3RydWN0IFRyaU1lc2ggd2l0aCA3IGVsZW1lbnRzAACsARAAHgAAAGEgdHVwbGUgb2Ygc2l6ZSAzAAAABAAAAAAAAAABAAAACgAAAHN0cnVjdCBDb21wb3VuZCB3aXRoIDQgZWxlbWVudHMA+AEQAB8AAABzdHJ1Y3QgUG9seWxpbmUgd2l0aCAzIGVsZW1lbnRzACACEAAfAAAABAAAAAAAAAABAAAACwAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tY2hhbm5lbC0wLjUuMTMvc3JjL3dha2VyLnJzAFgCEABrAAAAaQAAACsAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWNoYW5uZWwtMC41LjEzL3NyYy9jaGFubmVsLnJzAAAA1AIQAG0AAAD/AgAAFQAAANQCEABtAAAABwMAABUAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWNoYW5uZWwtMC41LjEzL3NyYy9mbGF2b3JzL3plcm8ucnMAAGQDEAByAAAAwQAAADYAAABkAxAAcgAAALoAAAA2AAAAdmFyaWFudCBpbmRleCAwIDw9IGkgPCAy+AMQABgAAABzdHJ1Y3QgQ29sbGlkZXIgd2l0aCAxMiBlbGVtZW50cxgEEAAgAAAAc3RydWN0IEhlaWdodEZpZWxkIHdpdGggNiBlbGVtZW50cwAAQAQQACIAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDE5AAAAbAQQABkAAABzdHJ1Y3QgVHJpTWVzaENvbm5lY3RlZENvbXBvbmVudHMgd2l0aCAzIGVsZW1lbnRzAAAAkAQQADEAAABzdHJ1Y3QgR3JhcGggd2l0aCAyIGVsZW1lbnRzzAQQABwAAABzdHJ1Y3QgTFUgd2l0aCAyIGVsZW1lbnRzAAAA8AQQABkAAABzdHJ1Y3QgUmlnaWRCb2R5U2V0IHdpdGggMiBlbGVtZW50cwAUBRAAIwAAAHN0cnVjdCBJc2xhbmRNYW5hZ2VyIHdpdGggNSBlbGVtZW50c0AFEAAkAAAAc3RydWN0IENvbnZleFBvbHloZWRyb24gd2l0aCA4IGVsZW1lbnRzAGwFEAAnAAAAc3RydWN0IENvbnRhY3RNYW5pZm9sZERhdGEgd2l0aCA3IGVsZW1lbnRzAACcBRAAKgAAAHN0cnVjdCBKb2ludE1vdG9yIHdpdGggNyBlbGVtZW50cwAAANAFEAAhAAAAc3RydWN0IEdlbmVyaWNKb2ludCB3aXRoIDExIGVsZW1lbnRz/AUQACQAAAB2YXJpYW50IGluZGV4IDAgPD0gaSA8IDMoBhAAGAAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgNEgGEAAYAAAAc3RydWN0IFFidmggd2l0aCA1IGVsZW1lbnRzAGgGEAAbAAAAc3RydWN0IEludGVncmF0aW9uUGFyYW1ldGVycyB3aXRoIDE3IGVsZW1lbnRzAAAAjAYQAC0AAABzdHJ1Y3QgTXVsdGlib2R5IHdpdGggMTggZWxlbWVudHMAAADEBhAAIQAAAHN0cnVjdCBTQVBSZWdpb24gd2l0aCA3IGVsZW1lbnRz8AYQACAAAABzdHJ1Y3QgSW50ZXJhY3Rpb25HcmFwaCB3aXRoIDEgZWxlbWVudAAAGAcQACYAAABzdHJ1Y3QgSW5kZXhTZXF1ZW5jZSB3aXRoIDIgZWxlbWVudHNIBxAAJAAAAHN0cnVjdCBJbXB1bHNlSm9pbnQgd2l0aCA1IGVsZW1lbnRzAHQHEAAjAAAAc3RydWN0IE11bHRpYm9keUpvaW50IHdpdGggNCBlbGVtZW50cwAAAKAHEAAlAAAAc3RydWN0IEltcHVsc2VKb2ludFNldCB3aXRoIDQgZWxlbWVudHMAANAHEAAmAAAAc3RydWN0IE11bHRpYm9keUpvaW50U2V0IHdpdGggNCBlbGVtZW50cwAIEAAoAAAAc3RydWN0IE11bHRpYm9keVdvcmtzcGFjZSB3aXRoIDIgZWxlbWVudHMAAAAwCBAAKQAAAHZhcmlhbnQgaW5kZXggMCA8PSBpIDwgNmQIEAAYAAAAc3RydWN0IFRyaU1lc2hTaGFwZUNvbnRhY3RNYW5pZm9sZHNXb3Jrc3BhY2Ugd2l0aCAzIGVsZW1lbnRzhAgQADwAAABjYW5ub3QgcmVjdXJzaXZlbHkgYWNxdWlyZSBtdXRleMgIEAAgAAAAL3J1c3RjLzEyOWYzYjk5NjRhZjRkNGE3MDlkMTM4MzkzMGFkZTEyZGZlN2MwODEvbGlicmFyeS9zdGQvc3JjL3N5cy9zeW5jL211dGV4L25vX3RocmVhZHMucnPwCBAAXAAAABQAAAAJAAAABwAAAAgAAAAEAAAADAAAAA0AAAAHAAAADAAAAAQAAAAOAAAABwAAACQAAAAEAAAADwAAABAAAAAMAAAABAAAABEAAAASAAAAEwAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkABAAAAAAAAAABAAAAFAAAAC9ydXN0Yy8xMjlmM2I5OTY0YWY0ZDRhNzA5ZDEzODM5MzBhZGUxMmRmZTdjMDgxL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwDwCRAASwAAAP8JAAAOAAAAY2Fubm90IHRyYW5zbXV0ZV9jb3B5IGlmIERzdCBpcyBsYXJnZXIgdGhhbiBTcmMATAoQAC8AAAAHAAAABAAAAAQAAAAVAAAABwAAAAQAAAAEAAAAFgAAAEVycm9yaW52YWxpZCB2YWx1ZTogLCBleHBlY3RlZCAAqQoQAA8AAAC4ChAACwAAAGludmFsaWQgbGVuZ3RoIADUChAADwAAALgKEAALAAAABwAAAAwAAAAEAAAAFwAAABgAAAAZAAAAGgAAAAcAAAAMAAAABAAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcGFydGl0aW9uaW5nL3FidmgvdHJhdmVyc2FsLnJzADQLEAB3AAAATgAAACMAAAB0aGUgZW51bSB2YXJpYW50IFR5cGVkU2hhcGU6OkN1c3RvbSBjYW5ub3QgYmUgc2VyaWFsaXplZC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvc2hhcGUvdHJpbWVzaC5ycwAAAPQLEABpAAAATQMAAB4AAAD0CxAAaQAAAE4DAAAeAAAA9AsQAGkAAABPAwAAHgAAAAcAAAAkAAAABAAAAB0AAAAeAAAAHwAAACAAAAAHAAAAJAAAAAQAAAAdAAAAHgAAAB8AAAAgAAAAIQAAABwAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvaW5kZXhtYXAtMi4yLjYvc3JjL21hcC9jb3JlLnJz0AwQAGQAAAAtAAAAIwAAANAMEABkAAAAUwEAAD0AAADQDBAAZAAAACUAAAAPAAAATWF0cml4IGluaXQuIGVycm9yOiB0aGUgc2xpY2UgZGlkIG5vdCBjb250YWluIHRoZSByaWdodCBudW1iZXIgb2YgZWxlbWVudHMuL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS9jb25zdHJ1Y3Rpb24ucnMAAACvDRAAbgAAAGsAAAAJAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvZGF0YS9hcmVuYS5ycwAwDhAAZwAAAAoBAAAoAAAAY29ycnVwdCBmcmVlIGxpc3QAAACoDhAAEQAAADAOEABnAAAACwEAACsAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9kYXRhL2dyYXBoLnJzYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5lZGdlcy5sZW4oKSAhPSBjcmF0ZTo6SU5WQUxJRF9VU0laRQAAANQOEABnAAAA3AAAAAkAAABHcmFwaDo6YWRkX2VkZ2U6IG5vZGUgaW5kaWNlcyBvdXQgb2YgYm91bmRzAIgPEAArAAAA1A4QAGcAAADkAAAAGwAAAGFzc2VydGlvbiBmYWlsZWQ6IHNlbGYubm9kZXMubGVuKCkgIT0gY3JhdGU6OklOVkFMSURfVVNJWkUAANQOEABnAAAAswAAAAkAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9kYXRhL2NvYXJlbmEucnMAAAAYEBAAaQAAAF0AAAAiAAAAGBAQAGkAAABOAAAAEgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL2R5bmFtaWNzL2pvaW50L2ltcHVsc2Vfam9pbnQvaW1wdWxzZV9qb2ludF9zZXQucnMApBAQAIsAAAANAQAAFwAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL2R5bmFtaWNzL2pvaW50L211bHRpYm9keV9qb2ludC9tdWx0aWJvZHlfam9pbnRfc2V0LnJzAEAREACPAAAAfQAAACsAAABAERAAjwAAAH4AAABGAAAAQBEQAI8AAAC+AAAAPgAAAEAREACPAAAAvwAAAC8AAABAERAAjwAAAMIAAABCAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvZ2VvbWV0cnkvY29sbGlkZXJfc2V0LnJzUGFyZW50IHJpZ2lkIGJvZHkgbm90IGZvdW5kLgAAIBIQAHIAAAB5AAAADgAAACASEAByAAAAfQAAADUAAAAgEhAAcgAAAIAAAAAiAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVn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AAAAAAABAAAAcgAAAHMAAAB0AAAABAAAAAAAAAABAAAAdQAAAHYAAAB3AAAADAAAAAQAAAB4AAAAeQAAAHoAAAB7AAAAEAAAAAQAAAB8AAAAfQAAAHN0cnVjdCBEZXNlcmlhbGl6YWJsZVdvcmxkIHdpdGggOSBlbGVtZW50cwAA3B0QACoAAAAAAAAABQAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAgAAAAEAAABJbnZhbGlkIHNpemUgOiBzaXplcyBtdXN0IGZpdCBpbiBhIHVzaXplICgwIHRvICk0HhAADQAAAEEeEAAiAAAAYx4QAAEAAAD/////Y2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGFmdGVyIGJlaW5nIGRyb3BwZWQAAIsAAAAEAAAABAAAAIwAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvanMtc3lzLTAuMy42OS9zcmMvbGliLnJzAADEHhAAXgAAALAYAAABAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdGNhcGFjaXR5IG92ZXJmbG93VGhlIGxvb3NlbmluZyBtYXJnaW4gbXVzdCBiZSBwb3NpdGl2ZS4AAACvHxAAJgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvYm91bmRpbmdfdm9sdW1lL2FhYmIucnPgHxAAcAAAAEgCAAAJAAAASW5kZXggb3V0IG9mIGJvdW5kcwBgIBAAEwAAAEFsbG9jYXRpb24gZnJvbSBpdGVyYXRvciBlcnJvcjogdGhlIGl0ZXJhdG9yIGRpZCBub3QgeWllbGQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGVsZW1lbnRzLi9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9uYWxnZWJyYS0wLjMzLjAvc3JjL2Jhc2UvZGVmYXVsdF9hbGxvY2F0b3IucnMAAADWIBAAcwAAAIAAAAAJAAAAAAAAAJQAAAAAAAAAAQAAAJUAAACWAAAAlwAAAJgAAACZAAAAmgAAAJsAAACcAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9kZWZhdWx0X3F1ZXJ5X2Rpc3BhdGNoZXIucnMAAIwhEAB6AAAAzQEAADEAAACMIRAAegAAAOABAAAxAAAAjCEQAHoAAAA7AgAALwAAAIwhEAB6AAAASgIAAC8AAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWNoYW5uZWwtMC41LjEzL3NyYy93YWtlci5ycwBIIhAAawAAAGkAAAArAAAASCIQAGsAAABHAAAAKAAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWNoYW5uZWwtMC41LjEzL3NyYy9jaGFubmVsLnJzAAAA/CIQAG0AAAC7AQAALQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9jcm9zc2JlYW0tY2hhbm5lbC0wLjUuMTMvc3JjL2NvbnRleHQucnMAAAB8IxAAbQAAADMAAAAeAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Nyb3NzYmVhbS1jaGFubmVsLTAuNS4xMy9zcmMvZmxhdm9ycy9saXN0LnJzAAD8IxAAcgAAAAYBAABDAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2Nyb3NzYmVhbS1jaGFubmVsLTAuNS4xMy9zcmMvZmxhdm9ycy96ZXJvLnJzAACAJBAAcgAAAOkAAAAtAAAAgCQQAHIAAAAAAQAAJgAAAIAkEAByAAAAAgEAAEkAAACAJBAAcgAAAAMBAABHAAAAgCQQAHIAAAAHAQAASQAAAIAkEAByAAAACAEAAEcAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvY3Jvc3NiZWFtLWNoYW5uZWwtMC41LjEzL3NyYy9mbGF2b3JzL2FycmF5LnJzAFQlEABzAAAAdwEAACoAAABUJRAAcwAAAHkBAAA3AAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS92ZWNfc3RvcmFnZS5yc01hdHJpeCBpbml0LiBmcm9tIGl0ZXJhdG9yOiBpdGVyYXRvciBub3QgbG9uZyBlbm91Z2guAADWIBAAcwAAAEwAAAAJAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXicJhAAIAAAAC9ydXN0Yy8xMjlmM2I5OTY0YWY0ZDRhNzA5ZDEzODM5MzBhZGUxMmRmZTdjMDgxL2xpYnJhcnkvc3RkL3NyYy9zeXMvc3luYy9tdXRleC9ub190aHJlYWRzLnJzxCYQAFwAAAAUAAAACQAAAJ0AAAAIAAAABAAAAJ4AAACfAAAAnQAAACQAAAAEAAAAoAAAACgpbWluID4gbWF4LCBvciBlaXRoZXIgd2FzIE5hTi4gbWluID0gLCBtYXggPSAAAFYnEAAkAAAAeicQAAgAAAAvcnVzdGMvMTI5ZjNiOTk2NGFmNGQ0YTcwOWQxMzgzOTMwYWRlMTJkZmU3YzA4MS9saWJyYXJ5L2NvcmUvc3JjL251bS9mMzIucnMAlCcQAEsAAADoBQAACQAAAJ0AAAAEAAAABAAAAKEAAAAvcnVzdGMvMTI5ZjNiOTk2NGFm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AJcAAABtAAAANgAAAPQxEACXAAAAgQAAAC0AAAD0MRAAlwAAAJgAAAAmAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9jb250YWN0X21hbmlmb2xkcy9jb250YWN0X21hbmlmb2xkc19jb21wb3NpdGVfc2hhcGVfc2hhcGUucnMAzDIQAJsAAABHAAAAHAAAAMwyEACbAAAARwAAADYAAACdAAAANAAAAAQAAADOAAAAzwAAAMwyEACbAAAAXQAAADUAAADMMhAAmwAAAHoAAAAuAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9jb250YWN0X21hbmlmb2xkcy9jb250YWN0X21hbmlmb2xkc19oZWlnaHRmaWVsZF9jb21wb3NpdGVfc2hhcGUucnMAAAC8MxAAoQAAAEoAAAAcAAAAvDMQAKEAAABKAAAANgAAAJ0AAAA4AAAABAAAANAAAADRAAAAvDMQAKEAAABkAAAAOQAAALwzEAChAAAAgQAAADIAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3F1ZXJ5L2NvbnRhY3RfbWFuaWZvbGRzL2NvbnRhY3RfbWFuaWZvbGRzX2NvbXBvc2l0ZV9zaGFwZV9jb21wb3NpdGVfc2hhcGUucnMAAAC0NBAApQAAAEYAAAAcAAAAtDQQAKUAAABGAAAANgAAAJ0AAAA4AAAABAAAANIAAADTAAAAnQAAADwAAAAEAAAA1AAAANUAAAC0NBAApQAAAHgAAABBAAAAtDQQAKUAAACXAAAAOgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcXVlcnkvZXBhL2VwYTMucnMAAMQ1EABqAAAA8AAAACQAAADENRAAagAAAPEAAAAkAAAAxDUQAGoAAADyAAAAJAAAAMQ1EABqAAAADQEAACcAAADENRAAagAAAA0BAABEAAAAxDUQAGoAAAASAQAAJwAAAMQ1EABqAAAAEgEAAEQAAADENRAAagAAABcBAAAnAAAAxDUQAGoAAAAXAQAARAAAAMQ1EABqAAAAHAEAACcAAADENRAAagAAABwBAABEAAAAxDUQAGoAAAAhAQAAKAAAAMQ1EABqAAAAPQEAADIAAADENRAAagAAAEQBAAAiAAAAxDUQAGoAAABdAQAAFwAAAMQ1EABqAAAAXwEAACwAAADENRAAagAAAGABAAAsAAAAxDUQAGoAAABhAQAALAAAAMQ1EABqAAAAlwEAABcAAADENRAAagAAAJgBAAAjAAAAxDUQAGoAAABvAQAAHwAAAMQ1EABqAAAAgwEAADoAAADENRAAagAAAIMBAAAvAAAAxDUQAGoAAABYAQAALAAAAMQ1EABqAAAAowEAACQAAABhc3NlcnRpb24gZmFpbGVkOiBtaW5fYm91bmQuaXNfZmluaXRlKCkvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3F1ZXJ5L2dqay9namsucnPnNxAAaQAAAIkAAAAJAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9zaGFwZS9oZWlnaHRmaWVsZDMucnMAAGA4EABuAAAAzAIAACkAAABgOBAAbgAAANgCAAAnAAAAYDgQAG4AAADZAgAAJwAAAGA4EABuAAAA2gIAACcAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3NoYXBlL3BvbHlnb25hbF9mZWF0dXJlM2QucnMAAAAQORAAdQAAALgAAAAWAAAAAAAAABA5EAB1AAAAFAEAAB4AAAAQORAAdQAAABYBAAA6AAAAEDkQAHUAAAA+AQAAHgAAABA5EAB1AAAAQAEAADoAAAAQORAAdQAAAGQBAAARAAAAEDkQAHUAAABlAQAAEQAAABA5EAB1AAAAagEAABUAAAAQORAAdQAAAGsBAAAVAAAAaW5kZXggb3V0IG9mIGJvdW5kcwCdAAAAJAAAAAQAAADWAAAA1wAAANgAAADZAAAAnQAAACQAAAAEAAAA1gAAANcAAADYAAAA2QAAACEAAADaAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2luZGV4bWFwLTIuMi42L3NyYy9tYXAucnMAcDoQAF8AAAApAgAAGgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleG1hcC0yLjIuNi9zcmMvbWFwL2NvcmUucnPgOhAAZAAAAC0AAAAjAAAA4DoQAGQAAABTAQAAPQAAAGluZGV4IG5vdCBmb3VuZADgOhAAZAAAADoAAAAKAAAAYXNzZXJ0aW9uIGZhaWxlZDogaW5kaWNlcy5jYXBhY2l0eSgpIC0gaW5kaWNlcy5sZW4oKSA+PSBlbnRyaWVzLmxlbigpL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL2luZGV4bWFwLTIuMi42L3NyYy9tYXAvY29yZS9yYXcucnMAAADJOxAAaAAAAA4AAAAFAAAAyTsQAGgAAABUAAAALgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleG1hcC0yLjIuNi9zcmMvbWFwL2NvcmUvZW50cnkucnMAAFQ8EABqAAAANgEAABkAAADJOxAAaAAAAH0AAAAaAAAA4DoQAGQAAAAlAAAADwAAAGdlbW06IGRpbWVuc2lvbnMgbWlzbWF0Y2ggZm9yIGFkZGl0aW9uLgDwPBAAJwAAAEdlbXY6IGRpbWVuc2lvbnMgbWlzbWF0Y2guTWF0cml4IHNsaWNpbmcgb3V0IG9mIGJvdW5kcy4vVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbmFsZ2VicmEtMC4zMy4wL3NyYy9iYXNlL21hdHJpeF92aWV3LnJzVz0QAG0AAAAjAQAACQAAAFc9EABtAAAAJwEAAAkAAABSb3dzIHJhbmdlIHBhaXI6IHRoZSByYW5nZXMgbXVzdCBub3Qgb3ZlcmxhcC4AAABXPRAAbQAAAB8DAAAFAAAAUm93cyByYW5nZSBwYWlyOiBpbmRleCBvdXQgb2YgcmFuZ2UuQ29sdW1ucyByYW5nZSBwYWlyOiB0aGUgcmFuZ2VzIG11c3Qgbm90IG92ZXJsYXAuQ29sdW1ucyByYW5nZSBwYWlyOiBpbmRleCBvdXQgb2YgcmFuZ2UuRGF0YSBzdG9yYWdlIGJ1ZmZlciBkaW1lbnNpb24gbWlzbWF0Y2guAADoJRAAbQAAAHwAAAAJAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS9jb25zdHJ1Y3Rpb24ucnMAANg+EABuAAAAYgQAAAwAAABDb21wb25lbnR3aXNlIG11bC9kaXY6IG1pc21hdGNoZWQgbWF0cml4IGRpbWVuc2lvbnMuWD8QADQAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbmFsZ2VicmEtMC4zMy4wL3NyYy9iYXNlL2NvbXBvbmVudHdpc2UucnMAlD8QAG8AAACWAAAABQAAAE1hdHJpeCB2aWV3OiBpbnB1dCBkYXRhIGJ1ZmZlciB0b28gc21hbGwuL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS9jb25zdHJ1Y3Rpb25fdmlldy5ycz1AEABzAAAAMAAAAAkAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbmFsZ2VicmEtMC4zMy4wL3NyYy9iYXNlL29wcy5yc01hdHJpeCBpbmRleCBvdXQgb2YgYm91bmRzLk1hdHJpeCBhZGRpdGlvbi9zdWJ0cmFjdGlvbiBkaW1lbnNpb25zIG1pc21hdGNoLkBBEAAwAAAAwEAQAGUAAABqAQAAAQAAACBhbmQgOiBsZWZ0IHJvd3MgIT0gcmlnaHQgcm93cy5NYXRyaXggbXVsdGlwbGljYXRpb24gb3V0cHV0IGRpbWVuc2lvbnMgbWlzbWF0Y2ggOiBsZWZ0IGNvbHMgIT0gcmlnaHQgcm93cy4AAKdBEAAxAAAAiEEQAAUAAADYQRAAGgAAAMBAEABlAAAA1wIAAAkAAABBeHB5OiBtaXNtYXRjaGVkIHZlY3RvciBzaGFwZXMuABxCEAAfAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS9ibGFzLnJzAABEQhAAZgAAAEIBAAAJAAAAREIQAGYAAAAIAgAACQAAAERvdCBwcm9kdWN0IGRpbWVuc2lvbnMgbWlzbWF0Y2ggZm9yIHNoYXBlcyAAzEIQACsAAACIQRAABQAAAI1BEAAaAAAAREIQAGYAAAAgAAAACQAAAERCEABmAAAAGAMAAAkAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbmFsZ2VicmEtMC4zMy4wL3NyYy9iYXNlL21hdHJpeC5yc01hdHJpeCBlbGVtZW50cyBzd2FwIGluZGV4IG91dCBvZiBib3VuZHMuAAAAMEMQAGgAAADDBAAACQAAAFVuYWJsZSB0byBjb3B5IGZyb20gYSBtYXRyaXggd2l0aCBhIGRpZmZlcmVudCBzaGFwZS4wQxAAaAAAAOwEAAAJAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS9lZGl0aW9uLnJzYXNzZXJ0aW9uIGZhaWxlZDogaXJvdzEgPCBzZWxmLm5yb3dzKCkgJiYgaXJvdzIgPCBzZWxmLm5yb3dzKCkAGEQQAGkAAAA4AQAACQAAAFRoZSBpbnB1dCB2ZWN0b3IgbXVzdCBub3QgYmUgZW1wdHkuL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS9taW5fbWF4LnJz80QQAGkAAADhAAAACQAAAE1heGltdW0gbnVtYmVyIG9mIHBlcm11dGF0aW9ucyBleGNlZWRlZC4vVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbmFsZ2VicmEtMC4zMy4wL3NyYy9saW5hbGcvcGVybXV0YXRpb25fc2VxdWVuY2UucnOURRAAeAAAAFUAAAANAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvbGluYWxnL2x1LnJzTFUgc29sdmUgbWF0cml4IGRpbWVuc2lvbiBtaXNtYXRjaC4AAACCRhAAIwAAABxGEABmAAAA9gAAAAkAAABMVSBzb2x2ZTogdW5hYmxlIHRvIHNvbHZlIGEgbm9uLXNxdWFyZSBzeXN0ZW0uAAAcRhAAZgAAAPsAAAAJAAAAHEYQAGYAAABoAAAAHgAAAAIAAABJbmRleCBvdXQgb2YgYm91bmRzLi9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9uYWxnZWJyYS0wLjMzLjAvc3JjL2Jhc2UvaW5kZXhpbmcucnMAAChHEABqAAAAUgEAABoAAACdAAAACAAAAAQAAADbAAAAbWlkID4gbGVuAAAAtEcQAAkAAAD//////////8hHEABB4I/BAAvrggFIYXNoIHRhYmxlIGNhcGFjaXR5IG92ZXJmbG934EcQABwAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvaGFzaGJyb3duLTAuMTQuNS9zcmMvcmF3L21vZC5ycwAAAARIEABlAAAAVgAAACgAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9jb250cm9sL2NoYXJhY3Rlcl9jb250cm9sbGVyLnJzAAAAfEgQAHkAAABuAwAAOQAAAHxIEAB5AAAAbwMAACMAAAB8SBAAeQAAAF8DAAA4AAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvY29udHJvbC9yYXlfY2FzdF92ZWhpY2xlX2NvbnRyb2xsZXIucnMoSRAAgAAAACIBAAAZAAAAKEkQAIAAAABNAQAAJQAAAChJEACAAAAAWQEAACoAAAAoSRAAgAAAAJ8BAAAeAAAAKEkQAIAAAAC6AQAADgAAAChJEACAAAAA0AEAAA4AAAAoSRAAgAAAAKYCAAASAAAAKEkQAIAAAACpAgAAKQAAAChJEACAAAAArgIAACgAAAAoSRAAgAAAALQCAAAxAAAAKEkQAIAAAABgAgAALQAAAChJEACAAAAAcAIAACQAAAAoSRAAgAAAAHICAAA4AAAAKEkQAIAAAABzAgAAMQAAAChJEACAAAAAdQIAACwAAABhc3NlcnRpb24gZmFpbGVkOiBudW1fd2hlZWxzX29uX2dyb3VuZCA+IDAAAChJEACAAAAAeAIAABkAAABhc3NlcnRpb24gZmFpbGVkOiBtYXhfaW1wX3NxdWFyZWQgPj0gMC4wKEkQAIAAAACGAgAAFQAAAChJEACAAAAAMAIAAC0AAAAoSRAAgAAAADQCAAAeAAAAKEkQAIAAAAA8AgAAJAAAAChJEACAAAAAQgIAADAAAAAoSRAAgAAAAEMCAAApAAAAKEkQAIAAAABHAgAAJAAAAChJEACAAAAATwIAACQAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9kYXRhL2FyZW5hLnJzAHxLEABnAAAACgEAACgAAABjb3JydXB0IGZyZWUgbGlzdAAAAPRLEAARAAAAfEsQAGcAAAALAQAAKwAAAGluc2VydGluZyB3aWxsIGFsd2F5cyBzdWNjZWVkIGFmdGVyIHJlc2VydmluZyBhZGRpdGlvbmFsIHNwYWNlAACUAAAAAAAAAAEAAADcAAAAfEsQAGcAAABMAQAADgAAAE5vIGVsZW1lbnQgYXQgaW5kZXgvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9kYXRhL2NvYXJlbmEucnOTTBAAaQAAAE4AAAASAAAAk0wQAGkAAACBAAAAKwAAAJNMEABpAAAAggAAABMAAACTTBAAaQAAAIIAAAArAAAAk0wQAGkAAAB4AAAAKwAAAJNMEABpAAAAeQAAABMAAABDYW5ub3QgaW5kZXggdGhlIHNhbWUgb2JqZWN0IHR3aWNlLgBcTRAAIwAAAJNMEABpAAAAcAAAAAkAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9kYXRhL2dyYXBoLnJzYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5ub2Rlcy5sZW4oKSAhPSBjcmF0ZTo6SU5WQUxJRF9VU0laRQAAAJhNEABnAAAAswAAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBzZWxmLmVkZ2VzLmxlbigpICE9IGNyYXRlOjpJTlZBTElEX1VTSVpFAACYTRAAZwAAANwAAAAJAAAAR3JhcGg6OmFkZF9lZGdlOiBub2RlIGluZGljZXMgb3V0IG9mIGJvdW5k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eSBtdXN0IGJlIGR5bmFtaWMuHFkQAEQAAABAVBAAhQAAAAkEAAANAAAAQFQQAIUAAAC4BAAAHwAAAEBUEACFAAAAugQAABwAAABAVBAAhQAAAL4EAAAtAAAAQFQQAIUAAAC+BAAAFgAAAEBUEACFAAAAMwUAACIAAABAVBAAhQAAADMFAAAUAAAAQFQQAIUAAABJBQAAIwAAAEBUEACFAAAASQUAABQAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9keW5hbWljcy9qb2ludC9tdWx0aWJvZHlfam9pbnQvbXVsdGlib2R5X2pvaW50X3NldC5ycwD4WRAAjwAAANcAAABKAAAA+FkQAI8AAADaAAAAQwAAAPhZEACPAAAA2wAAAD0AAAD4WRAAjwAAANwAAABDAAAA+FkQAI8AAADwAAAASAAAAPhZEACPAAAA8wAAADkAAAD4WRAAjwAAAPcAAAA1AAAA+FkQAI8AAAD4AAAATQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL2R5bmFtaWNzL2pvaW50L211bHRpYm9keV9qb2ludC9tdWx0aWJvZHlfbGluay5ycwAACFsQAIoAAABxAAAAHQAAAEludGVybmFsIGVycm9yOiBjaXJjdWxhciByaWdpZCBib2R5IGRlcGVuZGVuY3kuAKRbEAAvAAAACFsQAIoAAABzAAAACQAAAEludmFsaWQgcGFyZW50IGluZGV4LgAAAOxbEAAVAAAACFsQAIoAAAB3AAAACQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL2R5bmFtaWNzL2pvaW50L211bHRpYm9keV9qb2ludC9tdWx0aWJvZHlfam9pbnQucnMAHFwQAIsAAABqAAAALgAAABxcEACLAAAAagAAABwAAABub3QgeWV0IGltcGxlbWVudGVkABxcEACLAAAAeAAAABEAAAAcXBAAiwAAAHwAAAA7AAAAHFwQAIsAAACDAAAAEgAAABxcEACLAAAAXwAAACMAAAAcXBAAiwAAAK0AAAARAAAAHFwQAIsAAAC1AAAAEgAAABxcEACLAAAA0wAAAC4AAAAcXBAAiwAAANMAAAAiAAAAHFwQAIsAAADXAAAAEQAAABxcEACLAAAA2wAAADoAAAAcXBAAiwAAAN4AAAASAAAAHFwQAIsAAADCAAAAMQAAABxcEACLAAAA7AAAABQAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9keW5hbWljcy9qb2ludC9tdWx0aWJvZHlfam9pbnQvdW5pdF9tdWx0aWJvZHlfam9pbnQucnOsXRAAkAAAACEAAAAOAAAArF0QAJAAAAAiAAAADgAAAKxdEACQAAAAPAAAAAUAAACsXRAAkAAAAFcAAAAOAAAArF0QAJAAAABYAAAADgAAAKxdEACQAAAAfgAAAAUAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9keW5hbWljcy9yaWdpZF9ib2R5X2NvbXBvbmVudHMucnMAnF4QAHsAAADGAwAAOwAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL2R5bmFtaWNzL3NvbHZlci9jYXRlZ29yaXphdGlvbi5ycwAoXxAAewAAAA8AAAAZAAAAKF8QAHsAAAA0AAAAFgAAAChfEAB7AAAANQAAABoAAAAoXxAAewAAADYAAAAaAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvZHluYW1pY3Mvc29sdmVyL2NvbnRhY3Rf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L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL2dlb21ldHJ5L2Jyb2FkX3BoYXNlX211bHRpX3NhcC9zYXBfcmVnaW9uLnJzVnwQAIYAAABHAAAACQAAAFZ8EACGAAAARgAAAAkAAABWfBAAhgAAAIoAAAAJAAAAVnwQAIYAAACCAAAADQAAAFZ8EACGAAAArgAAACIAAABSZWFjaGVkIHVuZXhwZWN0ZWQgc3RhdGU6IGF0dGVtcHRlZCB0byByZW1vdmUgbW9yZSBzdWItcHJvcGVyIHByb3hpZXMgdGhhbiBhZGRlZCAocmVtb3Zpbmc6ICwgdG90YWw6ICkuACx9EABcAAAAiH0QAAkAAACRfRAAAgAAAHJhcGllcjNkOjpnZW9tZXRyeTo6YnJvYWRfcGhhc2VfbXVsdGlfc2FwOjpzYXBfcmVnaW9uAAAAVnwQAIYAAADLAAAAFQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL2dlb21ldHJ5L2Jyb2FkX3BoYXNlX211bHRpX3NhcC9zYXBfdXRpbHMucnMAAAD0fRAAhQAAAA0AAAAFAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvZ2VvbWV0cnkvaW50ZXJhY3Rpb25fZ3JhcGgucnMAjH4QAHcAAACCAAAAPwAAAIx+EAB3AAAAgwAAABgAAACMfhAAdwAAAIMAAAAxAAAAjH4QAHcAAADoAAAAPQAAAIx+EAB3AAAA6QAAACkAAACMfhAAdwAAAOkAAABCAAAAjH4QAHcAAADyAAAAOQAAAIx+EAB3AAAA8wAAACUAAACMfhAAdwAAAPMAAAA+AAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvZ2VvbWV0cnkvbmFycm93X3BoYXNlLnJzAACUfxAAcgAAALgAAAAoAAAAlH8QAHIAAACOAQAAEQAAAJR/EAByAAAAmgEAABEAAACUfxAAcgAAAOQBAAAvAAAAlH8QAHIAAADkAQAATgAAAJR/EAByAAAAwwIAACAAAACUfxAAcgAAAMQCAAAgAAAAlH8QAHIAAADGAgAAIQAAAJR/EAByAAAAxwIAACEAAACUfxAAcgAAANYCAAAmAAAAlH8QAHIAAADaAgAAJgAAAJR/EAByAAAAKgMAACEAAACUfxAAcgAAACsDAAAhAAAAlH8QAHIAAAA2AwAAPgAAAJR/EAByAAAANQMAAD4AAABBIGNvbnRhY3QgbWFuaWZvbGQgY2Fubm90IGNvbnRhaW4gbW9yZSB0aGFuIDI1NSBjb250YWN0cyBjdXJyZW50bHksIGRyb3BwaW5nIGNvbnRhY3QgaW4gZXhjZXNzLgD4gBAAXwAAAHJhcGllcjNkOjpnZW9tZXRyeTo6bmFycm93X3BoYXNllH8QAHIAAADXAwAAHQAAAJR/EAByAAAATgQAACMAAACUfxAAcgAAAF8EAAAuAAAAlH8QAHIAAABrBAAALgAAAJR/EAByAAAAfwQAABkAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9nZW9tZXRyeS9jb2xsaWRlcl9zZXQucnMAANCBEAByAAAArAAAADYAAADQgRAAcgAAABcBAAAcAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvcGlwZWxpbmUvcGh5c2ljc19waXBlbGluZS5ycwAAZIIQAHYAAAAzAQAAIQAAAGSCEAB2AAAANAEAACEAAABkghAAdgAAAOoAAAAdAAAAZIIQAHYAAADxAAAAKwAAAGSCEAB2AAAA8wAAADMAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcmFwaWVyM2QtMC4yMi4wL3NyYy9waXBlbGluZS9xdWVyeV9waXBlbGluZS9nZW5lcmF0b3JzLnJzACyDEAB/AAAAKgAAACYAAAAsgxAAfwAAAFAAAAAvAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3JhcGllcjNkLTAuMjIuMC9zcmMvcGlwZWxpbmUvcXVlcnlfcGlwZWxpbmUvbW9kLnJzzIMQAHgAAABTAQAAGgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL3BpcGVsaW5lL3VzZXJfY2hhbmdlcy5ycwAAVIQQAHIAAAAUAAAALAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9yYXBpZXIzZC0wLjIyLjAvc3JjL3V0aWxzLnJzVW5hYmxlIHRvIGluZGV4IHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UuAAAAOoUQACcAAADYhBAAYgAAAHICAAAJAAAAFEcQABQAAADYhBAAYgAAAHMCAAAJAAAA2IQQAGIAAACAAgAACQAAAER5bmFtaWNGaXhlZEtpbmVtYXRpY1Bvc2l0aW9uQmFzZWRLaW5lbWF0aWNWZWxvY2l0eUJhc2VkBwAAAAUAAAAWAAAAFgAAAKSFEACrhRAAsIUQAMaFEAAwAAAAQAAAADQAAAABAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9zaW1iYS0wLjkuMC9zcmMvc2ltZC9hdXRvX3NpbWRfaW1wbC5ycwAACoYQAGwAAADGBQAAAQAAAOAAAAAIAAAABAAAAOEAAADiAAAA4AAAAAwAAAAEAAAA4wAAAOAAAAAIAAAABAAAAOQAAADlAAAAIAAAAAQAAADmAAAA4AAAAAwAAAAEAAAA5wAAAOgAAADEAAAABAAAAOkAAADgAAAAEAAAAAQAAADqAAAA6wAAAFQAAAAEAAAA7AAAAOAAAAAYAAAABAAAAO0AAADgAAAACAAAAAQAAADuAAAA7wAAAGQAAAAEAAAA8AAAAOUAAAAgAAAABAAAAPEAAADyAAAAYAAAAAQAAADzAAAA4AAAAAwAAAAEAAAA9AAAAOAAAAAoAAAABAAAAPUAAAD2AAAAeAAAAAQAAAD3AAAA+AAAADAAAAAEAAAA+QAAAOAAAAAkAAAABAAAAPoAAADgAAAABAAAAAQAAAD7AAAA4AAAABwAAAAEAAAA/AAAAOAAAAAMAAAABAAAAP0AAAD+AAAAIAAAAAQAAAD/AAAAAAEAAGAAAAAEAAAAAQEAAP4AAAAgAAAABAAAAAIBAABhc3NlcnRpb24gZmFpbGVkOiBtaW4gPD0gbWF4L3J1c3RjLzEyOWYzYjk5NjRhZjRkNGE3MDlkMTM4MzkzMGFkZTEyZGZlN2MwODEvbGlicmFyeS9jb3JlL3NyYy9jbXAucnMAKIgQAEcAAACLAwAACQAAAOAAAAAEAAAABAAAAAMBAADgAAAABAAAAAQAAAAEAQAAbWlkID4gbGVuAAAAoIgQAAkAAAAvcnVzdGMvMTI5ZjNiOTk2NGFmNGQ0YTcwOWQxMzgzOTMwYWRlMTJkZmU3YzA4MS9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJztIgQAEwAAAD0BQAADQAAAGludGVybmFsIGVycm9yOiBlbnRlcmVkIHVucmVhY2hhYmxlIGNvZGUAAAAAAAAAAP//////////QIkQAEHYksIAC96+AWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvaW5kZXhtYXAtMi4yLjYvc3JjL21hcC5ycwAAg4kQAF8AAAApAgAAGgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleG1hcC0yLjIuNi9zcmMvbWFwL2NvcmUucnP0iRAAZAAAAC0AAAAjAAAA9IkQAGQAAABTAQAAPQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleG1hcC0yLjIuNi9zcmMvbWFwL2NvcmUvcmF3LnJzeIoQAGgAAABUAAAALgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9pbmRleG1hcC0yLjIuNi9zcmMvbWFwL2NvcmUvZW50cnkucnMAAPCKEABqAAAANgEAABkAAAD0iRAAZAAAACUAAAAPAAAATWF0cml4IGluZGV4IG91dCBvZiBib3VuZHMuL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL25hbGdlYnJhLTAuMzMuMC9zcmMvYmFzZS9ibGFzLnJzRG90IHByb2R1Y3QgZGltZW5zaW9ucyBtaXNtYXRjaCBmb3Igc2hhcGVzICBhbmQgOiBsZWZ0IHJvd3MgIT0gcmlnaHQgcm93cy4A/YsQACsAAAAojBAABQAAAC2MEAAaAAAAl4sQAGYAAAAgAAAACQAAAC4vVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvbmFsZ2VicmEtMC4zMy4wL3NyYy9saW5hbGcvc3ltbWV0cmljX2VpZ2VuLnJzcYwQAHMAAADJAAAALwAAAHGMEABzAAAAkAAAACEAAABxjBAAcwAAAJEAAAAhAAAAcYwQAHMAAACwAAAAOAAAAHGMEABzAAAA/gAAABgAAABxjBAAcwAAAEAAAAA+AAAAcYwQAHMAAABUAAAAIAAAAEluZGV4IG91dCBvZiBib3VuZHMu4AAAAAgAAAAEAAAABQEAAEhhc2ggdGFibGUgY2FwYWNpdHkgb3ZlcmZsb3d4jRAAHAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9oYXNoYnJvd24tMC4xNC41L3NyYy9yYXcvbW9kLnJzAAAAnI0QAGUAAABWAAAAKAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvYm91bmRpbmdfdm9sdW1lL2FhYmIucnNUaGUgbG9vc2VuaW5nIG1hcmdpbiBtdXN0IGJlIHBvc2l0aXZlLgAAhI4QACYAAAAUjhAAcAAAAEgCAAAJAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9ib3VuZGluZ192b2x1bWUvYWFiYl91dGlscy5yc1BvaW50IGNsb3VkIEFhYmIgY29uc3RydWN0aW9uOiB0aGUgaW5wdXQgaXRlcmF0b3Igc2hvdWxkIHlpZWxkIGF0IGxlYXN0IG9uZSBwb2ludC7EjhAAdgAAAEAAAAAYAAAAxI4QAHYAAABXAAAAGAAAAHR3byBhcnJheXMgY29udGFpbmluZyBhdCBsZWFzdCAgZmxvYXRzAACsjxAAHwAAAMuPEAAHAAAAGAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvbWFzc19wcm9wZXJ0aWVzL21hc3NfcHJvcGVydGllc190cmltZXNoM2QucnMAAADojxAAhQAAABYAAAAXAAAA6I8QAIUAAAAXAAAAFwAAAOiPEACFAAAAGAAAABcAAADojxAAhQAAAKUAAAASAAAA6I8QAIUAAACmAAAAEgAAAOiPEACFAAAApwAAABIAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3BhcnRpdGlvbmluZy9xYnZoL3V0aWxzLnJzANCQEABzAAAAJQAAABEAAADQkBAAcwAAABIAAAARAAAA0JAQAHMAAAATAAAAFgAAANCQEABzAAAAFQAAABIAAADQkBAAcwAAABcAAAAVAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9wYXJ0aXRpb25pbmcvcWJ2aC9idWlsZC5ycwCUkRAAcwAAAEQBAAATAAAAlJEQAHMAAAAsAQAAGQAAAJSREABzAAAALQEAABIAAACUkRAAcwAAALMBAAATAAAAlJEQAHMAAAC1AQAAEwAAAJSREABzAAAAtwEAABMAAACUkRAAcwAAALsBAAAhAAAAlJEQAHMAAACBAQAAKgAAAJSREABzAAAAeQEAAB8AAACUkRAAcwAAAFsBAAAmAAAAlJEQAHMAAABdAQAAHQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcGFydGl0aW9uaW5nL3FidmgvdHJhdmVyc2FsLnJzALiSEAB3AAAATgAAACMAAAC4khAAdwAAAN0AAAAjAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9jbGlwL2NsaXBfYWFiYl9saW5lLnJzAAAAUJMQAHUAAACNAAAAEwAAAFCTEAB1AAAAmwAAABMAAABUaGUgcHJveGltaXR5IG1hcmdpbiBtdXN0IGJlIHBvc2l0aXZlIG9yIG51bGwuAADokxAALgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcXVlcnkvY2xvc2VzdF9wb2ludHMvY2xvc2VzdF9wb2ludHNfYmFsbF9iYWxsLnJzAAAAIJQQAIkAAAAPAAAABQAAAFRoZSBjb21wb3NpdGUgc2hhcGUgbXVzdCBub3QgYmUgZW1wdHkuL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9jbG9zZXN0X3BvaW50cy9jbG9zZXN0X3BvaW50c19jb21wb3NpdGVfc2hhcGVfc2hhcGUucnMA4pQQAJUAAAAbAAAACgAAAOKUEACVAAAAgQAAACEAAADilBAAlQAAAIIAAAAhAAAA4pQQAJUAAACDAAAAIQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcXVlcnkvY2xvc2VzdF9wb2ludHMvY2xvc2VzdF9wb2ludHNfY3Vib2lkX2N1Ym9pZC5ycwAAALiVEACNAAAAUgAAAAUAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3F1ZXJ5L2Nsb3Nlc3RfcG9pbnRzL2Nsb3Nlc3RfcG9pbnRzX2N1Ym9pZF90cmlhbmdsZS5ycwBYlhAAjwAAAE0AAAAFAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9jbG9zZXN0X3BvaW50cy9jbG9zZXN0X3BvaW50c19oYWxmc3BhY2Vfc3VwcG9ydF9tYXAucnMAAAD4lhAAlQAAAA0AAAAFAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9jbG9zZXN0X3BvaW50cy9jbG9zZXN0X3BvaW50c19zdXBwb3J0X21hcF9zdXBwb3J0X21hcC5ycwCglxAAlwAAACAAAAAkAAAA4AAAABgAAAAEAAAABgEAAAcBAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3F1ZXJ5L2NvbnRhY3QvY29udGFjdF9zdXBwb3J0X21hcF9zdXBwb3J0X21hcC5ycwAAAFyYEACJAAAAHgAAACQAAAD+AAAAIAAAAAQAAAD/AAAACAEAAAkBAAAKAQAACwEAAGCZEABgmRAACQEAAAwBAAANAQAA5QAAACAAAAAEAAAA8QAAAA4BAAAPAQAAEAEAABEBAACgmRAAoJkQAA8BAAASAQAAEwEAAP4AAAAgAAAABAAAAP4AAAAgAAAABAAAAAIBAAAUAQAAFQEAABYBAAAXAQAAYJkQAGCZEAAVAQAAGAEAABkBAADlAAAAIAAAAAQAAADlAAAAIAAAAAQAAADmAAAAGgEAABsBAAAcAQAAHQEAAKCZEACgmRAAGwEAAB4BAAAfAQAA+AAAADAAAAAEAAAA+AAAADAAAAAEAAAA+QAAACABAAAhAQAAIgEAACMBAADgmRAA4JkQACEBAAAkAQAAJQEAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcXVlcnkvZGlzdGFuY2UvZGlzdGFuY2VfY29tcG9zaXRlX3NoYXBlX3NoYXBlLnJzAAAAIJoQAIkAAAAXAAAACgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcXVlcnkvZGlzdGFuY2UvZGlzdGFuY2Vfc3VwcG9ydF9tYXBfc3VwcG9ydF9tYXAucnMAvJoQAIsAAAAwAAAAJAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvcXVlcnkvZXBhL2VwYTMucnMAAFibEABqAAAARgAAAA4AAABYmxAAagAAAEcAAAAOAAAAWJsQAGoAAABIAAAADgAAAFibEABqAAAAXgAAAA0AAABYmxAAagAAAF8AAAANAAAAWJsQAGoAAABg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AQAAPAEAAD0BAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAABHAQAASAEAAEkBAABKAQAASwEAAHShEAChAAAAnQAAADUAAAB0oRAAoQAAAMUAAAAVAAAAdKEQAKEAAAC+AAAAIQAAAHShEAChAAAAvwAAACEAAAB0oRAAoQAAAMAAAAAhAAAAQ2xvc2VzdCBwb2ludHMgbm90IGZvdW5kIGRlc3BpdGUgc2V0dGluZyB0aGUgbWF4IGRpc3RhbmNlIHRvIGluZmluaXR5LgAAuKMQAEYAAABwYXJyeTNkOjpxdWVyeTo6bm9ubGluZWFyX3NoYXBlX2Nhc3Q6Om5vbmxpbmVhcl9zaGFwZV9jYXN0X3N1cHBvcnRfbWFwX3N1cHBvcnRfbWFwL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9ub25saW5lYXJfc2hhcGVfY2FzdC9ub25saW5lYXJfc2hhcGVfY2FzdF9zdXBwb3J0X21hcF9zdXBwb3J0X21hcC5ycwAAAFqkEACjAAAAzgAAABEAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3F1ZXJ5L3BvaW50L3BvaW50X2NvbXBvc2l0ZV9zaGFwZS5ycwAAABClEAB9AAAAHQAAAFMAAAAQpRAAfQAAAJgAAAAOAAAAEKUQAH0AAABEAAAAVAAAABClEAB9AAAAawAAADcAAAAQpRAAfQAAAIkAAAA3AAAAEKUQAH0AAAC1AAAAIwAAABClEAB9AAAAuAAAACIAAAAQpRAAfQAAALMAAAAjAAAAYXNzZXJ0aW9uIGZhaWxlZDogc3FuYWIgIT0gMC4wL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy9xdWVyeS9wb2ludC9wb2ludF9zZWdtZW50LnJzAC6mEAB1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0hAAhgAAAHEAAAAWAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy90cmFuc2Zvcm1hdGlvbi9jb252ZXhfaHVsbDMvdmFsaWRhdGlvbi5ycwAAbNQQAIIAAAAGAAAAEgAAAGzUEACCAAAADwAAABQAAABs1BAAggAAAA8AAAAJAAAAbNQQAIIAAAAQAAAACQAAAGzUEACCAAAAEQAAAAkAAABs1BAAggAAABUAAAAJAAAAbNQQAIIAAAAJAAAAEQAAAGFzc2VydGlvbiBmYWlsZWQ6IGZhY2V0c1tmYWNldC5hZGpbaV1dLnZhbGlkbNQQAIIAAAAJAAAACQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvdHJhbnNmb3JtYXRpb24vY29udmV4X2h1bGxfdXRpbHMucnOc1RAAfAAAACkAAAAiAAAAnNUQAHwAAABCAAAAIgAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvdHJhbnNmb3JtYXRpb24vdG9fb3V0bGluZS9iYWxsX3RvX291dGxpbmUucnMAAAA41hAAhQAAAB4AAAAUAAAAONYQAIUAAAAiAAAAFAAAADjWEACFAAAAPAAAABEAAAA41hAAhQAAAEAAAAARAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy90cmFuc2Zvcm1hdGlvbi90b19vdXRsaW5lL2NhcHN1bGVfdG9fb3V0bGluZS5ycwDXEACIAAAAHAAAAAgAAAAAAAAAAQAAAAAAAAACAAAAL1VzZXJzL3NlYmNyb3pldC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby02ZjE3ZDIyYmJhMTUwMDFmL3BhcnJ5M2QtMC4xNy4wL3NyYy90cmFuc2Zvcm1hdGlvbi90b19vdXRsaW5lL3JvdW5kX2NvbnZleF9wb2x5aGVkcm9uX3RvX291dGxpbmUucnOo1xAAmAAAADAAAAAaAAAAqNcQAJgAAAAiAAAANAAAAKjXEACYAAAAIwAAAB4AAACo1xAAmAAAAA8AAAAaAAAAqNcQAJgAAAASAAAAOAAAAKjXEACYAAAAFQAAABwAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3RyYW5zZm9ybWF0aW9uL3RvX3RyaW1lc2gvY29udmV4X3BvbHloZWRyb25fdG9fdHJpbWVzaC5ycwAAoNgQAJIAAAANAAAAHAAAAKDYEACSAAAADwAAADMAAAAvVXNlcnMvc2ViY3JvemV0Ly5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTZmMTdkMjJiYmExNTAwMWYvcGFycnkzZC0wLjE3LjAvc3JjL3RyYW5zZm9ybWF0aW9uL3RvX3RyaW1lc2gvY3lsaW5kZXJfdG9fdHJpbWVzaC5ycwAAAFTZEACJAAAALwAAACwAAABhc3NlcnRpb24gZmFpbGVkOiBuc3ViZGl2ID4gMC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvdHJhbnNmb3JtYXRpb24vdXRpbHMucnMAAAAN2hAAcAAAAFwAAAAFAAAADdoQAHAAAAB8AAAABQAAAA3aEABwAAAAxAAAABAAAAAN2hAAcAAAAMUAAAAQAAAAYXNzZXJ0aW9uIGZhaWxlZDogbnN1YmRpdnMgPiAwAAAN2hAAcAAAANYAAAAFAAAADdoQAHAAAABEAQAAHQAAAA3aEABwAAAAMwEAACcAAABDYW5ub3QgY29tcHV0ZSB0aGUgY2VudGVyIG9mIGxlc3MgdGhhbiAxIHBvaW50LgAQ2xAALwAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvdXRpbHMvY2VudGVyLnJzSNsQAGgAAAAHAAAABQAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvdXRpbHMvY2xlYW51cC5ycwAAAMDbEABpAAAAHQAAABEAAADA2xAAaQAAAB4AAAARAAAAwNsQAGkAAAAfAAAAEQAAAMDbEABpAAAAEwAAAA0AAADA2xAAaQAAABUAAAANAAAAwNsQAGkAAAAMAAAACQAAAMDbEABpAAAADQAAAAkAAADA2xAAaQAAAA4AAAAJAAAAnL8QAHsAAAAHAAAAGAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9wYXJyeTNkLTAuMTcuMC9zcmMvYm91bmRpbmdfdm9sdW1lL2JvdW5kaW5nX3NwaGVyZS5ycwC83BAAewAAAHoAAAAJAAAA4AAAABAAAAAEAAAArAMAAK0DAACuAwAArwMAAOAAAAAoAAAABAAAALADAACxAwAAsgMAALMDAADgAAAADAAAAAQAAAC0AwAAtQMAALYDAAC3AwAA4AAAAAwAAAAEAAAAuAMAALkDAAC6AwAAuwMAAO8AAABkAAAABAAAALwDAAC9AwAAvgMAAL8DAABJbnRlcm5hbEVycm9yAAAA4AAAAAQAAAAEAAAAwAMAAE1pc3NpbmdTdXBwb3J0UG9pbnRJbmNvbXBsZXRlSW5wdXRVbnJlYWNoYWJsZQAAAMEDAAAAAAAAAQAAAMIDAADDAwAAxAMAAGtleS12YWx1ZSBzdXBwb3J0IGlzIGV4cGVyaW1lbnRhbCBhbmQgbXVzdCBiZSBlbmFibGVkIHVzaW5nIHRoZSBga3ZgIGZlYXR1cmU83hAATAAAAC9Vc2Vycy9zZWJjcm96ZXQvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tNmYxN2QyMmJiYTE1MDAxZi9sb2ctMC40LjIyL3NyYy9fX3ByaXZhdGVfYXBpLnJzAAAAkN4QAGUAAAAtAAAACQAAADhj7T7aD0k/Xph7P9oPyT9pN6wxaCEiM7QPFDNoIaIzAAAAPwAAAL8DAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAAAAAQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNdsPST/bD0m/5MsWQAAAAAAAAACA2w9JQMsDAAAIAAAABAAAAMwDAADNAwAAzgMAAGJ5dGUgYXJyYXlib29sZWFuIGBgwuAQAAkAAADL4BAAAQAAAGludGVnZXIgYAAAANzgEAAJAAAAy+AQAAEAAABmbG9hdGluZyBwb2ludCBg+OAQABAAAADL4BAAAQAAAGNoYXJhY3RlciBgABjhEAALAAAAy+AQAAEAAABzdHJpbmcgADThEAAHAAAAdW5pdCB2YWx1ZU9wdGlvbiB2YWx1ZW5ld3R5cGUgc3RydWN0c2VxdWVuY2VtYXBlbnVtdW5pdCB2YXJpYW50bmV3dHlwZSB2YXJpYW50dHVwbGUgdmFyaWFudHN0cnVjdCB2YXJpYW50AAAAAQAAAAAAAAAuMGEgbm9uemVybyB1c2l6ZXVzaXplcmVlbnRyYW50IGluaXTO4RAADgAAAC9ydXN0Yy8xMjlmM2I5OTY0YWY0ZDRhNzA5ZDEzODM5MzBhZGUxMmRmZTdjMDgxL2xpYnJhcnkvY29yZS9zcmMvY2VsbC9vbmNlLnJzAAAA5OEQAE0AAAAkAQAAQgAAAG92ZXJmbG93IGluIER1cmF0aW9uOjpuZXcAAABE4hAAGQAAAC9ydXN0Yy8xMjlmM2I5OTY0YWY0ZDRhNzA5ZDEzODM5MzBhZGUxMmRmZTdjMDgxL2xpYnJhcnkvY29yZS9zcmMvdGltZS5yc2jiEABIAAAA1gAAABkAAADQAwAADAAAAAQAAADRAwAA0gMAANMDAAAvcnVzdC9kZXBzL2RsbWFsbG9jLTAuMi42L3NyYy9kbG1hbGxvYy5yc2Fzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQA2OIQACkAAACoBAAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplIDw9IHNpemUgKyBtYXhfb3ZlcmhlYWQAANjiEAApAAAArgQAAA0AAABsaWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL21vZC5yc3VzZSBvZiBzdGQ6OnRocmVhZDo6Y3VycmVudCgpIGlzIG5vdCBwb3NzaWJsZSBhZnRlciB0aGUgdGhyZWFkJ3MgbG9jYWwgZGF0YSBoYXMgYmVlbiBkZXN0cm95ZWQAgOMQAB0AAADlAgAAEwAAAGZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgdGhyZWFkIElEOiBiaXRzcGFjZSBleGhhdXN0ZWQADOQQADcAAACA4xAAHQAAALgEAAANAAAAb3ZlcmZsb3cgd2hlbiBhZGRpbmcgZHVyYXRpb24gdG8gaW5zdGFudGxpYnJhcnkvc3RkL3NyYy90aW1lLnJzAITkEAAXAAAAoQEAACEAAABtZW1vcnkgYWxsb2NhdGlvbiBvZiAgYnl0ZXMgZmFpbGVkAACs5BAAFQAAAMHkEAANAAAAbGlicmFyeS9zdGQvc3JjL2FsbG9jLnJz4OQQABgAAABiAQAACQAAAGxpYnJhcnkvc3RkL3NyYy9wYW5pY2tpbmcucnMI5RAAHAAAAIsCAAAeAAAA0AMAAAwAAAAEAAAA1AMAANUDAAAIAAAABAAAANYDAADVAwAACAAAAAQAAADXAwAA2AMAANkDAAAQAAAABAAAANoDAADbAwAA3AMAAAAAAAABAAAA3QMAAHRpbWUgbm90IGltcGxlbWVudGVkIG9uIHRoaXMgcGxhdGZvcm0AAACM5RAAJQAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvcGFsL3dhc20vLi4vdW5zdXBwb3J0ZWQvdGltZS5ycwC8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AAEAAAAAAAAAW2NhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUKAAAA6gMAAAAAAAABAAAA6wMAAGV4cGxpY2l0IHBhbmljAABw9BAADgAAAGluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaXMgAACI9BAAIAAAAKj0EAASAAAA7AMAAAQAAAAEAAAA7QMAAD09IT1tYXRjaGVzYXNzZXJ0aW9uIGBsZWZ0ICByaWdodGAgZmFpbGVkCiAgbGVmdDogCiByaWdodDogAOf0EAAQAAAA9/QQABcAAAAO9RAACQAAACByaWdodGAgZmFpbGVkOiAKICBsZWZ0OiAAAADn9BAAEAAAADD1EAAQAAAAQPUQAAkAAAAO9RAACQAAADogAAABAAAAAAAAAGz1EAACAAAA7AMAAAwAAAAEAAAA7gMAAO8DAADwAwAAICAgICB7ICwgIHsKLAp9IH0oKAosXWxpYnJhcnkvY29yZS9zcmMvZm10L251bS5ycwAAAK71EAAbAAAAaQAAABcAAAAweDAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZhbHNldHJ1ZQD48xAAGwAAAGYJAAAaAAAA+PMQABsAAABfCQAAIgAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCAQ9xAAEgAAACL3EAAiAAAAcmFuZ2UgZW5kIGluZGV4IFT3EAAQAAAAIvcQACIAAABzbGljZSBpbmRleCBzdGFydHMgYXQgIGJ1dCBlbmRzIGF0IAB09xAAFgAAAIr3EAANAAAAWy4u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\").buffer);\n  });\n}\nfunction Tg() {\n  return function() {\n    let I2, g2;\n    try {\n      const Q2 = A.__wbindgen_add_to_stack_pointer(-16);\n      A.version(Q2);\n      var C2 = S()[Q2 / 4 + 0], B2 = S()[Q2 / 4 + 1];\n      return I2 = C2, g2 = B2, k(C2, B2);\n    } finally {\n      A.__wbindgen_add_to_stack_pointer(16), A.__wbindgen_free(I2, g2, 1);\n    }\n  }();\n}\nLg[\"-\".charCodeAt(0)] = 62, Lg[\"_\".charCodeAt(0)] = 63;\nvar Og = Object.freeze({ __proto__: null, version: Tg, Vector3: jA, VectorOps: fA, Quaternion: VA, RotationOps: XA, SdpMatrix3: PA, SdpMatrix3Ops: uA, get RigidBodyType() {\n  return vA;\n}, RigidBody: wI, RigidBodyDesc: GI, RigidBodySet: KI, IntegrationParameters: JI, get JointType() {\n  return zA;\n}, get MotorModel() {\n  return _A;\n}, get JointAxesMask() {\n  return $A;\n}, ImpulseJoint: UI, UnitImpulseJoint: hI, FixedImpulseJoint: yI, RopeImpulseJoint: NI, SpringImpulseJoint: MI, PrismaticImpulseJoint: FI, RevoluteImpulseJoint: aI, GenericImpulseJoint: sI, SphericalImpulseJoint: RI, JointData: cI, ImpulseJointSet: qI, MultibodyJoint: YI, UnitMultibodyJoint: lI, FixedMultibodyJoint: LI, PrismaticMultibodyJoint: HI, RevoluteMultibodyJoint: tI, SphericalMultibodyJoint: pI, MultibodyJointSet: eI, get CoefficientCombineRule() {\n  return AI;\n}, CCDSolver: rI, IslandManager: nI, BroadPhase: dI, NarrowPhase: TI, TempContactManifold: OI, Shape: PI, get ShapeType() {\n  return gI;\n}, get HeightFieldFlags() {\n  return CI;\n}, get TriMeshFlags() {\n  return BI;\n}, Ball: uI, HalfSpace: vI, Cuboid: zI, RoundCuboid: _I, Capsule: $I, Segment: Ag, Triangle: Ig, RoundTriangle: gg, Polyline: Cg, TriMesh: Bg, ConvexPolyhedron: Qg, RoundConvexPolyhedron: Eg, Heightfield: ig, Cylinder: Dg, RoundCylinder: og, Cone: Sg, RoundCone: wg, get ActiveCollisionTypes() {\n  return oI;\n}, Collider: sg, get MassPropsMode() {\n  return SI;\n}, ColliderDesc: Rg, ColliderSet: cg, get FeatureType() {\n  return II;\n}, Ray: xI, RayIntersection: mI, RayColliderIntersection: jI, RayColliderHit: fI, PointProjection: bI, PointColliderProjection: WI, ShapeCastHit: VI, ColliderShapeCastHit: XI, ShapeContact: ZI, World: Mg, PhysicsPipeline: Gg, SerializationPipeline: Kg, get ActiveEvents() {\n  return EI;\n}, TempContactForceEvent: Fg, EventQueue: ag, get ActiveHooks() {\n  return iI;\n}, get SolverFlags() {\n  return DI;\n}, DebugRenderBuffers: Jg, DebugRenderPipeline: Ug, get QueryFilterFlags() {\n  return QI;\n}, QueryPipeline: kg, init: dg, CharacterCollision: hg, KinematicCharacterController: yg, DynamicRayCastVehicleController: Ng });\nconst rapier_es = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  get ActiveCollisionTypes() {\n    return oI;\n  },\n  get ActiveEvents() {\n    return EI;\n  },\n  get ActiveHooks() {\n    return iI;\n  },\n  Ball: uI,\n  BroadPhase: dI,\n  CCDSolver: rI,\n  Capsule: $I,\n  CharacterCollision: hg,\n  get CoefficientCombineRule() {\n    return AI;\n  },\n  Collider: sg,\n  ColliderDesc: Rg,\n  ColliderSet: cg,\n  ColliderShapeCastHit: XI,\n  Cone: Sg,\n  ConvexPolyhedron: Qg,\n  Cuboid: zI,\n  Cylinder: Dg,\n  DebugRenderBuffers: Jg,\n  DebugRenderPipeline: Ug,\n  DynamicRayCastVehicleController: Ng,\n  EventQueue: ag,\n  get FeatureType() {\n    return II;\n  },\n  FixedImpulseJoint: yI,\n  FixedMultibodyJoint: LI,\n  GenericImpulseJoint: sI,\n  HalfSpace: vI,\n  get HeightFieldFlags() {\n    return CI;\n  },\n  Heightfield: ig,\n  ImpulseJoint: UI,\n  ImpulseJointSet: qI,\n  IntegrationParameters: JI,\n  IslandManager: nI,\n  get JointAxesMask() {\n    return $A;\n  },\n  JointData: cI,\n  get JointType() {\n    return zA;\n  },\n  KinematicCharacterController: yg,\n  get MassPropsMode() {\n    return SI;\n  },\n  get MotorModel() {\n    return _A;\n  },\n  MultibodyJoint: YI,\n  MultibodyJointSet: eI,\n  NarrowPhase: TI,\n  PhysicsPipeline: Gg,\n  PointColliderProjection: WI,\n  PointProjection: bI,\n  Polyline: Cg,\n  PrismaticImpulseJoint: FI,\n  PrismaticMultibodyJoint: HI,\n  Quaternion: VA,\n  get QueryFilterFlags() {\n    return QI;\n  },\n  QueryPipeline: kg,\n  Ray: xI,\n  RayColliderHit: fI,\n  RayColliderIntersection: jI,\n  RayIntersection: mI,\n  RevoluteImpulseJoint: aI,\n  RevoluteMultibodyJoint: tI,\n  RigidBody: wI,\n  RigidBodyDesc: GI,\n  RigidBodySet: KI,\n  get RigidBodyType() {\n    return vA;\n  },\n  RopeImpulseJoint: NI,\n  RotationOps: XA,\n  RoundCone: wg,\n  RoundConvexPolyhedron: Eg,\n  RoundCuboid: _I,\n  RoundCylinder: og,\n  RoundTriangle: gg,\n  SdpMatrix3: PA,\n  SdpMatrix3Ops: uA,\n  Segment: Ag,\n  SerializationPipeline: Kg,\n  Shape: PI,\n  ShapeCastHit: VI,\n  ShapeContact: ZI,\n  get ShapeType() {\n    return gI;\n  },\n  get SolverFlags() {\n    return DI;\n  },\n  SphericalImpulseJoint: RI,\n  SphericalMultibodyJoint: pI,\n  SpringImpulseJoint: MI,\n  TempContactForceEvent: Fg,\n  TempContactManifold: OI,\n  TriMesh: Bg,\n  get TriMeshFlags() {\n    return BI;\n  },\n  Triangle: Ig,\n  UnitImpulseJoint: hI,\n  UnitMultibodyJoint: lI,\n  Vector3: jA,\n  VectorOps: fA,\n  World: Mg,\n  default: Og,\n  init: dg,\n  version: Tg\n}, Symbol.toStringTag, { value: \"Module\" }));\nfunction _toPrimitive(t2, r2) {\n  if (\"object\" != typeof t2 || !t2) return t2;\n  var e2 = t2[Symbol.toPrimitive];\n  if (void 0 !== e2) {\n    var i2 = e2.call(t2, r2);\n    if (\"object\" != typeof i2) return i2;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r2 ? String : Number)(t2);\n}\nfunction _toPropertyKey(t2) {\n  var i2 = _toPrimitive(t2, \"string\");\n  return \"symbol\" == typeof i2 ? i2 : i2 + \"\";\n}\nfunction _defineProperty(e2, r2, t2) {\n  return (r2 = _toPropertyKey(r2)) in e2 ? Object.defineProperty(e2, r2, {\n    value: t2,\n    enumerable: true,\n    configurable: true,\n    writable: true\n  }) : e2[r2] = t2, e2;\n}\nfunction ownKeys(e2, r2) {\n  var t2 = Object.keys(e2);\n  if (Object.getOwnPropertySymbols) {\n    var o2 = Object.getOwnPropertySymbols(e2);\n    r2 && (o2 = o2.filter(function(r3) {\n      return Object.getOwnPropertyDescriptor(e2, r3).enumerable;\n    })), t2.push.apply(t2, o2);\n  }\n  return t2;\n}\nfunction _objectSpread2(e2) {\n  for (var r2 = 1; r2 < arguments.length; r2++) {\n    var t2 = null != arguments[r2] ? arguments[r2] : {};\n    r2 % 2 ? ownKeys(Object(t2), true).forEach(function(r3) {\n      _defineProperty(e2, r3, t2[r3]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e2, Object.getOwnPropertyDescriptors(t2)) : ownKeys(Object(t2)).forEach(function(r3) {\n      Object.defineProperty(e2, r3, Object.getOwnPropertyDescriptor(t2, r3));\n    });\n  }\n  return e2;\n}\nconst _quaternion = new Quaternion();\nnew Euler();\nconst _vector3 = new Vector3();\nnew Object3D();\nconst _matrix4 = new Matrix4();\nconst _position = new Vector3();\nconst _rotation = new Quaternion();\nconst _scale = new Vector3();\nconst vectorArrayToVector3 = (arr) => {\n  const [x2, y2, z2] = arr;\n  return new Vector3(x2, y2, z2);\n};\nconst rapierQuaternionToQuaternion = ({\n  x: x2,\n  y: y2,\n  z: z2,\n  w: w2\n}) => _quaternion.set(x2, y2, z2, w2);\nconst vector3ToRapierVector = (v2) => {\n  if (Array.isArray(v2)) {\n    return new jA(v2[0], v2[1], v2[2]);\n  } else if (typeof v2 === \"number\") {\n    return new jA(v2, v2, v2);\n  } else {\n    const threeVector3 = v2;\n    return new jA(threeVector3.x, threeVector3.y, threeVector3.z);\n  }\n};\nconst rigidBodyTypeMap = {\n  fixed: 1,\n  dynamic: 0,\n  kinematicPosition: 2,\n  kinematicVelocity: 3\n};\nconst rigidBodyTypeFromString = (type) => rigidBodyTypeMap[type];\nconst scaleVertices = (vertices, scale) => {\n  const scaledVerts = Array.from(vertices);\n  for (let i2 = 0; i2 < vertices.length / 3; i2++) {\n    scaledVerts[i2 * 3] *= scale.x;\n    scaledVerts[i2 * 3 + 1] *= scale.y;\n    scaledVerts[i2 * 3 + 2] *= scale.z;\n  }\n  return scaledVerts;\n};\nconst vectorToTuple = (v2) => {\n  if (!v2) return [0];\n  if (v2 instanceof Quaternion) {\n    return [v2.x, v2.y, v2.z, v2.w];\n  }\n  if (v2 instanceof Vector3 || v2 instanceof Euler) {\n    return [v2.x, v2.y, v2.z];\n  }\n  if (Array.isArray(v2)) {\n    return v2;\n  }\n  return [v2];\n};\nfunction useConst(initialValue) {\n  const ref = useRef();\n  if (ref.current === void 0) {\n    ref.current = {\n      value: typeof initialValue === \"function\" ? initialValue() : initialValue\n    };\n  }\n  return ref.current.value;\n}\nconst useRaf = (callback) => {\n  const cb = useRef(callback);\n  const raf = useRef(0);\n  const lastFrame = useRef(0);\n  useEffect(() => {\n    cb.current = callback;\n  }, [callback]);\n  useEffect(() => {\n    const loop = () => {\n      const now2 = performance.now();\n      const delta = now2 - lastFrame.current;\n      raf.current = requestAnimationFrame(loop);\n      cb.current(delta / 1e3);\n      lastFrame.current = now2;\n    };\n    raf.current = requestAnimationFrame(loop);\n    return () => cancelAnimationFrame(raf.current);\n  }, []);\n};\nconst UseFrameStepper = ({\n  onStep,\n  updatePriority\n}) => {\n  useFrame((_2, dt) => {\n    onStep(dt);\n  }, updatePriority);\n  return null;\n};\nconst RafStepper = ({\n  onStep\n}) => {\n  useRaf((dt) => {\n    onStep(dt);\n  });\n  return null;\n};\nconst FrameStepper = ({\n  onStep,\n  type,\n  updatePriority\n}) => {\n  return type === \"independent\" ? /* @__PURE__ */ React__default.createElement(RafStepper, {\n    onStep\n  }) : /* @__PURE__ */ React__default.createElement(UseFrameStepper, {\n    onStep,\n    updatePriority\n  });\n};\nvar FrameStepper$1 = /* @__PURE__ */ memo(FrameStepper);\nfunction _objectWithoutPropertiesLoose(r2, e2) {\n  if (null == r2) return {};\n  var t2 = {};\n  for (var n2 in r2) if ({}.hasOwnProperty.call(r2, n2)) {\n    if (e2.includes(n2)) continue;\n    t2[n2] = r2[n2];\n  }\n  return t2;\n}\nfunction _objectWithoutProperties(e2, t2) {\n  if (null == e2) return {};\n  var o2, r2, i2 = _objectWithoutPropertiesLoose(e2, t2);\n  if (Object.getOwnPropertySymbols) {\n    var s2 = Object.getOwnPropertySymbols(e2);\n    for (r2 = 0; r2 < s2.length; r2++) o2 = s2[r2], t2.includes(o2) || {}.propertyIsEnumerable.call(e2, o2) && (i2[o2] = e2[o2]);\n  }\n  return i2;\n}\nconst _excluded$2 = [\"mass\", \"linearDamping\", \"angularDamping\", \"type\", \"onCollisionEnter\", \"onCollisionExit\", \"onIntersectionEnter\", \"onIntersectionExit\", \"onContactForce\", \"children\", \"canSleep\", \"ccd\", \"gravityScale\", \"softCcdPrediction\"];\nconst scaleColliderArgs = (shape, args, scale) => {\n  const newArgs = args.slice();\n  if (shape === \"heightfield\") {\n    const s2 = newArgs[3];\n    s2.x *= scale.x;\n    s2.x *= scale.y;\n    s2.x *= scale.z;\n    return newArgs;\n  }\n  if (shape === \"trimesh\" || shape === \"convexHull\") {\n    newArgs[0] = scaleVertices(newArgs[0], scale);\n    return newArgs;\n  }\n  const scaleArray = [scale.x, scale.y, scale.z, scale.x, scale.x];\n  return newArgs.map((arg, index) => scaleArray[index] * arg);\n};\nconst createColliderFromOptions = (options, world, scale, getRigidBody) => {\n  const scaledArgs = scaleColliderArgs(options.shape, options.args, scale);\n  const desc = Rg[options.shape](...scaledArgs);\n  return world.createCollider(desc, getRigidBody === null || getRigidBody === void 0 ? void 0 : getRigidBody());\n};\nconst immutableColliderOptions = [\"shape\", \"args\"];\nconst massPropertiesConflictError = \"Please pick ONLY ONE of the `density`, `mass` and `massProperties` options.\";\nconst setColliderMassOptions = (collider, options) => {\n  if (options.density !== void 0) {\n    if (options.mass !== void 0 || options.massProperties !== void 0) {\n      throw new Error(massPropertiesConflictError);\n    }\n    collider.setDensity(options.density);\n    return;\n  }\n  if (options.mass !== void 0) {\n    if (options.massProperties !== void 0) {\n      throw new Error(massPropertiesConflictError);\n    }\n    collider.setMass(options.mass);\n    return;\n  }\n  if (options.massProperties !== void 0) {\n    collider.setMassProperties(options.massProperties.mass, options.massProperties.centerOfMass, options.massProperties.principalAngularInertia, options.massProperties.angularInertiaLocalFrame);\n  }\n};\nconst mutableColliderOptions = {\n  sensor: (collider, value) => {\n    collider.setSensor(value);\n  },\n  collisionGroups: (collider, value) => {\n    collider.setCollisionGroups(value);\n  },\n  solverGroups: (collider, value) => {\n    collider.setSolverGroups(value);\n  },\n  friction: (collider, value) => {\n    collider.setFriction(value);\n  },\n  frictionCombineRule: (collider, value) => {\n    collider.setFrictionCombineRule(value);\n  },\n  restitution: (collider, value) => {\n    collider.setRestitution(value);\n  },\n  restitutionCombineRule: (collider, value) => {\n    collider.setRestitutionCombineRule(value);\n  },\n  activeCollisionTypes: (collider, value) => {\n    collider.setActiveCollisionTypes(value);\n  },\n  contactSkin: (collider, value) => {\n    collider.setContactSkin(value);\n  },\n  // To make sure the options all mutable options are listed\n  quaternion: () => {\n  },\n  position: () => {\n  },\n  rotation: () => {\n  },\n  scale: () => {\n  }\n};\nconst mutableColliderOptionKeys = Object.keys(mutableColliderOptions);\nconst setColliderOptions = (collider, options, states) => {\n  const state = states.get(collider.handle);\n  if (state) {\n    var _state$worldParent;\n    const parentWorldScale = state.object.parent.getWorldScale(_vector3);\n    const parentInvertedWorldMatrix = (_state$worldParent = state.worldParent) === null || _state$worldParent === void 0 ? void 0 : _state$worldParent.matrixWorld.clone().invert();\n    state.object.updateWorldMatrix(true, false);\n    _matrix4.copy(state.object.matrixWorld);\n    if (parentInvertedWorldMatrix) {\n      _matrix4.premultiply(parentInvertedWorldMatrix);\n    }\n    _matrix4.decompose(_position, _rotation, _scale);\n    if (collider.parent()) {\n      collider.setTranslationWrtParent({\n        x: _position.x * parentWorldScale.x,\n        y: _position.y * parentWorldScale.y,\n        z: _position.z * parentWorldScale.z\n      });\n      collider.setRotationWrtParent(_rotation);\n    } else {\n      collider.setTranslation({\n        x: _position.x * parentWorldScale.x,\n        y: _position.y * parentWorldScale.y,\n        z: _position.z * parentWorldScale.z\n      });\n      collider.setRotation(_rotation);\n    }\n    mutableColliderOptionKeys.forEach((key) => {\n      if (key in options) {\n        const option = options[key];\n        mutableColliderOptions[key](\n          collider,\n          // @ts-ignore Option does not want to fit into the function, but it will\n          option,\n          options\n        );\n      }\n    });\n    setColliderMassOptions(collider, options);\n  }\n};\nconst useUpdateColliderOptions = (getCollider, props, states) => {\n  const mutablePropsAsFlatArray = useMemo(() => mutableColliderOptionKeys.flatMap((key) => {\n    return vectorToTuple(props[key]);\n  }), [props]);\n  useEffect(() => {\n    const collider = getCollider();\n    setColliderOptions(collider, props, states);\n  }, [...mutablePropsAsFlatArray, getCollider]);\n};\nconst isChildOfMeshCollider = (child) => {\n  let flag = false;\n  child.traverseAncestors((a2) => {\n    if (a2.userData.r3RapierType === \"MeshCollider\") flag = true;\n  });\n  return flag;\n};\nconst createColliderState = (collider, object, rigidBodyObject) => {\n  return {\n    collider,\n    worldParent: rigidBodyObject || void 0,\n    object\n  };\n};\nconst autoColliderMap = {\n  cuboid: \"cuboid\",\n  ball: \"ball\",\n  hull: \"convexHull\",\n  trimesh: \"trimesh\"\n};\nconst createColliderPropsFromChildren = ({\n  object,\n  ignoreMeshColliders: _ignoreMeshColliders = true,\n  options\n}) => {\n  const childColliderProps = [];\n  object.updateWorldMatrix(true, false);\n  const invertedParentMatrixWorld = object.matrixWorld.clone().invert();\n  const colliderFromChild = (child) => {\n    if (\"isMesh\" in child) {\n      if (_ignoreMeshColliders && isChildOfMeshCollider(child)) return;\n      const worldScale = child.getWorldScale(_scale);\n      const shape = autoColliderMap[options.colliders || \"cuboid\"];\n      child.updateWorldMatrix(true, false);\n      _matrix4.copy(child.matrixWorld).premultiply(invertedParentMatrixWorld).decompose(_position, _rotation, _scale);\n      const rotationEuler = new Euler().setFromQuaternion(_rotation, \"XYZ\");\n      const {\n        geometry\n      } = child;\n      const {\n        args,\n        offset\n      } = getColliderArgsFromGeometry(geometry, options.colliders || \"cuboid\");\n      const colliderProps = _objectSpread2(_objectSpread2({}, cleanRigidBodyPropsForCollider(options)), {}, {\n        args,\n        shape,\n        rotation: [rotationEuler.x, rotationEuler.y, rotationEuler.z],\n        position: [_position.x + offset.x * worldScale.x, _position.y + offset.y * worldScale.y, _position.z + offset.z * worldScale.z],\n        scale: [worldScale.x, worldScale.y, worldScale.z]\n      });\n      childColliderProps.push(colliderProps);\n    }\n  };\n  if (options.includeInvisible) {\n    object.traverse(colliderFromChild);\n  } else {\n    object.traverseVisible(colliderFromChild);\n  }\n  return childColliderProps;\n};\nconst getColliderArgsFromGeometry = (geometry, colliders) => {\n  switch (colliders) {\n    case \"cuboid\": {\n      geometry.computeBoundingBox();\n      const {\n        boundingBox\n      } = geometry;\n      const size = boundingBox.getSize(new Vector3());\n      return {\n        args: [size.x / 2, size.y / 2, size.z / 2],\n        offset: boundingBox.getCenter(new Vector3())\n      };\n    }\n    case \"ball\": {\n      geometry.computeBoundingSphere();\n      const {\n        boundingSphere\n      } = geometry;\n      const radius = boundingSphere.radius;\n      return {\n        args: [radius],\n        offset: boundingSphere.center\n      };\n    }\n    case \"trimesh\": {\n      var _clonedGeometry$index;\n      const clonedGeometry = geometry.index ? geometry.clone() : mergeVertices(geometry);\n      return {\n        args: [clonedGeometry.attributes.position.array, (_clonedGeometry$index = clonedGeometry.index) === null || _clonedGeometry$index === void 0 ? void 0 : _clonedGeometry$index.array],\n        offset: new Vector3()\n      };\n    }\n    case \"hull\": {\n      const g2 = geometry.clone();\n      return {\n        args: [g2.attributes.position.array],\n        offset: new Vector3()\n      };\n    }\n  }\n  return {\n    args: [],\n    offset: new Vector3()\n  };\n};\nconst getActiveCollisionEventsFromProps = (props) => {\n  return {\n    collision: !!(props !== null && props !== void 0 && props.onCollisionEnter || props !== null && props !== void 0 && props.onCollisionExit || props !== null && props !== void 0 && props.onIntersectionEnter || props !== null && props !== void 0 && props.onIntersectionExit),\n    contactForce: !!(props !== null && props !== void 0 && props.onContactForce)\n  };\n};\nconst useColliderEvents = (getCollider, props, events, activeEvents = {}) => {\n  const {\n    onCollisionEnter,\n    onCollisionExit,\n    onIntersectionEnter,\n    onIntersectionExit,\n    onContactForce\n  } = props;\n  useEffect(() => {\n    const collider = getCollider();\n    if (collider) {\n      const {\n        collision: collisionEventsActive,\n        contactForce: contactForceEventsActive\n      } = getActiveCollisionEventsFromProps(props);\n      const hasCollisionEvent = collisionEventsActive || activeEvents.collision;\n      const hasContactForceEvent = contactForceEventsActive || activeEvents.contactForce;\n      if (hasCollisionEvent && hasContactForceEvent) {\n        collider.setActiveEvents(EI.COLLISION_EVENTS | EI.CONTACT_FORCE_EVENTS);\n      } else if (hasCollisionEvent) {\n        collider.setActiveEvents(EI.COLLISION_EVENTS);\n      } else if (hasContactForceEvent) {\n        collider.setActiveEvents(EI.CONTACT_FORCE_EVENTS);\n      }\n      events.set(collider.handle, {\n        onCollisionEnter,\n        onCollisionExit,\n        onIntersectionEnter,\n        onIntersectionExit,\n        onContactForce\n      });\n    }\n    return () => {\n      if (collider) {\n        events.delete(collider.handle);\n      }\n    };\n  }, [onCollisionEnter, onCollisionExit, onIntersectionEnter, onIntersectionExit, onContactForce, activeEvents]);\n};\nconst cleanRigidBodyPropsForCollider = (props = {}) => {\n  const rest = _objectWithoutProperties(props, _excluded$2);\n  return rest;\n};\nconst useRapier = () => {\n  const rapier = useContext(rapierContext);\n  if (!rapier) throw new Error(\"react-three-rapier: useRapier must be used within <Physics />!\");\n  return rapier;\n};\nconst useChildColliderProps = (ref, options, ignoreMeshColliders = true) => {\n  const [colliderProps, setColliderProps] = useState([]);\n  useEffect(() => {\n    const object = ref.current;\n    if (object && options.colliders !== false) {\n      setColliderProps(createColliderPropsFromChildren({\n        object: ref.current,\n        options,\n        ignoreMeshColliders\n      }));\n    }\n  }, [options.colliders]);\n  return colliderProps;\n};\nconst Debug = /* @__PURE__ */ memo(() => {\n  const {\n    world\n  } = useRapier();\n  const ref = useRef(null);\n  useFrame(() => {\n    const mesh = ref.current;\n    if (!mesh) return;\n    const buffers = world.debugRender();\n    mesh.geometry.setAttribute(\"position\", new BufferAttribute(buffers.vertices, 3));\n    mesh.geometry.setAttribute(\"color\", new BufferAttribute(buffers.colors, 4));\n  });\n  return /* @__PURE__ */ React__default.createElement(\"group\", null, /* @__PURE__ */ React__default.createElement(\"lineSegments\", {\n    ref,\n    frustumCulled: false\n  }, /* @__PURE__ */ React__default.createElement(\"lineBasicMaterial\", {\n    color: 16777215,\n    vertexColors: true\n  }), /* @__PURE__ */ React__default.createElement(\"bufferGeometry\", null)));\n});\nconst createSingletonProxy = (createInstance) => {\n  let instance;\n  const handler = {\n    get(target, prop) {\n      if (!instance) {\n        instance = createInstance();\n      }\n      return Reflect.get(instance, prop);\n    },\n    set(target, prop, value) {\n      if (!instance) {\n        instance = createInstance();\n      }\n      return Reflect.set(instance, prop, value);\n    }\n  };\n  const proxy = new Proxy({}, handler);\n  const reset = () => {\n    instance = void 0;\n  };\n  const set = (newInstance) => {\n    instance = newInstance;\n  };\n  return {\n    proxy,\n    reset,\n    set\n  };\n};\nconst rapierContext = /* @__PURE__ */ createContext(void 0);\nconst getCollisionPayloadFromSource = (target, other) => {\n  var _target$collider$stat, _target$rigidBody$sta, _other$collider$state, _other$rigidBody$stat, _other$collider$state2, _other$rigidBody$stat2;\n  return {\n    target: {\n      rigidBody: target.rigidBody.object,\n      collider: target.collider.object,\n      colliderObject: (_target$collider$stat = target.collider.state) === null || _target$collider$stat === void 0 ? void 0 : _target$collider$stat.object,\n      rigidBodyObject: (_target$rigidBody$sta = target.rigidBody.state) === null || _target$rigidBody$sta === void 0 ? void 0 : _target$rigidBody$sta.object\n    },\n    other: {\n      rigidBody: other.rigidBody.object,\n      collider: other.collider.object,\n      colliderObject: (_other$collider$state = other.collider.state) === null || _other$collider$state === void 0 ? void 0 : _other$collider$state.object,\n      rigidBodyObject: (_other$rigidBody$stat = other.rigidBody.state) === null || _other$rigidBody$stat === void 0 ? void 0 : _other$rigidBody$stat.object\n    },\n    rigidBody: other.rigidBody.object,\n    collider: other.collider.object,\n    colliderObject: (_other$collider$state2 = other.collider.state) === null || _other$collider$state2 === void 0 ? void 0 : _other$collider$state2.object,\n    rigidBodyObject: (_other$rigidBody$stat2 = other.rigidBody.state) === null || _other$rigidBody$stat2 === void 0 ? void 0 : _other$rigidBody$stat2.object\n  };\n};\nconst importRapier = async () => {\n  let r2 = await Promise.resolve().then(() => rapier_es);\n  await r2.init();\n  return r2;\n};\nconst Physics = (props) => {\n  const {\n    colliders = \"cuboid\",\n    children,\n    timeStep = 1 / 60,\n    paused = false,\n    interpolate = true,\n    updatePriority,\n    updateLoop = \"follow\",\n    debug = false,\n    gravity = [0, -9.81, 0],\n    allowedLinearError = 1e-3,\n    predictionDistance = 2e-3,\n    numSolverIterations = 4,\n    numAdditionalFrictionIterations = 4,\n    numInternalPgsIterations = 1,\n    minIslandSize = 128,\n    maxCcdSubsteps = 1,\n    contactNaturalFrequency = 30,\n    lengthUnit = 1\n  } = props;\n  const rapier = suspend(importRapier, [\"@react-thee/rapier\", importRapier]);\n  const {\n    invalidate: invalidate2\n  } = useThree();\n  const rigidBodyStates = useConst(() => /* @__PURE__ */ new Map());\n  const colliderStates = useConst(() => /* @__PURE__ */ new Map());\n  const rigidBodyEvents = useConst(() => /* @__PURE__ */ new Map());\n  const colliderEvents = useConst(() => /* @__PURE__ */ new Map());\n  const eventQueue = useConst(() => new ag(false));\n  const beforeStepCallbacks = useConst(() => /* @__PURE__ */ new Set());\n  const afterStepCallbacks = useConst(() => /* @__PURE__ */ new Set());\n  const {\n    proxy: worldProxy,\n    reset: resetWorldProxy,\n    set: setWorldProxy\n  } = useConst(() => createSingletonProxy(() => new rapier.World(vectorArrayToVector3(gravity))));\n  useEffect(() => {\n    return () => {\n      worldProxy.free();\n      resetWorldProxy();\n    };\n  }, []);\n  useEffect(() => {\n    worldProxy.gravity = vector3ToRapierVector(gravity);\n    worldProxy.integrationParameters.numSolverIterations = numSolverIterations;\n    worldProxy.integrationParameters.numAdditionalFrictionIterations = numAdditionalFrictionIterations;\n    worldProxy.integrationParameters.numInternalPgsIterations = numInternalPgsIterations;\n    worldProxy.integrationParameters.normalizedAllowedLinearError = allowedLinearError;\n    worldProxy.integrationParameters.minIslandSize = minIslandSize;\n    worldProxy.integrationParameters.maxCcdSubsteps = maxCcdSubsteps;\n    worldProxy.integrationParameters.normalizedPredictionDistance = predictionDistance;\n    worldProxy.lengthUnit = lengthUnit;\n    worldProxy.integrationParameters.contact_natural_frequency = contactNaturalFrequency;\n  }, [worldProxy, ...gravity, numSolverIterations, numAdditionalFrictionIterations, numInternalPgsIterations, allowedLinearError, minIslandSize, maxCcdSubsteps, predictionDistance, lengthUnit, contactNaturalFrequency]);\n  const getSourceFromColliderHandle = useCallback((handle) => {\n    var _collider$parent;\n    const collider = worldProxy.getCollider(handle);\n    const colEvents = colliderEvents.get(handle);\n    const colliderState = colliderStates.get(handle);\n    const rigidBodyHandle = collider === null || collider === void 0 ? void 0 : (_collider$parent = collider.parent()) === null || _collider$parent === void 0 ? void 0 : _collider$parent.handle;\n    const rigidBody = rigidBodyHandle !== void 0 ? worldProxy.getRigidBody(rigidBodyHandle) : void 0;\n    const rbEvents = rigidBody && rigidBodyHandle !== void 0 ? rigidBodyEvents.get(rigidBodyHandle) : void 0;\n    const rigidBodyState = rigidBodyHandle !== void 0 ? rigidBodyStates.get(rigidBodyHandle) : void 0;\n    const source = {\n      collider: {\n        object: collider,\n        events: colEvents,\n        state: colliderState\n      },\n      rigidBody: {\n        object: rigidBody,\n        events: rbEvents,\n        state: rigidBodyState\n      }\n    };\n    return source;\n  }, []);\n  const [steppingState] = useState({\n    previousState: {},\n    accumulator: 0\n  });\n  const step = useCallback((dt) => {\n    const world = worldProxy;\n    const timeStepVariable = timeStep === \"vary\";\n    const clampedDelta = MathUtils.clamp(dt, 0, 0.5);\n    const stepWorld = (delta) => {\n      beforeStepCallbacks.forEach((callback) => {\n        callback.current(world);\n      });\n      world.timestep = delta;\n      world.step(eventQueue);\n      afterStepCallbacks.forEach((callback) => {\n        callback.current(world);\n      });\n    };\n    if (timeStepVariable) {\n      stepWorld(clampedDelta);\n    } else {\n      steppingState.accumulator += clampedDelta;\n      while (steppingState.accumulator >= timeStep) {\n        if (interpolate) {\n          steppingState.previousState = {};\n          world.forEachRigidBody((body) => {\n            steppingState.previousState[body.handle] = {\n              position: body.translation(),\n              rotation: body.rotation()\n            };\n          });\n        }\n        stepWorld(timeStep);\n        steppingState.accumulator -= timeStep;\n      }\n    }\n    const interpolationAlpha = timeStepVariable || !interpolate || paused ? 1 : steppingState.accumulator / timeStep;\n    rigidBodyStates.forEach((state, handle) => {\n      const rigidBody = world.getRigidBody(handle);\n      const events = rigidBodyEvents.get(handle);\n      if (events !== null && events !== void 0 && events.onSleep || events !== null && events !== void 0 && events.onWake) {\n        if (rigidBody.isSleeping() && !state.isSleeping) {\n          var _events$onSleep;\n          events === null || events === void 0 ? void 0 : (_events$onSleep = events.onSleep) === null || _events$onSleep === void 0 ? void 0 : _events$onSleep.call(events);\n        }\n        if (!rigidBody.isSleeping() && state.isSleeping) {\n          var _events$onWake;\n          events === null || events === void 0 ? void 0 : (_events$onWake = events.onWake) === null || _events$onWake === void 0 ? void 0 : _events$onWake.call(events);\n        }\n        state.isSleeping = rigidBody.isSleeping();\n      }\n      if (!rigidBody || rigidBody.isSleeping() && !(\"isInstancedMesh\" in state.object) || !state.setMatrix) {\n        return;\n      }\n      let t2 = rigidBody.translation();\n      let r2 = rigidBody.rotation();\n      let previousState = steppingState.previousState[handle];\n      if (previousState) {\n        _matrix4.compose(previousState.position, rapierQuaternionToQuaternion(previousState.rotation), state.scale).premultiply(state.invertedWorldMatrix).decompose(_position, _rotation, _scale);\n        if (state.meshType == \"mesh\") {\n          state.object.position.copy(_position);\n          state.object.quaternion.copy(_rotation);\n        }\n      }\n      _matrix4.compose(t2, rapierQuaternionToQuaternion(r2), state.scale).premultiply(state.invertedWorldMatrix).decompose(_position, _rotation, _scale);\n      if (state.meshType == \"instancedMesh\") {\n        state.setMatrix(_matrix4);\n      } else {\n        state.object.position.lerp(_position, interpolationAlpha);\n        state.object.quaternion.slerp(_rotation, interpolationAlpha);\n      }\n    });\n    eventQueue.drainCollisionEvents((handle1, handle2, started) => {\n      const source1 = getSourceFromColliderHandle(handle1);\n      const source2 = getSourceFromColliderHandle(handle2);\n      if (!(source1 !== null && source1 !== void 0 && source1.collider.object) || !(source2 !== null && source2 !== void 0 && source2.collider.object)) {\n        return;\n      }\n      const collisionPayload1 = getCollisionPayloadFromSource(source1, source2);\n      const collisionPayload2 = getCollisionPayloadFromSource(source2, source1);\n      if (started) {\n        world.contactPair(source1.collider.object, source2.collider.object, (manifold, flipped) => {\n          var _source1$rigidBody$ev, _source1$rigidBody$ev2, _source2$rigidBody$ev, _source2$rigidBody$ev2, _source1$collider$eve, _source1$collider$eve2, _source2$collider$eve, _source2$collider$eve2;\n          (_source1$rigidBody$ev = source1.rigidBody.events) === null || _source1$rigidBody$ev === void 0 ? void 0 : (_source1$rigidBody$ev2 = _source1$rigidBody$ev.onCollisionEnter) === null || _source1$rigidBody$ev2 === void 0 ? void 0 : _source1$rigidBody$ev2.call(_source1$rigidBody$ev, _objectSpread2(_objectSpread2({}, collisionPayload1), {}, {\n            manifold,\n            flipped\n          }));\n          (_source2$rigidBody$ev = source2.rigidBody.events) === null || _source2$rigidBody$ev === void 0 ? void 0 : (_source2$rigidBody$ev2 = _source2$rigidBody$ev.onCollisionEnter) === null || _source2$rigidBody$ev2 === void 0 ? void 0 : _source2$rigidBody$ev2.call(_source2$rigidBody$ev, _objectSpread2(_objectSpread2({}, collisionPayload2), {}, {\n            manifold,\n            flipped\n          }));\n          (_source1$collider$eve = source1.collider.events) === null || _source1$collider$eve === void 0 ? void 0 : (_source1$collider$eve2 = _source1$collider$eve.onCollisionEnter) === null || _source1$collider$eve2 === void 0 ? void 0 : _source1$collider$eve2.call(_source1$collider$eve, _objectSpread2(_objectSpread2({}, collisionPayload1), {}, {\n            manifold,\n            flipped\n          }));\n          (_source2$collider$eve = source2.collider.events) === null || _source2$collider$eve === void 0 ? void 0 : (_source2$collider$eve2 = _source2$collider$eve.onCollisionEnter) === null || _source2$collider$eve2 === void 0 ? void 0 : _source2$collider$eve2.call(_source2$collider$eve, _objectSpread2(_objectSpread2({}, collisionPayload2), {}, {\n            manifold,\n            flipped\n          }));\n        });\n      } else {\n        var _source1$rigidBody$ev3, _source1$rigidBody$ev4, _source2$rigidBody$ev3, _source2$rigidBody$ev4, _source1$collider$eve3, _source1$collider$eve4, _source2$collider$eve3, _source2$collider$eve4;\n        (_source1$rigidBody$ev3 = source1.rigidBody.events) === null || _source1$rigidBody$ev3 === void 0 ? void 0 : (_source1$rigidBody$ev4 = _source1$rigidBody$ev3.onCollisionExit) === null || _source1$rigidBody$ev4 === void 0 ? void 0 : _source1$rigidBody$ev4.call(_source1$rigidBody$ev3, collisionPayload1);\n        (_source2$rigidBody$ev3 = source2.rigidBody.events) === null || _source2$rigidBody$ev3 === void 0 ? void 0 : (_source2$rigidBody$ev4 = _source2$rigidBody$ev3.onCollisionExit) === null || _source2$rigidBody$ev4 === void 0 ? void 0 : _source2$rigidBody$ev4.call(_source2$rigidBody$ev3, collisionPayload2);\n        (_source1$collider$eve3 = source1.collider.events) === null || _source1$collider$eve3 === void 0 ? void 0 : (_source1$collider$eve4 = _source1$collider$eve3.onCollisionExit) === null || _source1$collider$eve4 === void 0 ? void 0 : _source1$collider$eve4.call(_source1$collider$eve3, collisionPayload1);\n        (_source2$collider$eve3 = source2.collider.events) === null || _source2$collider$eve3 === void 0 ? void 0 : (_source2$collider$eve4 = _source2$collider$eve3.onCollisionExit) === null || _source2$collider$eve4 === void 0 ? void 0 : _source2$collider$eve4.call(_source2$collider$eve3, collisionPayload2);\n      }\n      if (started) {\n        if (world.intersectionPair(source1.collider.object, source2.collider.object)) {\n          var _source1$rigidBody$ev5, _source1$rigidBody$ev6, _source2$rigidBody$ev5, _source2$rigidBody$ev6, _source1$collider$eve5, _source1$collider$eve6, _source2$collider$eve5, _source2$collider$eve6;\n          (_source1$rigidBody$ev5 = source1.rigidBody.events) === null || _source1$rigidBody$ev5 === void 0 ? void 0 : (_source1$rigidBody$ev6 = _source1$rigidBody$ev5.onIntersectionEnter) === null || _source1$rigidBody$ev6 === void 0 ? void 0 : _source1$rigidBody$ev6.call(_source1$rigidBody$ev5, collisionPayload1);\n          (_source2$rigidBody$ev5 = source2.rigidBody.events) === null || _source2$rigidBody$ev5 === void 0 ? void 0 : (_source2$rigidBody$ev6 = _source2$rigidBody$ev5.onIntersectionEnter) === null || _source2$rigidBody$ev6 === void 0 ? void 0 : _source2$rigidBody$ev6.call(_source2$rigidBody$ev5, collisionPayload2);\n          (_source1$collider$eve5 = source1.collider.events) === null || _source1$collider$eve5 === void 0 ? void 0 : (_source1$collider$eve6 = _source1$collider$eve5.onIntersectionEnter) === null || _source1$collider$eve6 === void 0 ? void 0 : _source1$collider$eve6.call(_source1$collider$eve5, collisionPayload1);\n          (_source2$collider$eve5 = source2.collider.events) === null || _source2$collider$eve5 === void 0 ? void 0 : (_source2$collider$eve6 = _source2$collider$eve5.onIntersectionEnter) === null || _source2$collider$eve6 === void 0 ? void 0 : _source2$collider$eve6.call(_source2$collider$eve5, collisionPayload2);\n        }\n      } else {\n        var _source1$rigidBody$ev7, _source1$rigidBody$ev8, _source2$rigidBody$ev7, _source2$rigidBody$ev8, _source1$collider$eve7, _source1$collider$eve8, _source2$collider$eve7, _source2$collider$eve8;\n        (_source1$rigidBody$ev7 = source1.rigidBody.events) === null || _source1$rigidBody$ev7 === void 0 ? void 0 : (_source1$rigidBody$ev8 = _source1$rigidBody$ev7.onIntersectionExit) === null || _source1$rigidBody$ev8 === void 0 ? void 0 : _source1$rigidBody$ev8.call(_source1$rigidBody$ev7, collisionPayload1);\n        (_source2$rigidBody$ev7 = source2.rigidBody.events) === null || _source2$rigidBody$ev7 === void 0 ? void 0 : (_source2$rigidBody$ev8 = _source2$rigidBody$ev7.onIntersectionExit) === null || _source2$rigidBody$ev8 === void 0 ? void 0 : _source2$rigidBody$ev8.call(_source2$rigidBody$ev7, collisionPayload2);\n        (_source1$collider$eve7 = source1.collider.events) === null || _source1$collider$eve7 === void 0 ? void 0 : (_source1$collider$eve8 = _source1$collider$eve7.onIntersectionExit) === null || _source1$collider$eve8 === void 0 ? void 0 : _source1$collider$eve8.call(_source1$collider$eve7, collisionPayload1);\n        (_source2$collider$eve7 = source2.collider.events) === null || _source2$collider$eve7 === void 0 ? void 0 : (_source2$collider$eve8 = _source2$collider$eve7.onIntersectionExit) === null || _source2$collider$eve8 === void 0 ? void 0 : _source2$collider$eve8.call(_source2$collider$eve7, collisionPayload2);\n      }\n    });\n    eventQueue.drainContactForceEvents((event) => {\n      var _source1$rigidBody$ev9, _source1$rigidBody$ev10, _source2$rigidBody$ev9, _source2$rigidBody$ev10, _source1$collider$eve9, _source1$collider$eve10, _source2$collider$eve9, _source2$collider$eve10;\n      const source1 = getSourceFromColliderHandle(event.collider1());\n      const source2 = getSourceFromColliderHandle(event.collider2());\n      if (!(source1 !== null && source1 !== void 0 && source1.collider.object) || !(source2 !== null && source2 !== void 0 && source2.collider.object)) {\n        return;\n      }\n      const collisionPayload1 = getCollisionPayloadFromSource(source1, source2);\n      const collisionPayload2 = getCollisionPayloadFromSource(source2, source1);\n      (_source1$rigidBody$ev9 = source1.rigidBody.events) === null || _source1$rigidBody$ev9 === void 0 ? void 0 : (_source1$rigidBody$ev10 = _source1$rigidBody$ev9.onContactForce) === null || _source1$rigidBody$ev10 === void 0 ? void 0 : _source1$rigidBody$ev10.call(_source1$rigidBody$ev9, _objectSpread2(_objectSpread2({}, collisionPayload1), {}, {\n        totalForce: event.totalForce(),\n        totalForceMagnitude: event.totalForceMagnitude(),\n        maxForceDirection: event.maxForceDirection(),\n        maxForceMagnitude: event.maxForceMagnitude()\n      }));\n      (_source2$rigidBody$ev9 = source2.rigidBody.events) === null || _source2$rigidBody$ev9 === void 0 ? void 0 : (_source2$rigidBody$ev10 = _source2$rigidBody$ev9.onContactForce) === null || _source2$rigidBody$ev10 === void 0 ? void 0 : _source2$rigidBody$ev10.call(_source2$rigidBody$ev9, _objectSpread2(_objectSpread2({}, collisionPayload2), {}, {\n        totalForce: event.totalForce(),\n        totalForceMagnitude: event.totalForceMagnitude(),\n        maxForceDirection: event.maxForceDirection(),\n        maxForceMagnitude: event.maxForceMagnitude()\n      }));\n      (_source1$collider$eve9 = source1.collider.events) === null || _source1$collider$eve9 === void 0 ? void 0 : (_source1$collider$eve10 = _source1$collider$eve9.onContactForce) === null || _source1$collider$eve10 === void 0 ? void 0 : _source1$collider$eve10.call(_source1$collider$eve9, _objectSpread2(_objectSpread2({}, collisionPayload1), {}, {\n        totalForce: event.totalForce(),\n        totalForceMagnitude: event.totalForceMagnitude(),\n        maxForceDirection: event.maxForceDirection(),\n        maxForceMagnitude: event.maxForceMagnitude()\n      }));\n      (_source2$collider$eve9 = source2.collider.events) === null || _source2$collider$eve9 === void 0 ? void 0 : (_source2$collider$eve10 = _source2$collider$eve9.onContactForce) === null || _source2$collider$eve10 === void 0 ? void 0 : _source2$collider$eve10.call(_source2$collider$eve9, _objectSpread2(_objectSpread2({}, collisionPayload2), {}, {\n        totalForce: event.totalForce(),\n        totalForceMagnitude: event.totalForceMagnitude(),\n        maxForceDirection: event.maxForceDirection(),\n        maxForceMagnitude: event.maxForceMagnitude()\n      }));\n    });\n    world.forEachActiveRigidBody(() => {\n      invalidate2();\n    });\n  }, [paused, timeStep, interpolate, worldProxy]);\n  const context2 = useMemo(() => ({\n    rapier,\n    world: worldProxy,\n    setWorld: (world) => {\n      setWorldProxy(world);\n    },\n    physicsOptions: {\n      colliders,\n      gravity\n    },\n    rigidBodyStates,\n    colliderStates,\n    rigidBodyEvents,\n    colliderEvents,\n    beforeStepCallbacks,\n    afterStepCallbacks,\n    isPaused: paused,\n    isDebug: debug,\n    step\n  }), [paused, step, debug, colliders, gravity]);\n  const stepCallback = useCallback((delta) => {\n    if (!paused) {\n      step(delta);\n    }\n  }, [paused, step]);\n  return /* @__PURE__ */ React__default.createElement(rapierContext.Provider, {\n    value: context2\n  }, /* @__PURE__ */ React__default.createElement(FrameStepper$1, {\n    onStep: stepCallback,\n    type: updateLoop,\n    updatePriority\n  }), debug && /* @__PURE__ */ React__default.createElement(Debug, null), children);\n};\nfunction _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function(n2) {\n    for (var e2 = 1; e2 < arguments.length; e2++) {\n      var t2 = arguments[e2];\n      for (var r2 in t2) ({}).hasOwnProperty.call(t2, r2) && (n2[r2] = t2[r2]);\n    }\n    return n2;\n  }, _extends.apply(null, arguments);\n}\nconst useImperativeInstance = (createFn, destroyFn, dependencyList) => {\n  const ref = useRef();\n  const getInstance = useCallback(() => {\n    if (!ref.current) {\n      ref.current = createFn();\n    }\n    return ref.current;\n  }, dependencyList);\n  useEffect(() => {\n    const instance = getInstance();\n    const destroy = () => destroyFn(instance);\n    return () => {\n      destroy();\n      ref.current = void 0;\n    };\n  }, [getInstance]);\n  return getInstance;\n};\nconst vec3 = ({\n  x: x2,\n  y: y2,\n  z: z2\n} = {\n  x: 0,\n  y: 0,\n  z: 0\n}) => {\n  return new Vector3(x2, y2, z2);\n};\nconst useForwardedRef = (forwardedRef, defaultValue = null) => {\n  const innerRef = useRef(defaultValue);\n  if (forwardedRef && typeof forwardedRef !== \"function\") {\n    if (!forwardedRef.current) {\n      forwardedRef.current = innerRef.current;\n    }\n    return forwardedRef;\n  }\n  return innerRef;\n};\nconst AnyCollider = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef((props, forwardedRef) => {\n  const {\n    children,\n    position,\n    rotation,\n    quaternion,\n    scale,\n    name\n  } = props;\n  const {\n    world,\n    colliderEvents,\n    colliderStates\n  } = useRapier();\n  const rigidBodyContext = useRigidBodyContext();\n  const colliderRef = useForwardedRef(forwardedRef);\n  const objectRef = useRef(null);\n  const immutablePropArray = immutableColliderOptions.flatMap((key) => Array.isArray(props[key]) ? [...props[key]] : props[key]);\n  const getInstance = useImperativeInstance(() => {\n    const worldScale = objectRef.current.getWorldScale(vec3());\n    const collider = createColliderFromOptions(props, world, worldScale, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.getRigidBody);\n    if (typeof forwardedRef == \"function\") {\n      forwardedRef(collider);\n    }\n    colliderRef.current = collider;\n    return collider;\n  }, (collider) => {\n    if (world.getCollider(collider.handle)) {\n      world.removeCollider(collider, true);\n    }\n  }, [...immutablePropArray, rigidBodyContext]);\n  useEffect(() => {\n    const collider = getInstance();\n    colliderStates.set(collider.handle, createColliderState(collider, objectRef.current, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.ref.current));\n    return () => {\n      colliderStates.delete(collider.handle);\n    };\n  }, [getInstance]);\n  const mergedProps = useMemo(() => {\n    return _objectSpread2(_objectSpread2({}, cleanRigidBodyPropsForCollider(rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options)), props);\n  }, [props, rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options]);\n  useUpdateColliderOptions(getInstance, mergedProps, colliderStates);\n  useColliderEvents(getInstance, mergedProps, colliderEvents, getActiveCollisionEventsFromProps(rigidBodyContext === null || rigidBodyContext === void 0 ? void 0 : rigidBodyContext.options));\n  return /* @__PURE__ */ React__default.createElement(\"object3D\", {\n    position,\n    rotation,\n    quaternion,\n    scale,\n    ref: objectRef,\n    name\n  }, children);\n}));\nconst CuboidCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => {\n  return /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n    shape: \"cuboid\",\n    ref\n  }));\n});\nCuboidCollider.displayName = \"CuboidCollider\";\nconst RoundCuboidCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"roundCuboid\",\n  ref\n})));\nRoundCuboidCollider.displayName = \"RoundCuboidCollider\";\nconst BallCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"ball\",\n  ref\n})));\nBallCollider.displayName = \"BallCollider\";\nconst CapsuleCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"capsule\",\n  ref\n})));\nCapsuleCollider.displayName = \"CapsuleCollider\";\nconst HeightfieldCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"heightfield\",\n  ref\n})));\nHeightfieldCollider.displayName = \"HeightfieldCollider\";\nconst TrimeshCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"trimesh\",\n  ref\n})));\nTrimeshCollider.displayName = \"TrimeshCollider\";\nconst ConeCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"cone\",\n  ref\n})));\nConeCollider.displayName = \"ConeCollider\";\nconst RoundConeCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"roundCone\",\n  ref\n})));\nRoundConeCollider.displayName = \"RoundConeCollider\";\nconst CylinderCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"cylinder\",\n  ref\n})));\nCylinderCollider.displayName = \"CylinderCollider\";\nCylinderCollider.displayName = \"RoundCylinderCollider\";\nconst ConvexHullCollider = /* @__PURE__ */ React__default.forwardRef((props, ref) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({}, props, {\n  shape: \"convexHull\",\n  ref\n})));\nConvexHullCollider.displayName = \"ConvexHullCollider\";\nconst rigidBodyDescFromOptions = (options) => {\n  var _options$canSleep;\n  const type = rigidBodyTypeFromString((options === null || options === void 0 ? void 0 : options.type) || \"dynamic\");\n  const desc = new GI(type);\n  desc.canSleep = (_options$canSleep = options === null || options === void 0 ? void 0 : options.canSleep) !== null && _options$canSleep !== void 0 ? _options$canSleep : true;\n  return desc;\n};\nconst createRigidBodyState = ({\n  rigidBody,\n  object,\n  setMatrix,\n  getMatrix,\n  worldScale,\n  meshType: _meshType = \"mesh\"\n}) => {\n  object.updateWorldMatrix(true, false);\n  const invertedWorldMatrix = object.parent.matrixWorld.clone().invert();\n  return {\n    object,\n    rigidBody,\n    invertedWorldMatrix,\n    setMatrix: setMatrix ? setMatrix : (matrix) => {\n      object.matrix.copy(matrix);\n    },\n    getMatrix: getMatrix ? getMatrix : (matrix) => matrix.copy(object.matrix),\n    scale: worldScale || object.getWorldScale(_scale).clone(),\n    isSleeping: false,\n    meshType: _meshType\n  };\n};\nconst immutableRigidBodyOptions = [\"args\", \"colliders\", \"canSleep\"];\nconst mutableRigidBodyOptions = {\n  gravityScale: (rb, value) => {\n    rb.setGravityScale(value, true);\n  },\n  additionalSolverIterations(rb, value) {\n    rb.setAdditionalSolverIterations(value);\n  },\n  linearDamping: (rb, value) => {\n    rb.setLinearDamping(value);\n  },\n  angularDamping: (rb, value) => {\n    rb.setAngularDamping(value);\n  },\n  dominanceGroup: (rb, value) => {\n    rb.setDominanceGroup(value);\n  },\n  enabledRotations: (rb, [x2, y2, z2]) => {\n    rb.setEnabledRotations(x2, y2, z2, true);\n  },\n  enabledTranslations: (rb, [x2, y2, z2]) => {\n    rb.setEnabledTranslations(x2, y2, z2, true);\n  },\n  lockRotations: (rb, value) => {\n    rb.lockRotations(value, true);\n  },\n  lockTranslations: (rb, value) => {\n    rb.lockTranslations(value, true);\n  },\n  angularVelocity: (rb, [x2, y2, z2]) => {\n    rb.setAngvel({\n      x: x2,\n      y: y2,\n      z: z2\n    }, true);\n  },\n  linearVelocity: (rb, [x2, y2, z2]) => {\n    rb.setLinvel({\n      x: x2,\n      y: y2,\n      z: z2\n    }, true);\n  },\n  ccd: (rb, value) => {\n    rb.enableCcd(value);\n  },\n  softCcdPrediction: (rb, value) => {\n    rb.setSoftCcdPrediction(value);\n  },\n  userData: (rb, value) => {\n    rb.userData = value;\n  },\n  type(rb, value) {\n    rb.setBodyType(rigidBodyTypeFromString(value), true);\n  },\n  position: () => {\n  },\n  rotation: () => {\n  },\n  quaternion: () => {\n  },\n  scale: () => {\n  }\n};\nconst mutableRigidBodyOptionKeys = Object.keys(mutableRigidBodyOptions);\nconst setRigidBodyOptions = (rigidBody, options, states, updateTranslations = true) => {\n  if (!rigidBody) {\n    return;\n  }\n  const state = states.get(rigidBody.handle);\n  if (state) {\n    if (updateTranslations) {\n      state.object.updateWorldMatrix(true, false);\n      _matrix4.copy(state.object.matrixWorld).decompose(_position, _rotation, _scale);\n      rigidBody.setTranslation(_position, false);\n      rigidBody.setRotation(_rotation, false);\n    }\n    mutableRigidBodyOptionKeys.forEach((key) => {\n      if (key in options) {\n        mutableRigidBodyOptions[key](rigidBody, options[key]);\n      }\n    });\n  }\n};\nconst useUpdateRigidBodyOptions = (getRigidBody, props, states, updateTranslations = true) => {\n  const mutablePropsAsFlatArray = useMemo(() => mutableRigidBodyOptionKeys.flatMap((key) => {\n    return vectorToTuple(props[key]);\n  }), [props]);\n  useEffect(() => {\n    const rigidBody = getRigidBody();\n    setRigidBodyOptions(rigidBody, props, states, updateTranslations);\n  }, mutablePropsAsFlatArray);\n};\nconst useRigidBodyEvents = (getRigidBody, props, events) => {\n  const {\n    onWake,\n    onSleep,\n    onCollisionEnter,\n    onCollisionExit,\n    onIntersectionEnter,\n    onIntersectionExit,\n    onContactForce\n  } = props;\n  const eventHandlers = {\n    onWake,\n    onSleep,\n    onCollisionEnter,\n    onCollisionExit,\n    onIntersectionEnter,\n    onIntersectionExit,\n    onContactForce\n  };\n  useEffect(() => {\n    const rigidBody = getRigidBody();\n    events.set(rigidBody.handle, eventHandlers);\n    return () => {\n      events.delete(rigidBody.handle);\n    };\n  }, [onWake, onSleep, onCollisionEnter, onCollisionExit, onIntersectionEnter, onIntersectionExit, onContactForce]);\n};\nconst _excluded$1 = [\"children\", \"type\", \"position\", \"rotation\", \"scale\", \"quaternion\", \"transformState\"];\nconst RigidBodyContext = /* @__PURE__ */ createContext(void 0);\nconst useRigidBodyContext = () => useContext(RigidBodyContext);\nconst RigidBody = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef((props, forwardedRef) => {\n  const {\n    children,\n    type,\n    position,\n    rotation,\n    scale,\n    quaternion,\n    transformState\n  } = props, objectProps = _objectWithoutProperties(props, _excluded$1);\n  const objectRef = useRef(null);\n  const rigidBodyRef = useForwardedRef(forwardedRef);\n  const {\n    world,\n    rigidBodyStates,\n    physicsOptions,\n    rigidBodyEvents\n  } = useRapier();\n  const mergedOptions = useMemo(() => {\n    return _objectSpread2(_objectSpread2(_objectSpread2({}, physicsOptions), props), {}, {\n      children: void 0\n    });\n  }, [physicsOptions, props]);\n  const immutablePropArray = immutableRigidBodyOptions.flatMap((key) => {\n    return Array.isArray(mergedOptions[key]) ? [...mergedOptions[key]] : mergedOptions[key];\n  });\n  const childColliderProps = useChildColliderProps(objectRef, mergedOptions);\n  const getRigidBody = useImperativeInstance(() => {\n    const desc = rigidBodyDescFromOptions(mergedOptions);\n    const rigidBody = world.createRigidBody(desc);\n    if (typeof forwardedRef === \"function\") {\n      forwardedRef(rigidBody);\n    }\n    rigidBodyRef.current = rigidBody;\n    return rigidBody;\n  }, (rigidBody) => {\n    if (world.getRigidBody(rigidBody.handle)) {\n      world.removeRigidBody(rigidBody);\n    }\n  }, immutablePropArray);\n  useEffect(() => {\n    const rigidBody = getRigidBody();\n    const state = createRigidBodyState({\n      rigidBody,\n      object: objectRef.current\n    });\n    rigidBodyStates.set(rigidBody.handle, props.transformState ? props.transformState(state) : state);\n    return () => {\n      rigidBodyStates.delete(rigidBody.handle);\n    };\n  }, [getRigidBody]);\n  useUpdateRigidBodyOptions(getRigidBody, mergedOptions, rigidBodyStates);\n  useRigidBodyEvents(getRigidBody, mergedOptions, rigidBodyEvents);\n  const contextValue = useMemo(() => {\n    return {\n      ref: objectRef,\n      getRigidBody,\n      options: mergedOptions\n    };\n  }, [getRigidBody]);\n  return /* @__PURE__ */ React__default.createElement(RigidBodyContext.Provider, {\n    value: contextValue\n  }, /* @__PURE__ */ React__default.createElement(\"object3D\", _extends({\n    ref: objectRef\n  }, objectProps, {\n    position,\n    rotation,\n    quaternion,\n    scale\n  }), children, childColliderProps.map((colliderProps, index) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({\n    key: index\n  }, colliderProps)))));\n}));\nRigidBody.displayName = \"RigidBody\";\nconst MeshCollider = /* @__PURE__ */ memo((props) => {\n  const {\n    children,\n    type\n  } = props;\n  const {\n    physicsOptions\n  } = useRapier();\n  const object = useRef(null);\n  const {\n    options\n  } = useRigidBodyContext();\n  const mergedOptions = useMemo(() => {\n    return _objectSpread2(_objectSpread2(_objectSpread2({}, physicsOptions), options), {}, {\n      children: void 0,\n      colliders: type\n    });\n  }, [physicsOptions, options]);\n  const childColliderProps = useChildColliderProps(object, mergedOptions, false);\n  return /* @__PURE__ */ React__default.createElement(\"object3D\", {\n    ref: object,\n    userData: {\n      r3RapierType: \"MeshCollider\"\n    }\n  }, children, childColliderProps.map((colliderProps, index) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({\n    key: index\n  }, colliderProps))));\n});\nMeshCollider.displayName = \"MeshCollider\";\nconst _excluded = [\"children\", \"instances\", \"colliderNodes\", \"position\", \"rotation\", \"quaternion\", \"scale\"];\nconst InstancedRigidBodies = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef((props, forwardedRef) => {\n  const rigidBodiesRef = useForwardedRef(forwardedRef, []);\n  const objectRef = useRef(null);\n  const instanceWrapperRef = useRef(null);\n  const {\n    // instanced props\n    children,\n    instances,\n    colliderNodes = [],\n    // wrapper object props\n    position,\n    rotation,\n    quaternion,\n    scale\n    // rigid body specific props, and r3f-object props\n  } = props, rigidBodyProps = _objectWithoutProperties(props, _excluded);\n  const childColliderProps = useChildColliderProps(objectRef, _objectSpread2(_objectSpread2({}, props), {}, {\n    children: void 0\n  }));\n  const getInstancedMesh = () => {\n    const firstChild = instanceWrapperRef.current.children[0];\n    if (firstChild && \"isInstancedMesh\" in firstChild) {\n      return firstChild;\n    }\n    return void 0;\n  };\n  useEffect(() => {\n    const instancedMesh = getInstancedMesh();\n    if (instancedMesh) {\n      instancedMesh.instanceMatrix.setUsage(DynamicDrawUsage);\n    } else {\n      console.warn(\"InstancedRigidBodies expects exactly one child, which must be an InstancedMesh\");\n    }\n  }, []);\n  const applyInstancedState = (state, index) => {\n    const instancedMesh = getInstancedMesh();\n    if (instancedMesh) {\n      return _objectSpread2(_objectSpread2({}, state), {}, {\n        getMatrix: (matrix) => {\n          instancedMesh.getMatrixAt(index, matrix);\n          return matrix;\n        },\n        setMatrix: (matrix) => {\n          instancedMesh.setMatrixAt(index, matrix);\n          instancedMesh.instanceMatrix.needsUpdate = true;\n        },\n        meshType: \"instancedMesh\"\n      });\n    }\n    return state;\n  };\n  return /* @__PURE__ */ React__default.createElement(\"object3D\", _extends({\n    ref: objectRef\n  }, rigidBodyProps, {\n    position,\n    rotation,\n    quaternion,\n    scale\n  }), /* @__PURE__ */ React__default.createElement(\"object3D\", {\n    ref: instanceWrapperRef\n  }, children), instances === null || instances === void 0 ? void 0 : instances.map((instance, index) => /* @__PURE__ */ React__default.createElement(RigidBody, _extends({}, rigidBodyProps, instance, {\n    ref: (body) => rigidBodiesRef.current[index] = body,\n    transformState: (state) => applyInstancedState(state, index)\n  }), /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, colliderNodes.map((node, index2) => /* @__PURE__ */ React__default.createElement(Fragment, {\n    key: index2\n  }, node)), childColliderProps.map((colliderProps, colliderIndex) => /* @__PURE__ */ React__default.createElement(AnyCollider, _extends({\n    key: colliderIndex\n  }, colliderProps)))))));\n}));\nInstancedRigidBodies.displayName = \"InstancedRigidBodies\";\nconst useImpulseJoint = (body1, body2, params) => {\n  const {\n    world\n  } = useRapier();\n  const jointRef = useRef();\n  useImperativeInstance(() => {\n    if (body1.current && body2.current) {\n      const newJoint = world.createImpulseJoint(params, body1.current, body2.current, true);\n      jointRef.current = newJoint;\n      return newJoint;\n    }\n  }, (joint) => {\n    if (joint) {\n      jointRef.current = void 0;\n      if (world.getImpulseJoint(joint.handle)) {\n        world.removeImpulseJoint(joint, true);\n      }\n    }\n  }, []);\n  return jointRef;\n};\nconst useSphericalJoint = (body1, body2, [body1Anchor, body2Anchor]) => {\n  const {\n    rapier\n  } = useRapier();\n  return useImpulseJoint(body1, body2, rapier.JointData.spherical(vector3ToRapierVector(body1Anchor), vector3ToRapierVector(body2Anchor)));\n};\nconst useRopeJoint = (body1, body2, [body1Anchor, body2Anchor, length]) => {\n  const {\n    rapier\n  } = useRapier();\n  const vBody1Anchor = vector3ToRapierVector(body1Anchor);\n  const vBody2Anchor = vector3ToRapierVector(body2Anchor);\n  const params = rapier.JointData.rope(length, vBody1Anchor, vBody2Anchor);\n  return useImpulseJoint(body1, body2, params);\n};\nexport {\n  BallCollider,\n  Canvas2 as Canvas,\n  CuboidCollider,\n  Environment,\n  Lightformer,\n  MeshLineGeometry,\n  MeshLineMaterial,\n  Physics,\n  RigidBody,\n  THREE,\n  extend,\n  useFrame,\n  useGLTF,\n  useRopeJoint,\n  useSphericalJoint,\n  useTexture\n};\n//# sourceMappingURL=lanyard.js.map\n","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,withCSS}from\"framer\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";import{useEffect,useState,useRef}from\"react\";import{Canvas,extend,useFrame,useGLTF,useTexture,Environment,Lightformer,BallCollider,CuboidCollider,Physics,RigidBody,useRopeJoint,useSphericalJoint,MeshLineGeometry,MeshLineMaterial,THREE}from\"https://cdn.jsdelivr.net/gh/madebyisaacr/framer-university/files/lanyard.js\";import hash from\"@emotion/hash\";const CARD_GLB_URL=\"https://framerusercontent.com/assets/mv3nY4GEDXqOTCVSvcDUNBfFOI.glb\";const DEFAULT_STRING_IMAGE_URL=\"https://framerusercontent.com/images/7z2NUtv9Vd9AMoaXZ7U5TbGrV0.png\";const EMPTY_TEXTURE_URL=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+ip1sAAAAASUVORK5CYII=\";extend({MeshLineGeometry,MeshLineMaterial});// const CARD_SIZE = { x: 0.716, y: 0.00402, z: 1 };\nconst CARD_IMAGE_HEIGHT_SCALE=.757;const START_POSITION_MAP={left:[-1,0],right:[1,0],top:[0,0],bottom:[0,-2.2]};function LanyardComponentContent({id,preview,cardColor,stringStyle,clipColor,backgroundColor,frontImage,backImage,interactive,gravity,startPosition,cameraDistance,imageSizing,lightingIntensity,style}){const componentId=id?hash(id):\"\";const isCanvas=RenderTarget.current()===RenderTarget.canvas;const frontImageSrc=removeUrlParams(frontImage?.src??\"\");const backImageSrc=removeUrlParams(backImage?.src??\"\");const[stringImageError,setStringImageError]=useState(false);const[cardColorValue,stringColorValue,clipColorValue]=useColors(cardColor,stringStyle.color,clipColor);const[cardImageUrl,setCardImageUrl]=useState(\"\");// Validate string image URL\nuseEffect(()=>{if(stringStyle.type===\"image\"&&stringStyle.image?.src){const img=new Image;img.onload=()=>setStringImageError(false);img.onerror=()=>setStringImageError(true);img.src=stringStyle.image.src;}},[stringStyle.type,stringStyle.image?.src]);useEffect(()=>{if(!frontImageSrc&&!backImageSrc){setCardImageUrl(\"\");return;}let mounted=true;const generateCardImage=async()=>{// Get optimal resolution based on image sizes\nconst resolution=await getOptimalResolution(frontImageSrc,backImageSrc);// Create canvas safely\nlet canvas=null;try{canvas=document.createElement(\"canvas\");canvas.width=resolution;canvas.height=resolution;}catch(err){console.error(\"Failed to create canvas:\",err);return;}// Get context safely\nconst ctx=canvas.getContext(\"2d\");if(!ctx){console.error(\"Failed to get canvas context\");return;}// Draw background\ntry{ctx.fillStyle=cardColorValue;ctx.fillRect(0,0,resolution,resolution);}catch(err){console.error(\"Error drawing background:\",err);return;}// Track loaded images with cleanup\nlet pendingImages=[];let loadedImages=0;const totalImages=(frontImageSrc?1:0)+(backImageSrc?1:0);const updateCardImage=()=>{loadedImages++;if(loadedImages===totalImages&&mounted&&canvas){try{// Flip the entire canvas vertically\nconst tempCanvas=document.createElement(\"canvas\");tempCanvas.width=canvas.width;tempCanvas.height=canvas.height;const tempCtx=tempCanvas.getContext(\"2d\");if(tempCtx){tempCtx.scale(1,-1)// Flip vertically\n;tempCtx.translate(0,-canvas.height)// Adjust for the flip\n;tempCtx.drawImage(canvas,0,0);const dataUrl=tempCanvas.toDataURL();if(dataUrl){setCardImageUrl(dataUrl);}}}catch(err){console.error(\"Error generating data URL:\",err);}}};const loadImage=(src,front)=>{const img=new Image;img.crossOrigin=\"anonymous\";pendingImages.push(img);const onLoad=()=>{if(!mounted)return;try{const targetWidth=resolution/2;const targetHeight=resolution*CARD_IMAGE_HEIGHT_SCALE;const dims=calculateImageDimensions(img,imageSizing,targetWidth,targetHeight);// Save the current context state\nctx.save();// Create clipping region for the image\nctx.beginPath();ctx.rect(front?0:resolution/2,0,resolution/2,resolution);ctx.clip();// Draw the image\nctx.drawImage(img,(front?0:resolution/2)+(dims.x||0),dims.y||0,dims.width,dims.height);// Restore the context state\nctx.restore();updateCardImage();}catch(err){console.error(\"Error drawing image:\",err);updateCardImage()// Still increment counter\n;}};img.onload=onLoad;img.onerror=()=>{console.error(`Failed to load image: ${src}`);updateCardImage();};img.src=`${src}?scale-down-to=${resolution}`;};if(frontImageSrc){loadImage(frontImageSrc,true);}if(backImageSrc){loadImage(backImageSrc,false);}};generateCardImage();return()=>{mounted=false;};},[frontImageSrc,backImageSrc,cardColorValue,imageSizing]);return /*#__PURE__*/_jsxs(\"div\",{className:`lanyard-container ${interactive?\"interactive\":\"\"}`,style:{position:\"relative\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",backgroundColor,width:\"100%\",height:\"100%\",...style},children:[(!isCanvas||preview)&&/*#__PURE__*/_jsx(Lanyard,{gravity:[0,-gravity,0],position:[0,0,cameraDistance],cardStartPosition:START_POSITION_MAP[startPosition],stringImageSrc:stringStyle.type===\"image\"?!stringImageError?stringStyle.image?.src||DEFAULT_STRING_IMAGE_URL:DEFAULT_STRING_IMAGE_URL:\"\",cardImageSrc:cardImageUrl,cardColor:cardColorValue,stringColor:stringStyle.type===\"color\"?stringColorValue:\"#ffffff\",clipColor:clipColorValue,interactive:isCanvas?false:interactive,lightingIntensity:lightingIntensity}),!isCanvas&&interactive&&/*#__PURE__*/_jsx(\"style\",{children:`.framer-${componentId}-container { pointer-events: none; }`})]});}/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n */const LanyardComponent=withCSS(LanyardComponentContent,[\".lanyard-container canvas { width: 100% !important; height: 100% !important; }\",\".lanyard-container *:not(canvas) { pointer-events: none !important; }\",\".lanyard-container.interactive { touch-action: none; }\",\".lanyard-container.interactive canvas { pointer-events: auto !important; touch-action: none !important;}\",\".lanyard-container:not(.interactive) canvas { pointer-events: none !important; }\"],\"\");export default LanyardComponent;LanyardComponent.displayName=\"Lanyard\";addPropertyControls(LanyardComponent,{preview:{type:ControlType.Boolean,defaultValue:true},cardColor:{type:ControlType.Color,title:\"Card\",defaultValue:\"#FFFFFF\"},stringStyle:{type:ControlType.Object,title:\"String\",controls:{type:{type:ControlType.Enum,defaultValue:\"image\",options:[\"color\",\"image\"],optionTitles:[\"Color\",\"Image\"],displaySegmentedControl:true},color:{type:ControlType.Color,defaultValue:\"#000000\",hidden:props=>props.type===\"image\"},image:{type:ControlType.ResponsiveImage,__defaultAssetReference:\"data:framer/asset-reference,7z2NUtv9Vd9AMoaXZ7U5TbGrV0.png?originalFilename=image.png&preferredSize=auto\",hidden:props=>props.type===\"color\"}}},clipColor:{type:ControlType.Color,title:\"Clip\",defaultValue:\"#667073\"},backgroundColor:{type:ControlType.Color,title:\"Background\",optional:true},frontImage:{type:ControlType.ResponsiveImage,title:\"Front Image\"},backImage:{type:ControlType.ResponsiveImage,title:\"Back Image\"},imageSizing:{type:ControlType.Enum,defaultValue:\"fit\",options:[\"fit\",\"fill\",\"stretch\"],optionTitles:[\"Fit\",\"Fill\",\"Stretch\"],title:\"Sizing\"},interactive:{type:ControlType.Boolean,defaultValue:true},startPosition:{type:ControlType.Enum,defaultValue:\"right\",options:[\"left\",\"right\",\"top\",\"bottom\"],optionTitles:[\"Left\",\"Right\",\"Top\",\"Bottom\"],optionIcons:[\"direction-left\",\"direction-right\",\"direction-up\",\"direction-down\"],displaySegmentedControl:true,title:\"Start\"},gravity:{type:ControlType.Number,defaultValue:40,min:0,max:100,step:1},cameraDistance:{type:ControlType.Number,defaultValue:20,min:0,max:100,step:1,title:\"Distance\"},lightingIntensity:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,unit:\"%\",title:\"Lighting\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});function CameraController({position}){useFrame(({camera})=>{if(camera&&camera.position){camera.position.set(...position);}});return null;}function Lanyard({position=[0,0,30],cardStartPosition=[1,0],gravity=[0,-40,0],fov=20,stringImageSrc=DEFAULT_STRING_IMAGE_URL,cardImageSrc=\"\",stringColor=\"#ffffff\",cardColor=\"#808080\",clipColor=\"#ffffff\",interactive=true,lightingIntensity=50}){const containerRef=useRef(null);const[stringAspectRatio,setStringAspectRatio]=useState(1);const[dimensions,setDimensions]=useState({width:0,height:0});const[stringImageLoaded,setStringImageLoaded]=useState(false);useEffect(()=>{if(!containerRef.current)return;const updateDimensions=()=>{const{offsetWidth,offsetHeight}=containerRef.current;setDimensions({width:offsetWidth,height:offsetHeight});};const resizeObserver=new ResizeObserver(updateDimensions);resizeObserver.observe(containerRef.current);updateDimensions()// Initial dimensions\n;return()=>resizeObserver.disconnect();},[containerRef]);useEffect(()=>{let mounted=true;setStringImageLoaded(false);if(stringImageSrc){const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{if(!mounted)return;const ratio=img.width/img.height;setStringAspectRatio(ratio||1)// Fallback to 1 if calculation fails\n;setStringImageLoaded(true);};img.onerror=()=>{if(!mounted)return;console.warn(\"Failed to load string image:\",stringImageSrc);setStringAspectRatio(1)// Fallback to default aspect ratio\n;setStringImageLoaded(false);};img.src=stringImageSrc;}else{setStringAspectRatio(1);setStringImageLoaded(false);}return()=>{mounted=false;};},[stringImageSrc]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\",position:\"relative\"},children:/*#__PURE__*/_jsxs(Canvas,{camera:{position:new THREE.Vector3(...position),fov},gl:{alpha:true},onCreated:({gl})=>gl.setClearColor(new THREE.Color(0),0),style:{width:dimensions.width,height:dimensions.height,...interactive?{touchAction:\"none\"}:{}},children:[/*#__PURE__*/_jsx(CameraController,{position:position}),/*#__PURE__*/_jsx(\"ambientLight\",{intensity:Math.PI*(1+(lightingIntensity-50)/50)}),/*#__PURE__*/_jsx(Physics,{gravity:gravity,timeStep:1/60,children:/*#__PURE__*/_jsx(Band,{stringImageSrc:stringImageSrc,stringColor:stringColor,cardColor:cardColor,clipColor:clipColor,cardImageSrc:cardImageSrc,interactive:interactive,cardStartPosition:cardStartPosition,stringAspectRatio:stringAspectRatio,width:dimensions.width,height:dimensions.height,stringImageLoaded:stringImageLoaded})}),/*#__PURE__*/_jsxs(Environment,{blur:.75,children:[/*#__PURE__*/_jsx(Lightformer,{intensity:2*(1+(lightingIntensity-50)/50),color:\"white\",position:[0,-1,5],rotation:[0,0,Math.PI/3],scale:[100,.1,1]}),/*#__PURE__*/_jsx(Lightformer,{intensity:3*(1+(lightingIntensity-50)/50),color:\"white\",position:[-1,-1,1],rotation:[0,0,Math.PI/3],scale:[100,.1,1]}),/*#__PURE__*/_jsx(Lightformer,{intensity:3*(1+(lightingIntensity-50)/50),color:\"white\",position:[1,1,1],rotation:[0,0,Math.PI/3],scale:[100,.1,1]}),/*#__PURE__*/_jsx(Lightformer,{intensity:10*(1+(lightingIntensity-50)/50),color:\"white\",position:[-10,0,14],rotation:[0,Math.PI/2,Math.PI/3],scale:[100,10,1]})]})]})});}function Band({maxSpeed=50,minSpeed=0,stringImageSrc=\"\",stringColor=\"#ffffff\",cardColor=\"#808080\",clipColor=\"#ffffff\",cardImageSrc=\"\",interactive=true,cardStartPosition=[1,0],stringAspectRatio=1,width=0,height=0,stringImageLoaded=false}){const band=useRef(null),fixed=useRef(null),j1=useRef(null),j2=useRef(null),j3=useRef(null),card=useRef(null);const vec=new THREE.Vector3,ang=new THREE.Vector3,rot=new THREE.Vector3,dir=new THREE.Vector3;const segmentProps={type:\"dynamic\",canSleep:true,colliders:false,angularDamping:4,linearDamping:4};const{nodes,materials}=useGLTF(CARD_GLB_URL);const[stringTexture,setStringTexture]=useState(null);const[isStringTextureLoaded,setIsStringTextureLoaded]=useState(false);const cardTexture=useTexture(cardImageSrc||EMPTY_TEXTURE_URL);const[curve]=useState(()=>new THREE.CatmullRomCurve3([new THREE.Vector3,new THREE.Vector3,new THREE.Vector3,new THREE.Vector3]));const[dragged,setDragged]=useState(false);const[hovered,setHovered]=useState(false);// Load string texture with proper error handling\nuseEffect(()=>{let mounted=true;setIsStringTextureLoaded(false);if(!stringImageSrc){setStringTexture(null);return;}new THREE.TextureLoader().load(stringImageSrc,texture=>{if(!mounted)return;applyTextureOptions(texture);setStringTexture(texture);setIsStringTextureLoaded(true);},undefined,error=>{console.error(\"Failed to load string texture:\",error);if(mounted){setIsStringTextureLoaded(false);}});return()=>{mounted=false;};},[stringImageSrc]);useRopeJoint(fixed,j1,[[0,0,0],[0,0,0],1]);useRopeJoint(j1,j2,[[0,0,0],[0,0,0],1]);useRopeJoint(j2,j3,[[0,0,0],[0,0,0],1]);useSphericalJoint(j3,card,[[0,0,0],[0,1.5,0]]);useEffect(()=>{if(hovered&&interactive){document.body.style.cursor=dragged?\"grabbing\":\"grab\";return()=>void(document.body.style.cursor=\"auto\");}},[hovered,dragged]);useEffect(()=>{if(cardTexture){applyTextureOptions(cardTexture);}},[cardTexture]);useFrame((state,delta)=>{if(dragged){vec.set(state.pointer.x,state.pointer.y,.5).unproject(state.camera);dir.copy(vec).sub(state.camera.position).normalize();vec.add(dir.multiplyScalar(state.camera.position.length()));[card,j1,j2,j3,fixed].forEach(ref=>ref.current?.wakeUp());card.current?.setNextKinematicTranslation({x:vec.x-dragged.x,y:vec.y-dragged.y,z:vec.z-dragged.z});// Ensure the event doesn't propagate to cause scrolling\nif(state.events.connected&&interactive){state.events.connected.stopPropagation=true;}}if(fixed.current){[j1,j2].forEach(ref=>{if(!ref.current.lerped)ref.current.lerped=new THREE.Vector3().copy(ref.current.translation());const clampedDistance=Math.max(.1,Math.min(1,ref.current.lerped.distanceTo(ref.current.translation())));ref.current.lerped.lerp(ref.current.translation(),delta*(minSpeed+clampedDistance*(maxSpeed-minSpeed)));});curve.points[0].copy(j3.current.translation());curve.points[1].copy(j2.current.lerped);curve.points[2].copy(j1.current.lerped);curve.points[3].copy(fixed.current.translation());band.current.geometry.setPoints(curve.getPoints(32));ang.copy(card.current.angvel());rot.copy(card.current.rotation());card.current.setAngvel({x:ang.x,y:ang.y-rot.y*.25,z:ang.z});}});curve.curveType=\"chordal\";const cardX=cardStartPosition[0];const cardY=cardStartPosition[1];return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"group\",{position:[0,4,0],children:[/*#__PURE__*/_jsx(RigidBody,{ref:fixed,...segmentProps,type:\"fixed\"}),/*#__PURE__*/_jsx(RigidBody,{position:[cardX*.5,cardY*.5,0],ref:j1,...segmentProps,children:/*#__PURE__*/_jsx(BallCollider,{args:[.1]})}),/*#__PURE__*/_jsx(RigidBody,{position:[cardX,cardY,0],ref:j2,...segmentProps,children:/*#__PURE__*/_jsx(BallCollider,{args:[.1]})}),/*#__PURE__*/_jsx(RigidBody,{position:[cardX*1.5,cardY*1.5,0],ref:j3,...segmentProps,children:/*#__PURE__*/_jsx(BallCollider,{args:[.1]})}),/*#__PURE__*/_jsxs(RigidBody,{position:[cardX*2,cardY*2,0],ref:card,...segmentProps,type:dragged?\"kinematicPosition\":\"dynamic\",children:[/*#__PURE__*/_jsx(CuboidCollider,{args:[.8,1.125,.01]}),/*#__PURE__*/_jsxs(\"group\",{scale:2.25,position:[0,-1.2,-.05],onPointerOver:e=>{setHovered(true);},onPointerOut:e=>{setHovered(false);},onPointerUp:e=>{if(interactive){e.target.releasePointerCapture(e.pointerId);setDragged(false);e.stopPropagation();}},onPointerDown:e=>{if(interactive){e.target.setPointerCapture(e.pointerId);if(card.current){setDragged(new THREE.Vector3().copy(e.point).sub(vec.copy(card.current.translation())));}e.stopPropagation()// Stop event from propagating to prevent scroll\n;}},onPointerMove:e=>{if(interactive&&dragged){e.stopPropagation()// Stop event from propagating to prevent scroll during drag\n;}},children:[/*#__PURE__*/_jsx(\"mesh\",{geometry:nodes.card.geometry,children:/*#__PURE__*/_jsx(\"meshPhysicalMaterial\",{color:new THREE.Color(cardImageSrc?\"#FFFFFF\":cardColor),map:cardTexture,clearcoat:1,clearcoatRoughness:.15,roughness:.9,metalness:.8})}),/*#__PURE__*/_jsx(\"mesh\",{geometry:nodes.clip.geometry,children:/*#__PURE__*/_jsx(\"meshPhysicalMaterial\",{material:materials.metal,color:new THREE.Color(clipColor),roughness:.3,metalness:.8})}),/*#__PURE__*/_jsx(\"mesh\",{geometry:nodes.clamp.geometry,children:/*#__PURE__*/_jsx(\"meshPhysicalMaterial\",{material:materials.metal,color:new THREE.Color(clipColor),roughness:.3,metalness:.8})})]})]})]}),/*#__PURE__*/_jsxs(\"mesh\",{ref:band,children:[/*#__PURE__*/_jsx(\"meshLineGeometry\",{}),/*#__PURE__*/_jsx(\"meshLineMaterial\",{color:new THREE.Color(stringImageSrc?\"#FFFFFF\":stringColor),depthTest:false,resolution:[width,height],useMap:!!stringTexture&&isStringTextureLoaded,map:stringTexture,repeat:stringTexture?[-17/stringAspectRatio,1]:undefined,lineWidth:1})]})]});}function calculateImageDimensions(img,mode,targetWidth,targetHeight){const imgAspectRatio=img.width/img.height;const targetAspectRatio=targetWidth/targetHeight;if(mode===\"stretch\"){return{width:targetWidth,height:targetHeight};}else if(mode===\"fill\"){if(imgAspectRatio>targetAspectRatio){const width=targetHeight*imgAspectRatio;return{width,height:targetHeight,x:(targetWidth-width)/2};}else{const height=targetWidth/imgAspectRatio;return{height,width:targetWidth,y:(targetHeight-height)/2};}}else{// fit\nif(imgAspectRatio>targetAspectRatio){const height=targetWidth/imgAspectRatio;return{width:targetWidth,height,y:(targetHeight-height)/2};}else{const width=targetHeight*imgAspectRatio;return{width,height:targetHeight,x:(targetWidth-width)/2};}}}function getOptimalResolution(frontImageSrc,backImageSrc){return new Promise(resolve=>{const resolutions=[512,1024];let maxDimension=0;let loadedImages=0;const totalImages=(frontImageSrc?1:0)+(backImageSrc?1:0);const checkResolution=()=>{loadedImages++;if(loadedImages===totalImages){// Find the smallest resolution that's at least 2x the max dimension\n// This ensures good quality while not being wasteful\nconst optimalRes=resolutions.find(res=>res>=maxDimension*2)||resolutions[resolutions.length-1];resolve(optimalRes);}};if(!frontImageSrc&&!backImageSrc){resolve(512)// Default resolution for solid colors\n;return;}[frontImageSrc,backImageSrc].forEach(src=>{if(!src)return;const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{maxDimension=Math.max(maxDimension,img.width,img.height);checkResolution();};img.onerror=checkResolution;img.src=`${src}?scale-down-to=2048`// Request max possible resolution\n;});});}function applyTextureOptions(texture){if(!texture)return;texture.wrapS=texture.wrapT=THREE.RepeatWrapping;texture.anisotropy=16;}function removeUrlParams(input){if(!input){return\"\";}const str=String(input);const questionMarkIndex=str.indexOf(\"?\");// If '?' is not found, return the entire string\n// Otherwise, return the substring before '?'\nreturn questionMarkIndex===-1?str:str.slice(0,questionMarkIndex);}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"LanyardComponent\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicHeight\":\"400\",\"framerIntrinsicWidth\":\"400\",\"framerDisableUnlink\":\"*\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Lanyard_Prod.map","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 12.51 10.962 C 12.556 10.162 12.948 9.456 13.54 8.956 C 14.161 8.44 14.944 8.16 15.752 8.166 C 16.602 8.166 17.383 8.466 17.963 8.956 C 18.555 9.456 18.946 10.162 18.991 10.961 C 19.036 11.784 18.706 12.547 18.126 13.114 C 17.487 13.724 16.635 14.06 15.752 14.052 C 14.868 14.06 14.015 13.724 13.376 13.114 C 12.796 12.547 12.466 11.784 12.511 10.962 M 7.35 12.579 C 7.356 12.893 7.456 13.501 7.606 13.977 C 7.93 15.001 8.473 15.942 9.199 16.734 C 9.977 17.589 10.926 18.271 11.986 18.735 C 13.139 19.243 14.386 19.502 15.646 19.495 C 16.905 19.497 18.152 19.234 19.303 18.723 C 20.361 18.254 21.31 17.57 22.088 16.713 C 22.812 15.918 23.355 14.976 23.68 13.951 C 23.992 12.957 24.077 11.907 23.93 10.877 C 23.789 9.889 23.443 8.943 22.914 8.098 C 22.423 7.311 21.796 6.62 21.062 6.055 L 21.064 6.055 L 13.566 0.298 L 13.546 0.283 C 13.054 -0.095 12.227 -0.093 11.686 0.285 C 11.139 0.667 11.077 1.3 11.563 1.7 L 11.562 1.701 L 14.688 4.244 L 5.158 4.254 L 5.145 4.254 C 4.357 4.255 3.6 4.772 3.45 5.426 C 3.296 6.091 3.83 6.643 4.65 6.646 L 4.65 6.648 L 9.48 6.638 L 0.86 13.255 L 0.826 13.28 C 0.013 13.902 -0.249 14.938 0.263 15.593 C 0.783 16.26 1.888 16.261 2.71 15.597 L 7.414 11.748 C 7.414 11.748 7.345 12.268 7.351 12.579 Z M 19.44 14.32 C 18.47 15.308 17.114 15.868 15.645 15.87 C 14.175 15.874 12.818 15.318 11.848 14.332 C 11.39 13.872 11.036 13.318 10.812 12.71 C 10.395 11.551 10.498 10.268 11.094 9.191 C 11.387 8.664 11.778 8.198 12.247 7.82 C 13.189 7.052 14.388 6.637 15.643 6.635 C 16.899 6.633 18.098 7.045 19.041 7.81 C 19.521 8.201 19.911 8.664 20.193 9.177 C 20.485 9.702 20.662 10.283 20.715 10.883 C 20.768 11.496 20.686 12.114 20.476 12.694 C 20.251 13.303 19.898 13.858 19.441 14.32\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"19.49464787340974px\" id=\"DRYCzKP6j\" transform=\"translate(0 2.252)\" width=\"23.99995194249368px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-vjAXT\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-vjAXT { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Blender\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-vjAXT\");Icon.displayName=\"Blender\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"24\",\"framerVector\":\"{\\\"name\\\":\\\"Blender\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 1.475 C 0 2.289 0.668 2.95 1.49 2.95 L 13.847 2.95 C 15.255 2.95 16.415 3.38 17.327 4.24 C 18.237 5.101 18.693 6.207 18.693 7.56 C 18.693 8.81 18.237 9.834 17.326 10.632 C 16.415 11.412 15.256 11.8 13.847 11.8 L 8.477 11.8 C 7.653 11.8 6.986 12.46 6.986 13.275 C 6.986 14.09 7.653 14.75 8.477 14.75 L 14.407 14.75 L 19.749 23.232 C 20.081 23.744 20.546 24 21.147 24 C 21.81 24 22.276 23.744 22.545 23.232 C 22.814 22.699 22.762 22.136 22.39 21.542 L 17.637 13.982 C 18.921 13.408 19.936 12.568 20.681 11.462 C 21.427 10.335 21.8 9.035 21.8 7.56 C 21.8 6.064 21.458 4.753 20.774 3.626 C 20.112 2.499 19.18 1.618 17.979 0.983 C 16.777 0.327 15.401 0 13.847 0 L 1.491 0 C 0.668 0 0 0.66 0 1.475 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"24px\" id=\"aJp5NyV9Y\" transform=\"translate(0.643 0)\" width=\"22.71414139081863px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-gomDr\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-gomDr { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Rive\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-gomDr\");Icon.displayName=\"Rive\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"24\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerVector\":\"{\\\"name\\\":\\\"Rive\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 12.195 8.981 L 7.607 8.981 L 7.607 0 L 12.195 0 C 14.671 0 16.685 2.014 16.685 4.49 C 16.685 6.966 14.671 8.981 12.195 8.981 Z M 9.078 7.51 L 12.195 7.51 C 13.86 7.51 15.214 6.155 15.214 4.491 C 15.214 2.827 13.859 1.472 12.195 1.472 L 9.078 1.472 Z M 9.078 8.981 L 4.491 8.981 C 2.015 8.981 0.001 6.967 0.001 4.491 C 0.001 2.015 2.015 0 4.491 0 L 9.079 0 L 9.079 8.981 Z M 4.491 1.471 C 2.826 1.471 1.472 2.826 1.472 4.49 C 1.472 6.154 2.826 7.51 4.491 7.51 L 7.608 7.51 L 7.608 1.471 Z M 9.078 16.49 L 4.491 16.49 C 2.015 16.49 0.001 14.476 0.001 12 C 0.001 9.524 2.015 7.51 4.491 7.51 L 9.079 7.51 L 9.079 16.49 Z M 4.491 8.981 C 2.826 8.981 1.472 10.336 1.472 12 C 1.472 13.664 2.827 15.019 4.491 15.019 L 7.608 15.019 L 7.608 8.981 Z M 4.515 24 C 2.026 24 0 21.986 0 19.51 C 0 17.034 2.014 15.02 4.49 15.02 L 9.078 15.02 L 9.078 19.461 C 9.078 21.964 7.031 24 4.515 24 Z M 4.491 16.49 C 2.825 16.492 1.474 17.843 1.472 19.509 C 1.472 21.174 2.837 22.528 4.516 22.528 C 6.221 22.528 7.609 21.152 7.609 19.46 L 7.609 16.49 Z M 12.195 16.49 L 12.097 16.49 C 9.621 16.49 7.607 14.476 7.607 12 C 7.607 9.524 9.621 7.51 12.097 7.51 L 12.195 7.51 C 14.671 7.51 16.685 9.524 16.685 12 C 16.685 14.476 14.671 16.49 12.195 16.49 Z M 12.098 8.981 C 10.433 8.981 9.079 10.336 9.079 12 C 9.079 13.664 10.434 15.019 12.098 15.019 L 12.196 15.019 C 13.861 15.019 15.215 13.664 15.215 12 C 15.215 10.336 13.86 8.981 12.196 8.981 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"24.000000457763676px\" id=\"MFERPTv09\" transform=\"translate(3.657 0)\" width=\"16.68499987411499px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-izx7y\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-izx7y { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Figma\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-izx7y\");Icon.displayName=\"Figma\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerVector\":\"{\\\"name\\\":\\\"Figma\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\",\"framerIntrinsicHeight\":\"24\",\"framerIntrinsicWidth\":\"24\",\"framerImmutableVariables\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 4.679 15.872 L 9.373 13.239 L 9.452 13.01 L 9.373 12.883 L 9.144 12.883 L 8.36 12.834 L 5.678 12.762 L 3.352 12.665 L 1.099 12.544 L 0.532 12.424 L 0 11.723 L 0.055 11.373 L 0.532 11.053 L 1.214 11.112 L 2.724 11.216 L 4.988 11.372 L 6.631 11.468 L 9.065 11.721 L 9.452 11.721 L 9.507 11.565 L 9.374 11.468 L 9.271 11.372 L 6.928 9.784 L 4.391 8.105 L 3.062 7.139 L 2.344 6.649 L 1.981 6.19 L 1.825 5.188 L 2.477 4.47 L 3.354 4.529 L 3.577 4.589 L 4.465 5.272 L 6.361 6.739 L 8.837 8.563 L 9.199 8.864 L 9.344 8.761 L 9.362 8.688 L 9.199 8.416 L 7.852 5.982 L 6.416 3.507 L 5.776 2.481 L 5.607 1.865 C 5.547 1.612 5.504 1.4 5.504 1.14 L 6.246 0.132 L 6.657 0 L 7.648 0.132 L 8.065 0.494 L 8.68 1.902 L 9.677 4.119 L 11.224 7.132 L 11.676 8.026 L 11.918 8.854 L 12.008 9.107 L 12.164 9.107 L 12.164 8.962 L 12.292 7.264 L 12.527 5.18 L 12.755 2.498 L 12.834 1.743 L 13.208 0.838 L 13.951 0.348 L 14.53 0.625 L 15.007 1.308 L 14.941 1.749 L 14.658 3.592 L 14.102 6.478 L 13.74 8.411 L 13.951 8.411 L 14.192 8.17 L 15.17 6.871 L 16.813 4.818 L 17.538 4.003 L 18.383 3.102 L 18.926 2.674 L 19.952 2.674 L 20.708 3.797 L 20.369 4.956 L 19.313 6.296 L 18.437 7.432 L 17.18 9.123 L 16.396 10.476 L 16.468 10.584 L 16.655 10.566 L 19.493 9.962 L 21.027 9.685 L 22.856 9.371 L 23.684 9.758 L 23.774 10.151 L 23.449 10.955 L 21.492 11.438 L 19.197 11.897 L 15.779 12.706 L 15.737 12.736 L 15.785 12.796 L 17.325 12.941 L 17.984 12.976 L 19.596 12.976 L 22.599 13.2 L 23.383 13.719 L 23.853 14.353 L 23.774 14.837 L 22.566 15.452 L 20.936 15.065 L 17.132 14.16 L 15.827 13.835 L 15.647 13.835 L 15.647 13.943 L 16.734 15.006 L 18.726 16.805 L 21.221 19.124 L 21.349 19.698 L 21.028 20.15 L 20.69 20.102 L 18.498 18.453 L 17.652 17.71 L 15.737 16.098 L 15.61 16.098 L 15.61 16.267 L 16.051 16.913 L 18.382 20.416 L 18.503 21.49 L 18.333 21.84 L 17.729 22.051 L 17.066 21.93 L 15.701 20.015 L 14.294 17.858 L 13.158 15.925 L 13.02 16.004 L 12.35 23.222 L 12.035 23.591 L 11.311 23.868 L 10.707 23.409 L 10.386 22.666 L 10.707 21.199 L 11.093 19.284 L 11.407 17.762 L 11.691 15.871 L 11.86 15.242 L 11.849 15.201 L 11.71 15.218 L 10.285 17.175 L 8.117 20.105 L 6.401 21.941 L 5.99 22.104 L 5.278 21.735 L 5.344 21.077 L 5.742 20.49 L 8.117 17.47 L 9.548 15.598 L 10.473 14.518 L 10.467 14.361 L 10.412 14.361 L 4.106 18.456 L 2.983 18.601 L 2.5 18.148 L 2.559 17.406 L 2.788 17.164 L 4.684 15.859 L 4.678 15.866 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"23.86791946308724px\" id=\"zJ3v7QPjc\" width=\"23.853422818791945px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-6890p\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-6890p { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Claude\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-6890p\");Icon.displayName=\"Claude\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"24\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerImmutableVariables\":\"true\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\",\"framerVector\":\"{\\\"name\\\":\\\"Claude\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 24 0 L 16.342 14.97 L 9.149 14.97 L 12.354 8.766 L 12.21 8.766 C 9.566 12.198 5.621 14.458 0 14.97 L 0 8.852 C 0 8.852 3.596 8.639 5.71 6.417 L 0 6.417 L 0 0 L 6.417 0 L 6.417 5.278 L 6.561 5.277 L 9.183 0 L 14.037 0 L 14.037 5.244 L 14.181 5.244 L 16.901 0 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"14.969999999999999px\" id=\"gx97m4a3I\" transform=\"translate(0 4.515)\" width=\"24px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-MSxF5\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-MSxF5 { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Webflow\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-MSxF5\");Icon.displayName=\"Webflow\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"24\",\"framerImmutableVariables\":\"true\",\"framerVector\":\"{\\\"name\\\":\\\"Webflow\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 0 L 16 0 L 16 8 L 8 8 Z M 0 8 L 8 8 L 16 16 L 0 16 Z M 0 16 L 8 16 L 8 24 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"24px\" id=\"cRzu_KaKs\" transform=\"translate(4 0)\" width=\"16px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-Ezrn8\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-Ezrn8 { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Framer\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-Ezrn8\");Icon.displayName=\"Framer\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\",\"framerIntrinsicHeight\":\"24\",\"framerVector\":\"{\\\"name\\\":\\\"Framer\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 9.85 8.12 C 9.48 7.97 9.08 7.91 8.67 7.92 C 8.41 7.92 8.18 7.92 7.99 7.93 C 7.79 7.92 7.65 7.93 7.58 7.94 L 7.58 11.3 C 7.72 11.31 7.85 11.32 7.97 11.32 L 8.5 11.32 C 8.89 11.32 9.28 11.26 9.65 11.14 C 9.97 11.05 10.25 10.86 10.47 10.61 C 10.68 10.36 10.78 10.02 10.78 9.58 C 10.79 9.27 10.71 8.96 10.55 8.69 C 10.383 8.43 10.138 8.231 9.85 8.12 Z M 19.75 0 L 4.25 0 C 1.9 0 0 1.9 0 4.25 L 0 19.149 C 0 21.499 1.9 23.399 4.25 23.399 L 19.75 23.399 C 22.1 23.399 24 21.499 24 19.149 L 24 4.25 C 24 1.9 22.1 0 19.75 0 Z M 12.359 11.65 C 11.96 12.21 11.4 12.63 10.75 12.87 C 10.07 13.12 9.32 13.21 8.5 13.21 C 8.26 13.21 8.1 13.21 8 13.2 C 7.9 13.19 7.76 13.19 7.57 13.19 L 7.57 16.399 C 7.58 16.469 7.53 16.53 7.46 16.54 L 5.52 16.54 C 5.44 16.54 5.4 16.499 5.4 16.409 L 5.4 6.12 C 5.4 6.05 5.43 6.01 5.5 6.01 C 5.67 6.01 5.83 6.01 6.06 6 C 6.3 5.99 6.55 5.99 6.82 5.98 C 7.09 5.97 7.38 5.97 7.69 5.96 C 8 5.95 8.3 5.95 8.6 5.95 C 9.42 5.95 10.1 6.05 10.66 6.26 C 11.16 6.43 11.62 6.71 12 7.08 C 12.32 7.4 12.57 7.79 12.73 8.22 C 12.879 8.64 12.959 9.07 12.959 9.52 C 12.96 10.38 12.76 11.09 12.359 11.65 Z M 19.45 15.54 C 19.17 15.94 18.779 16.249 18.33 16.431 C 17.84 16.64 17.24 16.749 16.519 16.749 C 16.06 16.749 15.609 16.71 15.16 16.62 C 14.81 16.559 14.46 16.45 14.14 16.3 C 14.07 16.261 14.019 16.191 14.029 16.111 L 14.029 14.371 C 14.029 14.342 14.04 14.301 14.07 14.281 C 14.099 14.261 14.13 14.271 14.16 14.291 C 14.55 14.521 14.96 14.682 15.4 14.781 C 15.779 14.881 16.179 14.931 16.58 14.931 C 16.96 14.931 17.23 14.88 17.41 14.79 C 17.57 14.72 17.68 14.55 17.68 14.37 C 17.68 14.229 17.6 14.1 17.44 13.97 C 17.28 13.841 16.951 13.691 16.461 13.499 C 15.951 13.319 15.482 13.079 15.041 12.78 C 14.728 12.556 14.468 12.266 14.28 11.93 C 14.121 11.614 14.042 11.263 14.051 10.909 C 14.051 10.479 14.171 10.069 14.392 9.699 C 14.642 9.299 15.011 8.979 15.441 8.779 C 15.91 8.54 16.5 8.43 17.21 8.43 C 17.62 8.43 18.04 8.46 18.45 8.52 C 18.75 8.56 19.04 8.64 19.31 8.75 C 19.349 8.76 19.39 8.8 19.41 8.84 C 19.42 8.88 19.43 8.92 19.43 8.96 L 19.43 10.59 C 19.43 10.63 19.41 10.67 19.38 10.69 C 19.29 10.71 19.24 10.71 19.2 10.69 C 18.9 10.53 18.58 10.42 18.24 10.35 C 17.87 10.27 17.5 10.22 17.12 10.22 C 16.92 10.21 16.71 10.24 16.519 10.29 C 16.39 10.32 16.279 10.39 16.209 10.49 C 16.159 10.57 16.129 10.67 16.129 10.76 C 16.129 10.85 16.169 10.94 16.23 11.02 C 16.32 11.13 16.439 11.22 16.57 11.29 C 16.799 11.41 17.04 11.52 17.279 11.62 C 17.82 11.8 18.34 12.05 18.82 12.35 C 19.15 12.559 19.42 12.84 19.609 13.18 C 19.769 13.498 19.849 13.85 19.839 14.209 C 19.85 14.68 19.71 15.149 19.45 15.54 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"23.398999999999997px\" id=\"bYC27ymtB\" transform=\"translate(0 0.3)\" width=\"24px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-AYlBS\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-AYlBS { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Adobephotoshop\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-AYlBS\");Icon.displayName=\"Adobephotoshop\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"24\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\",\"framerImmutableVariables\":\"true\",\"framerVector\":\"{\\\"name\\\":\\\"Adobephotoshop\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\",\"framerIntrinsicWidth\":\"24\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,useTracking}from\"framer\";import{motion}from\"framer-motion\";var IconType;(function(IconType){IconType[\"Default\"]=\"Default\";IconType[\"Custom\"]=\"Custom\";})(IconType||(IconType={}));var SrcType;(function(SrcType){SrcType[\"Upload\"]=\"Upload\";SrcType[\"URL\"]=\"URL\";})(SrcType||(SrcType={}));const metaTagSelector='meta[name=\"framer-search-index\"]';function isPublishedSiteOrSSG(){if(typeof document===\"undefined\")return true;const metaTag=document.querySelector(metaTagSelector);return!!metaTag;}/**\n *\n * DOWNLOAD\n * By Hunter\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 100\n *\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function Download(props){const{styleOptions,hoverOptions,iconOptions,trackingId,onClick}=props;const{backgroundColor,color,borderRadius,padding,paddingPerSide,paddingTop,paddingRight,paddingBottom,paddingLeft,gap}=styleOptions;const track=useTracking();const isInPublishedSiteOrSSG=isPublishedSiteOrSSG();let downloadURL=undefined;if(isInPublishedSiteOrSSG){if(props.srcType===\"URL\")downloadURL=props.srcURL;if(props.srcType===\"Upload\")downloadURL=props.srcFile;}const paddingValue=paddingPerSide?`${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`:`${padding}px`;const getIcon=()=>{if(!iconOptions)return;const iconStyle={order:iconOptions.alignment===\"start\"?0:2,flexShrink:0};return iconOptions.type===\"Custom\"&&!!iconOptions.image?.src?/*#__PURE__*/_jsx(\"img\",{style:iconStyle,alt:iconOptions.image?.alt&&iconOptions.image.alt.length>0?iconOptions.image.alt:\"download icon\",src:iconOptions.image.src,width:iconOptions.size,height:iconOptions.size}):/*#__PURE__*/_jsx(\"svg\",{style:iconStyle,xmlns:\"http://www.w3.org/2000/svg\",width:iconOptions.size,height:iconOptions.size,fill:iconOptions.color,viewBox:\"0 0 256 256\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M228 152v56a20 20 0 0 1-20 20H48a20 20 0 0 1-20-20v-56a12 12 0 0 1 24 0v52h152v-52a12 12 0 0 1 24 0Zm-108.49 8.49a12 12 0 0 0 17 0l40-40a12 12 0 0 0-17-17L140 123V40a12 12 0 0 0-24 0v83l-19.51-19.49a12 12 0 0 0-17 17Z\"})});};const getCursor=()=>{if(props.srcType===\"URL\"&&props.srcURL)return\"pointer\";if(props.srcType===\"Upload\"&&props.srcFile)return\"pointer\";return\"auto\";};const buttonTitle=isInPublishedSiteOrSSG?\"Download File\":\"Publish to Download\";const handleClick=e=>{if(trackingId)track(trackingId);onClick?.(e);// Do not prevent default; keep normal <a> behavior\n};return /*#__PURE__*/_jsxs(motion.a,{target:\"_blank\",href:downloadURL,download:props.downloadName??\"file.txt\",title:buttonTitle,style:{gap,fontSize:16,lineHeight:1,fontFamily:\"Inter\",fontWeight:500,width:\"max-content\",...props.style,...buttonStyles,...props.fontControl,padding:paddingValue,color:color,backgroundColor:backgroundColor,borderRadius:borderRadius,userSelect:\"none\",placeContent:flexAlignSwitch(props.fontControl),whiteSpace:\"nowrap\",cursor:getCursor()},whileHover:hoverOptions,transition:hoverOptions?.transition,onClick:handleClick,children:[getIcon(),props.text]});}Download.displayName=\"Download\";addPropertyControls(Download,{text:{title:\"Text\",type:ControlType.String,defaultValue:\"Download\"},srcType:{type:ControlType.Enum,displaySegmentedControl:true,title:\"Source\",options:[\"Upload\",\"URL\"]},srcURL:{type:ControlType.String,title:\" \",placeholder:\"../example.pdf\",hidden:props=>props.srcType===\"Upload\"},srcFile:{type:ControlType.File,title:\" \",allowedFileTypes:[\"*\"],hidden:props=>props.srcType===\"URL\"},fontControl:{// @ts-ignore - Internal\ntype:ControlType.Font,title:\"Font\",controls:\"extended\"},trackingId:{title:\"Tracking\",type:ControlType.TrackingId,placeholder:\"ID\"},iconOptions:{type:ControlType.Object,optional:true,title:\"Icon\",buttonTitle:\"Size, Color\",controls:{type:{title:\"Type\",type:ControlType.Enum,options:Object.values(IconType),optionTitles:Object.values(IconType),displaySegmentedControl:true},color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#FFF\",hidden:props=>props.type===\"Custom\"},image:{title:\"File\",type:ControlType.ResponsiveImage,allowedFileTypes:[\"jpg\",\"png\",\"svg\"],hidden:props=>props.type===\"Default\"},size:{type:ControlType.Number,displayStepper:true,min:5,defaultValue:16,max:250},alignment:{title:\"Align\",type:ControlType.Enum,displaySegmentedControl:true,options:[\"start\",\"end\"],optionTitles:[\"Start\",\"End\"]}}},styleOptions:{type:ControlType.Object,title:\"Styles\",buttonTitle:\"Button, Font\",controls:{backgroundColor:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#111\"},color:{type:ControlType.Color,defaultValue:\"#FFF\"},borderRadius:{type:ControlType.Number,title:\"Radius\",displayStepper:true,defaultValue:50},padding:{title:\"Padding\",type:ControlType.FusedNumber,toggleKey:\"paddingPerSide\",toggleTitles:[\"Padding\",\"Padding per side\"],defaultValue:10,valueKeys:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"],valueLabels:[\"T\",\"R\",\"B\",\"L\"],min:0},gap:{title:\"Gap\",type:ControlType.Number,displayStepper:true,defaultValue:5}}},hoverOptions:{type:ControlType.Object,title:\"Hover\",buttonTitle:\"Effect\",optional:true,controls:{scale:{type:ControlType.Number,title:\"Scale\",min:0,max:10,displayStepper:true,step:.01,defaultValue:1.1},backgroundColor:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#333\",optional:true},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#FFF\",optional:true},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:{type:\"spring\",stiffness:400,damping:30}}}}});const buttonStyles={display:\"flex\",placeItems:\"center\",placeContent:\"center\",textDecoration:\"none\"};/* Match flex content alignment with text align */const flexAlignSwitch=fontControlStyles=>{if(!fontControlStyles?.textAlign)return\"left\";if(fontControlStyles.textAlign===\"left\")return\"flex-start\";if(fontControlStyles.textAlign===\"right\")return\"flex-end\";return\"center\";};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Download\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"100\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Download.map","// Generated by Framer (dd59b2c)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,useSVGTemplate,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask=\"var(--framer-icon-mask)\";const Base=/*#__PURE__*/forwardRef(function(props,ref){return /*#__PURE__*/_jsx(\"svg\",{...props,ref:ref,children:props.children});});const MotionSVG=motion.create(Base);const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(MotionSVG,{...rest,layoutId:layoutId,ref:ref,children:children}):/*#__PURE__*/_jsx(\"svg\",{...rest,ref:ref,children:children});});const svg='<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 0 12 L 0 18 C 0 19.105 0.895 20 2 20 L 16 20 C 17.105 20 18 19.105 18 18 L 18 12 M 9 0 L 9 14 M 9 14 L 4 8.556 M 9 14 L 14 8.556\" fill=\"transparent\" height=\"20px\" id=\"tQwkea6o8\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"var(--1ww558a, 2)\" stroke=\"var(--4rxgx6, black)\" transform=\"translate(3 2)\" width=\"18px\"/></svg>';const getProps=({color,height,id,width,width1,...props})=>{return{...props,CRY1Fpez4:color??props.CRY1Fpez4??\"rgb(0, 0, 0)\",vet7gqNu_:width1??props.vet7gqNu_??2};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,CRY1Fpez4,vet7gqNu_,...restProps}=getProps(props);const href=useSVGTemplate(\"17958216\",svg);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-YqVMu\",className),layoutId:layoutId,ref:ref,role:\"presentation\",style:{\"--1ww558a\":vet7gqNu_,\"--4rxgx6\":CRY1Fpez4,...style},viewBox:\"0 0 24 24\",children:/*#__PURE__*/_jsx(\"use\",{href:href})});});const css=[`.framer-YqVMu { -webkit-mask: ${mask}; aspect-ratio: 1; display: block; mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"CRY1Fpez4\":\"color\",\"vet7gqNu_\":\"width1\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Download\",\"color\":{\"type\":\"variable\",\"value\":\"4rxgx6\"},\"set\":{\"localId\":\"vectorSet/dSZJyzeMx\",\"id\":\"dSZJyzeMx\",\"moduleId\":\"E1vFg1A6wcWAGuFi9Hz1\"}}\n */const Icon=withCSS(Component,css,\"framer-YqVMu\");Icon.displayName=\"Download\";export default Icon;addPropertyControls(Icon,{CRY1Fpez4:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Color\",type:ControlType.Color},vet7gqNu_:{defaultValue:2,displayStepper:true,hidden:false,max:4,min:1,title:\"Width\",type:ControlType.Number}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerVector\":\"{\\\"name\\\":\\\"Download\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"4rxgx6\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/dSZJyzeMx\\\",\\\"id\\\":\\\"dSZJyzeMx\\\",\\\"moduleId\\\":\\\"E1vFg1A6wcWAGuFi9Hz1\\\"}}\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"CRY1Fpez4\\\":\\\"color\\\",\\\"vet7gqNu_\\\":\\\"width1\\\"}\",\"framerIntrinsicHeight\":\"24\",\"framerIntrinsicWidth\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (b1a1598)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;DM Sans-500\",\"GF;DM Sans-700\",\"GF;DM Sans-700italic\",\"GF;DM Sans-500italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"DM Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAkJxhS2f3ZGMZpg.woff2\",weight:\"500\"},{cssFamilyName:\"DM Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwARZthS2f3ZGMZpg.woff2\",weight:\"700\"},{cssFamilyName:\"DM Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat9uCm32RmYJpso5.woff2\",weight:\"700\"},{cssFamilyName:\"DM Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-7DW32RmYJpso5.woff2\",weight:\"500\"}]}];export const css=['.framer-4rpBl .framer-styles-preset-1kwm336:not(.rich-text-wrapper), .framer-4rpBl .framer-styles-preset-1kwm336.rich-text-wrapper p { --framer-font-family: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 500; --framer-letter-spacing: -0.02em; --framer-line-height: 1em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, #0f0f0f); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-4rpBl\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (72b52f5)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,getFonts,getFontsFromSharedStyle,getPropertyControls,Instance,RichText,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Download from\"https://framerusercontent.com/modules/kBkaj3LmBqcSU2IkUsBC/uaFLaKvU3aNJkwvPcVLe/Download.js\";import Download1 from\"https://framerusercontent.com/modules/Th7yItNlSWj2POy3mPQ0/6VWmNM3eqPviCEITfIsw/Bwzidm_eP.js\";import*as sharedStyle from\"https://framerusercontent.com/modules/dClKXvGAPVDLm2UwJ6Bc/vdHvzkpGNeNPmPL5kJgh/INY2J0Ntc.js\";const DownloadFonts=getFonts(Download);const DownloadControls=getPropertyControls(Download);const enabledGestures={xIsQ53xjG:{hover:true},xLbQIGDpW:{hover:true}};const cycleOrder=[\"xIsQ53xjG\",\"xLbQIGDpW\"];const serializationHash=\"framer-6xjgO\";const variantClassNames={xIsQ53xjG:\"framer-v-431bzy\",xLbQIGDpW:\"framer-v-1f1t2ny\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const Qsm6Yo60F=undefined;const w95ihB8ZV=undefined;const bJNIKvyQz=undefined;const gdKWmyUR8=undefined;const NGqNxUhp4=undefined;const XxFoC0Gnk=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Icon left\":\"xLbQIGDpW\",\"Icon right\":\"xIsQ53xjG\"};const Variants=motion.create(React.Fragment);const getProps=({file,fileSource,fileURL,height,icon,id,showIcon,text,width,...props})=>{return{...props,bJNIKvyQz:icon??props.bJNIKvyQz??Download1,gdKWmyUR8:fileSource??props.gdKWmyUR8??\"Upload\",NGqNxUhp4:fileURL??props.NGqNxUhp4,Qsm6Yo60F:text??props.Qsm6Yo60F??\"Text\",variant:humanReadableVariantMap[props.variant]??props.variant??\"xIsQ53xjG\",w95ihB8ZV:showIcon??props.w95ihB8ZV??true,XxFoC0Gnk:file??props.XxFoC0Gnk};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,Qsm6Yo60F,gdKWmyUR8,XxFoC0Gnk,NGqNxUhp4,w95ihB8ZV,bJNIKvyQz,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"xIsQ53xjG\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-431bzy\",className,classNames),\"data-framer-name\":\"Icon right\",layoutDependency:layoutDependency,layoutId:\"xIsQ53xjG\",ref:refBinding,style:{...style},...addPropertyOverrides({\"xIsQ53xjG-hover\":{\"data-framer-name\":undefined},\"xLbQIGDpW-hover\":{\"data-framer-name\":undefined},xLbQIGDpW:{\"data-framer-name\":\"Icon left\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1kwm336\",\"data-styles-preset\":\"INY2J0Ntc\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"Text\"})}),className:\"framer-1al117a\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"MkkuoiyB4\",style:{\"--extracted-r6o4lv\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",opacity:1},text:Qsm6Yo60F,variants:{\"xIsQ53xjG-hover\":{opacity:.7},\"xLbQIGDpW-hover\":{opacity:.7}},verticalAlignment:\"top\",withExternalLayout:true}),w95ihB8ZV!==false&&/*#__PURE__*/_jsx(Instance,{animated:true,className:\"framer-271ox6\",Component:bJNIKvyQz,layoutDependency:layoutDependency,layoutId:\"nCi14fPTf\",style:{\"--1ww558a\":2,\"--4rxgx6\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",opacity:1},variants:{\"xIsQ53xjG-hover\":{opacity:.7},\"xLbQIGDpW-hover\":{opacity:.7}}}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-nnif8h-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"h8MCmw60n-container\",nodeId:\"h8MCmw60n\",rendersWithMotion:true,scopeId:\"x2ZOZtrtQ\",style:{opacity:0},children:/*#__PURE__*/_jsx(Download,{fontControl:{},height:\"100%\",id:\"h8MCmw60n\",layoutId:\"h8MCmw60n\",srcFile:XxFoC0Gnk,srcType:gdKWmyUR8,srcURL:NGqNxUhp4,style:{height:\"100%\",width:\"100%\"},styleOptions:{backgroundColor:\"rgb(17, 17, 17)\",borderRadius:50,color:\"rgb(255, 255, 255)\",gap:5,padding:10,paddingBottom:10,paddingLeft:10,paddingPerSide:false,paddingRight:10,paddingTop:10},text:\"Download\",width:\"100%\"})})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-6xjgO.framer-1jnx8rp, .framer-6xjgO .framer-1jnx8rp { display: block; }\",\".framer-6xjgO.framer-431bzy { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-6xjgO .framer-1al117a { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-6xjgO .framer-271ox6 { flex: none; height: var(--framer-aspect-ratio-supported, 16px); position: relative; width: 16px; }\",\".framer-6xjgO .framer-nnif8h-container { bottom: 0px; flex: none; left: 0px; position: absolute; right: 0px; top: 0px; z-index: 1; }\",\".framer-6xjgO.framer-v-1f1t2ny .framer-1al117a { order: 1; }\",\".framer-6xjgO.framer-v-1f1t2ny .framer-271ox6 { order: 0; }\",\".framer-6xjgO.framer-v-1f1t2ny .framer-nnif8h-container { order: 2; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 16\n * @framerIntrinsicWidth 50\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"xLbQIGDpW\":{\"layout\":[\"auto\",\"auto\"]},\"uFMrFUkJ8\":{\"layout\":[\"auto\",\"auto\"]},\"p46vNVIvw\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"Qsm6Yo60F\":\"text\",\"gdKWmyUR8\":\"fileSource\",\"XxFoC0Gnk\":\"file\",\"NGqNxUhp4\":\"fileURL\",\"w95ihB8ZV\":\"showIcon\",\"bJNIKvyQz\":\"icon\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerVectorSets [\"E1vFg1A6wcWAGuFi9Hz1\"]\n */const Framerx2ZOZtrtQ=withCSS(Component,css,\"framer-6xjgO\");export default Framerx2ZOZtrtQ;Framerx2ZOZtrtQ.displayName=\"Download CV\";Framerx2ZOZtrtQ.defaultProps={height:16,width:50};addPropertyControls(Framerx2ZOZtrtQ,{variant:{options:[\"xIsQ53xjG\",\"xLbQIGDpW\"],optionTitles:[\"Icon right\",\"Icon left\"],title:\"Variant\",type:ControlType.Enum},Qsm6Yo60F:{defaultValue:\"Text\",displayTextArea:false,title:\"Text\",type:ControlType.String},onQsm6Yo60FChange:{changes:\"Qsm6Yo60F\",type:ControlType.ChangeHandler},gdKWmyUR8:DownloadControls?.[\"srcType\"]&&{...DownloadControls[\"srcType\"],defaultValue:\"Upload\",description:undefined,hidden:undefined,optional:undefined,title:\"File source\"},ongdKWmyUR8Change:{changes:\"gdKWmyUR8\",type:ControlType.ChangeHandler},XxFoC0Gnk:DownloadControls?.[\"srcFile\"]&&{...DownloadControls[\"srcFile\"],__defaultAssetReference:\"\",description:\"For example: .PDF\",hidden:undefined,title:\"File\"},onXxFoC0GnkChange:{changes:\"XxFoC0Gnk\",type:ControlType.ChangeHandler},NGqNxUhp4:{defaultValue:\"\",placeholder:\"../example.pdf\",title:\"File URL\",type:ControlType.String},onNGqNxUhp4Change:{changes:\"NGqNxUhp4\",type:ControlType.ChangeHandler},w95ihB8ZV:{defaultValue:true,title:\"Show icon\",type:ControlType.Boolean},onw95ihB8ZVChange:{changes:\"w95ihB8ZV\",type:ControlType.ChangeHandler},bJNIKvyQz:{defaultValue:{identifier:\"module:Th7yItNlSWj2POy3mPQ0/6VWmNM3eqPviCEITfIsw/Bwzidm_eP.js:default\",moduleId:\"Th7yItNlSWj2POy3mPQ0\"},setModuleId:\"E1vFg1A6wcWAGuFi9Hz1\",title:\"Icon\",type:ControlType.VectorSetItem}});addFonts(Framerx2ZOZtrtQ,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...DownloadFonts,...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerx2ZOZtrtQ\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"16\",\"framerIntrinsicWidth\":\"50\",\"framerVectorSets\":\"[\\\"E1vFg1A6wcWAGuFi9Hz1\\\"]\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"xLbQIGDpW\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"uFMrFUkJ8\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"p46vNVIvw\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"Qsm6Yo60F\\\":\\\"text\\\",\\\"gdKWmyUR8\\\":\\\"fileSource\\\",\\\"XxFoC0Gnk\\\":\\\"file\\\",\\\"NGqNxUhp4\\\":\\\"fileURL\\\",\\\"w95ihB8ZV\\\":\\\"showIcon\\\",\\\"bJNIKvyQz\\\":\\\"icon\\\"}\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./x2ZOZtrtQ.map","// Generated by Framer (010e00d)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;DM Sans-500\",\"GF;DM Sans-700\",\"GF;DM Sans-700italic\",\"GF;DM Sans-500italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"DM Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAkJxhS2f3ZGMZpg.woff2\",weight:\"500\"},{cssFamilyName:\"DM Sans\",source:\"google\",style:\"normal\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwARZthS2f3ZGMZpg.woff2\",weight:\"700\"},{cssFamilyName:\"DM Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat9uCm32RmYJpso5.woff2\",weight:\"700\"},{cssFamilyName:\"DM Sans\",source:\"google\",style:\"italic\",uiFamilyName:\"DM Sans\",url:\"https://fonts.gstatic.com/s/dmsans/v17/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-7DW32RmYJpso5.woff2\",weight:\"500\"}]}];export const css=['.framer-Imsxp .framer-styles-preset-diqeqn:not(.rich-text-wrapper), .framer-Imsxp .framer-styles-preset-diqeqn.rich-text-wrapper p { --framer-font-family: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 500; --framer-letter-spacing: -0.04em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, #6e6e6e); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 810px) { .framer-Imsxp .framer-styles-preset-diqeqn:not(.rich-text-wrapper), .framer-Imsxp .framer-styles-preset-diqeqn.rich-text-wrapper p { --framer-font-family: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 16px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 500; --framer-letter-spacing: -0.04em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, #6e6e6e); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 809px) and (min-width: 0px) { .framer-Imsxp .framer-styles-preset-diqeqn:not(.rich-text-wrapper), .framer-Imsxp .framer-styles-preset-diqeqn.rich-text-wrapper p { --framer-font-family: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-bold-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-family-italic: \"DM Sans\", \"DM Sans Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 15px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 500; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 500; --framer-letter-spacing: -0.04em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, #6e6e6e); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-Imsxp\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (b3492b4)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/nWXDfqkhNqGPhGb4I5On/y330Lw5AEk21y6V29ocP/VSbnu1hxE.js\";const serializationHash=\"framer-qJZJb\";const variantClassNames={qYwDfXXEj:\"framer-v-1ax8mo6\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const fe7vbdqB9=undefined;const IunNHP_7K=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,number,text,width,...props})=>{return{...props,fe7vbdqB9:number??props.fe7vbdqB9??\"10\",IunNHP_7K:text??props.IunNHP_7K??\"Text\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,fe7vbdqB9,IunNHP_7K,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"qYwDfXXEj\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1ax8mo6\",className,classNames),\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"qYwDfXXEj\",ref:refBinding,style:{...style},children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1uapoea\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"IMX_IvGGj\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-diqeqn\",\"data-styles-preset\":\"VSbnu1hxE\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110)))\"},children:\"10\"})}),className:\"framer-zu967r\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"n0jbyG2FG\",style:{\"--extracted-r6o4lv\":\"var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:fe7vbdqB9,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-bqy4xb\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"W0dCjNaX_\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-diqeqn\",\"data-styles-preset\":\"VSbnu1hxE\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"Stat\"})}),className:\"framer-p4i096\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"Q95RE5sCN\",style:{\"--extracted-r6o4lv\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:IunNHP_7K,verticalAlignment:\"top\",withExternalLayout:true})})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-18htftk\",\"data-framer-name\":\"Line\",layoutDependency:layoutDependency,layoutId:\"G8WAUlwN4\",style:{backgroundColor:\"var(--token-01ced30b-7c25-4fa7-9a76-b9ef693290ce, rgba(110, 110, 110, 0.4))\"}})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-qJZJb.framer-lhi4zw, .framer-qJZJb .framer-lhi4zw { display: block; }\",\".framer-qJZJb.framer-1ax8mo6 { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 549px; }\",\".framer-qJZJb .framer-1uapoea { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-qJZJb .framer-zu967r { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-qJZJb .framer-bqy4xb { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-qJZJb .framer-p4i096 { flex: 1 0 0px; height: auto; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-qJZJb .framer-18htftk { flex: none; height: 1px; overflow: hidden; position: relative; width: 100%; }\",...sharedStyle.css];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 31\n * @framerIntrinsicWidth 549\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"fe7vbdqB9\":\"number\",\"IunNHP_7K\":\"text\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framerur0mlyhQZ=withCSS(Component,css,\"framer-qJZJb\");export default Framerur0mlyhQZ;Framerur0mlyhQZ.displayName=\"Stats\";Framerur0mlyhQZ.defaultProps={height:31,width:549};addPropertyControls(Framerur0mlyhQZ,{fe7vbdqB9:{defaultValue:\"10\",displayTextArea:false,title:\"Number\",type:ControlType.String},onfe7vbdqB9Change:{changes:\"fe7vbdqB9\",type:ControlType.ChangeHandler},IunNHP_7K:{defaultValue:\"Text\",displayTextArea:false,title:\"Text\",type:ControlType.String},onIunNHP_7KChange:{changes:\"IunNHP_7K\",type:ControlType.ChangeHandler}});addFonts(Framerur0mlyhQZ,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"Framerur0mlyhQZ\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"31\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"549\",\"framerVariables\":\"{\\\"fe7vbdqB9\\\":\\\"number\\\",\\\"IunNHP_7K\\\":\\\"text\\\"}\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ur0mlyhQZ.map","// Generated by Framer (571faa6)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"FS;Switzer-semibold\",\"FS;Switzer-black\",\"FS;Switzer-black italic\",\"FS;Switzer-semibold italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Switzer\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Switzer\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/5SZVFDB7V52TI6ULVC6J3WQZQCIZVDV5/ODYPSTCUDMKSTYIPTV4CLQ7URIK7XYBJ/YS3VPNVO4B3TOJMEXDGFZQ4TLZGGSRZC.woff2\",weight:\"600\"},{cssFamilyName:\"Switzer\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Switzer\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/A54N3N7J5AY6YOPYJKLHF5VH7G7HSSUN/ERWIWIB434FMFHQFSSBD233EP3C62HOI/TOHQHMLIEIPKVF2JPM6SVKXFYGO5G2TJ.woff2\",weight:\"900\"},{cssFamilyName:\"Switzer\",source:\"fontshare\",style:\"italic\",uiFamilyName:\"Switzer\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/FQHNKZEV35SAMFWVFCFSORJXUNHNILL4/X4YCR4COAQTK5XB6JCDDBS7Q33AQWUAE/J7XVDQ2IJENINPUAVBDJNH3VEXVDSPQQ.woff2\",weight:\"900\"},{cssFamilyName:\"Switzer\",source:\"fontshare\",style:\"italic\",uiFamilyName:\"Switzer\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/2UC2M25RQ2XRSGCBJRQ2G5SNXCROECQB/QJT3T33NN372363FJY5EO5D63GKDKLDK/IOAFMDAPNX3S6OL2GYQQJ2FFJIRSVB3N.woff2\",weight:\"600\"}]}];export const css=['.framer-XC2SW .framer-styles-preset-455vy9:not(.rich-text-wrapper), .framer-XC2SW .framer-styles-preset-455vy9.rich-text-wrapper p { --framer-font-family: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-family-bold: \"Switzer\", sans-serif; --framer-font-family-bold-italic: \"Switzer\", sans-serif; --framer-font-family-italic: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 12px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 900; --framer-font-weight-bold-italic: 900; --framer-font-weight-italic: 600; --framer-letter-spacing: -0.01em; --framer-line-height: 112%; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, #000000); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }','@media (max-width: 1199px) and (min-width: 992px) { .framer-XC2SW .framer-styles-preset-455vy9:not(.rich-text-wrapper), .framer-XC2SW .framer-styles-preset-455vy9.rich-text-wrapper p { --framer-font-family: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-family-bold: \"Switzer\", sans-serif; --framer-font-family-bold-italic: \"Switzer\", sans-serif; --framer-font-family-italic: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 12px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 900; --framer-font-weight-bold-italic: 900; --framer-font-weight-italic: 600; --framer-letter-spacing: -0.01em; --framer-line-height: 112%; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, #000000); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 991px) and (min-width: 768px) { .framer-XC2SW .framer-styles-preset-455vy9:not(.rich-text-wrapper), .framer-XC2SW .framer-styles-preset-455vy9.rich-text-wrapper p { --framer-font-family: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-family-bold: \"Switzer\", sans-serif; --framer-font-family-bold-italic: \"Switzer\", sans-serif; --framer-font-family-italic: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 12px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 900; --framer-font-weight-bold-italic: 900; --framer-font-weight-italic: 600; --framer-letter-spacing: -0.01em; --framer-line-height: 112%; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, #000000); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }','@media (max-width: 767px) and (min-width: 0px) { .framer-XC2SW .framer-styles-preset-455vy9:not(.rich-text-wrapper), .framer-XC2SW .framer-styles-preset-455vy9.rich-text-wrapper p { --framer-font-family: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-family-bold: \"Switzer\", sans-serif; --framer-font-family-bold-italic: \"Switzer\", sans-serif; --framer-font-family-italic: \"Switzer\", \"Switzer Placeholder\", sans-serif; --framer-font-open-type-features: normal; --framer-font-size: 12px; --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 600; --framer-font-weight-bold: 900; --framer-font-weight-bold-italic: 900; --framer-font-weight-italic: 600; --framer-letter-spacing: -0.01em; --framer-line-height: 112%; --framer-paragraph-spacing: 20px; --framer-text-alignment: start; --framer-text-color: var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, #000000); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; } }'];export const className=\"framer-XC2SW\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (571faa6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 11.571 11.513 L 0 11.513 C 0.001 12.899 0.553 14.227 1.534 15.206 C 2.516 16.184 3.846 16.732 5.232 16.728 L 7.362 16.728 L 7.362 18.785 C 7.362 21.664 9.696 23.999 12.575 24 L 12.575 12.518 C 12.575 11.963 12.125 11.513 11.57 11.513 Z M 17.294 5.757 L 5.736 5.757 C 5.737 8.637 8.071 10.971 10.951 10.971 L 13.08 10.971 L 13.08 13.029 C 13.082 15.908 15.416 18.241 18.295 18.243 L 18.295 6.758 C 18.295 6.205 17.847 5.757 17.294 5.757 Z M 23.013 0 L 11.455 0 C 11.455 2.88 13.79 5.215 16.67 5.215 L 18.799 5.215 L 18.799 7.272 C 18.801 10.145 21.127 12.475 24 12.483 L 24 1.005 C 24.002 0.456 23.562 0.008 23.013 0 Z\" fill=\"var(--12auh5f, var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0)))\" height=\"23.999999534606935px\" id=\"IoqUt8NSb\" width=\"24.000008488071508px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({color,height,id,width,...props})=>{return{...props,zZ3sDiGC9:color??props.zZ3sDiGC9??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,zZ3sDiGC9,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-yuloA\",className),layoutId:layoutId,ref:ref,style:{\"--12auh5f\":zZ3sDiGC9,...style}});});const css=[`.framer-yuloA { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--12auh5f); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"zZ3sDiGC9\":\"color\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Jira\",\"color\":{\"type\":\"variable\",\"value\":\"12auh5f\"},\"set\":{\"localId\":\"vectorSet/zWcoFJGye\",\"id\":\"zWcoFJGye\",\"moduleId\":\"foi8KRYmiUbaVeWDl4ta\"}}\n */const Icon=withCSS(Component,css,\"framer-yuloA\");Icon.displayName=\"Jira\";export default Icon;addPropertyControls(Icon,{zZ3sDiGC9:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",hidden:false,title:\"Color\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerVariables\":\"{\\\"zZ3sDiGC9\\\":\\\"color\\\"}\",\"framerVector\":\"{\\\"name\\\":\\\"Jira\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"12auh5f\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/zWcoFJGye\\\",\\\"id\\\":\\\"zWcoFJGye\\\",\\\"moduleId\\\":\\\"foi8KRYmiUbaVeWDl4ta\\\"}}\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"24\",\"framerIntrinsicHeight\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (293632e)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,Instance,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/2z1LAayU89TtN34qcAvL/WipFcG3Y6Git8QHrTVIe/xYEC_wF3E.js\";import Jira from\"https://framerusercontent.com/modules/lNH0tDOBde37KdhXfvGY/ybzRjw5z6zZdN4cfalxR/FTchGdtjO.js\";const enabledGestures={pfYwMgBao:{hover:true}};const serializationHash=\"framer-2Tsqq\";const variantClassNames={pfYwMgBao:\"framer-v-1d3vdwe\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const nxpovt3KQ=undefined;const QL4h8C77w=undefined;const lSX_zlJoh=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const transformTemplate1=(_,t)=>`translateX(-50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,logo,logoColor,tooltipText,width,...props})=>{return{...props,lSX_zlJoh:tooltipText??props.lSX_zlJoh??\"Figma\",nxpovt3KQ:logoColor??props.nxpovt3KQ??\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:logo??props.QL4h8C77w??Jira};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,lSX_zlJoh,QL4h8C77w,nxpovt3KQ,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"pfYwMgBao\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1d3vdwe\",className,classNames),\"data-framer-name\":\"Tech Stack Logo\",layoutDependency:layoutDependency,layoutId:\"pfYwMgBao\",ref:refBinding,style:{...style},...addPropertyOverrides({\"pfYwMgBao-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-v93lqn\",\"data-border\":true,\"data-framer-name\":\"Tool Logo\",layoutDependency:layoutDependency,layoutId:\"t8fOh9AxU\",style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-e3a90888-763b-420f-bb27-f2520e07d9b1, rgb(222, 222, 222))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backgroundColor:\"var(--token-33c8dbd0-eb94-4e90-8099-e7a3fee4ad2f, rgb(255, 255, 255))\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,boxShadow:\"0px 0.5971439051427296px 0.5971439051427296px -0.9375px rgba(0, 0, 0, 0.07), 0px 1.8108796073283884px 1.8108796073283884px -1.875px rgba(0, 0, 0, 0.07), 0px 4.786990141113346px 4.786990141113346px -2.8125px rgba(0, 0, 0, 0.06), 0px 15px 15px -3.75px rgba(0, 0, 0, 0.03)\"},children:/*#__PURE__*/_jsx(Instance,{animated:true,className:\"framer-4x0nzq\",Component:QL4h8C77w,\"data-framer-name\":\"Jira\",layoutDependency:layoutDependency,layoutId:\"rpo0HjlnP\",style:{\"--12auh5f\":nxpovt3KQ}})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-1xvo7ne\",\"data-framer-name\":\"Tooltip\",layoutDependency:layoutDependency,layoutId:\"TqSk8psow\",style:{backgroundColor:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",borderBottomLeftRadius:1e3,borderBottomRightRadius:1e3,borderTopLeftRadius:1e3,borderTopRightRadius:1e3,opacity:0},transformTemplate:transformTemplate1,variants:{\"pfYwMgBao-hover\":{opacity:1}},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-455vy9\",\"data-styles-preset\":\"xYEC_wF3E\",dir:\"auto\",style:{\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-33c8dbd0-eb94-4e90-8099-e7a3fee4ad2f, rgb(255, 255, 255)))\"},children:\"Figma\"})}),className:\"framer-9jnlh4\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"YIU185PLw\",style:{\"--extracted-r6o4lv\":\"var(--token-33c8dbd0-eb94-4e90-8099-e7a3fee4ad2f, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:lSX_zlJoh,verticalAlignment:\"top\",withExternalLayout:true})})]})})})});});const css=[\"@supports (aspect-ratio: 1) { body { --framer-aspect-ratio-supported: auto; } }\",\".framer-2Tsqq.framer-14pk0ym, .framer-2Tsqq .framer-14pk0ym { display: block; }\",\".framer-2Tsqq.framer-1d3vdwe { align-content: center; align-items: center; cursor: default; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-2Tsqq .framer-v93lqn { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: visible; padding: 16px; position: relative; width: min-content; z-index: 2; }\",\".framer-2Tsqq .framer-4x0nzq { flex: none; height: var(--framer-aspect-ratio-supported, 24px); position: relative; width: 24px; }\",\".framer-2Tsqq .framer-1xvo7ne { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 32px; height: min-content; justify-content: center; left: 50%; overflow: hidden; padding: 4px 8px 4px 8px; pointer-events: none; position: absolute; top: -32px; width: min-content; will-change: var(--framer-will-change-override, transform); z-index: 1; }\",\".framer-2Tsqq .framer-9jnlh4 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-2Tsqq.framer-v-1d3vdwe.hover .framer-9jnlh4 { -webkit-user-select: none; user-select: none; }\",...sharedStyle.css,'.framer-2Tsqq[data-border=\"true\"]::after, .framer-2Tsqq [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 56\n * @framerIntrinsicWidth 56\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"HOuqDfPlj\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"lSX_zlJoh\":\"tooltipText\",\"QL4h8C77w\":\"logo\",\"nxpovt3KQ\":\"logoColor\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerVectorSets [\"foi8KRYmiUbaVeWDl4ta\"]\n */const FramerubaGHlmVl=withCSS(Component,css,\"framer-2Tsqq\");export default FramerubaGHlmVl;FramerubaGHlmVl.displayName=\"Tech Stack Logo\";FramerubaGHlmVl.defaultProps={height:56,width:56};addPropertyControls(FramerubaGHlmVl,{lSX_zlJoh:{defaultValue:\"Figma\",description:\"\",displayTextArea:false,placeholder:\"\",title:\"Tooltip Text\",type:ControlType.String},QL4h8C77w:{defaultValue:{identifier:\"local-module:vector/FTchGdtjO:default\",moduleId:\"lNH0tDOBde37KdhXfvGY\"},description:\"You can add your own icons by uploading svgs to this vector set located in the assets panel under vectors > project > toolstack icons\",setModuleId:\"foi8KRYmiUbaVeWDl4ta\",title:\"Logo\",type:ControlType.VectorSetItem},nxpovt3KQ:{defaultValue:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",title:\"Logo color\",type:ControlType.Color}});addFonts(FramerubaGHlmVl,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerubaGHlmVl\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicHeight\":\"56\",\"framerVectorSets\":\"[\\\"foi8KRYmiUbaVeWDl4ta\\\"]\",\"framerContractVersion\":\"1\",\"framerVariables\":\"{\\\"lSX_zlJoh\\\":\\\"tooltipText\\\",\\\"QL4h8C77w\\\":\\\"logo\\\",\\\"nxpovt3KQ\\\":\\\"logoColor\\\"}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"HOuqDfPlj\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"56\",\"framerColorSyntax\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ubaGHlmVl.map","// Generated by Framer (f0eed09)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"HwWPyBbKP\",\"hfY7GkLXF\"];const serializationHash=\"framer-Qoddk\";const variantClassNames={hfY7GkLXF:\"framer-v-8ohx78\",HwWPyBbKP:\"framer-v-1bpruxw\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const OeqpkXoAg=undefined;const kgh8PBX02=undefined;const CG4mKcFej=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Desktop:\"HwWPyBbKP\",Phone:\"hfY7GkLXF\"};const Variants=motion.create(React.Fragment);const getProps=({award,details,height,id,width,year,...props})=>{return{...props,CG4mKcFej:year??props.CG4mKcFej??\"2026\",kgh8PBX02:details??props.kgh8PBX02??\"Details\",OeqpkXoAg:award??props.OeqpkXoAg??\"Award\",variant:humanReadableVariantMap[props.variant]??props.variant??\"HwWPyBbKP\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,OeqpkXoAg,kgh8PBX02,CG4mKcFej,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"HwWPyBbKP\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1bpruxw\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"HwWPyBbKP\",ref:refBinding,style:{...style},...addPropertyOverrides({hfY7GkLXF:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-jr4fzu\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"x8hhyp979\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1ius65s\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"aHeqA8bZE\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h3,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-size\":\"18px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--extracted-a0htzi, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"Award\"})}),className:\"framer-nkoc2g\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"HKl87OtGw\",style:{\"--extracted-a0htzi\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:OeqpkXoAg,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110)))\"},children:\"Details\"})}),className:\"framer-ep9rpq\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"f6gi97zrv\",style:{\"--extracted-r6o4lv\":\"var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:kgh8PBX02,verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110)))\"},children:\"2026\"})}),className:\"framer-og8xce\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"FRp7WaJ7I\",style:{\"--extracted-r6o4lv\":\"var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:CG4mKcFej,verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-3ndkwh\",\"data-framer-name\":\"Line\",layoutDependency:layoutDependency,layoutId:\"umbChlcfB\",style:{backgroundColor:\"var(--token-01ced30b-7c25-4fa7-9a76-b9ef693290ce, rgba(110, 110, 110, 0.4))\"}})]})})})});});const css=[\".framer-Qoddk.framer-1pntepu, .framer-Qoddk .framer-1pntepu { display: block; }\",\".framer-Qoddk.framer-1bpruxw { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 466px; }\",\".framer-Qoddk .framer-jr4fzu { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-Qoddk .framer-1ius65s { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-Qoddk .framer-nkoc2g, .framer-Qoddk .framer-ep9rpq { flex: 1 0 0px; height: auto; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-Qoddk .framer-og8xce { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-Qoddk .framer-3ndkwh { flex: none; height: 1px; overflow: hidden; position: relative; width: 100%; }\",\".framer-Qoddk.framer-v-8ohx78.framer-1bpruxw { width: 360px; }\",\".framer-Qoddk.framer-v-8ohx78 .framer-1ius65s { align-content: flex-start; align-items: flex-start; flex-direction: column; gap: 4px; }\",\".framer-Qoddk.framer-v-8ohx78 .framer-nkoc2g, .framer-Qoddk.framer-v-8ohx78 .framer-ep9rpq { flex: none; width: 100%; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 36.5\n * @framerIntrinsicWidth 466\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"hfY7GkLXF\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"OeqpkXoAg\":\"award\",\"kgh8PBX02\":\"details\",\"CG4mKcFej\":\"year\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerGkACE400V=withCSS(Component,css,\"framer-Qoddk\");export default FramerGkACE400V;FramerGkACE400V.displayName=\"Awards\";FramerGkACE400V.defaultProps={height:36.5,width:466};addPropertyControls(FramerGkACE400V,{variant:{options:[\"HwWPyBbKP\",\"hfY7GkLXF\"],optionTitles:[\"Desktop\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},OeqpkXoAg:{defaultValue:\"Award\",displayTextArea:false,title:\"Award\",type:ControlType.String},onOeqpkXoAgChange:{changes:\"OeqpkXoAg\",type:ControlType.ChangeHandler},kgh8PBX02:{defaultValue:\"Details\",displayTextArea:false,title:\"Details\",type:ControlType.String},onkgh8PBX02Change:{changes:\"kgh8PBX02\",type:ControlType.ChangeHandler},CG4mKcFej:{defaultValue:\"2026\",displayTextArea:false,title:\"Year\",type:ControlType.String},onCG4mKcFejChange:{changes:\"CG4mKcFej\",type:ControlType.ChangeHandler}});addFonts(FramerGkACE400V,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v6/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerGkACE400V\",\"slots\":[],\"annotations\":{\"framerVariables\":\"{\\\"OeqpkXoAg\\\":\\\"award\\\",\\\"kgh8PBX02\\\":\\\"details\\\",\\\"CG4mKcFej\\\":\\\"year\\\"}\",\"framerIntrinsicWidth\":\"466\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicHeight\":\"36.5\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"hfY7GkLXF\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GkACE400V.map","// Generated by Framer (f0eed09)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"s3haqedfZ\",\"mxRKWaI7n\",\"izRxWLP7Y\"];const serializationHash=\"framer-PMZrl\";const variantClassNames={izRxWLP7Y:\"framer-v-12m7la4\",mxRKWaI7n:\"framer-v-183tjo9\",s3haqedfZ:\"framer-v-1u9em85\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const HrnCRzOJ5=undefined;const CbQGHZBY9=undefined;const pl3zyJ4WM=undefined;const XMhdnmKhS=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Desktop:\"s3haqedfZ\",Phone:\"izRxWLP7Y\",Tablet:\"mxRKWaI7n\"};const Variants=motion.create(React.Fragment);const getProps=({company,date,description,height,id,position,width,...props})=>{return{...props,CbQGHZBY9:company??props.CbQGHZBY9??\"Company\",HrnCRzOJ5:position??props.HrnCRzOJ5??\"Position\",pl3zyJ4WM:description??props.pl3zyJ4WM??\"Description\",variant:humanReadableVariantMap[props.variant]??props.variant??\"s3haqedfZ\",XMhdnmKhS:date??props.XMhdnmKhS??\"Date\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,HrnCRzOJ5,CbQGHZBY9,pl3zyJ4WM,XMhdnmKhS,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"s3haqedfZ\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-1u9em85\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"s3haqedfZ\",ref:refBinding,style:{...style},...addPropertyOverrides({izRxWLP7Y:{\"data-framer-name\":\"Phone\"},mxRKWaI7n:{\"data-framer-name\":\"Tablet\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1vajh5\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"rxirM1mkN\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h3,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-size\":\"24px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.05em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-color\":\"var(--extracted-a0htzi, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"Position\"})}),className:\"framer-1x74fyx\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"NgN8Q3Ovn\",style:{\"--extracted-a0htzi\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:HrnCRzOJ5,verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110)))\"},children:\"Company\"})}),className:\"framer-anpz8d\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"kGz2hBhNS\",style:{\"--extracted-r6o4lv\":\"var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:CbQGHZBY9,verticalAlignment:\"top\",withExternalLayout:true})]}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-tcgbu9\",\"data-framer-name\":\"Line\",layoutDependency:layoutDependency,layoutId:\"fDRiHT2qw\",style:{backgroundColor:\"var(--token-01ced30b-7c25-4fa7-9a76-b9ef693290ce, rgba(110, 110, 110, 0.4))\"}}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-672il5\",\"data-framer-name\":\"Details\",layoutDependency:layoutDependency,layoutId:\"rqjqUX0Ur\",children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-1o4xlca\",\"data-framer-name\":\"Description\",layoutDependency:layoutDependency,layoutId:\"sM0neDjam\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110)))\"},children:\"Description\"})}),className:\"framer-1nmkpvj\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"pCTha7Y_r\",style:{\"--extracted-r6o4lv\":\"var(--token-7e3b2fa3-c4ce-4b0d-9b02-f2a84e7c343c, rgb(110, 110, 110))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:pl3zyJ4WM,verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"Date\"})}),className:\"framer-ctpd58\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"E4ZzZP_II\",style:{\"--extracted-r6o4lv\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:XMhdnmKhS,verticalAlignment:\"top\",withExternalLayout:true})]})]})})})});});const css=[\".framer-PMZrl.framer-1chl06c, .framer-PMZrl .framer-1chl06c { display: block; }\",\".framer-PMZrl.framer-1u9em85 { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 16px 0px 0px 0px; position: relative; width: 1152px; }\",\".framer-PMZrl .framer-1vajh5 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-PMZrl .framer-1x74fyx, .framer-PMZrl .framer-anpz8d { flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-PMZrl .framer-tcgbu9 { flex: none; height: 1px; left: 0px; overflow: var(--overflow-clip-fallback, clip); position: absolute; right: 0px; top: 0px; z-index: 1; }\",\".framer-PMZrl .framer-672il5 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-PMZrl .framer-1o4xlca { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-PMZrl .framer-1nmkpvj { --framer-text-wrap: balance; flex: 1 0 0px; height: auto; max-width: 500px; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-PMZrl .framer-ctpd58 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-PMZrl.framer-v-183tjo9.framer-1u9em85 { width: 810px; }\",\".framer-PMZrl.framer-v-183tjo9 .framer-672il5 { flex-direction: column; gap: 4px; }\",\".framer-PMZrl.framer-v-183tjo9 .framer-1o4xlca, .framer-PMZrl.framer-v-12m7la4 .framer-1o4xlca { flex: none; order: 1; width: 100%; }\",\".framer-PMZrl.framer-v-183tjo9 .framer-ctpd58, .framer-PMZrl.framer-v-12m7la4 .framer-ctpd58 { order: 0; }\",\".framer-PMZrl.framer-v-12m7la4.framer-1u9em85 { flex-direction: column; gap: 31px; width: 360px; }\",\".framer-PMZrl.framer-v-12m7la4 .framer-1vajh5 { flex: none; width: 100%; }\",\".framer-PMZrl.framer-v-12m7la4 .framer-672il5 { flex: none; flex-direction: column; gap: 4px; width: 100%; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 71\n * @framerIntrinsicWidth 1152\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"mxRKWaI7n\":{\"layout\":[\"fixed\",\"auto\"]},\"izRxWLP7Y\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerVariables {\"HrnCRzOJ5\":\"position\",\"CbQGHZBY9\":\"company\",\"pl3zyJ4WM\":\"description\",\"XMhdnmKhS\":\"date\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerZLKkjUR7r=withCSS(Component,css,\"framer-PMZrl\");export default FramerZLKkjUR7r;FramerZLKkjUR7r.displayName=\"Experience\";FramerZLKkjUR7r.defaultProps={height:71,width:1152};addPropertyControls(FramerZLKkjUR7r,{variant:{options:[\"s3haqedfZ\",\"mxRKWaI7n\",\"izRxWLP7Y\"],optionTitles:[\"Desktop\",\"Tablet\",\"Phone\"],title:\"Variant\",type:ControlType.Enum},HrnCRzOJ5:{defaultValue:\"Position\",displayTextArea:false,title:\"Position\",type:ControlType.String},onHrnCRzOJ5Change:{changes:\"HrnCRzOJ5\",type:ControlType.ChangeHandler},CbQGHZBY9:{defaultValue:\"Company\",displayTextArea:false,title:\"Company\",type:ControlType.String},onCbQGHZBY9Change:{changes:\"CbQGHZBY9\",type:ControlType.ChangeHandler},pl3zyJ4WM:{defaultValue:\"Description\",displayTextArea:true,title:\"Description\",type:ControlType.String},onpl3zyJ4WMChange:{changes:\"pl3zyJ4WM\",type:ControlType.ChangeHandler},XMhdnmKhS:{defaultValue:\"Date\",displayTextArea:false,title:\"Date\",type:ControlType.String},onXMhdnmKhSChange:{changes:\"XMhdnmKhS\",type:ControlType.ChangeHandler}});addFonts(FramerZLKkjUR7r,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"},{cssFamilyName:\"Geist Mono\",source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v6/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerZLKkjUR7r\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"mxRKWaI7n\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"izRxWLP7Y\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"HrnCRzOJ5\\\":\\\"position\\\",\\\"CbQGHZBY9\\\":\\\"company\\\",\\\"pl3zyJ4WM\\\":\\\"description\\\",\\\"XMhdnmKhS\\\":\\\"date\\\"}\",\"framerColorSyntax\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicHeight\":\"71\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"1152\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ZLKkjUR7r.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,forwardLoader,getFonts,RichText,runTasksWithYield,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS,withFX,withOptimizedAppearEffect}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Adobeillustrator from\"https://framerusercontent.com/modules/0xySQH8fvGGUCaNup3eY/BFB7ldZF3xBqPrqDKAxi/F7u8USv4w.js\";import Lanyard from\"https://framerusercontent.com/modules/2yubH7XCj0lNQM2KgO3a/Hd0fNQu5yff7kiB1tMm3/Lanyard_Prod.js\";import Blender from\"https://framerusercontent.com/modules/aJE25NDq7NHMuFlSd6AB/AM3XIc5TYFsevDOk2FcW/EX6zeZSFI.js\";import Rive from\"https://framerusercontent.com/modules/aumOm9OYhiH8tUFuHCog/04Mox71s2rKjktnvgVoe/TaUWSD3i5.js\";import Figma from\"https://framerusercontent.com/modules/bYqisRDjItwaY0bOdnh8/cysfpX1xyKw7XQRV2Dsl/Y_T9Czc2t.js\";import Claude from\"https://framerusercontent.com/modules/DdnswhdKoWukYYvP2SZq/r4zLjSIlACWbp3JTLcoe/u8F4E5kMi.js\";import Webflow from\"https://framerusercontent.com/modules/HWllFAzoknPMZ1Rm6jj6/fo4nSJxuFXsrABM33SP6/zTzsnIuYv.js\";import Framer from\"https://framerusercontent.com/modules/k0CLIfSQAWH8ACagDu6x/Y6diechySrEnN6WHtiXy/YC_MuDD_8.js\";import Adobephotoshop from\"https://framerusercontent.com/modules/K0twZOZJKirwshgvz0b4/WK3oo0fKHvO2YSzWHFyq/pGOHj20yw.js\";import DownloadCV from\"https://framerusercontent.com/modules/qhYWuBkZxgtZo70o4njv/c8d55kAmhNDh7fQb0U6g/x2ZOZtrtQ.js\";import Stats from\"https://framerusercontent.com/modules/T4nyMfbF2DkySElHoVKf/f69Qvbkc7TvOHPdaV9IK/ur0mlyhQZ.js\";import Download from\"https://framerusercontent.com/modules/Th7yItNlSWj2POy3mPQ0/6VWmNM3eqPviCEITfIsw/Bwzidm_eP.js\";import TechStackLogo from\"https://framerusercontent.com/modules/xObscYEc2Q3bK7tUfR0V/aeTebhOmX3iKMZBrlNlP/ubaGHlmVl.js\";import Awards from\"https://framerusercontent.com/modules/tuawbfIPL0vBiySeln5T/SzylwYGW4Jv5IROC388y/GkACE400V.js\";import Experience from\"https://framerusercontent.com/modules/LLuL0ZLQhwHqeXxzZcon/Fz0P04arsrtxydLjnNTK/ZLKkjUR7r.js\";const MotionDivWithFX=withFX(motion.div);const StatsFonts=getFonts(Stats);const DownloadCVFonts=getFonts(DownloadCV);const ExperienceFonts=getFonts(Experience);const SmartComponentScopedContainerWithFX=withFX(SmartComponentScopedContainer);const MotionDivWithFXWithOptimizedAppearEffect=withOptimizedAppearEffect(withFX(motion.div));const TechStackLogoFonts=getFonts(TechStackLogo);const AwardsFonts=getFonts(Awards);const LanyardFonts=getFonts(Lanyard);const serializationHash=\"framer-orQoV\";const variantClassNames={Kv7slpTtV:\"framer-v-gug44r\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const transition2={bounce:.1,delay:0,duration:1.5,type:\"spring\"};const animation1={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const transition3={bounce:.1,delay:.2,duration:1.5,type:\"spring\"};const animation2={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition3,x:0,y:0};const transition4={bounce:.1,delay:.1,duration:1.5,type:\"spring\"};const animation3={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition4,x:0,y:0};const transition5={bounce:.1,delay:.3,duration:1.5,type:\"spring\"};const animation4={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition5,x:0,y:0};const transition6={bounce:.1,delay:.4,duration:1.5,type:\"spring\"};const animation5={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition6,x:0,y:0};const animation6={opacity:.001,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:0};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const animation7={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-5,y:0};const transition7={delay:0,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const animation8={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-10,y:0};const transition8={delay:.1,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const animation9={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-15,y:0};const transition9={delay:.2,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const animation10={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-20,y:0};const transition10={delay:.3,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const animation11={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-25,y:0};const transition11={delay:.4,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const animation12={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-30,y:0};const transition12={delay:.5,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const animation13={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:-35,y:0};const transition13={delay:.6,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const transition14={delay:.7,duration:.6,ease:[.4,0,.2,1],type:\"tween\"};const addImageAlt=(image,alt)=>{if(!image||typeof image!==\"object\"){return;}return{...image,alt};};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"Kv7slpTtV\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-gug44r\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"Kv7slpTtV\",ref:refBinding,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"rgba(0, 0, 0, 0.12)\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backgroundColor:\"rgb(246, 246, 246)\",boxShadow:\"0px 0px 20px 0px rgba(0, 0, 0, 0.15), 0px 25px 30px 0px rgba(0, 0, 0, 0.35)\",...style},children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1387hjf\",\"data-framer-name\":\"Main\",layoutDependency:layoutDependency,layoutId:\"HnSWGB3Ij\",children:[/*#__PURE__*/_jsx(motion.section,{className:\"framer-iygwxz\",\"data-framer-name\":\"Hero\",layoutDependency:layoutDependency,layoutId:\"v83QPfbpb\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-zg9fi0\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"zFdyYJKv2\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-j29q2j\",\"data-framer-name\":\"Left\",layoutDependency:layoutDependency,layoutId:\"t24Z7pmwB\",children:[/*#__PURE__*/_jsx(MotionDivWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-q6rv7l\",\"data-framer-name\":\"Headline\",layoutDependency:layoutDependency,layoutId:\"i3331u6Xl\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h1,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBCb2xk\",\"--framer-font-family\":'\"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 3)\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"1.15em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-gdpscs, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"About Me\"})}),className:\"framer-113w60d\",fonts:[\"CUSTOMV2;PP Neue Montreal Bold\"],layoutDependency:layoutDependency,layoutId:\"gVNtSY6O4\",style:{\"--extracted-gdpscs\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-jm8je1\",\"data-framer-name\":\"Left\",layoutDependency:layoutDependency,layoutId:\"aUL7vUtn6\",children:[/*#__PURE__*/_jsx(MotionDivWithFX,{__framer__animate:{transition:transition3},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation2,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-14fae1m\",\"data-framer-name\":\"Description\",layoutDependency:layoutDependency,layoutId:\"vcooBwjgs\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"I'm Jo\\xe3o, a senior product and web designer based in Porto. I've been designing for fifteen years. Eleven of those at IKEA, working across brand, campaigns and digital for the Portuguese market. After that I led UI/UX, marketing and web design at MultichainZ, where I owned the brand, the website and the app, and worked directly with the dev team to get it built.\"}),/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-2gxw0f, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:/*#__PURE__*/_jsx(motion.br,{className:\"trailing-break\"})}),/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby03MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.02em\",\"--framer-line-height\":\"1.3em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-1iakedh, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Today I work end to end on product and web design, from structure and interface through to the built site, working alongside developers rather than handing off to them.\"})]}),className:\"framer-aez6mi\",fonts:[\"GF;Geist Mono-500\",\"GF;Geist Mono-700\"],layoutDependency:layoutDependency,layoutId:\"ufTZlBqhn\",style:{\"--extracted-1iakedh\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--extracted-2gxw0f\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(MotionDivWithFX,{__framer__animate:{transition:transition4},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation3,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-1n33laf\",\"data-framer-name\":\"Stats\",layoutDependency:layoutDependency,layoutId:\"mTbrmRVpS\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:31,width:`calc(max(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px, 320px) - 24px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-o7tngv-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"n9YUQyqJ4-container\",nodeId:\"n9YUQyqJ4\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Stats,{fe7vbdqB9:\"15+\",height:\"100%\",id:\"n9YUQyqJ4\",IunNHP_7K:\"Years designing\",layoutId:\"n9YUQyqJ4\",style:{width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:31,width:`calc(max(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px, 320px) - 24px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-uepbsb-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"ZJ0bDhQYX-container\",nodeId:\"ZJ0bDhQYX\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Stats,{fe7vbdqB9:\"70+\",height:\"100%\",id:\"ZJ0bDhQYX\",IunNHP_7K:\"Projects delivered\",layoutId:\"ZJ0bDhQYX\",style:{width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:31,width:`calc(max(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px, 320px) - 24px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1gy796v-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"jN1XklDZS-container\",nodeId:\"jN1XklDZS\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Stats,{fe7vbdqB9:\"15+\",height:\"100%\",id:\"jN1XklDZS\",IunNHP_7K:\"Countries and regions\",layoutId:\"jN1XklDZS\",style:{width:\"100%\"},width:\"100%\"})})})]})]})]}),/*#__PURE__*/_jsx(MotionDivWithFX,{__framer__animate:{transition:transition5},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation4,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-udam5b\",\"data-framer-name\":\"Right\",layoutDependency:layoutDependency,layoutId:\"rWbS0igpM\"})]})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-jvokpb\",\"data-framer-name\":\"Experience\",layoutDependency:layoutDependency,layoutId:\"FjAw1mETW\",children:/*#__PURE__*/_jsxs(MotionDivWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation5,className:\"framer-mo9t88\",\"data-framer-appear-id\":\"mo9t88\",\"data-framer-name\":\"Container\",initial:animation6,layoutDependency:layoutDependency,layoutId:\"NjdJIlIwT\",optimized:true,children:[/*#__PURE__*/_jsxs(MotionDivWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-a6eblz\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"Ozyn2nbut\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h2,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-size\":\"28px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-text-color\":\"var(--extracted-1of0zx5, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"(Work Experience)\"})}),className:\"framer-1kv5ity\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"oCJHYszs_\",style:{\"--extracted-1of0zx5\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1i9pz9j\",\"data-framer-name\":\"Download button\",layoutDependency:layoutDependency,layoutId:\"zb1Hg9M15\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-size\":\"14px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-line-height\":\"1.4em\",\"--framer-text-alignment\":\"left\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"\\xa9 '14 - 2026\"})}),className:\"framer-19q4rs8\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"RQw5dMion\",style:{\"--extracted-r6o4lv\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:16,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-uztgcc-container\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Pt8HlTS6z-container\",nodeId:\"Pt8HlTS6z\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(DownloadCV,{bJNIKvyQz:Download,gdKWmyUR8:\"Upload\",height:\"100%\",id:\"Pt8HlTS6z\",layoutId:\"Pt8HlTS6z\",NGqNxUhp4:\"\",Qsm6Yo60F:\"Download CV\",variant:matchVariant(\"xIsQ53xjG\"),w95ihB8ZV:true,width:\"100%\",XxFoC0Gnk:\"https://framerusercontent.com/assets/01xsYMhOVtumGYdpe7c61HxNCPs.jpg\"})})})]})]}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-retog5\",\"data-framer-name\":\"Content\",layoutDependency:layoutDependency,layoutId:\"gucS2Bgfb\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:71,width:`calc(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-gvb0l3-container\",layoutDependency:layoutDependency,layoutId:\"B5WTAVrV2-container\",nodeId:\"B5WTAVrV2\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Experience,{CbQGHZBY9:\"Prism\\xe1tico\",height:\"100%\",HrnCRzOJ5:\"Senior Web & UI/UX Designer\",id:\"B5WTAVrV2\",layoutId:\"B5WTAVrV2\",pl3zyJ4WM:\"Product and web design for agency clients.\",style:{width:\"100%\"},variant:matchVariant(\"s3haqedfZ\"),width:\"100%\",XMhdnmKhS:\"Jan 2025 - 2026\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:71,width:`calc(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-3i80ek-container\",layoutDependency:layoutDependency,layoutId:\"qiS1iwuAJ-container\",nodeId:\"qiS1iwuAJ\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Experience,{CbQGHZBY9:\"MultichainZ\",height:\"100%\",HrnCRzOJ5:\"Head of UI/UX, Marketing & Web Design\",id:\"qiS1iwuAJ\",layoutId:\"qiS1iwuAJ\",pl3zyJ4WM:\"Led UI/UX, marketing and web design.\",style:{width:\"100%\"},variant:matchVariant(\"s3haqedfZ\"),width:\"100%\",XMhdnmKhS:\"Jan 2022 - Dec 2024\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:71,width:`calc(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-i3n1wl-container\",layoutDependency:layoutDependency,layoutId:\"HbZP2bq16-container\",nodeId:\"HbZP2bq16\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Experience,{CbQGHZBY9:\"Freelance\",height:\"100%\",HrnCRzOJ5:\"Graphic & Communication Designer\",id:\"HbZP2bq16\",layoutId:\"HbZP2bq16\",pl3zyJ4WM:\"Brand identity and communication design for independent clients.\",style:{width:\"100%\"},variant:matchVariant(\"s3haqedfZ\"),width:\"100%\",XMhdnmKhS:\"Aug 2020 - Dec 2021\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:71,width:`calc(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-v4uwnx-container\",layoutDependency:layoutDependency,layoutId:\"EKCO3Zign-container\",nodeId:\"EKCO3Zign\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Experience,{CbQGHZBY9:\"IKEA\",height:\"100%\",HrnCRzOJ5:\"Graphic Designer\",id:\"EKCO3Zign\",layoutId:\"EKCO3Zign\",pl3zyJ4WM:\"Retail communication, campaigns and in-store graphics.\",style:{width:\"100%\"},variant:matchVariant(\"s3haqedfZ\"),width:\"100%\",XMhdnmKhS:\"Aug 2015 - Aug 2020\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:71,width:`calc(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-97q0q5-container\",layoutDependency:layoutDependency,layoutId:\"yTGK8h4qB-container\",nodeId:\"yTGK8h4qB\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Experience,{CbQGHZBY9:\"IKEA\",height:\"100%\",HrnCRzOJ5:\"Marketing & Digital Communication\",id:\"yTGK8h4qB\",layoutId:\"yTGK8h4qB\",pl3zyJ4WM:\"Digital marketing and communication for IKEA Portugal.\",style:{width:\"100%\"},variant:matchVariant(\"s3haqedfZ\"),width:\"100%\",XMhdnmKhS:\"Jan 2014 - Jul 2015\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:71,width:`calc(min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 48px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-1e4p3em-container\",layoutDependency:layoutDependency,layoutId:\"j6mQiMxme-container\",nodeId:\"j6mQiMxme\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Experience,{CbQGHZBY9:\"IKEA\",height:\"100%\",HrnCRzOJ5:\"Sales Co-worker\",id:\"j6mQiMxme\",layoutId:\"j6mQiMxme\",pl3zyJ4WM:\"Customer-facing sales and retail operations.\",style:{width:\"100%\"},variant:matchVariant(\"s3haqedfZ\"),width:\"100%\",XMhdnmKhS:\"Jul 2009 - Jan 2014\"})})})]})]})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-5ns6ib\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"TNXDgj0dE\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-o6t34e\",\"data-framer-name\":\"Techstack\",layoutDependency:layoutDependency,layoutId:\"jzLTlZm7x\",children:[/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-size\":\"28px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"(Tech Stack)\"})}),className:\"framer-1didbc9\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"e95pfg7cu\",style:{\"--extracted-r6o4lv\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1g3fa6n\",\"data-framer-name\":\"Techstack\",layoutDependency:layoutDependency,layoutId:\"IlBul2tHd\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition7},__framer__animateOnce:true,__framer__enter:animation7,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-1lvc9xu-container\",\"data-framer-name\":\"1 - 0 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Ygc98537D-container\",name:\"1 - 0 delay\",nodeId:\"Ygc98537D\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"Ygc98537D\",layoutId:\"Ygc98537D\",lSX_zlJoh:\"Figma\",name:\"1 - 0 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Figma,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition8},__framer__animateOnce:true,__framer__enter:animation8,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-2q2huv-container\",\"data-framer-name\":\"2 - 0.1 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"Plcb42sCM-container\",name:\"2 - 0.1 delay\",nodeId:\"Plcb42sCM\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"Plcb42sCM\",layoutId:\"Plcb42sCM\",lSX_zlJoh:\"Framer\",name:\"2 - 0.1 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Framer,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition9},__framer__animateOnce:true,__framer__enter:animation9,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-oj4hhq-container\",\"data-framer-name\":\"3 - 0.2 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"SfsiT_6PH-container\",name:\"3 - 0.2 delay\",nodeId:\"SfsiT_6PH\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"SfsiT_6PH\",layoutId:\"SfsiT_6PH\",lSX_zlJoh:\"Webflow\",name:\"3 - 0.2 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Webflow,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition10},__framer__animateOnce:true,__framer__enter:animation10,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-bdcloz-container\",\"data-framer-name\":\"4 - 0.3 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"AL3asIpa6-container\",name:\"4 - 0.3 delay\",nodeId:\"AL3asIpa6\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"AL3asIpa6\",layoutId:\"AL3asIpa6\",lSX_zlJoh:\"Rive\",name:\"4 - 0.3 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Rive,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition11},__framer__animateOnce:true,__framer__enter:animation11,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-dzhocn-container\",\"data-framer-name\":\"5 - 0.4 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"yxfRmQsG9-container\",name:\"5 - 0.4 delay\",nodeId:\"yxfRmQsG9\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"yxfRmQsG9\",layoutId:\"yxfRmQsG9\",lSX_zlJoh:\"Blender\",name:\"5 - 0.4 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Blender,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition12},__framer__animateOnce:true,__framer__enter:animation12,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-9oznn0-container\",\"data-framer-name\":\"6 - 0.5 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"fEwpkMYZa-container\",name:\"6 - 0.5 delay\",nodeId:\"fEwpkMYZa\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"fEwpkMYZa\",layoutId:\"fEwpkMYZa\",lSX_zlJoh:\"Trello\",name:\"6 - 0.5 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Adobephotoshop,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition13},__framer__animateOnce:true,__framer__enter:animation13,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-e4outp-container\",\"data-framer-name\":\"7 - 0.6 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"cy_szdgto-container\",name:\"7 - 0.6 delay\",nodeId:\"cy_szdgto\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"cy_szdgto\",layoutId:\"cy_szdgto\",lSX_zlJoh:\"ChatGPT\",name:\"7 - 0.6 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Adobeillustrator,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:56,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition14},__framer__animateOnce:true,__framer__enter:animation13,__framer__styleAppearEffectEnabled:true,__framer__threshold:.5,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-15ha6ix-container\",\"data-framer-name\":\"8 - 0.7 delay\",isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"EduCzU8TT-container\",name:\"8 - 0.7 delay\",nodeId:\"EduCzU8TT\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(TechStackLogo,{height:\"100%\",id:\"EduCzU8TT\",layoutId:\"EduCzU8TT\",lSX_zlJoh:\"Claude\",name:\"8 - 0.7 delay\",nxpovt3KQ:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",QL4h8C77w:Claude,width:\"100%\"})})})]})]})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-11stotm\",\"data-framer-name\":\"Awards\",layoutDependency:layoutDependency,layoutId:\"Cpfs0zYdf\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-18g7d3j\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"YO8e8jbQA\",children:[/*#__PURE__*/_jsx(MotionDivWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-1w6kftj\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"t9JtyhzXY\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h2,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-size\":\"28px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-text-color\":\"var(--extracted-1of0zx5, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"(Services)\"})}),className:\"framer-mzh0r5\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"TSSmn2tMp\",style:{\"--extracted-1of0zx5\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1biatnb\",\"data-framer-name\":\"Content\",layoutDependency:layoutDependency,layoutId:\"PChqdIe2H\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-pizzxr-container\",layoutDependency:layoutDependency,layoutId:\"a7MEJap9a-container\",nodeId:\"a7MEJap9a\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"Figma\",height:\"100%\",id:\"a7MEJap9a\",kgh8PBX02:\"Interfaces, design systems, prototypes\",layoutId:\"a7MEJap9a\",OeqpkXoAg:\"Product Design\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-j9zl7z-container\",layoutDependency:layoutDependency,layoutId:\"mLxSVZEoT-container\",nodeId:\"mLxSVZEoT\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"Framer\",height:\"100%\",id:\"mLxSVZEoT\",kgh8PBX02:\"Concept to published site, not a handoff\",layoutId:\"mLxSVZEoT\",OeqpkXoAg:\"Web Design\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-vhx0qo-container\",layoutDependency:layoutDependency,layoutId:\"XAJCm79Gw-container\",nodeId:\"XAJCm79Gw\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"Guidelines\",height:\"100%\",id:\"XAJCm79Gw\",kgh8PBX02:\"Logotype, visual system, usage rules\",layoutId:\"XAJCm79Gw\",OeqpkXoAg:\"Brand Identity\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-164wb2k-container\",layoutDependency:layoutDependency,layoutId:\"V_G348xfS-container\",nodeId:\"V_G348xfS\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"Print-ready\",height:\"100%\",id:\"V_G348xfS\",kgh8PBX02:\"Artes finais, prepress, supplier management\",layoutId:\"V_G348xfS\",OeqpkXoAg:\"Graphic Design and Production\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-up3fe3-container\",layoutDependency:layoutDependency,layoutId:\"PwARHnhFQ-container\",nodeId:\"PwARHnhFQ\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"Rive\",height:\"100%\",id:\"PwARHnhFQ\",kgh8PBX02:\"Interface animation and micro-interactions\",layoutId:\"PwARHnhFQ\",OeqpkXoAg:\"Motion and Interaction\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})})]})]})}),/*#__PURE__*/_jsx(motion.section,{className:\"framer-1vcvww8\",\"data-framer-name\":\"Awards\",layoutDependency:layoutDependency,layoutId:\"ObP_IcC15\",children:/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1rvtysj\",\"data-framer-name\":\"Container\",layoutDependency:layoutDependency,layoutId:\"cSfegDgSw\",children:[/*#__PURE__*/_jsx(MotionDivWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-1ig24y5\",\"data-framer-name\":\"Title\",layoutDependency:layoutDependency,layoutId:\"n3gdlreDY\",children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.h2,{dir:\"auto\",style:{\"--font-selector\":\"R0Y7R2Vpc3QgTW9uby01MDA=\",\"--framer-font-family\":'\"Geist Mono\", \"Geist Mono Placeholder\", monospace',\"--framer-font-size\":\"28px\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.04em\",\"--framer-text-color\":\"var(--extracted-1of0zx5, var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15)))\"},children:\"(Education)\"})}),className:\"framer-11yasl5\",fonts:[\"GF;Geist Mono-500\"],layoutDependency:layoutDependency,layoutId:\"USfaHNmRu\",style:{\"--extracted-1of0zx5\":\"var(--token-664ed95d-c315-41c3-9abf-2b0f6e35808a, rgb(15, 15, 15))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1f7vy6u\",\"data-framer-name\":\"Content\",layoutDependency:layoutDependency,layoutId:\"woW2S7m61\",children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-11de9qi-container\",layoutDependency:layoutDependency,layoutId:\"YJOL3xjar-container\",nodeId:\"YJOL3xjar\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"2009 - 2013\",height:\"100%\",id:\"YJOL3xjar\",kgh8PBX02:\"ESAD — Escola Superior de Artes e Design\",layoutId:\"YJOL3xjar\",OeqpkXoAg:\"BA, Communication Design\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-1bprgel-container\",layoutDependency:layoutDependency,layoutId:\"Vswvo0r4a-container\",nodeId:\"Vswvo0r4a\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"2020 — 2020\",height:\"100%\",id:\"Vswvo0r4a\",kgh8PBX02:\"EDIT. — Disruptive Digital Education\",layoutId:\"Vswvo0r4a\",OeqpkXoAg:\"UX Foundations Workshop\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:`max((min(max(${componentViewport?.width||\"100vw\"} - 70px, 1px), 1400px) - 54px) / 2, 1px)`,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFX,{__framer__animate:{transition:transition2},__framer__animateOnce:true,__framer__enter:animation,__framer__exit:animation1,__framer__styleAppearEffectEnabled:true,__framer__threshold:0,__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,className:\"framer-863afr-container\",layoutDependency:layoutDependency,layoutId:\"gCnOmp8pE-container\",nodeId:\"gCnOmp8pE\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Awards,{CG4mKcFej:\"2005 - 2008\",height:\"100%\",id:\"gCnOmp8pE\",kgh8PBX02:\"IPTA — Professional Secondary Education\",layoutId:\"gCnOmp8pE\",OeqpkXoAg:\"Graphic and Web Design\",style:{width:\"100%\"},variant:matchVariant(\"HwWPyBbKP\"),width:\"100%\"})})})]})]})})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-19z5vae-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"FKIucjxkc-container\",nodeId:\"FKIucjxkc\",rendersWithMotion:true,scopeId:\"RzNEenUYo\",children:/*#__PURE__*/_jsx(Lanyard,{backImage:addImageAlt({pixelHeight:235,pixelWidth:255,src:\"https://framerusercontent.com/images/emC12NxpXIRslnZVbbL8sVrJ12U.png?width=255&height=235\"},\"\"),cameraDistance:12,cardColor:\"rgb(255, 255, 255)\",clipColor:\"rgb(102, 112, 115)\",frontImage:addImageAlt({pixelHeight:2804,pixelWidth:2244,src:\"https://framerusercontent.com/images/yK4ERLVVKLcYyJK7wrdKrus3Q8.png?width=2244&height=2804\",srcSet:\"https://framerusercontent.com/images/yK4ERLVVKLcYyJK7wrdKrus3Q8.png?scale-down-to=1024&width=2244&height=2804 819w,https://framerusercontent.com/images/yK4ERLVVKLcYyJK7wrdKrus3Q8.png?scale-down-to=2048&width=2244&height=2804 1638w,https://framerusercontent.com/images/yK4ERLVVKLcYyJK7wrdKrus3Q8.png?width=2244&height=2804 2244w\"},\"\"),gravity:40,height:\"100%\",id:\"FKIucjxkc\",imageSizing:\"fill\",interactive:true,layoutId:\"FKIucjxkc\",lightingIntensity:66,preview:true,startPosition:\"right\",stringStyle:{color:\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0))\",image:addImageAlt({pixelHeight:67,pixelWidth:329,src:\"https://framerusercontent.com/images/lZPDicIa51MEthJwVuLGcu8KxU.png?width=329&height=67\"},\"\"),type:\"image\"},style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})]})})})});});const css=[\".framer-orQoV.framer-17yx84t, .framer-orQoV .framer-17yx84t { display: block; }\",\".framer-orQoV.framer-gug44r { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1200px; }\",\".framer-orQoV .framer-1387hjf { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 20px; height: min-content; justify-content: flex-start; overflow: visible; padding: 76px 35px 0px 35px; position: relative; width: 100%; }\",\".framer-orQoV .framer-iygwxz, .framer-orQoV .framer-jvokpb, .framer-orQoV .framer-11stotm, .framer-orQoV .framer-1vcvww8 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-orQoV .framer-zg9fi0 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: wrap; gap: 50px; height: min-content; justify-content: center; max-width: 1400px; overflow: visible; padding: 0px 24px 80px 24px; position: relative; width: 1px; }\",\".framer-orQoV .framer-j29q2j { align-content: flex-start; align-items: flex-start; align-self: stretch; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 90px; height: auto; justify-content: flex-start; min-width: 320px; overflow: visible; padding: 76px 0px 0px 0px; position: relative; width: 1px; }\",\".framer-orQoV .framer-q6rv7l { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-orQoV .framer-113w60d { flex: 1 0 0px; height: auto; overflow: visible; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-orQoV .framer-jm8je1 { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; height: 1px; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-orQoV .framer-14fae1m { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px 32px 0px 0px; position: relative; width: 100%; }\",\".framer-orQoV .framer-aez6mi { flex: 1 0 0px; height: auto; overflow: visible; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; z-index: 1; }\",\".framer-orQoV .framer-1n33laf { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: center; overflow: visible; padding: 0px 24px 0px 0px; position: relative; width: 100%; }\",\".framer-orQoV .framer-o7tngv-container, .framer-orQoV .framer-uepbsb-container, .framer-orQoV .framer-1gy796v-container, .framer-orQoV .framer-gvb0l3-container, .framer-orQoV .framer-3i80ek-container, .framer-orQoV .framer-i3n1wl-container, .framer-orQoV .framer-v4uwnx-container, .framer-orQoV .framer-97q0q5-container, .framer-orQoV .framer-1e4p3em-container, .framer-orQoV .framer-pizzxr-container, .framer-orQoV .framer-j9zl7z-container, .framer-orQoV .framer-vhx0qo-container, .framer-orQoV .framer-164wb2k-container, .framer-orQoV .framer-up3fe3-container, .framer-orQoV .framer-11de9qi-container, .framer-orQoV .framer-1bprgel-container, .framer-orQoV .framer-863afr-container { flex: none; height: auto; position: relative; width: 100%; }\",\".framer-orQoV .framer-udam5b { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; min-height: 691px; min-width: 320px; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-orQoV .framer-mo9t88 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 60px; height: min-content; justify-content: center; max-width: 1400px; overflow: var(--overflow-clip-fallback, clip); padding: 80px 24px 80px 24px; position: relative; width: 1px; }\",\".framer-orQoV .framer-a6eblz { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-orQoV .framer-1kv5ity, .framer-orQoV .framer-19q4rs8, .framer-orQoV .framer-mzh0r5, .framer-orQoV .framer-11yasl5 { flex: 1 0 0px; height: auto; position: relative; white-space: pre-wrap; width: 1px; word-break: break-word; word-wrap: break-word; }\",\".framer-orQoV .framer-1i9pz9j { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-end; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-orQoV .framer-uztgcc-container, .framer-orQoV .framer-1lvc9xu-container, .framer-orQoV .framer-2q2huv-container, .framer-orQoV .framer-oj4hhq-container, .framer-orQoV .framer-bdcloz-container, .framer-orQoV .framer-dzhocn-container, .framer-orQoV .framer-9oznn0-container, .framer-orQoV .framer-e4outp-container, .framer-orQoV .framer-15ha6ix-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-orQoV .framer-retog5 { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-orQoV .framer-5ns6ib { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; max-width: 1400px; overflow: var(--overflow-clip-fallback, clip); padding: 80px 24px 80px 24px; position: relative; width: 100%; }\",\".framer-orQoV .framer-o6t34e { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; height: min-content; justify-content: space-between; overflow: visible; padding: 0px; position: relative; width: 1px; }\",\".framer-orQoV .framer-1didbc9 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-orQoV .framer-1g3fa6n { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: min-content; justify-content: flex-start; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-orQoV .framer-18g7d3j, .framer-orQoV .framer-1rvtysj { align-content: flex-start; align-items: flex-start; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; max-width: 1400px; overflow: var(--overflow-clip-fallback, clip); padding: 80px 24px 80px 24px; position: relative; width: 1px; }\",\".framer-orQoV .framer-1w6kftj, .framer-orQoV .framer-1ig24y5 { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: row; flex-wrap: nowrap; gap: 6px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-orQoV .framer-1biatnb, .framer-orQoV .framer-1f7vy6u { align-content: center; align-items: center; display: flex; flex: 1 0 0px; flex-direction: column; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1px; }\",\".framer-orQoV .framer-19z5vae-container { flex: none; height: 799px; position: absolute; right: -365px; top: 0px; width: 118%; z-index: 2; }\",'.framer-orQoV[data-border=\"true\"]::after, .framer-orQoV [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 2639.5\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerRzNEenUYo=withCSS(Component,css,\"framer-orQoV\");export default FramerRzNEenUYo;FramerRzNEenUYo.displayName=\"About\";FramerRzNEenUYo.defaultProps={height:2639.5,width:1200};addFonts(FramerRzNEenUYo,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/eiALb3Ac2OPorMgJIBVNZMBzpg.woff2\",weight:\"700\"},{cssFamilyName:\"Geist Mono\",openType:true,source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v6/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeEPKJ5W7ihaO_CS.woff2\",weight:\"500\"},{cssFamilyName:\"Geist Mono\",openType:true,source:\"google\",style:\"normal\",uiFamilyName:\"Geist Mono\",url:\"https://fonts.gstatic.com/s/geistmono/v6/or3yQ6H-1_WfwkMZI_qYPLs1a-t7PU0AbeHaL55W7ihaO_CS.woff2\",weight:\"700\"}]},...StatsFonts,...DownloadCVFonts,...ExperienceFonts,...TechStackLogoFonts,...AwardsFonts,...LanyardFonts],{supportsExplicitInterCodegen:true});FramerRzNEenUYo.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(Stats,{},context),()=>forwardLoader(DownloadCV,{},context),()=>forwardLoader(Experience,{},context),()=>forwardLoader(TechStackLogo,{},context),()=>forwardLoader(Awards,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerRzNEenUYo\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"2639.5\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RzNEenUYo.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef,useMemo,useState}from\"react\";import hash from\"@emotion/hash\";const CLASS_NAME=\"gooey-component\";/**\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function Gooey(props){const ref=useRef(null);const componentId=props.id?hash(props.id):null;const instanceId=useMemo(generateRandomString,[]);const id=componentId||instanceId;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[parentId,setParentId]=useState(\"\");const[parentClass,setParentClass]=useState(\"\");useEffect(()=>{if(ref.current){var _ref_current_parentElement;const parent=(_ref_current_parentElement=ref.current.parentElement)===null||_ref_current_parentElement===void 0?void 0:_ref_current_parentElement.parentElement;if(parent){if(isCanvas){setParentId(parent.id);}else{setParentClass(parent.class);}}}return()=>{if(ref.current){var _ref_current_parentElement;const parent=(_ref_current_parentElement=ref.current.parentElement)===null||_ref_current_parentElement===void 0?void 0:_ref_current_parentElement.parentElement;if(parent){parent.style.filter=\"\";}}};},[]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,className:CLASS_NAME,style:{display:\"none\"},children:[!isSafari()&&/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:`\n                        ${componentId?`div:has(> .framer-${componentId}-container) { filter: url(#goo-${id}) !important }`:\"\"}\n                        ${parentId?`div#${parentId} { filter: url(#goo-${id}) !important }`:\"\"}\n                        ${parentClass?`div.${parentClass} { filter: url(#goo-${id}) !important }`:\"\"}`}}),/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",version:\"1.1\",children:/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsxs(\"filter\",{id:`goo-${id}`,children:[/*#__PURE__*/_jsx(\"feGaussianBlur\",{in:\"SourceGraphic\",stdDeviation:props.intensity,result:\"blur\"}),/*#__PURE__*/_jsx(\"feColorMatrix\",{in:\"blur\",mode:\"matrix\",values:`1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 19 -8`,result:\"goo\"}),/*#__PURE__*/_jsx(\"feComposite\",{in:\"SourceGraphic\",in2:\"goo\",operator:\"atop\"})]})})})]});}Gooey.displayName=\"Gooey Effect\";addPropertyControls(Gooey,{intensity:{type:ControlType.Number,defaultValue:10,min:2,max:20,step:1,description:\"More components at [Framer University](https://frameruni.link/cc).\"}});function generateRandomString(){const characters=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";let result=\"\";for(let i=0;i<8;i++){const randomIndex=Math.floor(Math.random()*characters.length);result+=characters.charAt(randomIndex);}return result;}function isSafari(){if(typeof navigator===\"undefined\"){return false;}else{return/^((?!chrome|android).)*safari/i.test(navigator.userAgent);}}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Gooey\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\",\"framerSupportedLayoutHeight\":\"auto\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Gooey_Prod.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useRef,useEffect}from\"react\";export function NeonGlow(){const ref=useRef(null);useEffect(()=>{const el=ref.current;if(!el)return;let currentX=0;let currentY=0;let targetX=0;let targetY=0;let visible=false;let rafId=null;const lerp=(a,b,n)=>a+(b-a)*n;const animate=()=>{currentX=lerp(currentX,targetX,.04);currentY=lerp(currentY,targetY,.04);el.style.setProperty(\"--x\",`${currentX}px`);el.style.setProperty(\"--y\",`${currentY}px`);rafId=requestAnimationFrame(animate);};const onMove=e=>{const rect=el.getBoundingClientRect();const inside=e.clientX>=rect.left&&e.clientX<=rect.right&&e.clientY>=rect.top&&e.clientY<=rect.bottom;if(inside){targetX=e.clientX-rect.left;targetY=e.clientY-rect.top;if(!visible){visible=true;el.style.setProperty(\"--opacity\",\"1\");animate();}}else if(visible){visible=false;el.style.setProperty(\"--opacity\",\"0\");cancelAnimationFrame(rafId);rafId=null;}};window.addEventListener(\"mousemove\",onMove);return()=>{window.removeEventListener(\"mousemove\",onMove);cancelAnimationFrame(rafId);};},[]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .neon-glow {\n                    position: relative;\n                    width: 100%;\n                    height: 100%;\n                    border-radius: 12px;\n                    pointer-events: none;\n                    --opacity: 0;\n                }\n\n                .neon-glow::before {\n                    content: \"\";\n                    position: absolute;\n                    inset: 0;\n                    padding: 1px;\n                    border-radius: inherit;\n\n                    background: radial-gradient(\n                        90px 90px at var(--x) var(--y),\n                        #D5FF99,\n                        transparent 60%\n                    );\n\n                    opacity: var(--opacity);\n                    transition: opacity 0.25s ease;\n\n                    -webkit-mask:\n                        linear-gradient(#000 0 0) content-box,\n                        linear-gradient(#000 0 0);\n                    -webkit-mask-composite: xor;\n                            mask-composite: exclude;\n                }\n            `}),/*#__PURE__*/_jsx(\"div\",{ref:ref,className:\"neon-glow\"})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"NeonGlow\":{\"type\":\"reactComponent\",\"name\":\"NeonGlow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Glow.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useRef,useEffect}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * NeonGlow — overlay component that adds a glowing border\n * effect on mouse hover. Place it as a child inside your navbar\n * frame and set it to Fill on both axes.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function NeonGlow(props){const{glowColor=\"#D5FF99\",glowSize=90,borderRadius=12,borderWidth=1,lerpSpeed=.04}=props;const ref=useRef(null);useEffect(()=>{const el=ref.current;if(!el)return;let currentX=0;let currentY=0;let targetX=0;let targetY=0;let visible=false;let rafId=null;const lerp=(a,b,n)=>a+(b-a)*n;const animate=()=>{currentX=lerp(currentX,targetX,lerpSpeed);currentY=lerp(currentY,targetY,lerpSpeed);el.style.setProperty(\"--x\",`${currentX}px`);el.style.setProperty(\"--y\",`${currentY}px`);rafId=requestAnimationFrame(animate);};const onMove=e=>{const rect=el.getBoundingClientRect();const inside=e.clientX>=rect.left&&e.clientX<=rect.right&&e.clientY>=rect.top&&e.clientY<=rect.bottom;if(inside){targetX=e.clientX-rect.left;targetY=e.clientY-rect.top;if(!visible){visible=true;el.style.setProperty(\"--opacity\",\"1\");animate();}}else if(visible){visible=false;el.style.setProperty(\"--opacity\",\"0\");if(rafId!==null){cancelAnimationFrame(rafId);rafId=null;}}};window.addEventListener(\"mousemove\",onMove);return()=>{window.removeEventListener(\"mousemove\",onMove);if(rafId!==null)cancelAnimationFrame(rafId);};},[lerpSpeed]);return /*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .neon-glow-wrapper {\n                    position: relative;\n                    width: 100%;\n                    height: 100%;\n                    border-radius: ${borderRadius}px;\n                    pointer-events: none;\n                    --opacity: 0;\n                }\n\n                .neon-glow-wrapper::before {\n                    content: \"\";\n                    position: absolute;\n                    inset: 0;\n                    padding: ${borderWidth}px;\n                    border-radius: inherit;\n\n                    background: radial-gradient(\n                        ${glowSize}px ${glowSize}px at var(--x) var(--y),\n                        ${glowColor},\n                        transparent 60%\n                    );\n\n                    opacity: var(--opacity);\n                    transition: opacity 0.25s ease;\n\n                    -webkit-mask:\n                        linear-gradient(#000 0 0) content-box,\n                        linear-gradient(#000 0 0);\n                    -webkit-mask-composite: xor;\n                            mask-composite: exclude;\n                }\n            `}),/*#__PURE__*/_jsx(\"div\",{ref:ref,className:\"neon-glow-wrapper\"})]});}addPropertyControls(NeonGlow,{glowColor:{title:\"Glow Color\",type:ControlType.Color,defaultValue:\"#D5FF99\"},glowSize:{title:\"Glow Size\",type:ControlType.Number,defaultValue:90,min:20,max:300,step:10},borderRadius:{title:\"Border Radius\",type:ControlType.Number,defaultValue:12,min:0,max:100,step:1},borderWidth:{title:\"Border Width\",type:ControlType.Number,defaultValue:1,min:1,max:5,step:.5},lerpSpeed:{title:\"Smoothness\",type:ControlType.Number,defaultValue:.04,min:.01,max:.2,step:.01}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NeonGlow\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NeonGlow.map","// Generated by Framer (835d061)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const enabledGestures={NO7gejf5R:{hover:true}};const cycleOrder=[\"NO7gejf5R\",\"lebO53bzI\"];const serializationHash=\"framer-L3AiK\";const variantClassNames={lebO53bzI:\"framer-v-vriuqn\",NO7gejf5R:\"framer-v-1dnwj5g\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const D2_q81no8=undefined;const hpK_Nb5dg=undefined;const JSlzg4F3x=undefined;const transition1={delay:0,duration:.4,ease:[.12,.23,.5,1],type:\"tween\"};const transition2={delay:0,duration:.2,ease:[.12,.23,.5,1],type:\"tween\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Active/Off\":\"NO7gejf5R\",\"Active/On\":\"lebO53bzI\"};const Variants=motion.create(React.Fragment);const getProps=({click2,height,id,navbarLink,navLink,width,...props})=>{return{...props,D2_q81no8:click2??props.D2_q81no8,hpK_Nb5dg:navbarLink??props.hpK_Nb5dg,JSlzg4F3x:navLink??props.JSlzg4F3x??\"Nav link\",variant:humanReadableVariantMap[props.variant]??props.variant??\"NO7gejf5R\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,JSlzg4F3x,hpK_Nb5dg,D2_q81no8,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"NO7gejf5R\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap1ckpqma=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(D2_q81no8){const res=await D2_q81no8(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,...addPropertyOverrides({lebO53bzI:{value:transition2}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(Link,{href:hpK_Nb5dg,motionChild:true,nodeId:\"NO7gejf5R\",openInNewTab:false,scopeId:\"UMtXt1P8M\",smoothScroll:true,children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1dnwj5g\",className,classNames)} framer-4nt30j`,\"data-framer-name\":\"Active/Off\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"NO7gejf5R\",onTap:onTap1ckpqma,ref:refBinding,style:{borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,...style},...addPropertyOverrides({\"NO7gejf5R-hover\":{\"data-framer-name\":undefined},lebO53bzI:{\"data-framer-name\":\"Active/On\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-32gmdn\",\"data-framer-name\":\"Bg\",layoutDependency:layoutDependency,layoutId:\"Lij_CG1NA\",style:{backgroundColor:\"rgb(15, 15, 15)\",opacity:0}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"110%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-41000120-2736-46f5-80a6-99d91ac2af1f, rgb(255, 255, 255)))\"},children:\"Nav link\"})}),className:\"framer-vh6fv4\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"x6xrl59B5\",style:{\"--extracted-r6o4lv\":\"var(--token-41000120-2736-46f5-80a6-99d91ac2af1f, rgb(255, 255, 255))\",\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\"},text:JSlzg4F3x,variants:{\"NO7gejf5R-hover\":{\"--extracted-r6o4lv\":\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0))\"},lebO53bzI:{\"--extracted-r6o4lv\":\"rgb(8, 8, 8)\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"NO7gejf5R-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"110%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0)))\"},children:\"Nav link\"})})},lebO53bzI:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-line-height\":\"110%\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(8, 8, 8))\"},children:\"Nav link\"})})}},baseVariant,gestureVariant)})]})})})})});});const css=[\".framer-L3AiK.framer-4nt30j, .framer-L3AiK .framer-4nt30j { display: block; }\",\".framer-L3AiK.framer-1dnwj5g { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 8px 10px 7px 10px; position: relative; text-decoration: none; width: min-content; will-change: var(--framer-will-change-override, transform); }\",\".framer-L3AiK .framer-32gmdn { flex: none; height: 101%; left: 0px; overflow: var(--overflow-clip-fallback, clip); position: absolute; top: calc(50.746268656716445% - 101.49253731343283% / 2); width: 100%; z-index: 0; }\",\".framer-L3AiK .framer-vh6fv4 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 32.5\n * @framerIntrinsicWidth 73.5\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"lebO53bzI\":{\"layout\":[\"auto\",\"auto\"]},\"TrBT7PgEP\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"JSlzg4F3x\":\"navLink\",\"hpK_Nb5dg\":\"navbarLink\",\"D2_q81no8\":\"click2\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerUMtXt1P8M=withCSS(Component,css,\"framer-L3AiK\");export default FramerUMtXt1P8M;FramerUMtXt1P8M.displayName=\"Nav link\";FramerUMtXt1P8M.defaultProps={height:32.5,width:73.5};addPropertyControls(FramerUMtXt1P8M,{variant:{options:[\"NO7gejf5R\",\"lebO53bzI\"],optionTitles:[\"Active/Off\",\"Active/On\"],title:\"Variant\",type:ControlType.Enum},JSlzg4F3x:{defaultValue:\"Nav link\",displayTextArea:false,title:\"Nav link\",type:ControlType.String},onJSlzg4F3xChange:{changes:\"JSlzg4F3x\",type:ControlType.ChangeHandler},hpK_Nb5dg:{title:\"Navbar Link\",type:ControlType.Link},D2_q81no8:{title:\"Click 2\",type:ControlType.EventHandler}});addFonts(FramerUMtXt1P8M,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerUMtXt1P8M\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"lebO53bzI\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"TrBT7PgEP\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicHeight\":\"32.5\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicWidth\":\"73.5\",\"framerComponentViewportWidth\":\"true\",\"framerVariables\":\"{\\\"JSlzg4F3x\\\":\\\"navLink\\\",\\\"hpK_Nb5dg\\\":\\\"navbarLink\\\",\\\"D2_q81no8\\\":\\\"click2\\\"}\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./UMtXt1P8M.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,forwardLoader,getFonts,ResolveLinks,runTasksWithYield,SmartComponentScopedContainer,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useRouter,useVariantState,withCodeBoundaryForOverrides,withCSS,withFX,withMappedReactProps,withOptimizedAppearEffect}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import{NeonGlow}from\"https://framerusercontent.com/modules/qASPtlF0hiJ1sCO4vARn/mSUyjDLk1ZwRj2FeOHSp/Glow.js\";import{openCase01,openCase02,openCase03}from\"https://framerusercontent.com/modules/zqgIQBXawqypSbToMYTz/YvFAycqftQJTi25KMR95/WindowTriggers.js\";import NavLink,*as NavLinkInfo from\"https://framerusercontent.com/modules/9fT3ZordlLGGPLs3y5v6/EMnCbwtnYs5I8qtf18yT/UMtXt1P8M.js\";const NeonGlowFonts=getFonts(NeonGlow);const NavLinkFonts=getFonts(NavLink);const NavLinkOpenCase02xabj2qWithMappedReactProps1xpi3x1=withMappedReactProps(withCodeBoundaryForOverrides(NavLink,{nodeId:\"lXCRsvsnI\",override:openCase02,scopeId:\"tXQFbbVGV\"}),NavLinkInfo);const SmartComponentScopedContainerWithFXWithOptimizedAppearEffect=withOptimizedAppearEffect(withFX(SmartComponentScopedContainer));const NavLinkOpenCase01od388uWithMappedReactProps1xpi3x1=withMappedReactProps(withCodeBoundaryForOverrides(NavLink,{nodeId:\"TdBfHQofY\",override:openCase01,scopeId:\"tXQFbbVGV\"}),NavLinkInfo);const NavLinkOpenCase0382dhhzWithMappedReactProps1xpi3x1=withMappedReactProps(withCodeBoundaryForOverrides(NavLink,{nodeId:\"MlLEjJ9j9\",override:openCase03,scopeId:\"tXQFbbVGV\"}),NavLinkInfo);const serializationHash=\"framer-wMxmE\";const variantClassNames={VX76aVUEh:\"framer-v-gebeca\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const wuLdb6Nqc=undefined;const dd5SLnKuA=undefined;const zV0qUSgG_=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const animation={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition1,x:0,y:0};const animation1={opacity:.001,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:50};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({click2,click3,click4,height,id,width,...props})=>{return{...props,dd5SLnKuA:click3??props.dd5SLnKuA,wuLdb6Nqc:click2??props.wuLdb6Nqc,zV0qUSgG_:click4??props.zV0qUSgG_};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,wuLdb6Nqc,dd5SLnKuA,zV0qUSgG_,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"VX76aVUEh\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const D2_q81no8175qktb=activeVariantCallback(async(...args)=>{if(wuLdb6Nqc){const res=await wuLdb6Nqc(...args);if(res===false)return false;}});const D2_q81no8y8fs42=activeVariantCallback(async(...args)=>{if(dd5SLnKuA){const res=await dd5SLnKuA(...args);if(res===false)return false;}});const D2_q81no8lvql4j=activeVariantCallback(async(...args)=>{if(zV0qUSgG_){const res=await zV0qUSgG_(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const router=useRouter();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-gebeca\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"VX76aVUEh\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"rgba(255, 255, 255, 0.08)\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backdropFilter:\"blur(40px)\",backgroundColor:\"rgb(0, 0, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,WebkitBackdropFilter:\"blur(40px)\",...style},children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-184yb31-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"kR_eZi5Om-container\",nodeId:\"kR_eZi5Om\",rendersWithMotion:true,scopeId:\"tXQFbbVGV\",children:/*#__PURE__*/_jsx(NeonGlow,{height:\"100%\",id:\"kR_eZi5Om\",layoutId:\"kR_eZi5Om\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(motion.div,{className:\"framer-v6jb9z\",\"data-framer-name\":\"Bg\",layoutDependency:layoutDependency,layoutId:\"IBDultSTf\",style:{background:\"linear-gradient(179deg, rgb(224, 255, 181) -86%, rgb(149, 250, 95) 192%)\",borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,opacity:0}}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,y:(componentViewport?.y||0)+4+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-xabj2q-container\",\"data-framer-appear-id\":\"xabj2q\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"lXCRsvsnI-container\",nodeId:\"lXCRsvsnI\",optimized:true,rendersWithMotion:true,scopeId:\"tXQFbbVGV\",children:/*#__PURE__*/_jsx(NavLinkOpenCase02xabj2qWithMappedReactProps1xpi3x1,{D2_q81no8:D2_q81no8175qktb,height:\"100%\",id:\"lXCRsvsnI\",JSlzg4F3x:\"Team Lausanne\",layoutId:\"lXCRsvsnI\",variant:matchVariant(\"NO7gejf5R\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{hash:\":HezpLFFM0\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,y:(componentViewport?.y||0)+4+32,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-od388u-container\",\"data-framer-appear-id\":\"od388u\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"TdBfHQofY-container\",nodeId:\"TdBfHQofY\",optimized:true,rendersWithMotion:true,scopeId:\"tXQFbbVGV\",children:/*#__PURE__*/_jsx(NavLinkOpenCase01od388uWithMappedReactProps1xpi3x1,{D2_q81no8:D2_q81no8y8fs42,height:\"100%\",hpK_Nb5dg:resolvedLinks[0],id:\"TdBfHQofY\",JSlzg4F3x:\"MultichainZ\",layoutId:\"TdBfHQofY\",variant:matchVariant(\"NO7gejf5R\"),width:\"100%\"})})})}),/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{hash:\":pNWijo3SO\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,y:(componentViewport?.y||0)+4+64,children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation,className:\"framer-82dhhz-container\",\"data-framer-appear-id\":\"82dhhz\",initial:animation1,layoutDependency:layoutDependency,layoutId:\"MlLEjJ9j9-container\",nodeId:\"MlLEjJ9j9\",optimized:true,rendersWithMotion:true,scopeId:\"tXQFbbVGV\",children:/*#__PURE__*/_jsx(NavLinkOpenCase0382dhhzWithMappedReactProps1xpi3x1,{D2_q81no8:D2_q81no8lvql4j,height:\"100%\",hpK_Nb5dg:resolvedLinks1[0],id:\"MlLEjJ9j9\",JSlzg4F3x:\"Pagoda Travel\",layoutId:\"MlLEjJ9j9\",variant:matchVariant(\"NO7gejf5R\"),width:\"100%\"})})})})]})})})});});const css=[\".framer-wMxmE.framer-r3xq7v, .framer-wMxmE .framer-r3xq7v { display: block; }\",\".framer-wMxmE.framer-gebeca { align-content: flex-start; align-items: flex-start; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 4px 24px 4px 12px; position: relative; width: min-content; will-change: var(--framer-will-change-override, transform); }\",\".framer-wMxmE .framer-184yb31-container { flex: none; height: 101%; left: calc(50.11389521640094% - 229.5px / 2); pointer-events: none; position: absolute; top: calc(49.43820224719103% - 101.12359550561798% / 2); width: 230px; z-index: 0; }\",\".framer-wMxmE .framer-v6jb9z { flex: none; height: 34px; left: 6px; overflow: var(--overflow-clip-fallback, clip); position: absolute; top: calc(50.54945054945057% - 33.5px / 2); width: 85px; will-change: var(--framer-will-change-override, transform); z-index: 0; }\",\".framer-wMxmE .framer-xabj2q-container, .framer-wMxmE .framer-od388u-container, .framer-wMxmE .framer-82dhhz-container { flex: none; height: auto; position: relative; width: auto; }\",'.framer-wMxmE[data-border=\"true\"]::after, .framer-wMxmE [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 106\n * @framerIntrinsicWidth 166\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"wuLdb6Nqc\":\"click2\",\"dd5SLnKuA\":\"click3\",\"zV0qUSgG_\":\"click4\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramertXQFbbVGV=withCSS(Component,css,\"framer-wMxmE\");export default FramertXQFbbVGV;FramertXQFbbVGV.displayName=\"Nav links\";FramertXQFbbVGV.defaultProps={height:106,width:166};addPropertyControls(FramertXQFbbVGV,{wuLdb6Nqc:{title:\"Click 2\",type:ControlType.EventHandler},dd5SLnKuA:{title:\"Click 3\",type:ControlType.EventHandler},zV0qUSgG_:{title:\"Click 4\",type:ControlType.EventHandler}});addFonts(FramertXQFbbVGV,[{explicitInter:true,fonts:[]},...NeonGlowFonts,...NavLinkFonts],{supportsExplicitInterCodegen:true});FramertXQFbbVGV.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(NavLink,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramertXQFbbVGV\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"166\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"wuLdb6Nqc\\\":\\\"click2\\\",\\\"dd5SLnKuA\\\":\\\"click3\\\",\\\"zV0qUSgG_\\\":\\\"click4\\\"}\",\"framerIntrinsicHeight\":\"106\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tXQFbbVGV.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useCallback,useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * CopyEmail.tsx — click to copy, label flips to \"copied\". v3.\n *\n * Framer's own copy-to-clipboard component cannot be restyled, which is the\n * only reason this exists. Everything here is a property control.\n *\n * ── v3: SMALLEST POSSIBLE BOX ──\n *\n * v2 locked the width to the longest of the three labels by stacking them in\n * one grid cell. It worked, and it was wrong: the longest label was \"copy\n * failed\", so the button sat permanently wider than \"Lets Talk\" and broke out\n * of the nav. Reverted.\n *\n * What is kept from v2 is the one real fix: `box-sizing: border-box`. v1 had\n * width 100% AND padding with no box-sizing, and a button defaults to\n * content-box, so it rendered 100% PLUS 40px and spilled.\n *\n * NO WIDTH OR HEIGHT IS FORCED HERE. The button sizes to its own text and\n * padding, and `...style` comes last so a size set on the Framer instance\n * wins. Forcing 100% is what put it outside its container in the first place.\n *\n * The label does change width between states. `Copied` defaults to a string\n * close in length to the label for that reason — keep it short.\n *\n * ── TWO CLIPBOARD PATHS, ON PURPOSE ──\n *\n * navigator.clipboard needs a secure context AND a user gesture. A custom\n * domain mid-DNS, or an older iOS Safari, will not have it, and the failure\n * is silent: the label would flip to \"copied\" having copied nothing.\n *\n * So there is a fallback — hidden textarea plus execCommand(\"copy\"),\n * deprecated and working everywhere. The label only flips to \"copied\" if one\n * of the two reported success.\n *\n * ── THE FONT ──\n *\n * fontFamily is a plain CSS string, so a custom face works as long as the\n * page loads it somewhere. This is the way round §20.66.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 132\n * @framerIntrinsicHeight 44\n */async function copyText(text){try{if(navigator.clipboard&&window.isSecureContext){await navigator.clipboard.writeText(text);return true;}}catch(e){// fall through\n}try{const ta=document.createElement(\"textarea\");ta.value=text;ta.setAttribute(\"readonly\",\"\");ta.style.position=\"fixed\";ta.style.top=\"-1000px\";ta.style.opacity=\"0\";document.body.appendChild(ta);ta.select();ta.setSelectionRange(0,ta.value.length);const ok=document.execCommand(\"copy\");document.body.removeChild(ta);return ok;}catch(e){return false;}}export default function CopyEmail(props){const{email=\"jegteixeira@gmail.com\",label=\"Lets Talk\",copiedLabel=\"Copied\",hold=1600,fontFamily=\"PP Neue Montreal\",fontSize=16,fontWeight=500,letterSpacing=-.01,color=\"rgb(0,0,0)\",background=\"rgb(246,246,246)\",hoverColor=\"rgb(0,0,0)\",hoverBackground=\"rgb(236,236,236)\",copiedColor=\"rgb(0,0,0)\",copiedBackground=\"rgb(208,255,0)\",radius=12,padX=20,padY=10,border=\"\",lift=false,style}=props;const[copied,setCopied]=useState(false);const[hover,setHover]=useState(false);const timer=useRef(null);const onCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>()=>clearTimeout(timer.current),[]);const click=useCallback(async()=>{if(onCanvas)return;const ok=await copyText(email);if(!ok)return;// do not claim a copy that did not happen\nsetCopied(true);clearTimeout(timer.current);timer.current=setTimeout(()=>setCopied(false),hold);},[email,hold,onCanvas]);const bg=copied?copiedBackground:hover?hoverBackground:background;const fg=copied?copiedColor:hover?hoverColor:color;return /*#__PURE__*/_jsx(\"button\",{onClick:click,onPointerEnter:()=>setHover(true),onPointerLeave:()=>setHover(false),\"aria-label\":\"Copy email address \"+email,style:{boxSizing:\"border-box\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",padding:`${padY}px ${padX}px`,borderRadius:radius,background:bg,color:fg,border:border?`1px solid ${border}`:\"none\",fontFamily:`\"${fontFamily}\", system-ui, sans-serif`,fontSize,fontWeight,letterSpacing:`${letterSpacing}em`,lineHeight:1.2,whiteSpace:\"nowrap\",cursor:\"pointer\",userSelect:\"none\",WebkitTapHighlightColor:\"transparent\",transition:\"background 200ms ease, color 200ms ease\",transform:lift&&hover&&!copied?\"translateY(-1px)\":\"none\",// LAST — a size set on the Framer instance wins.\n...style},children:copied?copiedLabel:label});}CopyEmail.displayName=\"Copy Email\";addPropertyControls(CopyEmail,{email:{type:ControlType.String,title:\"Email\",defaultValue:\"jegteixeira@gmail.com\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"Lets Talk\"},copiedLabel:{type:ControlType.String,title:\"Copied\",defaultValue:\"Copied\",description:\"Keep it close in length to the label or the button resizes.\"},hold:{type:ControlType.Number,title:\"Hold\",defaultValue:1600,min:400,max:5e3,step:100,unit:\"ms\"},fontFamily:{type:ControlType.String,title:\"Font\",defaultValue:\"PP Neue Montreal\",description:\"Any face the page already loads.\"},fontSize:{type:ControlType.Number,title:\"Size\",defaultValue:16,min:8,max:72,step:1,unit:\"px\"},fontWeight:{type:ControlType.Enum,title:\"Weight\",options:[300,400,500,600,700,800],optionTitles:[\"Light\",\"Regular\",\"Medium\",\"Semibold\",\"Bold\",\"Black\"],defaultValue:500},letterSpacing:{type:ControlType.Number,title:\"Tracking\",defaultValue:-.01,min:-.1,max:.2,step:.005,unit:\"em\"},color:{type:ControlType.Color,title:\"Text\",defaultValue:\"rgb(0,0,0)\"},background:{type:ControlType.Color,title:\"Fill\",defaultValue:\"rgb(246,246,246)\"},hoverColor:{type:ControlType.Color,title:\"Text hover\",defaultValue:\"rgb(0,0,0)\"},hoverBackground:{type:ControlType.Color,title:\"Fill hover\",defaultValue:\"rgb(236,236,236)\"},copiedColor:{type:ControlType.Color,title:\"Text copied\",defaultValue:\"rgb(0,0,0)\"},copiedBackground:{type:ControlType.Color,title:\"Fill copied\",defaultValue:\"rgb(208,255,0)\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:12,min:0,max:60,step:1,unit:\"px\"},padX:{type:ControlType.Number,title:\"Pad X\",defaultValue:20,min:0,max:80,step:1,unit:\"px\"},padY:{type:ControlType.Number,title:\"Pad Y\",defaultValue:10,min:0,max:60,step:1,unit:\"px\"},border:{type:ControlType.Color,title:\"Border\",defaultValue:\"\",description:\"Leave empty for none.\"},lift:{type:ControlType.Boolean,title:\"Lift on hover\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CopyEmail\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CopyEmail.map","// Follow eyes that follow the mouse cursor with smooth pupil tracking\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useState,useRef,startTransition,useMemo}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";import{motion}from\"framer-motion\";/**\n * Follow Eyes\n * \n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n * \n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function FollowEyes(props){const{eyeColor,pupilColor,eyeSize,pupilSize:rawPupilSize,eyeSpacing,trackingSpeed,trackingRange,eyeCount,enableBlinking,blinkInterval,style}=props;const pupilSize=useMemo(()=>Math.min(rawPupilSize,eyeSize*.8),[rawPupilSize,eyeSize]);const containerRef=useRef(null);const[leftPupilPos,setLeftPupilPos]=useState({x:0,y:0});const[rightPupilPos,setRightPupilPos]=useState({x:0,y:0});const[centerPupilPos,setCenterPupilPos]=useState({x:0,y:0});const[isBlinking,setIsBlinking]=useState(false);const isStatic=useIsStaticRenderer();const maxDistance=useMemo(()=>(eyeSize-pupilSize)/2*(trackingRange/100),[eyeSize,pupilSize,trackingRange]);useEffect(()=>{if(isStatic||!enableBlinking)return;const blinkDuration=200;const interval=setInterval(()=>{startTransition(()=>setIsBlinking(true));setTimeout(()=>{startTransition(()=>setIsBlinking(false));},blinkDuration);},blinkInterval);return()=>clearInterval(interval);},[isStatic,enableBlinking,blinkInterval]);useEffect(()=>{if(isStatic)return;const handleMouseMove=e=>{if(!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();const centerX=rect.left+rect.width/2;const centerY=rect.top+rect.height/2;const mouseX=e.clientX-centerX;const mouseY=e.clientY-centerY;if(eyeCount===\"one\"){const distance=Math.sqrt(mouseX*mouseX+mouseY*mouseY);if(distance===0){startTransition(()=>setCenterPupilPos({x:0,y:0}));return;}const clampedDistance=Math.min(distance,maxDistance);const angle=Math.atan2(mouseY,mouseX);startTransition(()=>{setCenterPupilPos({x:Math.cos(angle)*clampedDistance,y:Math.sin(angle)*clampedDistance});});}else{// Eye centers are offset by half an eye plus half the gap from the container center\nconst leftEyeOffsetX=-(eyeSize/2+eyeSpacing/2);const rightEyeOffsetX=eyeSize/2+eyeSpacing/2;const calculatePupilPosition=eyeOffsetX=>{const relativeX=mouseX-eyeOffsetX;const relativeY=mouseY;const distance=Math.sqrt(relativeX*relativeX+relativeY*relativeY);if(distance===0)return{x:0,y:0};const clampedDistance=Math.min(distance,maxDistance);const angle=Math.atan2(relativeY,relativeX);return{x:Math.cos(angle)*clampedDistance,y:Math.sin(angle)*clampedDistance};};const leftPos=calculatePupilPosition(leftEyeOffsetX);const rightPos=calculatePupilPosition(rightEyeOffsetX);startTransition(()=>{setLeftPupilPos(leftPos);setRightPupilPos(rightPos);});}};window.addEventListener(\"mousemove\",handleMouseMove);return()=>window.removeEventListener(\"mousemove\",handleMouseMove);},[isStatic,eyeSpacing,eyeSize,maxDistance,eyeCount]);const containerWidth=useMemo(()=>eyeCount===\"one\"?eyeSize:eyeSize*2+eyeSpacing,[eyeCount,eyeSize,eyeSpacing]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,style:{...style,backgroundColor:\"transparent\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:eyeCount===\"two\"?eyeSpacing:0,overflow:\"visible\",position:\"relative\",width:containerWidth,height:eyeSize},children:eyeCount===\"one\"?/*#__PURE__*/_jsx(\"div\",{style:{width:eyeSize,height:eyeSize,borderRadius:\"50%\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(motion.div,{style:{width:eyeSize,height:eyeSize,borderRadius:\"50%\",backgroundColor:eyeColor,position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transformOrigin:\"center\"},animate:{scaleY:isBlinking?.3:1},transition:{duration:.1,ease:\"easeInOut\"},children:/*#__PURE__*/_jsx(motion.div,{style:{width:pupilSize,height:pupilSize,borderRadius:\"50%\",backgroundColor:pupilColor,opacity:isBlinking?0:1},animate:{x:centerPupilPos.x,y:centerPupilPos.y},transition:{type:\"spring\",stiffness:trackingSpeed,damping:20}})})}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{width:eyeSize,height:eyeSize,borderRadius:\"50%\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(motion.div,{style:{width:eyeSize,height:eyeSize,borderRadius:\"50%\",backgroundColor:eyeColor,position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transformOrigin:\"center\"},animate:{scaleY:isBlinking?.3:1},transition:{duration:.1,ease:\"easeInOut\"},children:/*#__PURE__*/_jsx(motion.div,{style:{width:pupilSize,height:pupilSize,borderRadius:\"50%\",backgroundColor:pupilColor,opacity:isBlinking?0:1},animate:{x:leftPupilPos.x,y:leftPupilPos.y},transition:{type:\"spring\",stiffness:trackingSpeed,damping:20}})})}),/*#__PURE__*/_jsx(\"div\",{style:{width:eyeSize,height:eyeSize,borderRadius:\"50%\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(motion.div,{style:{width:eyeSize,height:eyeSize,borderRadius:\"50%\",backgroundColor:eyeColor,position:\"relative\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",transformOrigin:\"center\"},animate:{scaleY:isBlinking?.3:1},transition:{duration:.1,ease:\"easeInOut\"},children:/*#__PURE__*/_jsx(motion.div,{style:{width:pupilSize,height:pupilSize,borderRadius:\"50%\",backgroundColor:pupilColor,opacity:isBlinking?0:1},animate:{x:rightPupilPos.x,y:rightPupilPos.y},transition:{type:\"spring\",stiffness:trackingSpeed,damping:20}})})})]})});}addPropertyControls(FollowEyes,{eyeCount:{type:ControlType.Enum,title:\"Eye Count\",options:[\"one\",\"two\"],optionTitles:[\"One\",\"Two\"],defaultValue:\"two\",displaySegmentedControl:true,description:\"Number of eyes (1 or 2).\"},eyeColor:{type:ControlType.Color,title:\"Eye Color\",defaultValue:\"#FFFFFF\",description:\"Color of the eye background.\"},pupilColor:{type:ControlType.Color,title:\"Pupil Color\",defaultValue:\"#000000\",description:\"Color of the pupil.\"},eyeSize:{type:ControlType.Number,title:\"Eye Size\",defaultValue:120,min:10,max:300,step:1,unit:\"px\",description:\"Overall size of the eye shape in pixels (px).\"},pupilSize:{type:ControlType.Number,title:\"Pupil Size\",defaultValue:40,min:10,max:100,step:1,unit:\"px\",description:\"Size of the pupil inside the eye in pixels (px).\"},eyeSpacing:{type:ControlType.Number,title:\"Eye Gap\",defaultValue:40,min:0,max:200,step:1,unit:\"px\",hidden:({eyeCount})=>eyeCount===\"one\",description:\"Space between the two eyes in pixels (px) when using 2 eyes.\"},trackingSpeed:{type:ControlType.Number,title:\"Speed\",defaultValue:150,min:50,max:500,step:10,unit:\"stiffness\",description:\"How quickly the eyes follow the cursor (higher stiffness = faster, unitless).\"},trackingRange:{type:ControlType.Number,title:\"Range\",defaultValue:80,min:0,max:100,step:5,unit:\"%\",description:\"How far the pupils can move inside the eye as a percentage (%).\"},enableBlinking:{type:ControlType.Boolean,title:\"Blinking\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Turn blinking animation on or off.\"},blinkInterval:{type:ControlType.Number,title:\"Blink Interval\",defaultValue:3e3,min:500,max:1e4,step:100,unit:\"ms\",hidden:({enableBlinking})=>!enableBlinking,description:\"How often the eye blinks in milliseconds (ms).\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FollowEyes\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"200\",\"framerIntrinsicWidth\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FollowEyes_1.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,cx,getFonts,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import CopyEmail from\"https://framerusercontent.com/modules/vaRusbVGqjv3Ywug57xz/x2RTgWMXHvMg5WdVTj8A/CopyEmail.js\";import FollowEyes from\"https://framerusercontent.com/modules/vwL6IwR6scW2vGorjVhu/xbEcvuZzDwPdm6fPSZvh/FollowEyes_1.js\";const FollowEyesFonts=getFonts(FollowEyes);const CopyEmailFonts=getFonts(CopyEmail);const enabledGestures={eraD6zPVm:{hover:true}};const serializationHash=\"framer-cdh3u\";const variantClassNames={eraD6zPVm:\"framer-v-16z1sj8\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.5,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({defaultVariant:\"eraD6zPVm\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if(gestureVariant===\"eraD6zPVm-hover\")return false;return true;};const isDisplayed1=()=>{if(gestureVariant===\"eraD6zPVm-hover\")return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.div,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-16z1sj8\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Variant 1\",layoutDependency:layoutDependency,layoutId:\"eraD6zPVm\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"rgba(255, 255, 255, 0)\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",background:\"linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(246, 246, 246, 0) 100%)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,boxShadow:\"inset 0px 1px 2px 2px rgba(255, 255, 255, 0)\",...style},variants:{\"eraD6zPVm-hover\":{\"--border-color\":\"rgb(255, 255, 255)\",background:\"linear-gradient(180deg, rgba(255, 255, 255, 0.9) 0%, rgb(246, 246, 246) 100%)\",boxShadow:\"inset 0px 1px 2px 2px rgb(255, 255, 255)\"}},...addPropertyOverrides({\"eraD6zPVm-hover\":{\"data-framer-name\":undefined}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-oo8m5i-container\",\"data-code-component-plugin-id\":\"84d4c1\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"IMTNuk6xF-container\",nodeId:\"IMTNuk6xF\",rendersWithMotion:true,scopeId:\"wEW9DTaME\",children:/*#__PURE__*/_jsx(FollowEyes,{blinkInterval:2e3,enableBlinking:false,eyeColor:\"rgb(255, 255, 255)\",eyeCount:\"two\",eyeSize:24,eyeSpacing:4,height:\"100%\",id:\"IMTNuk6xF\",layoutId:\"IMTNuk6xF\",pupilColor:\"rgb(0, 0, 0)\",pupilSize:10,style:{height:\"100%\",width:\"100%\"},trackingRange:80,trackingSpeed:100,width:\"100%\"})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-rweig4-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"mZnJfbBCM-container\",nodeId:\"mZnJfbBCM\",rendersWithMotion:true,scopeId:\"wEW9DTaME\",children:/*#__PURE__*/_jsx(CopyEmail,{background:\"rgb(246, 246, 246)\",border:\"\",color:\"rgb(0, 0, 0)\",copiedBackground:\"rgb(246, 246, 246)\",copiedColor:\"rgb(0, 0, 0)\",copiedLabel:\"Copied\",email:\"jegteixeira@gmail.com\",fontFamily:\"PP Neue Montreal\",fontSize:16,fontWeight:500,height:\"100%\",hold:1600,hoverBackground:\"rgb(236, 236, 236)\",hoverColor:\"rgb(0, 0, 0)\",id:\"mZnJfbBCM\",label:\"Lets Talk\",layoutId:\"mZnJfbBCM\",letterSpacing:-.01,lift:false,padX:20,padY:9,radius:16,width:\"100%\"})})})]})})})});});const css=[\".framer-cdh3u.framer-10peoq0, .framer-cdh3u .framer-10peoq0 { display: block; }\",\".framer-cdh3u.framer-16z1sj8 { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 8px; height: 36px; justify-content: center; overflow: visible; padding: 10px 20px 10px 20px; position: relative; width: 99px; }\",\".framer-cdh3u .framer-oo8m5i-container, .framer-cdh3u .framer-rweig4-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-cdh3u.framer-v-16z1sj8.hover.framer-16z1sj8 { padding: 0px; }\",'.framer-cdh3u[data-border=\"true\"]::after, .framer-cdh3u [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 36\n * @framerIntrinsicWidth 99\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"z9MIuMW6f\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerwEW9DTaME=withCSS(Component,css,\"framer-cdh3u\");export default FramerwEW9DTaME;FramerwEW9DTaME.displayName=\"Navbar_Eyes\";FramerwEW9DTaME.defaultProps={height:36,width:99};addFonts(FramerwEW9DTaME,[{explicitInter:true,fonts:[]},...FollowEyesFonts,...CopyEmailFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerwEW9DTaME\",\"slots\":[],\"annotations\":{\"framerAutoSizeImages\":\"true\",\"framerIntrinsicHeight\":\"36\",\"framerImmutableVariables\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerComponentViewportWidth\":\"true\",\"framerIntrinsicWidth\":\"99\",\"framerColorSyntax\":\"true\",\"framerContractVersion\":\"1\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"z9MIuMW6f\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./wEW9DTaME.map","// Generated by Framer (f0eed09)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const enabledGestures={JKRwIZoXP:{hover:true}};const cycleOrder=[\"JKRwIZoXP\",\"iSFOGdoxS\"];const serializationHash=\"framer-QvBfh\";const variantClassNames={iSFOGdoxS:\"framer-v-1dwxfhy\",JKRwIZoXP:\"framer-v-1nznk33\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const oCTMlv18A=undefined;const RL5unyevY=undefined;const Ik12s442p=undefined;const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Active/Off\":\"JKRwIZoXP\",\"Active/On\":\"iSFOGdoxS\"};const Variants=motion.create(React.Fragment);const getProps=({click,height,hover,id,navLink,width,...props})=>{return{...props,Ik12s442p:navLink??props.Ik12s442p??\"Home\",oCTMlv18A:click??props.oCTMlv18A,RL5unyevY:hover??props.RL5unyevY,variant:humanReadableVariantMap[props.variant]??props.variant??\"JKRwIZoXP\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,Ik12s442p,oCTMlv18A,RL5unyevY,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"JKRwIZoXP\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap6082el=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(oCTMlv18A){const res=await oCTMlv18A(...args);if(res===false)return false;}});const onMouseEnterm4h9hs=activeVariantCallback(async(...args)=>{setGestureState({isHovered:true});if(RL5unyevY){const res=await RL5unyevY(...args);if(res===false)return false;}});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:{webPageId:\"augiA20Il\"},motionChild:true,nodeId:\"JKRwIZoXP\",openInNewTab:false,scopeId:\"xF4HQVRlJ\",children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-1nznk33\",className,classNames)} framer-fyulhe`,\"data-framer-name\":\"Active/Off\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"JKRwIZoXP\",onMouseEnter:onMouseEnterm4h9hs,onTap:onTap6082el,ref:refBinding,style:{...style},...addPropertyOverrides({\"JKRwIZoXP-hover\":{\"data-framer-name\":undefined},iSFOGdoxS:{\"data-framer-name\":\"Active/On\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-mw5nnq\",\"data-framer-name\":\"Bg\",layoutDependency:layoutDependency,layoutId:\"WyCMaysxA\",style:{backgroundColor:\"rgb(15, 15, 15)\",opacity:0}}),/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)))\"},children:\"Home\"})}),className:\"framer-6vurw7\",\"data-framer-name\":\"Nav Link\",fonts:[\"CUSTOMV2;PP Neue Montreal Medium\"],layoutDependency:layoutDependency,layoutId:\"NBgWm70I2\",style:{\"--extracted-r6o4lv\":\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255))\",\"--framer-paragraph-spacing\":\"0px\"},text:Ik12s442p,variants:{\"JKRwIZoXP-hover\":{\"--extracted-r6o4lv\":\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0))\"},iSFOGdoxS:{\"--extracted-r6o4lv\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\"}},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({\"JKRwIZoXP-hover\":{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0)))\"},children:\"Home\"})})},iSFOGdoxS:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBNZWRpdW0=\",\"--framer-font-family\":'\"PP Neue Montreal Medium\", \"PP Neue Montreal Medium Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 1)\",\"--framer-font-weight\":\"500\",\"--framer-letter-spacing\":\"-0.01em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--extracted-r6o4lv, var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24)))\"},children:\"Home\"})})}},baseVariant,gestureVariant)})]})})})})});});const css=[\".framer-QvBfh.framer-fyulhe, .framer-QvBfh .framer-fyulhe { display: block; }\",\".framer-QvBfh.framer-1nznk33 { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 8px 6px 10px 6px; position: relative; text-decoration: none; width: min-content; }\",\".framer-QvBfh .framer-mw5nnq { flex: none; height: 101%; left: calc(50.46728971962619% - 100% / 2); overflow: var(--overflow-clip-fallback, clip); position: absolute; top: calc(50.00000000000002% - 101.47058823529412% / 2); width: 100%; z-index: 0; }\",\".framer-QvBfh .framer-6vurw7 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-QvBfh.framer-v-1dwxfhy .framer-mw5nnq { order: 0; }\",\".framer-QvBfh.framer-v-1dwxfhy .framer-6vurw7 { order: 1; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 34\n * @framerIntrinsicWidth 53\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"auto\"]},\"iSFOGdoxS\":{\"layout\":[\"auto\",\"auto\"]},\"ympgdEYBL\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerVariables {\"Ik12s442p\":\"navLink\",\"oCTMlv18A\":\"click\",\"RL5unyevY\":\"hover\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerxF4HQVRlJ=withCSS(Component,css,\"framer-QvBfh\");export default FramerxF4HQVRlJ;FramerxF4HQVRlJ.displayName=\"Nav_Link\";FramerxF4HQVRlJ.defaultProps={height:34,width:53};addPropertyControls(FramerxF4HQVRlJ,{variant:{options:[\"JKRwIZoXP\",\"iSFOGdoxS\"],optionTitles:[\"Active/Off\",\"Active/On\"],title:\"Variant\",type:ControlType.Enum},Ik12s442p:{defaultValue:\"Home\",displayTextArea:false,title:\"Nav Link\",type:ControlType.String},onIk12s442pChange:{changes:\"Ik12s442p\",type:ControlType.ChangeHandler},oCTMlv18A:{title:\"Click\",type:ControlType.EventHandler},RL5unyevY:{title:\"Hover\",type:ControlType.EventHandler}});addFonts(FramerxF4HQVRlJ,[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Medium\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/pHqdIssKCkNqLTgOZyE3GS4X8I.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerxF4HQVRlJ\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"34\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"iSFOGdoxS\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"ympgdEYBL\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerVariables\":\"{\\\"Ik12s442p\\\":\\\"navLink\\\",\\\"oCTMlv18A\\\":\\\"click\\\",\\\"RL5unyevY\\\":\\\"hover\\\"}\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"53\",\"framerColorSyntax\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./xF4HQVRlJ.map","// Generated by Framer (835d061)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getLoadingLazyAtYPosition,Image as Image1,Link,RichText,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const enabledGestures={AcuhFri0c:{hover:true},YrCDBTUyC:{hover:true}};const cycleOrder=[\"YrCDBTUyC\",\"AcuhFri0c\",\"sFJ5iYtDE\",\"HBgX8vDOe\"];const serializationHash=\"framer-zhw3G\";const variantClassNames={AcuhFri0c:\"framer-v-11htpj4\",HBgX8vDOe:\"framer-v-y6tejm\",sFJ5iYtDE:\"framer-v-wk04fv\",YrCDBTUyC:\"framer-v-uifrk7\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const u47yG9YxT=undefined;const qaEo9bUEX=undefined;const EfKa49HDR=undefined;const transition1={delay:0,duration:.5,ease:[.12,.23,.5,1],type:\"tween\"};const transformTemplate1=(_,t)=>`translate(-50%, -50%) ${t}`;const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Mobile default\":\"sFJ5iYtDE\",\"Mobile open\":\"HBgX8vDOe\",Colorful:\"AcuhFri0c\",Simple:\"YrCDBTUyC\"};const Variants=motion.create(React.Fragment);const getProps=({buttonText,click,height,id,link,width,...props})=>{return{...props,EfKa49HDR:buttonText??props.EfKa49HDR??\"Explore platform\",qaEo9bUEX:link??props.qaEo9bUEX,u47yG9YxT:click??props.u47yG9YxT,variant:humanReadableVariantMap[props.variant]??props.variant??\"YrCDBTUyC\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,EfKa49HDR,u47yG9YxT,qaEo9bUEX,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"YrCDBTUyC\",enabledGestures,ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const onTap15tfioe=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(u47yG9YxT){const res=await u47yG9YxT(...args);if(res===false)return false;}});const onTap9er0ap=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(u47yG9YxT){const res=await u47yG9YxT(...args);if(res===false)return false;}setVariant(\"HBgX8vDOe\");});const onTap1d9myyr=activeVariantCallback(async(...args)=>{setGestureState({isPressed:false});if(u47yG9YxT){const res=await u47yG9YxT(...args);if(res===false)return false;}setVariant(\"sFJ5iYtDE\");});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"sFJ5iYtDE\",\"HBgX8vDOe\"].includes(baseVariant))return false;return true;};const isDisplayed1=()=>{if([\"sFJ5iYtDE\",\"HBgX8vDOe\"].includes(baseVariant))return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(Link,{href:qaEo9bUEX,motionChild:true,nodeId:\"YrCDBTUyC\",openInNewTab:false,scopeId:\"xZuxTX1Ym\",smoothScroll:true,children:/*#__PURE__*/_jsxs(motion.a,{...restProps,...gestureHandlers,className:`${cx(scopingClassNames,\"framer-uifrk7\",className,classNames)} framer-xylgbt`,\"data-border\":true,\"data-framer-name\":\"Simple\",\"data-highlight\":true,layoutDependency:layoutDependency,layoutId:\"YrCDBTUyC\",onTap:onTap15tfioe,ref:refBinding,style:{\"--border-bottom-width\":\"0.5px\",\"--border-color\":\"rgba(255, 255, 255, 0.12)\",\"--border-left-width\":\"0.5px\",\"--border-right-width\":\"0.5px\",\"--border-style\":\"solid\",\"--border-top-width\":\"0.5px\",backdropFilter:\"blur(5px)\",backgroundColor:\"rgba(255, 255, 255, 0.03)\",borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,boxShadow:\"none\",WebkitBackdropFilter:\"blur(5px)\",...style},variants:{\"AcuhFri0c-hover\":{boxShadow:\"0px 1px 3px 0px rgba(192, 255, 105, 0.68)\"},\"YrCDBTUyC-hover\":{\"--border-color\":\"rgba(255, 255, 255, 0.25)\",boxShadow:\"none\"},AcuhFri0c:{\"--border-color\":\"rgb(213, 255, 153)\",boxShadow:\"0px 0px 2px 0px rgba(0, 0, 0, 0.25)\"},HBgX8vDOe:{boxShadow:\"none\"},sFJ5iYtDE:{boxShadow:\"none\"}},...addPropertyOverrides({\"AcuhFri0c-hover\":{\"data-framer-name\":undefined},\"YrCDBTUyC-hover\":{\"data-framer-name\":undefined},AcuhFri0c:{\"data-framer-name\":\"Colorful\"},HBgX8vDOe:{\"data-framer-name\":\"Mobile open\",onTap:onTap1d9myyr},sFJ5iYtDE:{\"data-framer-name\":\"Mobile default\",onTap:onTap9er0ap}},baseVariant,gestureVariant),children:[isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"RlM7U3dpdHplci1tZWRpdW0=\",\"--framer-font-family\":'\"Switzer\", \"Switzer Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(255, 255, 255))\"},children:\"Explore platform\"})}),className:\"framer-y3bm25\",\"data-framer-name\":\"Explore platform\",fonts:[\"FS;Switzer-medium\"],layoutDependency:layoutDependency,layoutId:\"Fg2gyajNv\",style:{\"--extracted-r6o4lv\":\"rgb(255, 255, 255)\",\"--framer-paragraph-spacing\":\"0px\"},text:EfKa49HDR,variants:{AcuhFri0c:{\"--extracted-r6o4lv\":\"rgb(213, 255, 153)\"}},verticalAlignment:\"center\",withExternalLayout:true,...addPropertyOverrides({AcuhFri0c:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{style:{\"--font-selector\":\"RlM7U3dpdHplci1tZWRpdW0=\",\"--framer-font-family\":'\"Switzer\", \"Switzer Placeholder\", sans-serif',\"--framer-font-weight\":\"500\",\"--framer-text-color\":\"var(--extracted-r6o4lv, rgb(213, 255, 153))\"},children:\"Explore platform\"})})}},baseVariant,gestureVariant)}),isDisplayed1()&&/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",pixelHeight:24,pixelWidth:24,src:\"https://framerusercontent.com/images/HNXrh8mPygrQFk8Bdju0QF8yrA.svg?width=24&height=24\"},className:\"framer-7s074r\",layoutDependency:layoutDependency,layoutId:\"UhZYr4fLr\",style:{rotate:0},transformTemplate:transformTemplate1,variants:{HBgX8vDOe:{rotate:45}},...addPropertyOverrides({HBgX8vDOe:{background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+((componentViewport?.height||45)*.5111111111111113-10)),pixelHeight:14,pixelWidth:14,sizes:\"18px\",src:\"https://framerusercontent.com/images/X2xFDoR9B4IjcQS1ZOBdelCA.svg?width=14&height=14\"}},sFJ5iYtDE:{background:{alt:\"\",fit:\"fill\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+((componentViewport?.height||45)*.5111111111111113-9)),pixelHeight:14,pixelWidth:14,sizes:\"16px\",src:\"https://framerusercontent.com/images/X2xFDoR9B4IjcQS1ZOBdelCA.svg?width=14&height=14\"}}},baseVariant,gestureVariant)})]})})})})});});const css=[\".framer-zhw3G.framer-xylgbt, .framer-zhw3G .framer-xylgbt { display: block; }\",\".framer-zhw3G.framer-uifrk7 { align-content: center; align-items: center; cursor: pointer; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: 45px; justify-content: flex-start; overflow: visible; padding: 8px 16px 8px 16px; position: relative; text-decoration: none; width: min-content; }\",\".framer-zhw3G .framer-y3bm25 { flex: none; height: auto; position: relative; white-space: pre; width: auto; }\",\".framer-zhw3G .framer-7s074r { aspect-ratio: 1 / 1; flex: none; height: auto; left: 50%; overflow: var(--overflow-clip-fallback, clip); pointer-events: none; position: absolute; top: 51%; width: 24px; will-change: var(--framer-will-change-filter-override, filter); z-index: 1; }\",\".framer-zhw3G.framer-v-wk04fv.framer-uifrk7, .framer-zhw3G.framer-v-y6tejm.framer-uifrk7 { width: 48px; }\",\".framer-zhw3G.framer-v-wk04fv .framer-7s074r { width: 16px; }\",\".framer-zhw3G.framer-v-y6tejm .framer-7s074r { width: 18px; }\",'.framer-zhw3G[data-border=\"true\"]::after, .framer-zhw3G [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 45\n * @framerIntrinsicWidth 152\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"auto\",\"fixed\"]},\"AcuhFri0c\":{\"layout\":[\"auto\",\"fixed\"]},\"sFJ5iYtDE\":{\"layout\":[\"fixed\",\"fixed\"]},\"HBgX8vDOe\":{\"layout\":[\"fixed\",\"fixed\"]},\"qhcOYvkFJ\":{\"layout\":[\"auto\",\"fixed\"]},\"BrBqSmJwq\":{\"layout\":[\"auto\",\"fixed\"]}}}\n * @framerVariables {\"EfKa49HDR\":\"buttonText\",\"u47yG9YxT\":\"click\",\"qaEo9bUEX\":\"link\"}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerxZuxTX1Ym=withCSS(Component,css,\"framer-zhw3G\");export default FramerxZuxTX1Ym;FramerxZuxTX1Ym.displayName=\"Button\";FramerxZuxTX1Ym.defaultProps={height:45,width:152};addPropertyControls(FramerxZuxTX1Ym,{variant:{options:[\"YrCDBTUyC\",\"AcuhFri0c\",\"sFJ5iYtDE\",\"HBgX8vDOe\"],optionTitles:[\"Simple\",\"Colorful\",\"Mobile default\",\"Mobile open\"],title:\"Variant\",type:ControlType.Enum},EfKa49HDR:{defaultValue:\"Explore platform\",displayTextArea:false,placeholder:\"Button\",title:\"Button Text\",type:ControlType.String},onEfKa49HDRChange:{changes:\"EfKa49HDR\",type:ControlType.ChangeHandler},u47yG9YxT:{title:\"Click\",type:ControlType.EventHandler},qaEo9bUEX:{title:\"Link\",type:ControlType.Link}});addFonts(FramerxZuxTX1Ym,[{explicitInter:true,fonts:[{cssFamilyName:\"Switzer\",source:\"fontshare\",style:\"normal\",uiFamilyName:\"Switzer\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/OYB4CXKJQXKTNSLJMTDQOIVUL2V5EL7S/WYO2P7DQVV5RNXGMCUO2HL4RJP4VFUAS/6XPIMU23OJVRY676OG5YVJMWEHWICATX.woff2\",weight:\"500\"}]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerxZuxTX1Ym\",\"slots\":[],\"annotations\":{\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"AcuhFri0c\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"sFJ5iYtDE\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"HBgX8vDOe\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"qhcOYvkFJ\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]},\\\"BrBqSmJwq\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"fixed\\\"]}}}\",\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"45\",\"framerIntrinsicWidth\":\"152\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerVariables\":\"{\\\"EfKa49HDR\\\":\\\"buttonText\\\",\\\"u47yG9YxT\\\":\\\"click\\\",\\\"qaEo9bUEX\\\":\\\"link\\\"}\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./xZuxTX1Ym.map","// Generated by Framer (ddc5e5f)\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,Floating,forwardLoader,getFonts,getLoadingLazyAtYPosition,Image as Image1,Link,ResolveLinks,runTasksWithYield,SmartComponentScopedContainer,SVG,useActiveVariantCallback,useComponentViewport,useLocaleInfo,useOverlayState,useRouter,useVariantState,withCodeBoundaryForOverrides,withCSS,withFX,withMappedReactProps,withOptimizedAppearEffect}from\"framer\";import{AnimatePresence,LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import GooeyEffect from\"https://framerusercontent.com/modules/F4MfArLyripoeG7R4oNS/S5zw6PeyO8cUQIM98bdg/Gooey_Prod.js\";import{NeonGlow as NeonGlow1}from\"https://framerusercontent.com/modules/qASPtlF0hiJ1sCO4vARn/mSUyjDLk1ZwRj2FeOHSp/Glow.js\";import NeonGlow from\"https://framerusercontent.com/modules/GHwHT69casAsAJCijBP3/XZ7UsWcsT12G0xoelo9b/NeonGlow.js\";import{openAbout,openCase01,openCase02,openCase03}from\"https://framerusercontent.com/modules/zqgIQBXawqypSbToMYTz/YvFAycqftQJTi25KMR95/WindowTriggers.js\";import NavLinks from\"https://framerusercontent.com/modules/l96pCBPgyHG38DdSpB01/Azoh8hpkyUCEgUt8GaU8/tXQFbbVGV.js\";import NavLink,*as NavLinkInfo from\"https://framerusercontent.com/modules/9fT3ZordlLGGPLs3y5v6/EMnCbwtnYs5I8qtf18yT/UMtXt1P8M.js\";import Navbar_Eyes from\"https://framerusercontent.com/modules/Hjjvw6e2akREX2nac6G8/NYHQrT74oHQS87lrzWfO/wEW9DTaME.js\";import Nav_Link,*as Nav_LinkInfo from\"https://framerusercontent.com/modules/ZlD6OiHUJhi1WRkfM2El/fvLyGN35H6a4OO8XWbIa/xF4HQVRlJ.js\";import Button from\"https://framerusercontent.com/modules/sayZQIzKqySm3EDFnwWZ/2pm5HzmqAoDzy0yY8G2O/xZuxTX1Ym.js\";const Nav_LinkFonts=getFonts(Nav_Link);const Nav_LinkOpenAbout19pjjavWithMappedReactPropsvc7krn=withMappedReactProps(withCodeBoundaryForOverrides(Nav_Link,{nodeId:\"Ljkj7FvO9\",override:openAbout,scopeId:\"T43_9icFM\"}),Nav_LinkInfo);const NavLinksFonts=getFonts(NavLinks);const MotionDivWithFX=withFX(motion.div);const Navbar_EyesFonts=getFonts(Navbar_Eyes);const NeonGlowFonts=getFonts(NeonGlow);const GooeyEffectFonts=getFonts(GooeyEffect);const ButtonFonts=getFonts(Button);const NeonGlow1Fonts=getFonts(NeonGlow1);const NavLinkFonts=getFonts(NavLink);const NavLinkOpenAbout1542enyWithMappedReactProps1xpi3x1=withMappedReactProps(withCodeBoundaryForOverrides(NavLink,{nodeId:\"vWRDo42Fl\",override:openAbout,scopeId:\"T43_9icFM\"}),NavLinkInfo);const SmartComponentScopedContainerWithFXWithOptimizedAppearEffect=withOptimizedAppearEffect(withFX(SmartComponentScopedContainer));const NavLinkOpenCase02top84fWithMappedReactProps1xpi3x1=withMappedReactProps(withCodeBoundaryForOverrides(NavLink,{nodeId:\"nWecyE5KF\",override:openCase02,scopeId:\"T43_9icFM\"}),NavLinkInfo);const NavLinkOpenCase0111ddvlWithMappedReactProps1xpi3x1=withMappedReactProps(withCodeBoundaryForOverrides(NavLink,{nodeId:\"fP_gGosKK\",override:openCase01,scopeId:\"T43_9icFM\"}),NavLinkInfo);const NavLinkOpenCase031j0gdblWithMappedReactProps1xpi3x1=withMappedReactProps(withCodeBoundaryForOverrides(NavLink,{nodeId:\"Pe0i5UZvv\",override:openCase03,scopeId:\"T43_9icFM\"}),NavLinkInfo);const MotionDivWithFXWithOptimizedAppearEffect=withOptimizedAppearEffect(withFX(motion.div));const cycleOrder=[\"ZipXYqhyk\",\"sxd_bZuVW\",\"SBKfk7nih\"];const serializationHash=\"framer-hrkOT\";const variantClassNames={SBKfk7nih:\"framer-v-1gcs4mb\",sxd_bZuVW:\"framer-v-6e22od\",ZipXYqhyk:\"framer-v-rrqfvu\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const transition2={damping:50,delay:0,mass:1,stiffness:400,type:\"spring\"};const animation={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:10};const animation1={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition2,x:0,y:0};const animation2={opacity:0,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:10};const Overlay=({children,blockDocumentScrolling,dismissWithEsc,enabled=true})=>{const[visible,setVisible]=useOverlayState({blockDocumentScrolling,dismissWithEsc:enabled&&dismissWithEsc});return children({hide:()=>setVisible(false),show:()=>setVisible(true),toggle:()=>setVisible(!visible),visible:enabled&&visible});};const transformTemplate1=(_,t)=>`translateX(-50%) ${t}`;const animation3={opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,transition:transition1,x:0,y:0};const animation4={opacity:.001,rotate:0,rotateX:0,rotateY:0,scale:1,skewX:0,skewY:0,x:0,y:50};const transition3={bounce:.2,delay:0,duration:.7,type:\"spring\"};const animation5={boxShadow:\"0px 0px 7px 0px rgba(27, 250, 168, 0.66)\",opacity:1,rotate:0,rotateX:0,rotateY:0,scale:1.1,skewX:0,skewY:0,transition:transition3};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Navbar Mobile Closed\":\"sxd_bZuVW\",\"Navbar Mobile Open\":\"SBKfk7nih\",Navbar:\"ZipXYqhyk\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"ZipXYqhyk\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"ZipXYqhyk\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const{activeVariantCallback,delay}=useActiveVariantCallback(baseVariant);const RL5unyevY13elrgn=({overlay})=>activeVariantCallback(async(...args)=>{overlay.show();});const wuLdb6Nqc5tndg9=activeVariantCallback(async(...args)=>{setVariant(\"MkWQraWsL\");});const dd5SLnKuA1jpzmz0=activeVariantCallback(async(...args)=>{setVariant(\"opxkxbymW\");});const zV0qUSgG_1ard5wc=activeVariantCallback(async(...args)=>{setVariant(\"LhKE4IFaB\");});const u47yG9YxT1l58jnt=activeVariantCallback(async(...args)=>{setVariant(\"Am1Vn5iBY\");});const u47yG9YxTh40bv2=activeVariantCallback(async(...args)=>{setVariant(\"SBKfk7nih\");});const u47yG9YxT1wgdra3=activeVariantCallback(async(...args)=>{setVariant(\"sxd_bZuVW\");});const D2_q81no85tndg9=activeVariantCallback(async(...args)=>{setVariant(\"MkWQraWsL\");});const D2_q81no81ard5wc=activeVariantCallback(async(...args)=>{setVariant(\"LhKE4IFaB\");});const D2_q81no81dsqn93=activeVariantCallback(async(...args)=>{setVariant(\"ggtFZHd3Y\");});const D2_q81no813bspmj=activeVariantCallback(async(...args)=>{setVariant(\"RwvjGu7m6\");});const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"sxd_bZuVW\",\"SBKfk7nih\"].includes(baseVariant))return false;return true;};const ref1=React.useRef(null);const ref2=React.useRef(null);const isDisplayed1=()=>{if([\"sxd_bZuVW\",\"SBKfk7nih\"].includes(baseVariant))return true;return false;};const isDisplayed2=()=>{if(baseVariant===\"SBKfk7nih\")return true;return false;};const router=useRouter();return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.nav,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-rrqfvu\",className,classNames),\"data-framer-name\":\"Navbar\",layoutDependency:layoutDependency,layoutId:\"ZipXYqhyk\",ref:refBinding,style:{backdropFilter:\"blur(4px)\",backgroundColor:\"var(--token-dc0db41a-9245-42c9-8f2f-326fb383acd3, rgb(0, 0, 0))\",borderBottomLeftRadius:18,borderBottomRightRadius:18,borderTopLeftRadius:18,borderTopRightRadius:18,boxShadow:\"0px 6.8333px 12.6667px 0px rgba(0, 0, 0, 0.2)\",WebkitBackdropFilter:\"blur(4px)\",...style},...addPropertyOverrides({SBKfk7nih:{\"data-framer-name\":\"Navbar Mobile Open\"},sxd_bZuVW:{\"data-framer-name\":\"Navbar Mobile Closed\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(Link,{href:{webPageId:\"augiA20Il\"},motionChild:true,nodeId:\"VaobxO7Ea\",openInNewTab:false,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-107891e framer-n79cfn\",\"data-framer-name\":\"Logo\",layoutDependency:layoutDependency,layoutId:\"VaobxO7Ea\",children:/*#__PURE__*/_jsxs(SVG,{className:\"framer-1d1fbd4\",\"data-framer-name\":\"Logo\",layoutDependency:layoutDependency,layoutId:\"h5pHAPpbv\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 79.003 16\" overflow=\"visible\"><g><path d=\"M 0.003 0 L 79.003 0 L 79.003 16 L 0.003 16 Z\" fill=\"transparent\"></path><path d=\"M 0.746 12.824 C 2.632 12.607 4.321 13.234 5.434 11.233 C 5.979 10.285 6.305 8.996 6.749 7.449 C 7.16 6.011 7.608 4.358 8.039 2.911 C 8.236 2.284 8.481 1.633 8.923 1.179 C 9.9 0.164 11.197 0.755 11.079 2.469 C 10.93 3.805 10.429 5.086 10.09 6.419 C 9.285 8.951 8.952 11.57 7.362 13.706 C 6.003 15.527 3.807 16.262 1.669 15.38 C 0.631 15.087 -0.928 13.251 0.719 12.827 L 0.744 12.821 L 0.746 12.823 Z M 32.523 4.618 C 33.409 4.206 33.795 4.533 34.026 5.394 C 34.331 6.704 34.166 8.156 34.208 9.542 L 34.208 11.614 C 34.187 13.107 34.288 14.111 33.904 15.03 C 33.15 16.73 31.905 14.589 30.613 15.059 C 29.71 15.284 28.5 15.965 27.418 15.971 C 25.31 16.12 23.231 14.893 22.359 12.963 C 20.261 8.5 23.409 2.878 28.653 4.279 C 30.078 4.757 31.16 5.279 32.504 4.629 L 32.524 4.62 Z M 31.538 10.01 C 31.575 7.235 28.55 5.54 26.136 6.745 C 23.472 7.993 23.52 12.172 26.21 13.36 C 28.624 14.504 31.575 12.787 31.538 10.05 L 31.538 10.008 Z M 34.835 10.008 C 34.812 5.123 40.158 2.64 44.201 4.891 C 47.926 6.907 48.087 12.725 44.515 14.974 C 40.491 17.529 34.806 15.09 34.835 10.049 Z M 44.668 10.002 C 44.705 7.227 41.672 5.493 39.258 6.743 C 36.623 8.03 36.688 12.164 39.368 13.36 C 41.775 14.512 44.703 12.762 44.666 10.043 L 44.666 10.002 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path><path d=\"M 49.331 15.507 C 48.687 15.152 48.513 13.912 48.552 12.993 C 48.546 10.697 48.559 7.028 48.546 4.901 C 48.526 4.287 48.526 3.602 48.158 3.12 C 47.908 2.791 47.495 2.623 47.018 2.503 C 46.345 2.338 45.513 2.119 44.931 1.738 C 44.365 1.405 44.161 0.85 44.791 0.484 C 46.093 -0.244 48.143 0.097 49.927 0.016 C 51.432 0.112 54.391 -0.337 55.355 0.743 C 55.873 1.601 54.098 2.153 53.437 2.35 C 51.725 2.706 51.322 3.19 51.333 4.943 C 51.32 7.062 51.333 10.663 51.327 12.948 C 51.32 13.523 51.317 14.146 51.137 14.665 C 50.897 15.45 50.077 15.99 49.351 15.518 L 49.334 15.505 L 49.33 15.507 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path><path d=\"M 64.123 9.896 C 63.207 11.479 58.732 10.61 57.171 10.986 C 56.762 11.053 56.31 11.146 56.015 11.415 C 55.49 11.843 56.184 12.681 56.875 13.027 C 58.177 13.83 59.855 13.498 61.249 13.085 C 62.284 12.822 63.556 12.466 63.297 13.604 C 63.033 14.436 62.007 15.073 61.181 15.427 C 56.686 17.272 51.941 14.077 52.653 9.102 C 53.256 3.997 60.041 2.22 63.141 6.147 C 63.929 7.277 64.654 8.719 64.138 9.876 L 64.125 9.898 Z M 55.283 8.44 C 55.772 9.37 60.203 9.197 61.188 8.816 C 62.898 8.104 60.686 6.472 59.076 6.311 C 58.091 6.189 57.094 6.407 56.251 6.929 C 55.729 7.26 55.024 7.846 55.272 8.419 L 55.282 8.438 L 55.282 8.44 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path><path d=\"M 75.949 4.513 C 76.414 6.311 71.737 8.393 73.062 10.846 C 73.492 12.086 76.723 14.628 75.889 15.638 C 75.09 16.091 73.531 15.075 72.775 14.525 C 70.337 12.515 70.56 11.221 68.193 13.906 C 67.477 14.651 65.276 16.232 64.388 15.617 C 63.783 14.697 65.98 12.832 66.531 12.019 C 69.221 8.976 65.231 7.521 64.315 5.055 C 63.987 3.425 66.713 4.891 67.343 5.367 C 68.433 6.107 69.085 7.082 69.723 7.36 C 70.345 7.662 70.898 7.165 71.343 6.745 C 71.794 6.307 72.255 5.839 72.804 5.45 C 73.524 4.953 75.313 3.86 75.941 4.5 L 75.949 4.515 Z M 14.878 4.051 C 11.728 3.915 11.102 6.313 10.408 8.907 C 9.958 10.672 9.148 12.64 10.418 14.181 C 13.194 17.258 19.194 16.248 20.724 12.363 C 22.414 8.163 19.38 4.053 14.92 4.051 Z M 14.866 13.716 C 12.368 13.743 10.643 11.226 11.399 8.88 C 12.384 5.54 17.331 5.512 18.393 8.808 C 19.217 11.181 17.445 13.758 14.909 13.716 Z M 77.298 13.65 C 77.713 13.606 78.132 13.607 78.548 13.654 C 78.921 13.728 79.024 14.124 78.999 14.459 C 78.993 14.732 79.022 15.057 78.966 15.313 C 78.791 15.927 78.01 15.713 77.525 15.745 C 77.072 15.765 76.81 15.448 76.837 15.009 C 76.857 14.543 76.689 13.803 77.279 13.654 L 77.296 13.649 L 77.298 13.649 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path></g></svg>',withExternalLayout:true,children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-pefu19\",layoutDependency:layoutDependency,layoutId:\"T9orvz5bz\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 79 16\" overflow=\"visible\"><path d=\"M 0 0 L 79 0 L 79 16 L 0 16 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsxs(SVG,{className:\"framer-zxlozm\",layoutDependency:layoutDependency,layoutId:\"TXzzgapHg\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 47.097 15.317\" overflow=\"visible\"><path d=\"M 0.746 12.143 C 2.632 11.926 4.321 12.553 5.434 10.552 C 5.979 9.604 6.305 8.315 6.749 6.768 C 7.16 5.33 7.608 3.677 8.039 2.23 C 8.236 1.603 8.481 0.952 8.923 0.498 C 9.9 -0.517 11.197 0.074 11.079 1.788 C 10.93 3.124 10.429 4.405 10.09 5.738 C 9.285 8.27 8.952 10.889 7.362 13.025 C 6.003 14.846 3.807 15.581 1.669 14.699 C 0.631 14.406 -0.928 12.57 0.719 12.146 L 0.744 12.14 L 0.746 12.142 Z M 32.523 3.937 C 33.409 3.525 33.795 3.852 34.026 4.713 C 34.331 6.023 34.166 7.475 34.208 8.861 L 34.208 10.933 C 34.187 12.426 34.288 13.43 33.904 14.349 C 33.15 16.049 31.905 13.908 30.613 14.378 C 29.71 14.603 28.5 15.284 27.418 15.29 C 25.31 15.439 23.231 14.212 22.359 12.282 C 20.261 7.819 23.409 2.197 28.653 3.598 C 30.078 4.076 31.16 4.598 32.504 3.948 L 32.524 3.939 Z M 31.538 9.329 C 31.575 6.554 28.55 4.859 26.136 6.064 C 23.472 7.312 23.52 11.491 26.21 12.679 C 28.624 13.823 31.575 12.106 31.538 9.369 L 31.538 9.327 Z M 34.835 9.327 C 34.812 4.442 40.158 1.959 44.201 4.21 C 47.926 6.226 48.087 12.044 44.515 14.293 C 40.491 16.848 34.806 14.409 34.835 9.368 Z M 44.668 9.321 C 44.705 6.546 41.672 4.812 39.258 6.062 C 36.623 7.349 36.688 11.483 39.368 12.679 C 41.775 13.831 44.703 12.081 44.666 9.362 L 44.666 9.321 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path></svg>',withExternalLayout:true,children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-dcsi8\",layoutDependency:layoutDependency,layoutId:\"DBwEisdVs\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.086 15.071\" overflow=\"visible\"><path d=\"M 0.746 12.143 C 2.632 11.926 4.321 12.553 5.434 10.552 C 5.979 9.604 6.305 8.315 6.749 6.768 C 7.16 5.33 7.608 3.677 8.039 2.23 C 8.236 1.603 8.481 0.952 8.923 0.498 C 9.9 -0.517 11.197 0.074 11.079 1.788 C 10.93 3.124 10.429 4.405 10.09 5.738 C 9.285 8.27 8.952 10.889 7.362 13.025 C 6.003 14.846 3.807 15.581 1.669 14.699 C 0.631 14.406 -0.928 12.57 0.719 12.146 L 0.744 12.14 L 0.746 12.142 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-uc7a8x\",layoutDependency:layoutDependency,layoutId:\"By14rzsXv\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 12.514 11.923\" overflow=\"visible\"><path d=\"M 10.821 0.558 C 11.707 0.146 12.093 0.473 12.324 1.334 C 12.629 2.644 12.464 4.096 12.506 5.482 L 12.506 7.554 C 12.485 9.047 12.586 10.051 12.202 10.97 C 11.448 12.67 10.203 10.529 8.911 10.999 C 8.008 11.224 6.798 11.905 5.716 11.911 C 3.608 12.06 1.529 10.833 0.657 8.903 C -1.441 4.44 1.707 -1.182 6.951 0.219 C 8.376 0.697 9.458 1.219 10.802 0.569 L 10.822 0.56 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1p0npfl\",layoutDependency:layoutDependency,layoutId:\"emMFuc887\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 7.373 7.368\" overflow=\"visible\"><path d=\"M 7.373 3.659 C 7.41 0.884 4.385 -0.811 1.971 0.394 C -0.693 1.642 -0.645 5.821 2.045 7.009 C 4.459 8.153 7.41 6.436 7.373 3.699 L 7.373 3.657 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-2kfh0s\",layoutDependency:layoutDependency,layoutId:\"KzHaKC_1J\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 12.262 11.945\" overflow=\"visible\"><path d=\"M 0 5.954 C -0.023 1.069 5.323 -1.414 9.366 0.837 C 13.091 2.853 13.252 8.671 9.68 10.92 C 5.656 13.475 -0.029 11.036 0 5.995 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-hvv3x9\",layoutDependency:layoutDependency,layoutId:\"s9t3AgZAt\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 7.349 7.39\" overflow=\"visible\"><path d=\"M 7.349 3.672 C 7.386 0.897 4.353 -0.837 1.939 0.413 C -0.696 1.7 -0.631 5.834 2.049 7.03 C 4.456 8.182 7.384 6.432 7.347 3.713 L 7.347 3.672 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true})]}),/*#__PURE__*/_jsx(SVG,{className:\"framer-qj3uti\",layoutDependency:layoutDependency,layoutId:\"Fko1y9JyB\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.045 15.692\" overflow=\"visible\"><path d=\"M 4.928 15.505 C 4.284 15.15 4.11 13.91 4.149 12.991 C 4.143 10.695 4.156 7.026 4.143 4.899 C 4.123 4.285 4.123 3.6 3.755 3.118 C 3.505 2.789 3.092 2.621 2.615 2.501 C 1.942 2.336 1.11 2.117 0.528 1.736 C -0.038 1.403 -0.242 0.848 0.388 0.482 C 1.69 -0.246 3.74 0.095 5.524 0.014 C 7.029 0.11 9.988 -0.339 10.952 0.741 C 11.47 1.599 9.695 2.151 9.034 2.348 C 7.322 2.704 6.919 3.188 6.93 4.941 C 6.917 7.06 6.93 10.661 6.924 12.946 C 6.917 13.521 6.914 14.144 6.734 14.663 C 6.494 15.448 5.674 15.988 4.948 15.516 L 4.931 15.503 L 4.927 15.505 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsxs(SVG,{className:\"framer-1csf92f\",layoutDependency:layoutDependency,layoutId:\"ANpWps1Bv\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.73 11.945\" overflow=\"visible\"><path d=\"M 11.541 5.886 C 10.625 7.469 6.15 6.6 4.589 6.976 C 4.18 7.043 3.728 7.136 3.433 7.405 C 2.908 7.833 3.602 8.671 4.293 9.017 C 5.595 9.82 7.273 9.488 8.667 9.075 C 9.702 8.812 10.974 8.456 10.715 9.594 C 10.451 10.426 9.425 11.063 8.599 11.417 C 4.104 13.262 -0.641 10.067 0.071 5.092 C 0.674 -0.013 7.459 -1.79 10.559 2.137 C 11.347 3.267 12.072 4.709 11.556 5.866 L 11.543 5.888 Z M 2.701 4.43 C 3.19 5.36 7.621 5.187 8.606 4.806 C 10.316 4.094 8.104 2.462 6.494 2.301 C 5.51 2.179 4.513 2.397 3.669 2.919 C 3.147 3.25 2.442 3.836 2.69 4.409 L 2.7 4.428 L 2.7 4.43 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path></svg>',withExternalLayout:true,children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-1xmnff5\",layoutDependency:layoutDependency,layoutId:\"W8EoJrXRb\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.73 11.945\" overflow=\"visible\"><path d=\"M 11.541 5.886 C 10.625 7.469 6.15 6.6 4.589 6.976 C 4.18 7.043 3.728 7.136 3.433 7.405 C 2.908 7.833 3.602 8.671 4.293 9.017 C 5.595 9.82 7.273 9.488 8.667 9.075 C 9.702 8.812 10.974 8.456 10.715 9.594 C 10.451 10.426 9.425 11.063 8.599 11.417 C 4.104 13.262 -0.641 10.067 0.071 5.092 C 0.674 -0.013 7.459 -1.79 10.559 2.137 C 11.347 3.267 12.072 4.709 11.556 5.866 L 11.543 5.888 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1tnhhc6\",layoutDependency:layoutDependency,layoutId:\"M4GnLm7_w\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 6.585 2.845\" overflow=\"visible\"><path d=\"M 0.062 2.162 C 0.551 3.092 4.982 2.919 5.967 2.538 C 7.677 1.826 5.465 0.194 3.855 0.033 C 2.871 -0.089 1.874 0.129 1.03 0.651 C 0.508 0.982 -0.197 1.568 0.051 2.141 L 0.061 2.16 L 0.061 2.162 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true})]}),/*#__PURE__*/_jsxs(SVG,{className:\"framer-6frcpf\",layoutDependency:layoutDependency,layoutId:\"Xe7bdSKO_\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 69.266 11.944\" overflow=\"visible\"><path d=\"M 66.213 0.468 C 66.678 2.266 62.001 4.348 63.326 6.801 C 63.756 8.041 66.987 10.583 66.153 11.593 C 65.354 12.046 63.795 11.03 63.039 10.48 C 60.601 8.47 60.824 7.176 58.457 9.861 C 57.741 10.606 55.54 12.187 54.652 11.572 C 54.047 10.652 56.244 8.787 56.795 7.974 C 59.485 4.931 55.495 3.476 54.579 1.01 C 54.251 -0.62 56.977 0.846 57.607 1.322 C 58.697 2.062 59.349 3.037 59.987 3.315 C 60.609 3.617 61.162 3.12 61.607 2.7 C 62.058 2.262 62.519 1.794 63.068 1.405 C 63.788 0.908 65.577 -0.185 66.205 0.455 L 66.213 0.47 Z M 5.142 0.006 C 1.992 -0.13 1.366 2.268 0.672 4.862 C 0.222 6.627 -0.588 8.595 0.682 10.136 C 3.458 13.213 9.458 12.203 10.988 8.318 C 12.678 4.118 9.644 0.008 5.184 0.006 Z M 5.13 9.671 C 2.632 9.698 0.907 7.181 1.663 4.835 C 2.648 1.495 7.595 1.467 8.657 4.763 C 9.481 7.136 7.709 9.713 5.173 9.671 Z M 67.562 9.605 C 67.977 9.56 68.396 9.562 68.812 9.609 C 69.185 9.683 69.288 10.079 69.263 10.414 C 69.257 10.687 69.286 11.012 69.23 11.268 C 69.055 11.882 68.274 11.668 67.789 11.7 C 67.336 11.72 67.074 11.403 67.101 10.964 C 67.121 10.498 66.953 9.758 67.543 9.609 L 67.56 9.604 L 67.562 9.604 Z\" fill=\"var(--token-490fb9b3-57c5-44a0-a479-13f58cdaae16, rgb(255, 255, 255)) /* {&quot;name&quot;:&quot;White&quot;} */\"></path></svg>',withExternalLayout:true,children:[/*#__PURE__*/_jsx(SVG,{className:\"framer-ot9gwh\",layoutDependency:layoutDependency,layoutId:\"Y61SFzhLY\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.742 11.452\" overflow=\"visible\"><path d=\"M 11.665 0.209 C 12.13 2.007 7.453 4.089 8.778 6.542 C 9.208 7.782 12.439 10.324 11.605 11.334 C 10.806 11.787 9.247 10.771 8.491 10.221 C 6.053 8.211 6.276 6.917 3.909 9.602 C 3.193 10.347 0.992 11.928 0.104 11.313 C -0.501 10.393 1.696 8.528 2.247 7.715 C 4.937 4.672 0.947 3.217 0.031 0.751 C -0.297 -0.879 2.429 0.587 3.059 1.063 C 4.149 1.803 4.801 2.778 5.439 3.056 C 6.061 3.358 6.614 2.861 7.059 2.441 C 7.51 2.003 7.971 1.535 8.52 1.146 C 9.24 0.649 11.029 -0.444 11.657 0.196 L 11.665 0.211 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-vxqqnu\",layoutDependency:layoutDependency,layoutId:\"Ve3Y3TU9i\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 11.462 11.944\" overflow=\"visible\"><path d=\"M 5.142 0.006 C 1.992 -0.13 1.366 2.268 0.672 4.862 C 0.222 6.627 -0.588 8.595 0.682 10.136 C 3.458 13.213 9.458 12.203 10.988 8.318 C 12.678 4.118 9.644 0.008 5.184 0.006 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1l8lki5\",layoutDependency:layoutDependency,layoutId:\"HhU4DA3TZ\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 7.378 7.361\" overflow=\"visible\"><path d=\"M 3.646 7.361 C 1.148 7.388 -0.577 4.871 0.179 2.525 C 1.164 -0.815 6.111 -0.843 7.173 2.453 C 7.997 4.826 6.225 7.403 3.689 7.361 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true}),/*#__PURE__*/_jsx(SVG,{className:\"framer-1e3xin3\",layoutDependency:layoutDependency,layoutId:\"dqLjXi99O\",requiresOverflowVisible:false,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 2.173 2.138\" overflow=\"visible\"><path d=\"M 0.469 0.032 C 0.884 -0.012 1.303 -0.011 1.719 0.036 C 2.092 0.11 2.195 0.506 2.17 0.841 C 2.164 1.114 2.193 1.439 2.137 1.695 C 1.962 2.309 1.181 2.095 0.696 2.127 C 0.243 2.147 -0.019 1.83 0.008 1.391 C 0.028 0.925 -0.14 0.185 0.45 0.036 L 0.467 0.031 L 0.469 0.031 Z\" fill=\"transparent\"></path></svg>',withExternalLayout:true})]})]})})}),isDisplayed()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-16iqusc\",layoutDependency:layoutDependency,layoutId:\"rtsLG2GvC\",children:[/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1vn2kgz\",\"data-framer-name\":\"Navbar Links\",layoutDependency:layoutDependency,layoutId:\"uJLIk3Mo4\",style:{borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},children:[/*#__PURE__*/_jsx(motion.div,{className:\"framer-adf5je\",\"data-framer-name\":\"Bg\",layoutDependency:layoutDependency,layoutId:\"Dc2J5nMIN\",style:{background:\"linear-gradient(179deg, rgb(224, 255, 181) -86%, rgb(149, 250, 95) 192%)\",borderBottomLeftRadius:8,borderBottomRightRadius:8,borderTopLeftRadius:8,borderTopRightRadius:8,opacity:0}}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+(8+((componentViewport?.height||52)-16-36)/2)+1+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-19pjjav-container\",layoutDependency:layoutDependency,layoutId:\"Ljkj7FvO9-container\",nodeId:\"Ljkj7FvO9\",rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(Nav_LinkOpenAbout19pjjavWithMappedReactPropsvc7krn,{height:\"100%\",id:\"Ljkj7FvO9\",Ik12s442p:\"About\",layoutId:\"Ljkj7FvO9\",variant:matchVariant(\"JKRwIZoXP\"),width:\"100%\"})})}),/*#__PURE__*/_jsx(Overlay,{blockDocumentScrolling:false,dismissWithEsc:false,children:overlay=>/*#__PURE__*/_jsx(_Fragment,{children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:34,y:(componentViewport?.y||0)+(8+((componentViewport?.height||52)-16-36)/2)+1+0,children:/*#__PURE__*/_jsxs(SmartComponentScopedContainer,{className:\"framer-1to1uim-container\",id:`${layoutId}-1to1uim`,layoutDependency:layoutDependency,layoutId:\"MnLPRCqSo-container\",nodeId:\"MnLPRCqSo\",ref:ref1,rendersWithMotion:true,scopeId:\"T43_9icFM\",children:[/*#__PURE__*/_jsx(Nav_Link,{height:\"100%\",id:\"MnLPRCqSo\",Ik12s442p:\"Projects\",layoutId:\"MnLPRCqSo\",RL5unyevY:RL5unyevY13elrgn({overlay}),variant:matchVariant(\"JKRwIZoXP\"),width:\"100%\"}),/*#__PURE__*/_jsx(AnimatePresence,{children:overlay.visible&&/*#__PURE__*/_jsx(Floating,{alignment:\"center\",anchorRef:ref1,className:cx(scopingClassNames,classNames),collisionDetection:false,\"data-framer-portal-id\":`${layoutId}-1to1uim`,offsetX:50,offsetY:16,onDismiss:overlay.hide,placement:\"bottom\",safeArea:true,zIndex:11,children:/*#__PURE__*/_jsx(MotionDivWithFX,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation1,className:\"framer-1hpagyc\",exit:animation,initial:animation2,layoutDependency:layoutDependency,layoutId:\"bkp3SSXTL\",ref:ref2,role:\"dialog\",style:{backgroundColor:\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",borderBottomLeftRadius:10,borderBottomRightRadius:10,borderTopLeftRadius:10,borderTopRightRadius:10,boxShadow:\"0px 10px 20px 0px rgba(0, 0, 0, 0.05)\"},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1urv458-container\",inComponentSlot:true,layoutDependency:layoutDependency,layoutId:\"tEPy98QS7-container\",nodeId:\"tEPy98QS7\",rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(NavLinks,{dd5SLnKuA:dd5SLnKuA1jpzmz0,height:\"100%\",id:\"tEPy98QS7\",layoutId:\"tEPy98QS7\",width:\"100%\",wuLdb6Nqc:wuLdb6Nqc5tndg9,zV0qUSgG_:zV0qUSgG_1ard5wc})})})})})})]})})})})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:36,width:\"99px\",y:(componentViewport?.y||0)+(8+((componentViewport?.height||52)-16-36)/2)+0,children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1i2vbpl-container\",\"data-framer-name\":\"Navbar_Eyes\",layoutDependency:layoutDependency,layoutId:\"DjqIvFnII-container\",name:\"Navbar_Eyes\",nodeId:\"DjqIvFnII\",rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(Navbar_Eyes,{height:\"100%\",id:\"DjqIvFnII\",layoutId:\"DjqIvFnII\",name:\"Navbar_Eyes\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1cm3h2x-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,layoutDependency:layoutDependency,layoutId:\"XaBIVeDAD-container\",nodeId:\"XaBIVeDAD\",rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(NeonGlow,{borderRadius:18,borderWidth:1.5,glowColor:\"var(--token-574bf69e-c6a5-4eb9-9a22-7555e38f91be, rgb(208, 255, 0))\",glowSize:120,height:\"100%\",id:\"XaBIVeDAD\",layoutId:\"XaBIVeDAD\",lerpSpeed:.06,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-vc8skj-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"x3rK4FAQH-container\",nodeId:\"x3rK4FAQH\",rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(GooeyEffect,{height:\"100%\",id:\"x3rK4FAQH\",intensity:8,layoutId:\"x3rK4FAQH\",width:\"100%\"})})}),isDisplayed1()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({SBKfk7nih:{height:45,y:(componentViewport?.y||0)+(8+((componentViewport?.height||61)-16-45)/2)},sxd_bZuVW:{height:45,y:(componentViewport?.y||0)+(8+((componentViewport?.height||61)-16-45)/2)}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-64iv2q-container\",layoutDependency:layoutDependency,layoutId:\"czi5xVyTS-container\",nodeId:\"czi5xVyTS\",rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(Button,{EfKa49HDR:\"Get started\",height:\"100%\",id:\"czi5xVyTS\",layoutId:\"czi5xVyTS\",style:{height:\"100%\"},u47yG9YxT:u47yG9YxT1l58jnt,variant:matchVariant(\"sFJ5iYtDE\"),width:\"100%\",...addPropertyOverrides({SBKfk7nih:{u47yG9YxT:u47yG9YxT1wgdra3,variant:matchVariant(\"HBgX8vDOe\")},sxd_bZuVW:{u47yG9YxT:u47yG9YxTh40bv2}},baseVariant,gestureVariant)})})}),isDisplayed1()&&/*#__PURE__*/_jsxs(motion.div,{className:\"framer-1tkjudj\",\"data-border\":true,\"data-framer-name\":\"Nav links\",layoutDependency:layoutDependency,layoutId:\"XgkKaiTpL\",style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"rgba(255, 255, 255, 0.08)\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backdropFilter:\"blur(40px)\",backgroundColor:\"rgb(0, 0, 0)\",borderBottomLeftRadius:12,borderBottomRightRadius:12,borderTopLeftRadius:12,borderTopRightRadius:12,opacity:0,WebkitBackdropFilter:\"blur(40px)\"},transformTemplate:transformTemplate1,variants:{SBKfk7nih:{opacity:1}},children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-13yz39a-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"kFroGfWto-container\",nodeId:\"kFroGfWto\",rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(NeonGlow1,{height:\"100%\",id:\"kFroGfWto\",layoutId:\"kFroGfWto\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),isDisplayed2()&&/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({SBKfk7nih:{height:32,y:(componentViewport?.y||0)+(componentViewport?.height||61)- -17+20+0}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation3,className:\"framer-1542eny-container\",\"data-framer-appear-id\":\"1542eny\",initial:animation4,layoutDependency:layoutDependency,layoutId:\"vWRDo42Fl-container\",nodeId:\"vWRDo42Fl\",optimized:true,rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(NavLinkOpenAbout1542enyWithMappedReactProps1xpi3x1,{D2_q81no8:D2_q81no85tndg9,height:\"100%\",id:\"vWRDo42Fl\",JSlzg4F3x:\"About\",layoutId:\"vWRDo42Fl\",variant:matchVariant(\"NO7gejf5R\"),width:\"100%\"})})}),isDisplayed2()&&/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{hash:\":pNWijo3SO\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined},{href:{hash:\":pNWijo3SO\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined}],children:resolvedLinks=>/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({SBKfk7nih:{height:32,y:(componentViewport?.y||0)+(componentViewport?.height||61)- -17+20+32}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation3,className:\"framer-top84f-container\",\"data-framer-appear-id\":\"top84f\",initial:animation4,layoutDependency:layoutDependency,layoutId:\"nWecyE5KF-container\",nodeId:\"nWecyE5KF\",optimized:true,rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(NavLinkOpenCase02top84fWithMappedReactProps1xpi3x1,{D2_q81no8:D2_q81no81ard5wc,height:\"100%\",hpK_Nb5dg:resolvedLinks[0],id:\"nWecyE5KF\",JSlzg4F3x:\"Team Lausanne\",layoutId:\"nWecyE5KF\",variant:matchVariant(\"NO7gejf5R\"),width:\"100%\",...addPropertyOverrides({SBKfk7nih:{hpK_Nb5dg:resolvedLinks[1]}},baseVariant,gestureVariant)})})})}),isDisplayed2()&&/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{hash:\":IdCBxmtnv\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined},{href:{hash:\":IdCBxmtnv\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined}],children:resolvedLinks1=>/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({SBKfk7nih:{height:32,y:(componentViewport?.y||0)+(componentViewport?.height||61)- -17+20+64}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation3,className:\"framer-11ddvl-container\",\"data-framer-appear-id\":\"11ddvl\",initial:animation4,layoutDependency:layoutDependency,layoutId:\"fP_gGosKK-container\",nodeId:\"fP_gGosKK\",optimized:true,rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(NavLinkOpenCase0111ddvlWithMappedReactProps1xpi3x1,{D2_q81no8:D2_q81no81dsqn93,height:\"100%\",hpK_Nb5dg:resolvedLinks1[0],id:\"fP_gGosKK\",JSlzg4F3x:\"MultichainZ\",layoutId:\"fP_gGosKK\",variant:matchVariant(\"NO7gejf5R\"),width:\"100%\",...addPropertyOverrides({SBKfk7nih:{hpK_Nb5dg:resolvedLinks1[1]}},baseVariant,gestureVariant)})})})}),isDisplayed2()&&/*#__PURE__*/_jsx(ResolveLinks,{links:[{href:{hash:\":nGV_GmKDJ\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined},{href:{hash:\":nGV_GmKDJ\",webPageId:\"augiA20Il\"},implicitPathVariables:undefined}],children:resolvedLinks2=>/*#__PURE__*/_jsx(ComponentViewportProvider,{...addPropertyOverrides({SBKfk7nih:{height:32,y:(componentViewport?.y||0)+(componentViewport?.height||61)- -17+20+96}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainerWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation3,className:\"framer-1j0gdbl-container\",\"data-framer-appear-id\":\"1j0gdbl\",initial:animation4,layoutDependency:layoutDependency,layoutId:\"Pe0i5UZvv-container\",nodeId:\"Pe0i5UZvv\",optimized:true,rendersWithMotion:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(NavLinkOpenCase031j0gdblWithMappedReactProps1xpi3x1,{D2_q81no8:D2_q81no813bspmj,height:\"100%\",hpK_Nb5dg:resolvedLinks2[0],id:\"Pe0i5UZvv\",JSlzg4F3x:\"Pagoda Travel\",layoutId:\"Pe0i5UZvv\",variant:matchVariant(\"NO7gejf5R\"),width:\"100%\",...addPropertyOverrides({SBKfk7nih:{hpK_Nb5dg:resolvedLinks2[1]}},baseVariant,gestureVariant)})})})}),isDisplayed2()&&/*#__PURE__*/_jsxs(MotionDivWithFXWithOptimizedAppearEffect,{__perspectiveFX:false,__smartComponentFX:true,__targetOpacity:1,animate:animation3,className:\"framer-dg5gcp\",\"data-framer-appear-id\":\"dg5gcp\",\"data-framer-name\":\"Social-buttons\",initial:animation4,layoutDependency:layoutDependency,layoutId:\"LoOpjWreZ\",optimized:true,children:[/*#__PURE__*/_jsx(Link,{href:\"https://x.com/Jegtex\",motionChild:true,nodeId:\"O911edeW8\",openInNewTab:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1n69yaw framer-n79cfn\",\"data-framer-name\":\"Social-button-item\",layoutDependency:layoutDependency,layoutId:\"O911edeW8\",style:{borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},whileHover:animation5,children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,pixelHeight:1254,pixelWidth:1254,sizes:\"36px\",src:\"https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?width=1254&height=1254 1254w\"},className:\"framer-frz47x\",fitImageDimension:\"height\",layoutDependency:layoutDependency,layoutId:\"LhXe1wL9l\",...addPropertyOverrides({SBKfk7nih:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||61)- -17+20+128+20+0),pixelHeight:1254,pixelWidth:1254,sizes:\"36px\",src:\"https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/nyVJBKgv3qgujceFTOhZx152es.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)})})}),/*#__PURE__*/_jsx(Link,{href:\"https://www.instagram.com/salakhov.webdesign/\",motionChild:true,nodeId:\"PNdnROOOR\",openInNewTab:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-16li5yv framer-n79cfn\",\"data-framer-name\":\"Social-button-item\",layoutDependency:layoutDependency,layoutId:\"PNdnROOOR\",style:{borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},whileHover:animation5,children:/*#__PURE__*/_jsx(Link,{href:\"https://www.instagram.com/jegte/\",motionChild:true,nodeId:\"yUqqPSTWX\",openInNewTab:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(Image1,{as:\"a\",background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,pixelHeight:1254,pixelWidth:1254,sizes:\"36px\",src:\"https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?width=1254&height=1254 1254w\"},className:\"framer-11548cc framer-n79cfn\",fitImageDimension:\"height\",layoutDependency:layoutDependency,layoutId:\"yUqqPSTWX\",...addPropertyOverrides({SBKfk7nih:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||61)- -17+20+128+20+0),pixelHeight:1254,pixelWidth:1254,sizes:\"36px\",src:\"https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/oz40VoPXWLWkPVFoFnZMbM9F50.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)})})})}),/*#__PURE__*/_jsx(Link,{href:\"https://www.linkedin.com/in/joaoegteixeira/\",motionChild:true,nodeId:\"VMk8SpIFD\",openInNewTab:true,scopeId:\"T43_9icFM\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1icmcjv framer-n79cfn\",\"data-framer-name\":\"Social-button-item\",layoutDependency:layoutDependency,layoutId:\"VMk8SpIFD\",style:{borderBottomLeftRadius:100,borderBottomRightRadius:100,borderTopLeftRadius:100,borderTopRightRadius:100},whileHover:animation5,children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,pixelHeight:1254,pixelWidth:1254,sizes:\"36px\",src:\"https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?width=1254&height=1254 1254w\"},className:\"framer-cr8cwe\",fitImageDimension:\"height\",layoutDependency:layoutDependency,layoutId:\"ijgaykt1V\",...addPropertyOverrides({SBKfk7nih:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+(componentViewport?.height||61)- -17+20+128+20+0),pixelHeight:1254,pixelWidth:1254,sizes:\"36px\",src:\"https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/Cs7U5khw1zCrMx3Tt9BxX9U2aWg.png?width=1254&height=1254 1254w\"}}},baseVariant,gestureVariant)})})})]})]})]})})})});});const css=[\".framer-hrkOT.framer-n79cfn, .framer-hrkOT .framer-n79cfn { display: block; }\",\".framer-hrkOT.framer-rrqfvu { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 41px; height: min-content; justify-content: center; overflow: visible; padding: 8px 6px 8px 16px; position: relative; width: 392px; }\",\".framer-hrkOT .framer-107891e { flex: none; height: 16px; overflow: visible; position: relative; text-decoration: none; width: 80px; }\",\".framer-hrkOT .framer-1d1fbd4 { height: 16px; left: 1px; position: absolute; top: 0px; width: 79px; }\",\".framer-hrkOT .framer-pefu19 { height: 16px; left: 0px; position: absolute; top: 0px; width: 79px; }\",\".framer-hrkOT .framer-zxlozm { height: 16px; left: 0px; position: absolute; top: 1px; width: 47px; }\",\".framer-hrkOT .framer-dcsi8 { height: 15px; left: 0px; position: absolute; top: 0px; width: 11px; }\",\".framer-hrkOT .framer-uc7a8x { height: 12px; left: 22px; position: absolute; top: 3px; width: 13px; }\",\".framer-hrkOT .framer-1p0npfl { height: 8px; left: 24px; position: absolute; top: 6px; width: 8px; }\",\".framer-hrkOT .framer-2kfh0s { height: 12px; left: 35px; position: absolute; top: 3px; width: 13px; }\",\".framer-hrkOT .framer-hvv3x9 { height: 8px; left: 37px; position: absolute; top: 6px; width: 8px; }\",\".framer-hrkOT .framer-qj3uti { height: 16px; left: 44px; position: absolute; top: 0px; width: 11px; }\",\".framer-hrkOT .framer-1csf92f { height: 12px; left: 53px; position: absolute; top: 4px; width: 12px; }\",\".framer-hrkOT .framer-1xmnff5, .framer-hrkOT .framer-vxqqnu { height: 12px; left: 0px; position: absolute; top: 0px; width: 12px; }\",\".framer-hrkOT .framer-1tnhhc6 { height: 3px; left: 3px; position: absolute; top: 2px; width: 7px; }\",\".framer-hrkOT .framer-6frcpf { height: 12px; left: 10px; position: absolute; top: 4px; width: 70px; }\",\".framer-hrkOT .framer-ot9gwh { height: 12px; left: 55px; position: absolute; top: 0px; width: 12px; }\",\".framer-hrkOT .framer-1l8lki5 { height: 8px; left: 1px; position: absolute; top: 2px; width: 8px; }\",\".framer-hrkOT .framer-1e3xin3 { height: 2px; left: 67px; position: absolute; top: 10px; width: 2px; }\",\".framer-hrkOT .framer-16iqusc { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 12px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; z-index: 1; }\",\".framer-hrkOT .framer-1vn2kgz { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 18px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; width: min-content; }\",\".framer-hrkOT .framer-adf5je { bottom: -2px; flex: none; height: 35px; left: 0px; overflow: var(--overflow-clip-fallback, clip); position: absolute; width: 54px; will-change: var(--framer-will-change-override, transform); z-index: 0; }\",\".framer-hrkOT .framer-19pjjav-container, .framer-hrkOT .framer-1to1uim-container, .framer-hrkOT .framer-1542eny-container, .framer-hrkOT .framer-top84f-container, .framer-hrkOT .framer-11ddvl-container, .framer-hrkOT .framer-1j0gdbl-container { flex: none; height: auto; position: relative; width: auto; }\",\".framer-hrkOT .framer-1hpagyc { align-content: center; align-items: center; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: min-content; will-change: var(--framer-will-change-override, transform); }\",\".framer-hrkOT .framer-1urv458-container { flex: none; height: auto; position: relative; width: auto; z-index: 1; }\",\".framer-hrkOT .framer-1i2vbpl-container { flex: none; height: 36px; position: relative; width: 99px; }\",\".framer-hrkOT .framer-1cm3h2x-container { flex: none; height: 101%; left: calc(50.053248136315254% - 100% / 2); position: absolute; top: calc(50.00000000000002% - 100.96153846153845% / 2); width: 100%; z-index: 0; }\",\".framer-hrkOT .framer-vc8skj-container { flex: none; height: auto; left: 0px; position: absolute; top: 0px; width: auto; z-index: 1; }\",\".framer-hrkOT .framer-64iv2q-container { flex: none; height: 45px; position: relative; width: auto; }\",\".framer-hrkOT .framer-1tkjudj { align-content: flex-start; align-items: flex-start; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; left: 50%; min-height: 44px; overflow: var(--overflow-clip-fallback, clip); padding: 0px 24px 0px 24px; position: absolute; top: 68px; width: 100%; will-change: var(--framer-will-change-override, transform); z-index: 1; }\",\".framer-hrkOT .framer-13yz39a-container { flex: none; height: 101%; left: calc(50.11389521640094% - 100.22779043280184% / 2); pointer-events: none; position: absolute; top: calc(49.43820224719103% - 101.12359550561798% / 2); width: 100%; z-index: 0; }\",\".framer-hrkOT .framer-dg5gcp { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 4px; height: min-content; justify-content: flex-start; overflow: visible; padding: 20px 0px 0px 0px; position: relative; width: min-content; }\",\".framer-hrkOT .framer-1n69yaw, .framer-hrkOT .framer-16li5yv, .framer-hrkOT .framer-1icmcjv { align-content: center; align-items: center; display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: visible; padding: 0px; position: relative; text-decoration: none; width: min-content; will-change: var(--framer-will-change-effect-override, transform); }\",\".framer-hrkOT .framer-frz47x, .framer-hrkOT .framer-cr8cwe { flex: none; height: auto; position: relative; width: 36px; }\",\".framer-hrkOT .framer-11548cc { flex: none; height: auto; position: relative; text-decoration: none; width: 36px; }\",\".framer-hrkOT.framer-v-6e22od.framer-rrqfvu, .framer-hrkOT.framer-v-1gcs4mb.framer-rrqfvu { gap: unset; justify-content: space-between; max-height: calc(var(--framer-viewport-height, 100vh) * 1); width: 340px; }\",\".framer-hrkOT.framer-v-1gcs4mb .framer-1tkjudj { bottom: -241px; min-height: unset; padding: 20px 24px 20px 14px; top: unset; }\",\".framer-hrkOT.framer-v-1gcs4mb .framer-13yz39a-container { height: 809px; left: 0px; right: -1px; top: -9px; width: unset; }\",'.framer-hrkOT[data-border=\"true\"]::after, .framer-hrkOT [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 52\n * @framerIntrinsicWidth 392\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"sxd_bZuVW\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,null,null,\"100vh\"]},\"SBKfk7nih\":{\"layout\":[\"fixed\",\"auto\"],\"constraints\":[null,null,null,\"100vh\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerT43_9icFM=withCSS(Component,css,\"framer-hrkOT\");export default FramerT43_9icFM;FramerT43_9icFM.displayName=\"Navbar\";FramerT43_9icFM.defaultProps={height:52,width:392};addPropertyControls(FramerT43_9icFM,{variant:{options:[\"ZipXYqhyk\",\"sxd_bZuVW\",\"SBKfk7nih\"],optionTitles:[\"Navbar\",\"Navbar Mobile Closed\",\"Navbar Mobile Open\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerT43_9icFM,[{explicitInter:true,fonts:[]},...Nav_LinkFonts,...NavLinksFonts,...Navbar_EyesFonts,...NeonGlowFonts,...GooeyEffectFonts,...ButtonFonts,...NeonGlow1Fonts,...NavLinkFonts],{supportsExplicitInterCodegen:true});FramerT43_9icFM.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(Nav_Link,{},context),()=>forwardLoader(NavLinks,{},context),()=>forwardLoader(Navbar_Eyes,{},context),()=>forwardLoader(Button,{},context),()=>forwardLoader(NavLink,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerT43_9icFM\",\"slots\":[],\"annotations\":{\"framerColorSyntax\":\"true\",\"framerIntrinsicHeight\":\"52\",\"framerContractVersion\":\"1\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"392\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"sxd_bZuVW\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,null,null,\\\"100vh\\\"]},\\\"SBKfk7nih\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"],\\\"constraints\\\":[null,null,null,\\\"100vh\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (3db8496)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"GF;Geist Pixel-regular\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"Geist Pixel\",openType:true,source:\"google\",style:\"normal\",uiFamilyName:\"Geist Pixel\",url:\"https://fonts.gstatic.com/s/geistpixel/v1/CSRs4zxZluGGW3oyI0A_AN0hQBvYDU4hBmqoKzAMXzSjlKfXtw.woff2\",weight:\"400\"}]}];export const css=[\".framer-IxgYM .framer-styles-preset-1unmm88:not(.rich-text-wrapper), .framer-IxgYM .framer-styles-preset-1unmm88.rich-text-wrapper p { --framer-font-family: \\\"Geist Pixel\\\", \\\"Geist Pixel Placeholder\\\", sans-serif; --framer-font-open-type-features: 'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 0.8); --framer-font-style: normal; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-letter-spacing: 0em; --framer-line-height: 1.4em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: var(--token-2eedb7d2-461b-4179-9cab-c41b7ae9c863, #f7fafc); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }\"];export const className=\"framer-IxgYM\";\nexport const __FramerMetadata__ = {\"exports\":{\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (4d662f6)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,cx,getFontsFromSharedStyle,RichText,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import*as sharedStyle from\"https://framerusercontent.com/modules/1eGBMiNtSMygJegnlyYN/vA3UK2eD3ay72qX8bn22/DU5VDI_MK.js\";const cycleOrder=[\"FeUraUJ0K\",\"cN9Be69yv\",\"MTM1ic1Fz\",\"vF0cq_5Y2\",\"SmNSQf9Un\",\"gpfgem5yJ\"];const serializationHash=\"framer-CUZl4\";const variantClassNames={cN9Be69yv:\"framer-v-14uv2dt\",FeUraUJ0K:\"framer-v-137f9wr\",gpfgem5yJ:\"framer-v-bj8sij\",MTM1ic1Fz:\"framer-v-1qf0ofs\",SmNSQf9Un:\"framer-v-1igx9ot\",vF0cq_5Y2:\"framer-v-ukm16w\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={\"Invisible Block Night \":\"gpfgem5yJ\",AllenKey:\"SmNSQf9Un\",Default:\"FeUraUJ0K\",HeroPill:\"cN9Be69yv\",Hidden:\"MTM1ic1Fz\",InvisibleBlock:\"vF0cq_5Y2\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"FeUraUJ0K\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"FeUraUJ0K\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[sharedStyle.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const isDisplayed=()=>{if([\"cN9Be69yv\",\"vF0cq_5Y2\",\"SmNSQf9Un\",\"gpfgem5yJ\"].includes(baseVariant))return true;return false;};return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsx(motion.div,{...restProps,...gestureHandlers,\"aria-label\":\"Button\",className:cx(scopingClassNames,\"framer-137f9wr\",className,classNames),\"data-border\":true,\"data-framer-name\":\"Default\",layoutDependency:layoutDependency,layoutId:\"FeUraUJ0K\",ref:refBinding,style:{\"--border-bottom-width\":\"1px\",\"--border-color\":\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",\"--border-left-width\":\"1px\",\"--border-right-width\":\"1px\",\"--border-style\":\"solid\",\"--border-top-width\":\"1px\",backgroundColor:\"var(--token-2759885a-0605-4b0d-ae5f-9a938c3766f2, rgb(0, 0, 0))\",borderBottomLeftRadius:6,borderBottomRightRadius:6,borderTopLeftRadius:6,borderTopRightRadius:6,boxShadow:\"inset 0px 2px 4px 0px rgba(255, 255, 255, 0.4), 0px 0.7409732186279143px 0.7409732186279143px -0.75px rgba(0, 0, 0, 0.33), 0px 2.0178668455264415px 2.0178668455264415px -1.5px rgba(0, 0, 0, 0.32), 0px 4.430505261661892px 4.430505261661892px -2.25px rgba(0, 0, 0, 0.3), 0px 9.834710084098335px 9.834710084098335px -3px rgba(0, 0, 0, 0.25), 0px 25px 25px -3.75px rgba(0, 0, 0, 0.11), 0px 0px 0px 1px var(--token-994646e0-68ea-49d7-897a-104048558f6f, rgb(84, 84, 84))\",...style},variants:{MTM1ic1Fz:{\"--border-color\":\"rgba(0, 0, 0, 0)\",backgroundColor:\"rgba(0, 0, 0, 0)\",boxShadow:\"inset 0px 2px 4px 0px rgba(255, 255, 255, 0)\"}},...addPropertyOverrides({cN9Be69yv:{\"data-framer-name\":\"HeroPill\"},gpfgem5yJ:{\"data-framer-name\":\"Invisible Block Night \"},MTM1ic1Fz:{\"data-framer-name\":\"Hidden\"},SmNSQf9Un:{\"data-framer-name\":\"AllenKey\"},vF0cq_5Y2:{\"data-framer-name\":\"InvisibleBlock\"}},baseVariant,gestureVariant),children:isDisplayed()&&/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1unmm88\",\"data-styles-preset\":\"DU5VDI_MK\",dir:\"auto\",children:\"Anxiety and Insomnia\"})}),className:\"framer-1frzd26\",fonts:[\"Inter\"],layoutDependency:layoutDependency,layoutId:\"Az9dVCTQ5\",style:{\"--framer-link-text-color\":\"rgb(0, 153, 255)\",\"--framer-link-text-decoration\":\"underline\",filter:\"blur(0px)\",WebkitFilter:\"blur(0px)\"},verticalAlignment:\"top\",withExternalLayout:true,...addPropertyOverrides({gpfgem5yJ:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1unmm88\",\"data-styles-preset\":\"DU5VDI_MK\",dir:\"auto\",children:\"Same nothing, worse lighting.\"})})},SmNSQf9Un:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1unmm88\",\"data-styles-preset\":\"DU5VDI_MK\",dir:\"auto\",children:\"KOMP\\xd6NENT\"})})},vF0cq_5Y2:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(motion.p,{className:\"framer-styles-preset-1unmm88\",\"data-styles-preset\":\"DU5VDI_MK\",dir:\"auto\",children:\"Why are you hovering here?\"})})}},baseVariant,gestureVariant)})})})})});});const css=[\".framer-CUZl4.framer-1b4lznz, .framer-CUZl4 .framer-1b4lznz { display: block; }\",\".framer-CUZl4.framer-137f9wr { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 10px; height: 30px; justify-content: center; overflow: hidden; padding: 6px 14px 6px 14px; position: relative; width: 30px; will-change: var(--framer-will-change-override, transform); }\",\".framer-CUZl4 .framer-1frzd26 { -webkit-user-select: none; flex: none; height: auto; pointer-events: none; position: relative; user-select: none; white-space: pre; width: auto; }\",\".framer-CUZl4.framer-v-14uv2dt.framer-137f9wr, .framer-CUZl4.framer-v-ukm16w.framer-137f9wr, .framer-CUZl4.framer-v-1igx9ot.framer-137f9wr, .framer-CUZl4.framer-v-bj8sij.framer-137f9wr { height: min-content; width: min-content; }\",\".framer-CUZl4.framer-v-1qf0ofs.framer-137f9wr { height: min-content; min-height: 30px; min-width: 102px; width: min-content; }\",...sharedStyle.css,'.framer-CUZl4[data-border=\"true\"]::after, .framer-CUZl4 [data-border=\"true\"]::after { content: \"\"; border-width: var(--border-top-width, 0) var(--border-right-width, 0) var(--border-bottom-width, 0) var(--border-left-width, 0); border-color: var(--border-color, none); border-style: var(--border-style, none); width: 100%; height: 100%; position: absolute; box-sizing: border-box; left: 0; top: 0; border-radius: inherit; corner-shape: inherit; pointer-events: none; }'];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 30\n * @framerIntrinsicWidth 30\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"cN9Be69yv\":{\"layout\":[\"auto\",\"auto\"]},\"MTM1ic1Fz\":{\"layout\":[\"auto\",\"auto\"]},\"vF0cq_5Y2\":{\"layout\":[\"auto\",\"auto\"]},\"SmNSQf9Un\":{\"layout\":[\"auto\",\"auto\"]},\"gpfgem5yJ\":{\"layout\":[\"auto\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerV_54WsRbm=withCSS(Component,css,\"framer-CUZl4\");export default FramerV_54WsRbm;FramerV_54WsRbm.displayName=\"EasterEgg\";FramerV_54WsRbm.defaultProps={height:30,width:30};addPropertyControls(FramerV_54WsRbm,{variant:{options:[\"FeUraUJ0K\",\"cN9Be69yv\",\"MTM1ic1Fz\",\"vF0cq_5Y2\",\"SmNSQf9Un\",\"gpfgem5yJ\"],optionTitles:[\"Default\",\"HeroPill\",\"Hidden\",\"InvisibleBlock\",\"AllenKey\",\"Invisible Block Night \"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerV_54WsRbm,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"}]},...getFontsFromSharedStyle(sharedStyle.fonts)],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerV_54WsRbm\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerColorSyntax\":\"true\",\"framerIntrinsicWidth\":\"30\",\"framerDisplayContentsDiv\":\"false\",\"framerIntrinsicHeight\":\"30\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"cN9Be69yv\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"MTM1ic1Fz\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"vF0cq_5Y2\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"SmNSQf9Un\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]},\\\"gpfgem5yJ\\\":{\\\"layout\\\":[\\\"auto\\\",\\\"auto\\\"]}}}\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./V_54WsRbm.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useState,useEffect,useSyncExternalStore}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/** Room exposure: directional daylight and localized night illumination. */const STORE_VERSION=1;function srcOf(v){if(!v)return undefined;if(typeof v===\"string\")return v;return v.src;}function useNight(){const s=typeof window!==\"undefined\"?window.__deskLight:null;const ok=s&&s.version===STORE_VERSION;return useSyncExternalStore(ok?s.subscribe:()=>()=>{},ok?s.get:()=>0,()=>0);}function sideShadow(){// All rails share one projection, so every pane belongs to the same window.\nconst svg=`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 1000 1000\">\n    <defs>\n      <linearGradient id=\"falloff\" x1=\"0\" x2=\"1\">\n        <stop stop-color=\"white\" stop-opacity=\".95\"/>\n        <stop offset=\".20\" stop-color=\"white\" stop-opacity=\".85\"/>\n        <stop offset=\".34\" stop-color=\"white\" stop-opacity=\".48\"/>\n        <stop offset=\".48\" stop-color=\"white\" stop-opacity=\"0\"/>\n      </linearGradient>\n      <mask id=\"fade\"><rect width=\"1000\" height=\"1000\" fill=\"url(#falloff)\"/></mask>\n      <filter id=\"penumbra\" x=\"-25%\" y=\"-25%\" width=\"150%\" height=\"150%\">\n        <feGaussianBlur stdDeviation=\"3.8\"/>\n      </filter>\n    </defs>\n    <g mask=\"url(#fade)\" filter=\"url(#penumbra)\" fill=\"none\" stroke=\"#292724\">\n      <g transform=\"matrix(.82 -.24 .32 .9 -95 150)\" stroke-width=\"13\" stroke-linejoin=\"round\">\n        <path d=\"M0 0H380V740H0Z M190 0V740 M0 247H380 M0 493H380\"/>\n      </g>\n    </g>\n    </svg>`;return'url(\"data:image/svg+xml,'+encodeURIComponent(svg)+'\")';}const SIDE_SHADOW=sideShadow();/**\n * @framerIntrinsicWidth 2880\n * @framerIntrinsicHeight 2600\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function Ambience(props){const{role=\"both\",boxW=2880,boxH=2600,dayImage,dayBlend=\"multiply\",dayStrength=1,nightImage,nightImageBlend=\"screen\",nightImageStrength=1,driftOn=true,driftAmount=1.4,driftSeconds=54,nightTint=\"#161E2B\",nightStrength=.86,blindsOn=false,goboColor=\"150, 178, 220\",goboStrength=.18,slatAngle=-21,slat=34,gap=210,goboBlur=34,force=\"auto\",debug=false,style}=props;const live=useNight();const isCanvas=RenderTarget.current()===RenderTarget.canvas;const night=force===\"night\"?1:force===\"day\"?0:isCanvas?0:live;// The images and the gobo are patterns lying ON the desk surface, so they\n// belong to the layer that is UNDER the objects. OVER paints tint only —\n// running them twice would double-darken (§20.37).\nconst paintsPatterns=role!==\"over\";const daySrc=paintsPatterns?srcOf(dayImage):undefined;const nightSrc=paintsPatterns?srcOf(nightImage):undefined;// ── the wrapper walk (§20.43) ─────────────────────────────────────────\n// No dep array: Framer recreates instance wrappers on hot reload and a\n// mount-only effect gets silently undone. setState is guarded against an\n// identical value so this cannot loop.\nconst rootRef=useRef(null);const[chain,setChain]=useState(\"not run\");useEffect(()=>{const el=rootRef.current;if(!el)return;const notes=[];let p=el.parentElement;for(let i=0;i<4&&p;i++){if(p.childElementCount>2){notes.push(i+\": STOP \"+p.childElementCount+\" children\");break;}p.style.pointerEvents=\"none\";p.style.zIndex=role===\"over\"?\"50\":\"0\";notes.push(i+\": \"+p.tagName.toLowerCase()+\"(\"+p.childElementCount+\") none\");p=p.parentElement;}const next=notes.join(\"\\n\");setChain(prev=>prev===next?prev:next);});const layer={position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\"};const stripes=\"repeating-linear-gradient(\"+slatAngle+\"deg, rgba(0,0,0,0) 0px, rgba(0,0,0,0) \"+gap+\"px, rgb(\"+goboColor+\") \"+gap+\"px, rgb(\"+goboColor+\") \"+(gap+Math.max(2,slat))+\"px)\";const falloff=\"radial-gradient(ellipse 86% 74% at 2% -8%, rgba(0,0,0,1) 0%, rgba(0,0,0,0.88) 30%, rgba(0,0,0,0.4) 64%, rgba(0,0,0,0) 100%)\";const anim=driftOn&&!isCanvas;// Both mounted at load, crossfaded — never swapped (§6.7).\nconst dayOpacity=(1-night)*dayStrength;const nightOpacity=night*nightImageStrength;return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",pointerEvents:\"none\",overflow:\"hidden\",mixBlendMode:role===\"over\"?\"multiply\":\"normal\"},children:[/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{display:\"block\",width:boxW,height:boxH,maxWidth:\"100%\",pointerEvents:\"none\",visibility:\"hidden\"}}),/*#__PURE__*/_jsx(\"style\",{children:`\n@media (prefers-reduced-motion: reduce) { .desk-ambience-pattern { animation: none !important; } }\n@keyframes deskDriftA {\n  0%   { transform: translate3d(0,0,0) }\n  50%  { transform: translate3d(${driftAmount}%, ${driftAmount*.55}%, 0) }\n  100% { transform: translate3d(0,0,0) }\n}\n@keyframes deskDriftB {\n  0%   { transform: translate3d(0,0,0) }\n  50%  { transform: translate3d(${-driftAmount*.7}%, ${driftAmount*.9}%, 0) }\n  100% { transform: translate3d(0,0,0) }\n}`}),paintsPatterns&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{...layer,backgroundColor:\"#F7FAFC\",opacity:1-night}}),daySrc&&dayOpacity>.001?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,className:\"desk-ambience-pattern\",style:{...layer,backgroundImage:\"url(\"+daySrc+\")\",backgroundSize:\"cover\",backgroundPosition:\"center\",backgroundRepeat:\"no-repeat\",mixBlendMode:dayBlend,opacity:dayOpacity,animation:anim?`deskDriftB ${driftSeconds}s ease-in-out infinite`:undefined,willChange:anim?\"transform\":undefined}}):null,night>.001?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,className:\"desk-ambience-pattern\",style:{...layer,backgroundColor:role===\"over\"?\"transparent\":nightTint,backgroundImage:role===\"over\"?\"radial-gradient(ellipse 46% 64% at 16% 27%, rgba(29,43,64,.14) 0%, rgba(16,24,38,.44) 45%, rgba(10,16,26,.78) 100%)\":\"radial-gradient(ellipse 48% 62% at 17% 26%, rgba(147,177,215,.62) 0%, rgba(116,147,187,.28) 36%, rgba(116,147,187,0) 78%)\",mixBlendMode:\"normal\",opacity:night*nightStrength}}):null,nightSrc&&nightOpacity>.001?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,className:\"desk-ambience-pattern\",style:{...layer,backgroundImage:\"url(\"+nightSrc+\")\",backgroundSize:\"cover\",backgroundPosition:\"center\",backgroundRepeat:\"no-repeat\",mixBlendMode:nightImageBlend,opacity:nightOpacity,animation:anim?`deskDriftA ${driftSeconds*1.6}s ease-in-out infinite`:undefined,willChange:anim?\"transform\":undefined}}):null,blindsOn&&paintsPatterns&&night>.001?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,className:\"desk-ambience-pattern\",style:{...layer,backgroundImage:stripes,mixBlendMode:\"screen\",opacity:night*goboStrength,filter:\"blur(\"+goboBlur+\"px)\",WebkitMaskImage:falloff,maskImage:falloff,animation:anim?`deskDriftA ${driftSeconds*2.4}s ease-in-out infinite`:undefined,willChange:anim?\"transform\":undefined}}):null,role!==\"under\"&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{...layer,backgroundImage:SIDE_SHADOW,backgroundSize:\"100% 100%\",backgroundRepeat:\"no-repeat\",opacity:.15*(1-night)*dayStrength+.3*night}}),debug?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:12,top:12,padding:\"5px 9px\",background:\"#000\",color:\"#D0FF00\",font:\"500 11px/1.5 ui-monospace, monospace\",whiteSpace:\"pre\",pointerEvents:\"none\",mixBlendMode:\"normal\"},children:`Ambience v7  ${isCanvas?\"CANVAS\":\"preview\"}\nrole   ${role}${role===\"over\"?\"  (tint only)\":\"\"}\nbox    ${boxW} x ${boxH}\nforce  ${force}   night ${night.toFixed(3)}\ntint   ${(night*nightStrength).toFixed(3)}\nday    ${daySrc?\"image \"+dayOpacity.toFixed(2):paintsPatterns?\"NO IMAGE\":\"skipped\"}\nnite   ${nightSrc?\"image \"+nightOpacity.toFixed(2):paintsPatterns?\"no image\":\"skipped\"}\nwrapper chain\n${chain}`}):null]});}Ambience.displayName=\"Ambience\";addPropertyControls(Ambience,{role:{type:ControlType.Enum,title:\"Role\",options:[\"both\",\"under\",\"over\"],optionTitles:[\"both (single layer)\",\"under — desk\",\"over — objects\"],defaultValue:\"both\",description:\"under: z 0, strong, paints the images. over: z 50, weak, tint only. Two instances.\"},force:{type:ControlType.Enum,title:\"Force\",options:[\"auto\",\"day\",\"night\"],optionTitles:[\"auto (lamp)\",\"day\",\"night\"],defaultValue:\"auto\",description:\"the canvas has no store — use this to preview night\"},nightTint:{type:ControlType.Color,title:\"Night tint\",defaultValue:\"#161E2B\"},nightStrength:{type:ControlType.Number,title:\"Night\",description:\"under ~0.88, over ~0.35. The GAP is the contrast.\",defaultValue:.86,min:0,max:1,step:.01},dayImage:{type:ControlType.ResponsiveImage,title:\"Day image\",description:\"DARK marks on transparent. Multiply is the only mode that can take a white desk down.\",hidden:p=>p.role===\"over\"},dayStrength:{type:ControlType.Number,title:\"Day amount\",defaultValue:1,min:0,max:1,step:.01,hidden:p=>p.role===\"over\"},dayBlend:{type:ControlType.Enum,title:\"Day blend\",options:[\"multiply\",\"darken\",\"normal\",\"screen\"],defaultValue:\"multiply\",hidden:p=>p.role===\"over\"},nightImage:{type:ControlType.ResponsiveImage,title:\"Night image\",description:\"LIGHT marks on transparent. Screen only works once the tint has darkened the desk.\",hidden:p=>p.role===\"over\"},nightImageStrength:{type:ControlType.Number,title:\"Night amount\",defaultValue:1,min:0,max:1,step:.01,hidden:p=>p.role===\"over\"},nightImageBlend:{type:ControlType.Enum,title:\"Night blend\",options:[\"screen\",\"plus-lighter\",\"multiply\",\"normal\"],defaultValue:\"screen\",hidden:p=>p.role===\"over\"},driftOn:{type:ControlType.Boolean,title:\"Drift\",defaultValue:true},driftAmount:{type:ControlType.Number,title:\"Drift\",defaultValue:1.4,min:0,max:8,step:.1,unit:\"%\",hidden:p=>!p.driftOn},driftSeconds:{type:ControlType.Number,title:\"Cycle\",description:\"slow. Period beats amplitude for staying unnoticed\",defaultValue:54,min:6,max:240,step:1,unit:\"s\",hidden:p=>!p.driftOn},blindsOn:{type:ControlType.Boolean,title:\"Blinds\",description:\"off — they read as fabric, not light\",defaultValue:false,hidden:p=>p.role===\"over\"},goboColor:{type:ControlType.String,title:\"Moon RGB\",defaultValue:\"150, 178, 220\",hidden:p=>!p.blindsOn||p.role===\"over\"},goboStrength:{type:ControlType.Number,title:\"Blinds\",defaultValue:.18,min:0,max:1,step:.01,hidden:p=>!p.blindsOn||p.role===\"over\"},slatAngle:{type:ControlType.Number,title:\"Slat angle\",defaultValue:-21,min:-90,max:90,step:1,unit:\"\\xb0\",hidden:p=>!p.blindsOn||p.role===\"over\"},slat:{type:ControlType.Number,title:\"Slat\",defaultValue:34,min:2,max:400,step:2,unit:\"px\",hidden:p=>!p.blindsOn||p.role===\"over\"},gap:{type:ControlType.Number,title:\"Gap\",defaultValue:210,min:2,max:900,step:2,unit:\"px\",hidden:p=>!p.blindsOn||p.role===\"over\"},goboBlur:{type:ControlType.Number,title:\"Blinds blur\",defaultValue:34,min:0,max:120,step:1,unit:\"px\",hidden:p=>!p.blindsOn||p.role===\"over\"},boxW:{type:ControlType.Number,title:\"Box W\",defaultValue:2880,min:100,max:8e3,step:10,unit:\"px\"},boxH:{type:ControlType.Number,title:\"Box H\",defaultValue:2600,min:100,max:8e3,step:10,unit:\"px\"},debug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Ambience\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"2600\",\"framerIntrinsicWidth\":\"2880\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Ambience.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useRef,useCallback,useState,useSyncExternalStore}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * BlankZone.tsx — hover an empty part of the desk, the desk answers. §12.6\n *\n * ── WHY THIS IS CODE AND NOT THE NATIVE CURSOR ──\n *\n * §12.4 routes HOVER through Framer's native custom cursor and keeps the code\n * pill for logic-driven tips. That rule is right in general and wrong for this\n * object, and the reason is §20.17: a cursor message IS a variant, `Set\n * Variant` is the only control an element gets over the cursor, and nothing in\n * code can force one. So a day/night message needs two stacked hit frames, two\n * cursor variants, and an override killing one of them — four things to keep\n * aligned, each of which failed in turn.\n *\n * This is one component with two strings. It calls the same pill, so the\n * visual identity is identical either way — `window.__cursorTip` is what the\n * turntable's scratch egg and the dumbbell already use (§12.4, the code path).\n *\n * The exception is logged deliberately: hover stays native everywhere else.\n * The thing that made this one different is that its copy has TWO states.\n *\n * ── HOW IT WORKS ──\n *\n * A transparent box. Pointer enters, it reads `isNight` and shows the matching\n * line. Pointer leaves, it hides. That is the whole component.\n *\n * IT READS `isNight`, NOT `progress` — copy is a thing, not a grade, so it\n * changes AT the press while the room eases behind it (§6.3). It is read at\n * ENTER rather than subscribed, so flipping the lamp mid-hover does not swap\n * the line under the cursor; move out and back in, like any other hover.\n *\n * IT DOES NOT BLOCK THE CANVAS DRAG. §2.1 is about objects with their own\n * pointer interaction; this one has none. `pointerdown` is left alone so\n * pressing here and dragging still pans the desk, which is the whole point of\n * a blank region.\n *\n * Native listeners, not React handlers — consistent with every other\n * interactive object on the desk (§20.20), and a callback ref rather than\n * useEffect because these nodes are recreated on render.\n *\n * Nothing runs on the Framer canvas (§20.6). Test in Preview.\n */const TIP_VERSION=2;const STORE_VERSION=1;function tip(){if(typeof window===\"undefined\")return null;const t=window.__cursorTip;if(!t||t.version!==TIP_VERSION)return null;return t;}function subscribe(cb){if(typeof window===\"undefined\")return()=>{};const s=window.__deskLight;if(!s||s.version!==STORE_VERSION)return()=>{};if(typeof s.subscribe!==\"function\")return()=>{};return s.subscribe(cb);}function snapshot(){if(typeof window===\"undefined\")return false;const s=window.__deskLight;if(!s||s.version!==STORE_VERSION)return false;if(typeof s.getNight===\"function\")return!!s.getNight();if(typeof s.isNight===\"boolean\")return s.isNight;return false;}const serverSnapshot=()=>false;function useIsNight(){return useSyncExternalStore(subscribe,snapshot,serverSnapshot);}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 141\n * @framerIntrinsicHeight 141\n * @framerDisableUnlink\n */export default function BlankZone(props){const{dayText=\"Why are you hovering here?\",nightText=\"Same nothing, worse lighting.\",holdMs=0,debug=false,style}=props;const target=RenderTarget.current();const isCanvas=target===RenderTarget.canvas;const isNight=useIsNight();const wired=useRef(0);const enters=useRef(0);const[,bump]=useState(0);// Handlers read through a ref so the once-attached listeners never close\n// over a stale isNight (§20.20 / §20.24).\nconst H=useRef({});H.current.enter=()=>{enters.current+=1;if(debug)bump(v=>v+1);const t=tip();if(!t)return;const text=isNight?nightText:dayText;if(!text)return;if(holdMs>0&&typeof t.flash===\"function\")t.flash(text,holdMs);else if(typeof t.show===\"function\")t.show(text);};H.current.leave=()=>{const t=tip();if(t&&typeof t.hide===\"function\")t.hide();};const D=useRef(null);if(D.current===null){D.current={enter:()=>H.current.enter&&H.current.enter(),leave:()=>H.current.leave&&H.current.leave()};}const wire=useCallback(el=>{if(!el||isCanvas||el.__wired)return;el.__wired=true;wired.current+=1;// pointerenter / pointerleave do not bubble, so there is nothing\n// to stop and nothing upstream to break. pointerdown is\n// deliberately untouched — this region must stay pannable.\nel.addEventListener(\"pointerenter\",D.current.enter);el.addEventListener(\"pointerleave\",D.current.leave);},[isCanvas]);const targetName=target===RenderTarget.canvas?\"CANVAS (handlers off)\":target===RenderTarget.preview?\"preview\":\"other\";return /*#__PURE__*/_jsx(\"div\",{ref:wire,style:{...style,position:\"relative\",background:debug?isNight?\"rgba(80,120,255,0.28)\":\"rgba(0,200,80,0.28)\":\"transparent\",outline:debug?\"1px solid rgba(0,0,0,0.4)\":\"none\",cursor:\"default\"},children:debug?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:\"100%\",marginTop:6,padding:\"4px 8px\",background:\"#000\",color:\"#D0FF00\",font:\"500 10px/1.4 ui-monospace, monospace\",whiteSpace:\"pre\",pointerEvents:\"none\",zIndex:10},children:`target ${targetName}\nwired ${wired.current}  enters ${enters.current}\nlight ${isNight?\"NIGHT\":\"day\"}\nsays \"${isNight?nightText:dayText}\"\ntip ${tip()?\"ready v2\":\"MISSING\"}`}):null});}BlankZone.displayName=\"BlankZone\";addPropertyControls(BlankZone,{dayText:{type:ControlType.String,title:\"Day\",defaultValue:\"Why are you hovering here?\",displayTextArea:true},nightText:{type:ControlType.String,title:\"Night\",defaultValue:\"Same nothing, worse lighting.\",displayTextArea:true},holdMs:{type:ControlType.Number,title:\"Auto hide\",description:\"0 = stays while hovered, which is what a hover tip should do. Above 0 it times out.\",defaultValue:0,min:0,max:8e3,step:100,unit:\"ms\"},debug:{type:ControlType.Boolean,title:\"Debug\",description:\"tints the zone and prints what it will say\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BlankZone\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"141\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"141\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BlankZone.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useCallback,useState,useSyncExternalStore}from\"react\";import{motion,useMotionValue,useTransform,animate}from\"framer-motion\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * BumperPlate — the object that is technically draggable and practically not.\n * §12.5\n *\n * v7 — THE NIGHT LINE.\n *\n * At night the plate says ONE thing instead of working through the day list:\n * `Night line`, every qualifying grab. §12.5 / §6.8.\n *\n * TWO THINGS THIS GETS RIGHT, both easy to get wrong:\n *\n * 1. IT READS `isNight`, NOT `progress`. The switch is instantaneous and the\n *    room eases (§6.3) — a line of copy is a thing, not a grade, so it changes\n *    AT the press. `useNight()` returns the eased 0→1 and drives the shadow;\n *    `useIsNight()` returns the boolean and drives the copy. Two reads of one\n *    store, deliberately.\n *\n * 2. A NIGHT GRAB DOES NOT CONSUME A DAY LINE. `attempts` still advances, so\n *    the unlock is completely unchanged, but the day list has its own index\n *    that only moves when a day line is actually spoken. Otherwise a visitor\n *    who found the plate at night would come back in daylight to a running gag\n *    already half spent.\n *\n * Empty `Night line` = silence at night, which is a legitimate setting.\n *\n * v6 — REAL SHADOWS.\n *\n * The duplicated-image shadow is gone. It was one uniform blurred silhouette\n * offset uniformly, which is the shadow of an object floating in space under a\n * light infinitely far away — and it read exactly like that.\n *\n * Replaced with two chained drop-shadows on the artwork itself:\n *\n *   CONTACT   tight, dark, barely blurred, almost no offset. Sits directly\n *             under the object where no light reaches. This is the entire\n *             \"heavy near the ground\" read and it is what was missing.\n *   CAST      long, soft, weak, offset away from the window. The only one\n *             that existed before.\n *\n * drop-shadow follows the PNG's alpha, so it is a real silhouette, not a box.\n * Chained shadows composite in order: the cast shadows the RESULT of the\n * contact, which is what stops them reading as two separate objects.\n *\n * Loading the plate TIGHTENS the contact and SHORTENS the cast — the object\n * settling into the desk under force.\n *\n * v5 — THE UNLOCK NO LONGER HAS A CEILING.\n *\n * v4 capped post-unlock travel at `unlockedGive` px. Because the curve is\n * asymptotic, that cap applies in every direction from the grab point, which\n * is an invisible circle you cannot leave. Correct behaviour after the unlock\n * is free travel: the plate follows the cursor 1:1 past the breakaway.\n *\n * Weight after the unlock comes from LAG, not from a limit. A limit says\n * \"you can't\"; lag says \"it's heavy\". Only one of those is true here.\n *\n * THE MODEL\n *\n *   stiction   nothing moves until `breakaway` px of pull, EVERY grab, locked\n *              or unlocked. Translation cannot express mass — anything that\n *              moves has already lost the argument — so the deadzone is where\n *              the object acts. Force in, nothing out.\n *\n *   locked     past breakaway, offset = give·(1 - e^(-(d-breakaway)/softness)).\n *              Hard ceiling of `give` px for that grab.\n *\n *   unlocked   past breakaway, the pointer delta minus a breakaway's length.\n *              1:1. No ceiling.\n *\n *   lag        the rendered position chases the target with time constant\n *              `lag`. Invisible at 7px of creep, the whole feel once free.\n *\n *   commit     on release the offset folds into the resting position. NO\n *              SPRING BACK. Whatever it gives, it keeps.\n *\n * WIRING — §2.1 / §20.20, canonical statement in BlockCanvasDrag.tsx. Inlined\n * because code files cannot import each other and an override cannot reach\n * inside a code component. Stop pointerdown / mousedown / touchstart only;\n * pointermove and pointerup live on WINDOW and are never stopped. Callback ref,\n * not useEffect. One path per element — native throughout.\n *\n * Nothing here runs on the Framer editor canvas (§20.6). Preview only.\n *\n * No `layout` prop (§20.21). Nothing fixed-positioned (§20.22).\n */const TIP_VERSION=2;const TILT_DEG=1.25;const SQUASH=.005;// --- day/night ---------------------------------------------------------------\n// TWO reads of the one store (§6.9). `get()` is the eased 0→1 grade and drives\n// the shadow; `getNight()` is the instantaneous boolean and drives the copy.\nfunction lightSnapshot(){const w=typeof window!==\"undefined\"?window:null;const s=w&&w.__deskLight;return s&&typeof s.get===\"function\"?s.get():0;}function lightSubscribe(cb){const w=typeof window!==\"undefined\"?window:null;const s=w&&w.__deskLight;if(s&&typeof s.subscribe===\"function\")return s.subscribe(cb);return()=>{};}function useNight(){return useSyncExternalStore(lightSubscribe,lightSnapshot,()=>0);}function nightSnapshot(){const w=typeof window!==\"undefined\"?window:null;const s=w&&w.__deskLight;if(!s)return false;if(typeof s.getNight===\"function\")return!!s.getNight();if(typeof s.isNight===\"boolean\")return s.isNight;return false;}function useIsNight(){return useSyncExternalStore(lightSubscribe,nightSnapshot,()=>false);}function mix(a,b,t){return a+(b-a)*t;}function clamp01(v){return v<0?0:v>1?1:v;}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 376\n * @framerIntrinsicHeight 371\n * @framerDisableUnlink\n */export default function BumperPlate(props){const{src,roundness=1,lines=[\"Yeah, it's real.\",\"Still not moving.\",\"It lives here now.\",\"I thought you'd quit.\"],nightLine=\"Even I don't lift at this hour.\",tipMs=3200,breakaway=28,givePx=7,softness=110,unlockAfter=3,lag=.09,strain:strainAmount=1,shadowOn=true,shadowAngle=45,contactDist=3,contactBlur=6,contactOpacity=.42,castDist=30,castBlur=36,castOpacity=.13,nightLength=1.5,nightFade=.65,debug=false,style}=props;const target=RenderTarget.current();const isCanvas=target===RenderTarget.canvas;const night=useNight();const isNight=useIsNight();const x=useMotionValue(0);const y=useMotionValue(0);const rx=useMotionValue(0);const ry=useMotionValue(0);const load=useMotionValue(0);const base=useRef({x:0,y:0});const attempts=useRef(0);// The day list has its own index so a night grab cannot spend one.\nconst saidDay=useRef(0);const drag=useRef(null);const raf=useRef(null);// Read through a ref: the release handler is attached once and would\n// otherwise close over whichever value isNight had at mount (§20.20).\nconst nightRef=useRef(false);nightRef.current=isNight;const nightLineRef=useRef(nightLine);nightLineRef.current=nightLine;const wired=useRef(0);const downs=useRef(0);const[dbg,setDbg]=useState({d:0,l:0,g:0,n:0,unlocked:false,bx:0,by:0});const[,bump]=useState(0);const flash=useCallback(text=>{const w=window;if(w.__cursorTip&&w.__cursorTip.version===TIP_VERSION){w.__cursorTip.flash(text,tipMs);}},[tipMs]);const H=useRef({});const D=useRef(null);if(D.current===null){D.current={move:e=>H.current.move&&H.current.move(e),up:e=>H.current.up&&H.current.up(e),frame:t=>H.current.frame&&H.current.frame(t)};}H.current.frame=t=>{const d=drag.current;if(!d){raf.current=null;return;}const dt=d.last?Math.min((t-d.last)/1e3,.05):1/60;d.last=t;const k=lag<=0?1:1-Math.exp(-dt/lag);const cx=x.get();const cy=y.get();x.set(cx+(d.tx-cx)*k);y.set(cy+(d.ty-cy)*k);raf.current=requestAnimationFrame(D.current.frame);};H.current.down=e=>{downs.current+=1;if(debug)bump(v=>v+1);if(drag.current)return;const unlocked=attempts.current>=unlockAfter;drag.current={x0:e.clientX,y0:e.clientY,b:Math.max(1,breakaway),unlocked,qualified:false,tx:base.current.x,ty:base.current.y,last:0};window.addEventListener(\"pointermove\",D.current.move,{passive:true});window.addEventListener(\"pointerup\",D.current.up,{passive:true});window.addEventListener(\"pointercancel\",D.current.up,{passive:true});if(raf.current===null){raf.current=requestAnimationFrame(D.current.frame);}};H.current.move=e=>{const d=drag.current;if(!d)return;const dx=e.clientX-d.x0;const dy=e.clientY-d.y0;const dist=Math.hypot(dx,dy);const l=clamp01(dist/d.b);load.set(l);let gx=0;let gy=0;let g=0;if(dist>d.b){if(d.unlocked){const s=1-d.b/dist;gx=dx*s;gy=dy*s;}else{g=givePx*(1-Math.exp(-(dist-d.b)/softness));gx=dx/dist*g;gy=dy/dist*g;}if(!d.qualified)d.qualified=true;}d.tx=base.current.x+gx;d.ty=base.current.y+gy;if(dist>=.5){const ux=dx/dist;const uy=dy/dist;const t=l*TILT_DEG*strainAmount;rx.set(-uy*t);ry.set(ux*t);}if(debug){setDbg({d:dist,l,g:Math.hypot(gx,gy),n:attempts.current,unlocked:d.unlocked,bx:base.current.x,by:base.current.y});}};H.current.up=()=>{const d=drag.current;if(!d)return;drag.current=null;if(raf.current!==null){cancelAnimationFrame(raf.current);raf.current=null;}window.removeEventListener(\"pointermove\",D.current.move);window.removeEventListener(\"pointerup\",D.current.up);window.removeEventListener(\"pointercancel\",D.current.up);base.current={x:d.tx,y:d.ty};const settle={type:\"spring\",stiffness:420,damping:40};animate(x,base.current.x,settle);animate(y,base.current.y,settle);animate(load,0,{duration:.16,ease:\"easeOut\"});animate(rx,0,{duration:.16,ease:\"easeOut\"});animate(ry,0,{duration:.16,ease:\"easeOut\"});if(d.qualified){if(nightRef.current){// One line, every grab. The day list is not touched and its\n// index does not move.\nconst nl=nightLineRef.current;if(nl)flash(nl);}else{const line=lines[saidDay.current];if(line)flash(line);saidDay.current+=1;}// Always advances — the unlock is mechanical and does not care\n// what time of day it is.\nattempts.current+=1;}};const wire=useCallback(el=>{if(!el||isCanvas||el.__wired)return;el.__wired=true;wired.current+=1;el.addEventListener(\"pointerdown\",e=>{e.stopPropagation();H.current.down(e);},{passive:false});el.addEventListener(\"mousedown\",e=>e.stopPropagation(),{passive:false});el.addEventListener(\"touchstart\",e=>e.stopPropagation(),{passive:false});el.addEventListener(\"dragstart\",e=>e.preventDefault());},[isCanvas]);// --- shadow --------------------------------------------------------------\n// One light: the imaginary window off-canvas upper-left (§6.1). 45deg is\n// measured clockwise from 3 o'clock, so it points down-right. Every object\n// on the desk uses the same angle.\nconst rad=shadowAngle*Math.PI/180;const ux=Math.cos(rad);const uy=Math.sin(rad);// Night: longer, softer, weaker. Smaller and dimmer source. This one reads\n// the EASED value — a shadow is a grade, not a thing.\nconst nL=mix(1,nightLength,night);const nF=mix(1,nightFade,night);const shadowFilter=useTransform(load,v=>{const bright=`brightness(${mix(1,.62,night)}) saturate(${mix(1,.8,night)})`;if(!shadowOn)return bright;// Under load the object settles INTO the desk: the contact tightens\n// and darkens, the cast pulls in. Scaled by strain so `strain 0`\n// leaves the shadow static like everything else it governs.\nconst s=v*strainAmount;const cD=mix(contactDist,contactDist*.4,s)*nL;const cB=mix(contactBlur,contactBlur*.55,s)*nL;const cO=mix(contactOpacity,contactOpacity*1.25,s)*nF;const kD=mix(castDist,castDist*.72,s)*nL;const kB=mix(castBlur,castBlur*.85,s)*nL;const kO=mix(castOpacity,castOpacity*1.1,s)*nF;return`drop-shadow(${(ux*cD).toFixed(2)}px ${(uy*cD).toFixed(2)}px ${cB.toFixed(1)}px rgba(0,0,0,${cO.toFixed(3)})) `+`drop-shadow(${(ux*kD).toFixed(2)}px ${(uy*kD).toFixed(2)}px ${kB.toFixed(1)}px rgba(0,0,0,${kO.toFixed(3)})) `+bright;});const plateTransform=useTransform(load,v=>`scaleY(${roundness}) scale(${1-SQUASH*strainAmount*v})`);const targetName=target===RenderTarget.canvas?\"CANVAS (handlers off)\":target===RenderTarget.preview?\"preview\":target===RenderTarget.thumbnail?\"thumbnail\":\"export\";if(!src){return /*#__PURE__*/_jsx(\"div\",{style:{...style,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"rgba(0,0,0,0.04)\",border:\"1px dashed rgba(0,0,0,0.2)\",borderRadius:4,font:\"500 12px/1.2 sans-serif\",color:\"rgba(0,0,0,0.4)\"},children:\"BumperPlate — no image\"});}return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",overflow:\"visible\"},children:[/*#__PURE__*/_jsx(motion.div,{style:{position:\"relative\",width:\"100%\",perspective:1200,transformStyle:\"flat\",x,y,rotateX:rx,rotateY:ry,willChange:\"transform\",cursor:\"grab\",touchAction:\"none\"},children:/*#__PURE__*/_jsx(motion.img,{ref:wire,src:src,alt:\"Bumper plate\",draggable:false,style:{display:\"block\",position:\"relative\",width:\"100%\",height:\"auto\",userSelect:\"none\",pointerEvents:\"auto\",transform:plateTransform,filter:shadowFilter}})}),debug&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:\"100%\",marginTop:6,padding:\"4px 8px\",background:\"#000\",color:\"#D0FF00\",font:\"500 10px/1.4 ui-monospace, monospace\",whiteSpace:\"pre\",pointerEvents:\"none\",zIndex:10},children:`target ${targetName}\nwired ${wired.current}  downs ${downs.current}\npull ${dbg.d.toFixed(0)}  load ${dbg.l.toFixed(2)}  move ${dbg.g.toFixed(1)}\nrest ${dbg.bx.toFixed(0)},${dbg.by.toFixed(0)}  grabs ${dbg.n}  unlocked ${dbg.unlocked}\nlight ${isNight?\"NIGHT\":\"day\"}  next ${isNight?nightLine?\"night line\":\"SILENT\":lines[saidDay.current]||\"out of lines\"}\ntip ${typeof window!==\"undefined\"&&window.__cursorTip?.version===TIP_VERSION?\"ready v2\":\"MISSING\"}`})]});}BumperPlate.displayName=\"BumperPlate\";addPropertyControls(BumperPlate,{src:{type:ControlType.Image,title:\"Image\"},roundness:{type:ControlType.Number,title:\"Roundness\",description:\"scaleY correction for an out-of-round render\",defaultValue:1,min:.9,max:1.1,step:.002},lines:{type:ControlType.Array,title:\"Lines\",description:\"one per grab, in order. Runs out and stays quiet.\",control:{type:ControlType.String},defaultValue:[\"Yeah, it's real.\",\"Still not moving.\",\"It lives here now.\",\"I thought you'd quit.\"]},nightLine:{type:ControlType.String,title:\"Night line\",description:\"said on EVERY grab at night, instead of the day list. Empty = silent at night.\",defaultValue:\"Even I don't lift at this hour.\",placeholder:\"Even I don't lift at this hour.\"},tipMs:{type:ControlType.Number,title:\"Tip ms\",defaultValue:3200,min:800,max:8e3,step:100},breakaway:{type:ControlType.Number,title:\"Breakaway\",description:\"px of pull before anything moves, every grab.\",defaultValue:28,min:1,max:150,step:1},givePx:{type:ControlType.Number,title:\"Give\",description:\"furthest it moves in one grab BEFORE the unlock\",defaultValue:7,min:0,max:60,step:.5},softness:{type:ControlType.Number,title:\"Softness\",description:\"px past breakaway that spends 63% of the give\",defaultValue:110,min:10,max:500,step:5},unlockAfter:{type:ControlType.Number,title:\"Unlock after\",description:\"grabs before it moves freely. 3 = unlocks on the 4th.\",defaultValue:3,min:0,max:12,step:1,displayStepper:true},lag:{type:ControlType.Number,title:\"Lag\",description:\"seconds the plate trails the cursor. This is the weight.\",defaultValue:.09,min:0,max:.6,step:.01},strain:{type:ControlType.Number,title:\"Strain\",description:\"how visibly it loads — tilt, squash, shadow. 0 = off.\",defaultValue:1,min:0,max:2,step:.05},shadowOn:{type:ControlType.Boolean,title:\"Shadow\",defaultValue:true},shadowAngle:{type:ControlType.Number,title:\"Angle\",description:\"45 = down-right. Same for every object on the desk (\\xa76.1)\",defaultValue:45,min:0,max:360,step:1,unit:\"\\xb0\",hidden:p=>!p.shadowOn},contactDist:{type:ControlType.Number,title:\"Contact dist\",defaultValue:3,min:0,max:40,step:.5,unit:\"px\",hidden:p=>!p.shadowOn},contactBlur:{type:ControlType.Number,title:\"Contact blur\",defaultValue:6,min:0,max:80,step:.5,unit:\"px\",hidden:p=>!p.shadowOn},contactOpacity:{type:ControlType.Number,title:\"Contact\",description:\"the weight. Raise it if the object looks like it floats\",defaultValue:.42,min:0,max:1,step:.01,hidden:p=>!p.shadowOn},castDist:{type:ControlType.Number,title:\"Cast dist\",defaultValue:30,min:0,max:300,step:1,unit:\"px\",hidden:p=>!p.shadowOn},castBlur:{type:ControlType.Number,title:\"Cast blur\",defaultValue:36,min:0,max:300,step:1,unit:\"px\",hidden:p=>!p.shadowOn},castOpacity:{type:ControlType.Number,title:\"Cast\",defaultValue:.13,min:0,max:1,step:.01,hidden:p=>!p.shadowOn},nightLength:{type:ControlType.Number,title:\"Night length\",defaultValue:1.5,min:.5,max:4,step:.05,hidden:p=>!p.shadowOn},nightFade:{type:ControlType.Number,title:\"Night fade\",defaultValue:.65,min:0,max:2,step:.05,hidden:p=>!p.shadowOn},debug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"BumperPlate\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"371\",\"framerDisableUnlink\":\"\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"376\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./BumperPlate.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useRef,useCallback,useState,useEffect}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * CRTTV — the object that lights the room. v25.\n *\n * ════════════════════════════════════════════════════════════════════════\n * v25 — THROTTLING TIERS\n * ════════════════════════════════════════════════════════════════════════\n *\n * v24 killed the blur re-rasterisation, which was the big one. What was left\n * is cheaper but constant, and constant is what drains a phone battery.\n *\n * 1. THE FRAME IS CAPPED. The rAF body ran 60 times a second. Nothing in it\n *    needs 60: the spill is a 0.12 lerp, the volume a distance ramp. 30 is\n *    indistinguishable, 20 on a phone. The cap is checked BEFORE anything\n *    else, so a skipped frame costs one subtraction.\n *\n * 2. getBoundingClientRect IS BEHIND THE CAP. It was the first statement in\n *    the frame, so it forced a layout flush 60 times a second — including\n *    when the object was off-screen and the very next line was going to bail.\n *    A forced layout on a canvas this size is not free. Now it runs at the\n *    capped rate, and never while paused.\n *\n * 3. A WINDOW ON SCREEN PAUSES EVERYTHING. When __deskWindow has something\n *    open, the CRT is behind an opaque backdrop. The video was still\n *    decoding, the rAF still compositing a spill nobody can see. Now the\n *    video pauses and the frame body is skipped entirely.\n *\n * 4. OFF-SCREEN PAUSES THE VIDEO, not just the frame. v24's off-screen check\n *    skipped the frame body but left the decoder running. Decoding is the\n *    single most expensive thing this component does and it was the one thing\n *    the check did not stop.\n *\n * 5. A MOBILE TIER. Lower cap, and the glitch canvas drops to a third of its\n *    resolution — at Noise detail 3.75 that buffer is 600x225, and\n *    createImageData fills it pixel by pixel in JS on every glitch frame.\n *\n * PLAYBACK IS NOW DRIVEN FROM TWO PLACES, so it is funnelled through one\n * helper that acts only on a CHANGE. The effect owns channel and power; the\n * frame owns visibility. Without the change check they fight each other every\n * frame and `play()` throws.\n *\n * ════════════════════════════════════════════════════════════════════════\n * v24 — THE SPILL COST 60 BLUR PASSES A SECOND\n * ════════════════════════════════════════════════════════════════════════\n *\n * SYMPTOM: the frame rate collapsed as soon as the cone came on screen, at\n * night only.\n *\n * CAUSE: the rAF wrote `backgroundImage` on the cone, the haze and the\n * near-field EVERY FRAME. Those three carry `blur(80px)`, `blur(192px)` and\n * `blur(24px)`. Changing a background invalidates the layer, so three large\n * gaussian blurs were being recomputed 60 times a second. Opacity alone is\n * composited on the GPU and costs nothing — which is exactly why DAY was\n * fine: `Day strength` is 0, `op` stays 0, and the gradient branch never ran.\n *\n * Same family as §20.46 — a per-frame CSS filter on a big element destroys\n * the frame rate — and the fix is the same shape: stop touching the thing\n * that forces a re-raster.\n *\n * FOUR CHANGES, in order of what they buy:\n *\n * 1. THE GRADIENT IS WRITTEN ONLY WHEN IT CHANGES. Zone colours are quantised\n *    to 4/255 before the string is built and the result is compared against\n *    the last one. On real footage that drops background writes from 60/s to\n *    a handful. Opacity still updates every frame, so the light still\n *    breathes with the picture — the part you can actually see is untouched.\n *\n * 2. SAMPLING IS THROTTLED BY DISTANCE. Near, 15Hz. Mid, 6Hz. Past silence\n *    radius, not at all. `getImageData` is a GPU→CPU readback and it stalls\n *    the pipeline; at 60Hz it was the second cost. Interpolation between\n *    samples is what already existed — the 0.12 lerp — so nothing steps.\n *\n * 3. OFF-SCREEN IS A CHEAP EXIT. If the object's rect is outside the viewport\n *    by more than a margin, the frame does nothing but reschedule.\n *\n * 4. OPACITY WRITES ARE DIFFED. A style write with an identical value still\n *    costs a string conversion and a style recalc across four elements.\n *\n * `Sample Hz` exposes the near-field rate if it ever needs lowering further.\n *\n * ════════════════════════════════════════════════════════════════════════\n * v23 — THE REMOTE'S HIT REGIONS, RE-MEASURED\n * ════════════════════════════════════════════════════════════════════════\n *\n * Every marker sat down-right of its cap. Not a nudge: the new remote render\n * puts the same object at a different scale inside its canvas, so every\n * percentage moved by ONE uniform factor about the box (§20.48).\n *\n * The four channel caps are solid dark discs and were read directly off the\n * render; fitting old -> new across them gives\n *\n *     x_new = 0.9089 * x_old + 0.500\n *     y_new = 0.9584 * y_old + 0.027\n *\n * with the four residuals inside a tenth of a percent. Power and mute sit\n * partly under the debug ring, so a direct read on them is biased outward —\n * they come through the same transform instead.\n *\n * RE-MEASURE ON THE NEXT RE-RENDER. Do not nudge these by eye (§20.33).\n *\n * ════════════════════════════════════════════════════════════════════════\n * v22 — THE APERTURE MOVES, INDEPENDENTLY OF THE PICTURE\n * ════════════════════════════════════════════════════════════════════════\n *\n * `Screen X/Y/scale` shift the traced clip polygon itself, point by point.\n *\n *   the APERTURE  the traced hole in the shell. Clips everything.\n *   the PICTURE   the video inside it. `Video X/Y/scale/squash`.\n *\n * A white band along the top of the screen is the APERTURE reaching higher\n * than the picture. Moving the video up cannot close it; it just opens the\n * same gap at the bottom.\n *\n * ════════════════════════════════════════════════════════════════════════\n * v21 / v20 — GLASS CONTROLS, AND THE SHADOW\n * ════════════════════════════════════════════════════════════════════════\n *\n * `Glass X/Y/scale` — the glass plate is a SEPARATE PNG and the two only line\n * up if they were exported on the same canvas.\n *\n * The shadow is contact + cast, painted from a SECOND COPY of the shell at\n * z 0. Not a filter on the artwork: drop-shadow follows every alpha edge\n * including the screen aperture, and filtering the shell throws that hole's\n * shadow across the picture. Turn `Shadow` OFF on the v2 baked-shadow shell.\n *\n * The root is overflow: visible, but the FRAME in Framer must be too, and\n * sized past the artwork, or the cast is clipped (§20.49).\n *\n * ════════════════════════════════════════════════════════════════════════\n * v19 — TWO SHELLS\n * ════════════════════════════════════════════════════════════════════════\n *\n *                    v1 (2508 square)     v2 (baked shadow)\n *   canvas           2508 x 2508          2679 x 2650\n *   screen box       12.68 / 58.89        14.33 / 57.74\n *                    74.32 x 22.97 %      66.89 x 19.96 %\n *   squash           54.95 %              52.48 %\n *\n * CSS APPLIES `filter` BEFORE `clip-path`, so the blur is on a WRAPPER and\n * the clip on the child. Do not merge them again (§20.45).\n *\n * The cone paints above the room via SPILL_Z. NIGHT-ONLY — light adds to a\n * surface and there is nothing to add to on a white desk (§20.31).\n *\n * crossOrigin MUST be set BEFORE src (§20.30). The remote is NEVER\n * transformed — its angle is in the render.\n */// v1 — the original 2508 x 2508 square shell.\nconst CLIP_V1=\"polygon(12.68% 60.33%, 13.32% 58.93%, 13.96% 58.97%, 14.59% 59.09%, 15.23% 59.21%, 15.87% 59.29%, 16.51% 59.37%, 17.15% 59.45%, 17.78% 59.53%, 18.42% 59.65%, 19.06% 59.73%, 19.70% 59.81%, 20.33% 59.89%, 20.97% 59.97%, 21.61% 60.01%, 22.25% 60.09%, 22.89% 60.13%, 23.52% 60.21%, 24.16% 60.25%, 24.80% 60.33%, 25.44% 60.37%, 26.08% 60.41%, 26.71% 60.45%, 27.35% 60.49%, 27.99% 60.53%, 28.63% 60.53%, 29.27% 60.57%, 29.90% 60.61%, 30.54% 60.65%, 31.18% 60.69%, 31.82% 60.73%, 32.46% 60.77%, 33.09% 60.81%, 33.73% 60.81%, 34.37% 60.85%, 35.01% 60.85%, 35.65% 60.89%, 36.28% 60.89%, 36.92% 60.93%, 37.56% 60.93%, 38.20% 60.96%, 38.84% 60.96%, 39.47% 61.00%, 40.11% 61.00%, 40.75% 61.00%, 41.39% 61.00%, 42.03% 61.00%, 42.66% 61.04%, 43.30% 61.04%, 43.94% 61.04%, 44.58% 61.04%, 45.22% 61.04%, 45.85% 61.04%, 46.49% 61.08%, 47.13% 61.08%, 47.77% 61.08%, 48.41% 61.04%, 49.04% 61.04%, 49.68% 61.04%, 50.32% 61.04%, 50.96% 61.04%, 51.59% 61.04%, 52.23% 61.04%, 52.87% 61.04%, 53.51% 61.04%, 54.15% 61.04%, 54.78% 61.00%, 55.42% 61.00%, 56.06% 60.96%, 56.70% 60.96%, 57.34% 60.93%, 57.97% 60.93%, 58.61% 60.89%, 59.25% 60.89%, 59.89% 60.89%, 60.53% 60.85%, 61.16% 60.85%, 61.80% 60.81%, 62.44% 60.81%, 63.08% 60.77%, 63.72% 60.77%, 64.35% 60.73%, 64.99% 60.73%, 65.63% 60.69%, 66.27% 60.65%, 66.91% 60.61%, 67.54% 60.57%, 68.18% 60.57%, 68.82% 60.53%, 69.46% 60.49%, 70.10% 60.45%, 70.73% 60.41%, 71.37% 60.37%, 72.01% 60.29%, 72.65% 60.25%, 73.29% 60.17%, 73.92% 60.13%, 74.56% 60.05%, 75.20% 60.01%, 75.84% 59.97%, 76.48% 59.89%, 77.11% 59.85%, 77.75% 59.77%, 78.39% 59.73%, 79.03% 59.65%, 79.67% 59.61%, 80.30% 59.53%, 80.94% 59.45%, 81.58% 59.37%, 82.22% 59.29%, 82.85% 59.17%, 83.49% 59.09%, 84.13% 59.01%, 84.77% 58.97%, 85.41% 59.01%, 86.04% 59.01%, 86.68% 59.21%, 87.00% 60.81%, 87.00% 62.32%, 86.68% 64.99%, 86.04% 68.10%, 85.41% 70.41%, 84.77% 72.05%, 84.13% 73.68%, 83.49% 74.96%, 82.85% 76.00%, 82.22% 76.91%, 81.58% 77.63%, 80.94% 78.07%, 80.30% 78.47%, 79.67% 78.75%, 79.03% 78.99%, 78.39% 79.23%, 77.75% 79.39%, 77.11% 79.55%, 76.48% 79.67%, 75.84% 79.78%, 75.20% 79.86%, 74.56% 79.98%, 73.92% 80.10%, 73.29% 80.22%, 72.65% 80.30%, 72.01% 80.42%, 71.37% 80.54%, 70.73% 80.62%, 70.10% 80.66%, 69.46% 80.74%, 68.82% 80.82%, 68.18% 80.86%, 67.54% 80.94%, 66.91% 81.02%, 66.27% 81.06%, 65.63% 81.14%, 64.99% 81.22%, 64.35% 81.26%, 63.72% 81.34%, 63.08% 81.42%, 62.44% 81.46%, 61.80% 81.50%, 61.16% 81.50%, 60.53% 81.54%, 59.89% 81.58%, 59.25% 81.62%, 58.61% 81.66%, 57.97% 81.70%, 57.34% 81.70%, 56.70% 81.74%, 56.06% 81.78%, 55.42% 81.78%, 54.78% 81.78%, 54.15% 81.78%, 53.51% 81.82%, 52.87% 81.82%, 52.23% 81.82%, 51.59% 81.82%, 50.96% 81.86%, 50.32% 81.86%, 49.68% 81.86%, 49.04% 81.86%, 48.41% 81.86%, 47.77% 81.86%, 47.13% 81.82%, 46.49% 81.82%, 45.85% 81.82%, 45.22% 81.82%, 44.58% 81.82%, 43.94% 81.78%, 43.30% 81.78%, 42.66% 81.78%, 42.03% 81.74%, 41.39% 81.70%, 40.75% 81.66%, 40.11% 81.62%, 39.47% 81.62%, 38.84% 81.58%, 38.20% 81.54%, 37.56% 81.50%, 36.92% 81.46%, 36.28% 81.42%, 35.65% 81.38%, 35.01% 81.30%, 34.37% 81.22%, 33.73% 81.18%, 33.09% 81.10%, 32.46% 81.06%, 31.82% 80.98%, 31.18% 80.90%, 30.54% 80.86%, 29.90% 80.78%, 29.27% 80.66%, 28.63% 80.58%, 27.99% 80.50%, 27.35% 80.42%, 26.71% 80.30%, 26.08% 80.18%, 25.44% 80.06%, 24.80% 79.90%, 24.16% 79.78%, 23.52% 79.67%, 22.89% 79.55%, 22.25% 79.39%, 21.61% 79.19%, 20.97% 78.99%, 20.33% 78.79%, 19.70% 78.47%, 19.06% 78.11%, 18.42% 77.63%, 17.78% 77.03%, 17.15% 76.20%, 16.51% 75.16%, 15.87% 73.88%, 15.23% 72.49%, 14.59% 70.85%, 13.96% 68.94%, 13.32% 66.51%, 12.68% 61.72%)\";// v2 — TVShell_Shadow.png, 2679 x 2650, traced from its alpha at 16px,\n// dilated 3px, largest interior hole only (the vents are holes too).\nconst CLIP_V2=\"polygon(14.33% 58.11%, 14.93% 57.70%, 15.53% 57.81%, 16.13% 57.85%, 16.72% 57.96%, 17.32% 58.04%, 17.92% 58.11%, 18.51% 58.19%, 19.11% 58.23%, 19.71% 58.34%, 20.31% 58.42%, 20.90% 58.49%, 21.50% 58.60%, 22.10% 58.64%, 22.70% 58.64%, 23.29% 58.72%, 23.89% 58.75%, 24.49% 58.87%, 25.08% 58.87%, 25.68% 58.94%, 26.28% 58.98%, 26.88% 59.02%, 27.47% 59.02%, 28.07% 59.06%, 28.67% 59.09%, 29.26% 59.17%, 29.86% 59.21%, 30.46% 59.21%, 31.06% 59.28%, 31.65% 59.32%, 32.25% 59.36%, 32.85% 59.32%, 33.45% 59.36%, 34.04% 59.36%, 34.64% 59.40%, 35.24% 59.43%, 35.83% 59.43%, 36.43% 59.47%, 37.03% 59.51%, 37.63% 59.51%, 38.22% 59.51%, 38.82% 59.55%, 39.42% 59.55%, 40.01% 59.55%, 40.61% 59.58%, 41.21% 59.55%, 41.81% 59.58%, 42.40% 59.58%, 43.00% 59.58%, 43.60% 59.58%, 44.20% 59.58%, 44.79% 59.58%, 45.39% 59.62%, 45.99% 59.62%, 46.58% 59.58%, 47.18% 59.62%, 47.78% 59.58%, 48.38% 59.58%, 48.97% 59.58%, 49.57% 59.55%, 50.17% 59.58%, 50.77% 59.62%, 51.36% 59.58%, 51.96% 59.58%, 52.56% 59.58%, 53.15% 59.55%, 53.75% 59.55%, 54.35% 59.51%, 54.95% 59.51%, 55.54% 59.47%, 56.14% 59.51%, 56.74% 59.43%, 57.33% 59.47%, 57.93% 59.43%, 58.53% 59.40%, 59.13% 59.36%, 59.72% 59.36%, 60.32% 59.36%, 60.92% 59.36%, 61.52% 59.32%, 62.11% 59.32%, 62.71% 59.28%, 63.31% 59.25%, 63.90% 59.25%, 64.50% 59.17%, 65.10% 59.13%, 65.70% 59.13%, 66.29% 59.06%, 66.89% 59.06%, 67.49% 59.02%, 68.09% 58.98%, 68.68% 58.91%, 69.28% 58.87%, 69.88% 58.83%, 70.47% 58.79%, 71.07% 58.72%, 71.67% 58.68%, 72.27% 58.64%, 72.86% 58.60%, 73.46% 58.57%, 74.06% 58.49%, 74.65% 58.42%, 75.25% 58.34%, 75.85% 58.30%, 76.45% 58.23%, 77.04% 58.15%, 77.64% 58.11%, 78.24% 58.04%, 78.84% 57.96%, 79.43% 57.85%, 80.03% 57.81%, 80.63% 57.74%, 81.22% 57.62%, 81.22% 62.34%, 80.63% 65.09%, 80.03% 67.25%, 79.43% 68.75%, 78.84% 70.30%, 78.24% 71.47%, 77.64% 72.42%, 77.04% 73.28%, 76.45% 73.89%, 75.85% 74.30%, 75.25% 74.64%, 74.65% 74.91%, 74.06% 75.13%, 73.46% 75.36%, 72.86% 75.51%, 72.27% 75.62%, 71.67% 75.74%, 71.07% 75.85%, 70.47% 75.96%, 69.88% 76.08%, 69.28% 76.15%, 68.68% 76.26%, 68.09% 76.38%, 67.49% 76.49%, 66.89% 76.57%, 66.29% 76.64%, 65.70% 76.68%, 65.10% 76.75%, 64.50% 76.83%, 63.90% 76.87%, 63.31% 76.94%, 62.71% 77.02%, 62.11% 77.06%, 61.52% 77.13%, 60.92% 77.21%, 60.32% 77.25%, 59.72% 77.32%, 59.13% 77.40%, 58.53% 77.43%, 57.93% 77.43%, 57.33% 77.47%, 56.74% 77.51%, 56.14% 77.55%, 55.54% 77.58%, 54.95% 77.62%, 54.35% 77.62%, 53.75% 77.66%, 53.15% 77.70%, 52.56% 77.70%, 51.96% 77.70%, 51.36% 77.74%, 50.77% 77.74%, 50.17% 77.74%, 49.57% 77.74%, 48.97% 77.77%, 48.38% 77.77%, 47.78% 77.77%, 47.18% 77.81%, 46.58% 77.81%, 45.99% 77.77%, 45.39% 77.77%, 44.79% 77.77%, 44.20% 77.77%, 43.60% 77.77%, 43.00% 77.74%, 42.40% 77.74%, 41.81% 77.74%, 41.21% 77.74%, 40.61% 77.70%, 40.01% 77.70%, 39.42% 77.66%, 38.82% 77.62%, 38.22% 77.58%, 37.63% 77.55%, 37.03% 77.55%, 36.43% 77.51%, 35.83% 77.47%, 35.24% 77.43%, 34.64% 77.40%, 34.04% 77.36%, 33.45% 77.28%, 32.85% 77.21%, 32.25% 77.17%, 31.65% 77.09%, 31.06% 77.06%, 30.46% 76.98%, 29.86% 76.91%, 29.26% 76.87%, 28.67% 76.79%, 28.07% 76.68%, 27.47% 76.60%, 26.88% 76.53%, 26.28% 76.45%, 25.68% 76.34%, 25.08% 76.23%, 24.49% 76.08%, 23.89% 75.96%, 23.29% 75.85%, 22.70% 75.70%, 22.10% 75.58%, 21.50% 75.43%, 20.90% 75.25%, 20.31% 75.02%, 19.71% 74.75%, 19.11% 74.34%, 18.51% 73.70%, 17.92% 72.91%, 17.32% 71.89%, 16.72% 70.64%, 16.13% 69.13%, 15.53% 67.47%, 14.93% 65.43%, 14.33% 62.00%)\";const GEO={v1:{clip:CLIP_V1,box:{left:12.68,top:58.89,width:74.32,height:22.97},squash:54.95,label:\"2508 square\"},v2:{clip:CLIP_V2,box:{left:14.33,top:57.74,width:66.89,height:19.96},squash:52.48,label:\"2679x2650 baked shadow\"}};function shiftPoly(poly,dx,dy,scale){if(dx===0&&dy===0&&scale===100)return poly;const open=poly.indexOf(\"(\");const close=poly.lastIndexOf(\")\");if(open<0||close<0)return poly;const pts=[];const parts=poly.slice(open+1,close).split(\",\");for(let i=0;i<parts.length;i++){const nums=parts[i].trim().split(/\\s+/);const x=parseFloat(nums[0]);const y=parseFloat(nums[1]);if(isNaN(x)||isNaN(y))return poly;pts.push([x,y]);}if(!pts.length)return poly;let minX=Infinity,maxX=-Infinity,minY=Infinity,maxY=-Infinity;for(let i=0;i<pts.length;i++){if(pts[i][0]<minX)minX=pts[i][0];if(pts[i][0]>maxX)maxX=pts[i][0];if(pts[i][1]<minY)minY=pts[i][1];if(pts[i][1]>maxY)maxY=pts[i][1];}const cx=(minX+maxX)/2;const cy=(minY+maxY)/2;const s=scale/100;const out=[];for(let i=0;i<pts.length;i++){out.push((cx+(pts[i][0]-cx)*s+dx).toFixed(2)+\"% \"+(cy+(pts[i][1]-cy)*s+dy).toFixed(2)+\"%\");}return\"polygon(\"+out.join(\", \")+\")\";}// Clears Ambience's room layer. The TV BODY stays underneath it.\nconst SPILL_Z=60;// The cone leaves the glass too high — it has to clear the lower bezel before\n// it reaches the desk. `Cone nudge` is on top of this.\nconst CONE_DROP=2.6;// Off-screen by more than this and the frame does nothing.\nconst OFFSCREEN_MARGIN=600;const LED={left:42.29,top:90.98};const SHELL_PLASTIC=\"rgb(150,143,134)\";/**\n * Measured on the CURRENT remote render, v23.\n * RE-MEASURE ON ANY RE-RENDER — never nudge by eye (§20.33).\n */const REMOTE_BUTTONS=[{key:\"power\",x:31.34,y:26.17,r:6.5},{key:\"mute\",x:47.78,y:24.51,r:6.1},{key:\"ch0\",x:35.51,y:38.77,r:6.4},{key:\"ch1\",x:52.43,y:37,r:6.4},{key:\"ch2\",x:39.07,y:49,r:6.4},{key:\"ch3\",x:55.86,y:47.31,r:6.4}];function readDeskLight(){try{const s=window.__deskLight;if(!s)return null;if(typeof s.isNight===\"boolean\")return s.isNight;if(typeof s.night===\"boolean\")return s.night;return null;}catch(e){return null;}}/** v25 — is a DeskWindow open? Behind an opaque backdrop, nothing here is visible. */function windowIsOpen(){try{const s=window.__deskWindow;if(!s||typeof s.get!==\"function\")return false;return s.get()!==null;}catch(e){return false;}}const DEFAULT_CHANNELS=[{label:\"ch 1\",tint:\"#3f7ad6\"},{label:\"ch 2\",tint:\"#d64a2f\"},{label:\"ch 3\",tint:\"#b08a5a\"},{label:\"ch 4\",tint:\"#4a6f7a\"}];function clamp01(v){return v<0?0:v>1?1:v;}function smoothstep(a,b,x){const t=clamp01((x-a)/(b-a||1));return t*t*(3-2*t);}function hexToRgb(hex){if(!hex)return[140,140,140];if(hex.indexOf(\"rgb\")===0){const m=hex.match(/(\\d+)[^\\d]+(\\d+)[^\\d]+(\\d+)/);if(m)return[+m[1],+m[2],+m[3]];return[140,140,140];}let h=hex.trim().replace(\"#\",\"\");if(h.length===3)h=h[0]+h[0]+h[1]+h[1]+h[2]+h[2];const n=parseInt(h.slice(0,6),16);if(isNaN(n))return[140,140,140];return[n>>16&255,n>>8&255,n&255];}// Keep the hue, discard the darkness. A dark red becomes a PALE red — that is\n// what red light on a surface looks like. Brightness drives opacity (§20.31).\n// QUANTISED to 4/255: the gradient string is only rewritten when this output\n// actually changes, and 4 levels is well below what a 192px blur can show.\nfunction tintOf(r,g,b,sat){const mx=Math.max(r,g,b,1);const q=v=>Math.round(255*v/4)*4;return[q(1-sat*(1-r/mx)),q(1-sat*(1-g/mx)),q(1-sat*(1-b/mx))];}function rgbStr(c){return\"rgb(\"+c[0]+\",\"+c[1]+\",\"+c[2]+\")\";}function acrossGradient(a,b,c){return\"linear-gradient(to right, \"+rgbStr(a)+\" 6%, \"+rgbStr(b)+\" 50%, \"+rgbStr(c)+\" 94%)\";}// Writing an identical value still costs a style recalc across four elements\n// sixty times a second. Diff first.\nfunction setOpacity(el,v,last,i){if(!el)return;if(Math.abs(v-last[i])<.002)return;last[i]=v;el.style.opacity=v.toFixed(3);}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 2508\n * @framerIntrinsicHeight 2508\n * @framerDisableUnlink\n */export default function CRTTV(props){const{shell,shellVersion=\"v1\",glass,remote,channels=DEFAULT_CHANNELS,startOn=true,startChannel=1,lazyMargin=900,sampleHz=15,maxFps=30,mobileFps=20,mobileBelow=810,pauseInWindow=true,screenX=0,screenY=0,screenScale=100,videoScale=100,videoSquash=0,videoX=0,videoY=0,videoRotate=0,glassOpacity=.34,glassScale=100,glassX=0,glassY=0,scanlines=.2,curvature=.5,noiseDetail=3,noiseLevel=.55,shadowOn=true,shadowAngle=45,contactDist=3,contactBlur=6,contactOpacity=.42,castDist=30,castBlur=36,castOpacity=.13,nightLength=1.5,nightFade=.65,lightMode=\"auto\",spillMode=\"auto\",dayStrength=0,nightBlend=\"screen\",nightStrength=1.6,nightSat=.85,coneNudge=0,coneLength=80,coneSpread=2.4,coneBlur=80,coneReach=58,hotSize=9,hotLevel=1.15,hazeLevel=.9,bounce=.12,fullRadius=340,silenceRadius=1300,maxVolume=55,glitchMs=170,shellPower=false,powerX=39.5,powerY=91,powerSize=3,remoteX=84,remoteY=84,remoteW=12,hitScale=1,hitX=0,hitY=0,warmOthers=true,debug=false,style}=props;const geo=GEO[shellVersion]||GEO.v1;const SCREEN_CLIP=shiftPoly(geo.clip,screenX,screenY,screenScale);const SCREEN_BOX=geo.box;const SCREEN_CX=SCREEN_BOX.left+SCREEN_BOX.width/2+screenX;const SCREEN_BOTTOM=SCREEN_BOX.top+SCREEN_BOX.height+screenY;const squash=videoSquash>0?videoSquash:geo.squash;const target=RenderTarget.current();const isCanvas=target===RenderTarget.canvas;const list=channels&&channels.length?channels:DEFAULT_CHANNELS;const first=Math.min(Math.max(1,Math.round(startChannel)),list.length)-1;const[power,setPower]=useState(startOn);const[muted,setMuted]=useState(true);const[channel,setChannel]=useState(first);const[pressed,setPressed]=useState(null);const[warm,setWarm]=useState(false);const[inView,setInView]=useState(false);const[autoNight,setAutoNight]=useState(false);const[isMobile,setIsMobile]=useState(false);const isNight=lightMode===\"night\"?true:lightMode===\"day\"?false:autoNight;const blend=isNight?nightBlend:\"multiply\";const strength=isNight?nightStrength:dayStrength;const sat=nightSat;// v25 — the mobile tier. One query for the whole component.\nuseEffect(()=>{if(isCanvas||typeof window===\"undefined\"||!window.matchMedia)return;if(!mobileBelow||mobileBelow<=0){setIsMobile(false);return;}const mq=window.matchMedia(\"(max-width: \"+(mobileBelow-1)+\"px)\");const read=()=>setIsMobile(mq.matches);read();if(mq.addEventListener){mq.addEventListener(\"change\",read);return()=>mq.removeEventListener(\"change\",read);}mq.addListener(read);return()=>mq.removeListener(read);},[isCanvas,mobileBelow]);const fpsCap=Math.max(1,isMobile?mobileFps:maxFps);// The glitch buffer is filled pixel by pixel in JS. At Noise detail 3.75\n// that is 600x225 per frame of interference.\nconst noiseScale=isMobile?noiseDetail/3:noiseDetail;// ── the shadow ────────────────────────────────────────────────────────\nconst sRad=shadowAngle*Math.PI/180;const sUx=Math.cos(sRad);const sUy=Math.sin(sRad);const nL=isNight?nightLength:1;const nF=isNight?nightFade:1;const cD=contactDist*nL;const cB=contactBlur*nL;const cO=contactOpacity*nF;const kD=castDist*nL;const kB=castBlur*nL;const kO=castOpacity*nF;const shadowFilter=shadowOn?\"drop-shadow(\"+(sUx*cD).toFixed(2)+\"px \"+(sUy*cD).toFixed(2)+\"px \"+cB.toFixed(1)+\"px rgba(0,0,0,\"+cO.toFixed(3)+\")) drop-shadow(\"+(sUx*kD).toFixed(2)+\"px \"+(sUy*kD).toFixed(2)+\"px \"+kB.toFixed(1)+\"px rgba(0,0,0,\"+kO.toFixed(3)+\"))\":\"none\";const glassXform=\"translate(\"+glassX+\"%, \"+glassY+\"%) scale(\"+glassScale/100+\")\";const live=useRef({dist:0,gain:0,vol:0,z:[[140,140,140],[140,140,140],[140,140,140]],level:0,op:0,glitchUntil:0,powerAt:0,sampling:false,rs:-1,err:\"\",// v24 — what stops the blur re-rasterising every frame.\nlastBg:\"\",lastTint:\"\",lastOp:[-1,-1,-1,-1,-1],nextSample:0,hz:0,bgWrites:0,samples:0,skipped:false,// v25 — the tiers.\nlastFrame:0,frames:0,fps:0,playing:null,pausedBy:\"\"});const rootRef=useRef(null);const coneRef=useRef(null);const hazeRef=useRef(null);const hotRef=useRef(null);const shellTintRef=useRef(null);const remoteTintRef=useRef(null);const glitchRef=useRef(null);const stackRef=useRef(null);const videoEls=useRef([]);const visited=useRef([]);const sampler=useRef(null);const raf=useRef(null);const wired=useRef(0);const clicks=useRef(0);const[,bump]=useState(0);const chan=list[channel]||{};const usesFile=!!chan.videoSrc;const S=useRef({});S.current={power,muted,channel,list,maxVolume,spillMode,strength,sat,hotLevel,hazeLevel,bounce,sampleHz,fullRadius,silenceRadius,noiseLevel,fpsCap,pauseInWindow};const H=useRef({});const D=useRef(null);if(D.current===null){D.current={frame:t=>H.current.frame&&H.current.frame(t)};}useEffect(()=>{if(isCanvas||lightMode!==\"auto\")return;const tick=()=>{const n=readDeskLight();if(n!==null)setAutoNight(n);};tick();const id=setInterval(tick,400);return()=>clearInterval(id);},[isCanvas,lightMode]);useEffect(()=>{if(isCanvas){setInView(true);return;}const el=rootRef.current;if(!el||typeof IntersectionObserver===\"undefined\"){setInView(true);return;}const obs=new IntersectionObserver(entries=>{if(entries[0]&&entries[0].isIntersecting){obs.disconnect();setInView(true);}},{rootMargin:lazyMargin+\"px\"});obs.observe(el);return()=>obs.disconnect();},[isCanvas,lazyMargin]);const glitch=useCallback(()=>{live.current.glitchUntil=performance.now()+glitchMs;},[glitchMs]);const act=useCallback(key=>{clicks.current+=1;setWarm(true);if(key===\"power\"){if(!S.current.power)live.current.powerAt=performance.now();setPower(p=>!p);glitch();return;}if(key===\"mute\"){setMuted(m=>!m);return;}const n=parseInt(key.replace(\"ch\",\"\"),10);if(!isNaN(n)){if(S.current.channel!==n)glitch();setChannel(n);if(!S.current.power){live.current.powerAt=performance.now();setPower(true);glitch();}}},[glitch]);const isMounted=useCallback(i=>inView&&(i===channel||warmOthers&&warm),[channel,warm,warmOthers,inView]);const wireVideo=useCallback((i,src)=>el=>{videoEls.current[i]=el;if(!el||!src)return;if(el.__src===src)return;el.__src=src;el.crossOrigin=\"anonymous\";el.muted=true;el.loop=true;el.playsInline=true;el.preload=\"auto\";el.src=src;},[]);/**\n     * v25 — the ONLY place playback is changed from the frame loop.\n     *\n     * The effect below owns channel and power; this owns visibility. Both\n     * write to the same element, so this acts only on a CHANGE — calling\n     * play() every frame throws, and calling pause() every frame fights the\n     * effect.\n     */const setPlayback=useCallback(shouldPlay=>{const L=live.current;if(L.playing===shouldPlay)return;L.playing=shouldPlay;const st=S.current;for(let i=0;i<videoEls.current.length;i++){const v=videoEls.current[i];if(!v)continue;if(!shouldPlay){try{v.pause();}catch(e){}}else if(i===st.channel&&st.power){const p=v.play();if(p&&typeof p.catch===\"function\")p.catch(()=>{});}}},[]);useEffect(()=>{if(isCanvas)return;for(let i=0;i<videoEls.current.length;i++){const v=videoEls.current[i];if(!v)continue;if(!power){try{v.pause();}catch(e){}continue;}if(i===channel){if(!visited.current[i]){visited.current[i]=true;try{v.currentTime=0;}catch(e){}}const p=v.play();if(p&&typeof p.catch===\"function\")p.catch(()=>{});}else if(!visited.current[i]){try{v.pause();if(v.currentTime>.05)v.currentTime=0;}catch(e){}}}// The frame loop's view of playback is now stale.\nlive.current.playing=power;},[channel,power,inView,warm,isCanvas,list.length]);H.current.frame=t=>{const root=rootRef.current;if(!root){raf.current=requestAnimationFrame(D.current.frame);return;}const L=live.current;const st=S.current;// ── v25.1 — THE CAP, BEFORE ANYTHING ELSE ────────────────────────\n// A skipped frame costs one subtraction. Everything below, including\n// the layout read, happens at the capped rate.\nif(t-L.lastFrame<1e3/st.fpsCap){raf.current=requestAnimationFrame(D.current.frame);return;}L.lastFrame=t;L.frames+=1;// ── v25.3 — A WINDOW ON SCREEN PAUSES EVERYTHING ─────────────────\n// Behind an opaque backdrop there is nothing to see and nothing to\n// light. Pause the decoder and skip the body.\nif(st.pauseInWindow&&windowIsOpen()){L.pausedBy=\"window\";L.skipped=true;setPlayback(false);raf.current=requestAnimationFrame(D.current.frame);return;}const r=root.getBoundingClientRect();// ── 3 / v25.4 — off-screen: skip the frame AND pause the decoder ──\nconst off=r.bottom<-OFFSCREEN_MARGIN||r.top>window.innerHeight+OFFSCREEN_MARGIN||r.right<-OFFSCREEN_MARGIN||r.left>window.innerWidth+OFFSCREEN_MARGIN;L.skipped=off;if(off){L.pausedBy=\"offscreen\";setPlayback(false);raf.current=requestAnimationFrame(D.current.frame);return;}L.pausedBy=\"\";setPlayback(st.power);const dist=Math.hypot(r.left+r.width/2-window.innerWidth/2,r.top+r.height/2-window.innerHeight/2);L.dist=dist;L.gain=1-smoothstep(st.fullRadius,st.silenceRadius,dist);// ── 2. sampling throttled by distance ────────────────────────────\n// getImageData is a GPU->CPU readback and stalls the pipeline. Near,\n// full rate; mid, a third of it; past silence, not at all. The 0.12\n// lerp below interpolates between samples so nothing steps.\nconst near=dist<st.fullRadius*1.6;const hz=near?Math.max(1,st.sampleHz):dist<st.silenceRadius?6:0;L.hz=hz;const due=hz>0&&t>=L.nextSample;if(due)L.nextSample=t+1e3/hz;let lvl=L.level;let sampled=false;const c=st.list[st.channel]||{};if(st.power&&due){const vid=videoEls.current[st.channel];L.rs=vid?vid.readyState:-1;if(c.videoSrc&&vid&&vid.readyState>=2){if(!sampler.current){const cv=document.createElement(\"canvas\");cv.width=9;cv.height=6;sampler.current=cv.getContext(\"2d\",{willReadFrequently:true});}const sc=sampler.current;if(sc){try{sc.drawImage(vid,0,0,9,6);const d=sc.getImageData(0,4,9,2).data;let lumSum=0;const zones=[[0,0,0],[0,0,0],[0,0,0]];for(let z=0;z<3;z++){let ar=0,ag=0,ab=0,n=0;for(let row=0;row<2;row++){for(let x=z*3;x<z*3+3;x++){const i=(row*9+x)*4;ar+=d[i];ag+=d[i+1];ab+=d[i+2];n++;}}zones[z]=[ar/n,ag/n,ab/n];lumSum+=.299*zones[z][0]+.587*zones[z][1]+.114*zones[z][2];}// The lerp still runs every frame below; this only\n// refreshes the TARGET.\nfor(let z=0;z<3;z++)L.z[z]=[L.z[z][0]+(zones[z][0]-L.z[z][0])*.55,L.z[z][1]+(zones[z][1]-L.z[z][1])*.55,L.z[z][2]+(zones[z][2]-L.z[z][2])*.55];lvl=clamp01(lumSum/3/150);sampled=true;L.samples+=1;L.err=\"\";}catch(err){L.err=err&&(err.name||err.message)||\"throw\";}}}else if(st.spillMode===\"always\"){const rgb=hexToRgb(c.tint);L.z[0]=[rgb[0]*.85,rgb[1]*.85,rgb[2]*.95];L.z[1]=[rgb[0],rgb[1],rgb[2]];L.z[2]=[rgb[0]*.9,rgb[1]*.95,rgb[2]*.85];lvl=clamp01(.72+.18*Math.sin(t/430)+.1*Math.sin(t/137));sampled=true;}}if(sampled)L.sampling=true;if(!st.power)L.sampling=false;if(st.power&&L.powerAt){const p=clamp01((t-L.powerAt)/420);lvl*=p;if(p>=1)L.powerAt=0;}// At a lower frame rate the same coefficient settles more slowly.\n// Scale it so the spill reaches the picture in the same wall time it\n// did at 60 — otherwise a 20fps phone lags visibly behind the video.\nconst k=clamp01(.12*(60/st.fpsCap));L.level+=(lvl-L.level)*k;const spillOn=st.spillMode===\"off\"?false:st.spillMode===\"always\"?true:L.sampling&&st.power;const op=spillOn?clamp01(L.level*st.strength*.55):0;L.op=op;// ── 1. the gradient is written ONLY when it changes ──────────────\n// This is the whole fix. Three blurred layers re-rasterise on every\n// background write; opacity does not.\nif(op>.001){const bg=acrossGradient(tintOf(L.z[0][0],L.z[0][1],L.z[0][2],st.sat),tintOf(L.z[1][0],L.z[1][1],L.z[1][2],st.sat),tintOf(L.z[2][0],L.z[2][1],L.z[2][2],st.sat));if(bg!==L.lastBg){L.lastBg=bg;L.bgWrites+=1;if(coneRef.current)coneRef.current.style.backgroundImage=bg;if(hazeRef.current)hazeRef.current.style.backgroundImage=bg;if(hotRef.current)hotRef.current.style.backgroundImage=bg;}}// ── 4. opacity writes are diffed ─────────────────────────────────\nsetOpacity(coneRef.current,op,L.lastOp,0);setOpacity(hazeRef.current,op*st.hazeLevel,L.lastOp,1);setOpacity(hotRef.current,clamp01(op*st.hotLevel),L.lastOp,2);const bounceOp=spillOn&&st.strength>0?clamp01(L.level*st.bounce):0;if(shellTintRef.current||remoteTintRef.current){const cM=rgbStr(tintOf(L.z[1][0],L.z[1][1],L.z[1][2],st.sat));if(cM!==L.lastTint){L.lastTint=cM;if(shellTintRef.current)shellTintRef.current.style.backgroundColor=cM;if(remoteTintRef.current)remoteTintRef.current.style.backgroundColor=cM;}setOpacity(shellTintRef.current,bounceOp,L.lastOp,3);setOpacity(remoteTintRef.current,clamp01(bounceOp*1.6),L.lastOp,4);}const wantVol=st.muted?0:L.gain*st.maxVolume;L.vol=wantVol;for(let i=0;i<videoEls.current.length;i++){const v=videoEls.current[i];if(!v)continue;const active=i===st.channel&&st.power&&!st.muted;if(v.muted!==!active)v.muted=!active;const target=clamp01(wantVol/100);if(Math.abs(v.volume-target)>.01)v.volume=target;}const cv=glitchRef.current;if(cv){const g2=cv.getContext(\"2d\");if(g2){if(t<L.glitchUntil){const w=cv.width;const h=cv.height;const img=g2.createImageData(w,h);const d=img.data;const cap=40+st.noiseLevel*190;for(let y=0;y<h;y++){const rowBase=Math.random()*cap*.55;let run=0;let runVal=0;for(let x=0;x<w;x++){if(run<=0){run=1+Math.floor(Math.random()*4);runVal=Math.random()*cap*.7;}run--;let v=rowBase+runVal;v+=(Math.random()-.5)*cap*.35;if(v<0)v=0;if(v>cap)v=cap;const i=(y*w+x)*4;d[i]=v;d[i+1]=v;d[i+2]=v;d[i+3]=255;}}g2.putImageData(img,0,0);cv.style.opacity=\"1\";if(stackRef.current)stackRef.current.style.opacity=\"0.15\";}else if(cv.style.opacity!==\"0\"){g2.clearRect(0,0,cv.width,cv.height);cv.style.opacity=\"0\";if(stackRef.current)stackRef.current.style.opacity=\"1\";}}}raf.current=requestAnimationFrame(D.current.frame);};useEffect(()=>{if(isCanvas)return;raf.current=requestAnimationFrame(D.current.frame);return()=>{if(raf.current!==null)cancelAnimationFrame(raf.current);raf.current=null;};},[isCanvas]);useEffect(()=>{if(!debug)return;const id=setInterval(()=>{bump(v=>v+1);live.current.fps=live.current.frames;live.current.frames=0;live.current.bgWrites=0;live.current.samples=0;},1e3);return()=>clearInterval(id);},[debug]);const makeWire=useCallback(key=>el=>{if(!el||isCanvas||el.__wired)return;el.__wired=true;wired.current+=1;el.addEventListener(\"pointerdown\",e=>{e.stopPropagation();setPressed(key);act(key);},{passive:false});el.addEventListener(\"mousedown\",e=>e.stopPropagation(),{passive:false});el.addEventListener(\"touchstart\",e=>e.stopPropagation(),{passive:false});el.addEventListener(\"dragstart\",e=>e.preventDefault());el.addEventListener(\"pointerup\",()=>setPressed(null));el.addEventListener(\"pointerleave\",()=>setPressed(null));},[isCanvas,act]);const targetName=target===RenderTarget.canvas?\"CANVAS (handlers off)\":target===RenderTarget.preview?\"preview\":target===RenderTarget.thumbnail?\"thumbnail\":\"export\";if(!shell){return /*#__PURE__*/_jsx(\"div\",{style:{...style,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"rgba(0,0,0,0.04)\",border:\"1px dashed rgba(0,0,0,0.2)\",borderRadius:4,font:\"500 12px/1.2 sans-serif\",color:\"rgba(0,0,0,0.4)\",textAlign:\"center\"},children:\"CRTTV — assign Shell, Glass and Remote in the panel\"});}const clipped={position:\"absolute\",inset:0,clipPath:SCREEN_CLIP,WebkitClipPath:SCREEN_CLIP,pointerEvents:\"none\"};const pictureBox={position:\"absolute\",left:SCREEN_BOX.left+\"%\",top:SCREEN_BOX.top+\"%\",width:SCREEN_BOX.width+\"%\",height:SCREEN_BOX.height+\"%\",pointerEvents:\"none\"};const pictureXform=\"translate(\"+videoX+\"%, calc(-50% + \"+videoY+\"%)) rotate(\"+videoRotate+\"deg) scaleX(\"+videoScale/100+\") scaleY(\"+videoScale/100*(squash/100)+\")\";const spread=Math.max(1.01,coneSpread);const inset=(1-1/spread)/2*100;const conePoly=\"polygon(\"+inset.toFixed(2)+\"% 0%, \"+(100-inset).toFixed(2)+\"% 0%, 100% 100%, 0% 100%)\";const coneMask=\"linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0.72) 14%, rgba(0,0,0,0.38) \"+(coneReach*.5).toFixed(0)+\"%, rgba(0,0,0,0.12) \"+coneReach.toFixed(0)+\"%, rgba(0,0,0,0) 100%)\";const coneTop=SCREEN_BOTTOM+CONE_DROP+coneNudge;const coneWrap={position:\"absolute\",left:SCREEN_CX+\"%\",top:coneTop+\"%\",width:SCREEN_BOX.width*spread+\"%\",height:coneLength+\"%\",transform:\"translateX(-50%)\",zIndex:SPILL_Z,mixBlendMode:blend,pointerEvents:\"none\",outline:debug?\"1px solid magenta\":\"none\"};// BLUR ON THE WRAPPER, CLIP ON THE CHILD (§20.45).\n// `contain: paint` keeps each blur's invalidation inside its own box.\nconst blurBox=px=>({position:\"absolute\",inset:0,filter:\"blur(\"+px+\"px)\",pointerEvents:\"none\",willChange:\"opacity\"});const coneLayer={position:\"absolute\",inset:0,clipPath:conePoly,WebkitClipPath:conePoly,WebkitMaskImage:coneMask,maskImage:coneMask,opacity:0,pointerEvents:\"none\"};// Video does not play on the Framer canvas, so draw the cone from the\n// channel tint there — otherwise placing it needs a full Preview.\nconst canvasPreview=isCanvas&&spillMode!==\"off\";let previewBg;let previewOp=0;if(canvasPreview){const rgb=hexToRgb(chan.tint);previewBg=acrossGradient(tintOf(rgb[0]*.85,rgb[1]*.85,rgb[2]*.95,sat),tintOf(rgb[0],rgb[1],rgb[2],sat),tintOf(rgb[0]*.9,rgb[1]*.95,rgb[2]*.85,sat));previewOp=clamp01(.8*(isNight?nightStrength:dayStrength)*.55);}return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{...style,position:\"relative\",overflow:\"visible\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",overflow:\"visible\"},children:[shadowOn?/*#__PURE__*/_jsx(\"img\",{src:shell,alt:\"\",\"aria-hidden\":true,draggable:false,style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:\"auto\",zIndex:0,filter:shadowFilter,pointerEvents:\"none\",userSelect:\"none\"}}):null,/*#__PURE__*/_jsxs(\"div\",{\"aria-hidden\":true,style:coneWrap,children:[/*#__PURE__*/_jsx(\"div\",{style:blurBox(coneBlur*2.4),children:/*#__PURE__*/_jsx(\"div\",{ref:hazeRef,style:{...coneLayer,backgroundImage:previewBg,opacity:canvasPreview?previewOp*hazeLevel:0}})}),/*#__PURE__*/_jsx(\"div\",{style:blurBox(coneBlur),children:/*#__PURE__*/_jsx(\"div\",{ref:coneRef,style:{...coneLayer,backgroundImage:previewBg,opacity:canvasPreview?previewOp:0}})}),/*#__PURE__*/_jsx(\"div\",{style:blurBox(coneBlur*.3),children:/*#__PURE__*/_jsx(\"div\",{ref:hotRef,style:{position:\"absolute\",left:\"50%\",top:0,width:100/spread+\"%\",height:hotSize+\"%\",transform:\"translate(-50%,-40%)\",borderRadius:\"50%\",backgroundImage:previewBg,opacity:canvasPreview?clamp01(previewOp*hotLevel):0,pointerEvents:\"none\"}})})]}),/*#__PURE__*/_jsx(\"div\",{style:clipped,children:/*#__PURE__*/_jsx(\"div\",{ref:stackRef,style:pictureBox,children:list.map((c,i)=>{if(!isMounted(i)||!c.videoSrc)return null;const active=i===channel;return /*#__PURE__*/_jsx(\"video\",{ref:wireVideo(i,c.videoSrc),style:{position:\"absolute\",left:0,top:\"50%\",width:\"100%\",aspectRatio:\"16 / 9\",border:0,opacity:active&&power?1:0,pointerEvents:\"none\",objectFit:\"cover\",transformOrigin:\"50% 50%\",transform:pictureXform}},\"v\"+i);})})}),glass?/*#__PURE__*/_jsx(\"img\",{src:glass,alt:\"\",\"aria-hidden\":true,draggable:false,style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",objectFit:\"fill\",opacity:power?glassOpacity:1,transition:\"opacity 260ms ease\",transform:glassXform,transformOrigin:\"50% 50%\",outline:debug?\"1px dashed cyan\":\"none\",pointerEvents:\"none\",userSelect:\"none\"}}):null,/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{...clipped,opacity:power?1:0,transition:\"opacity 260ms ease\",background:\"repeating-linear-gradient(to bottom, rgba(0,0,0,\"+scanlines+\") 0px, rgba(0,0,0,\"+scanlines+\") 1px, rgba(0,0,0,0) 1px, rgba(0,0,0,0) 3px)\"}}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{...clipped,background:\"radial-gradient(ellipse at 50% 62%, rgba(0,0,0,0) \"+(46-curvature*18)+\"%, rgba(0,0,0,\"+(.24+curvature*.38)+\") 100%)\"}}),/*#__PURE__*/_jsx(\"canvas\",{ref:glitchRef,width:Math.max(40,Math.round(160*noiseScale)),height:Math.max(15,Math.round(60*noiseScale)),\"aria-hidden\":true,style:{...clipped,width:\"100%\",height:\"100%\",opacity:0}}),/*#__PURE__*/_jsx(\"img\",{src:shell,alt:\"CRT television\",draggable:false,style:{display:\"block\",position:\"relative\",width:\"100%\",height:\"auto\",userSelect:\"none\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{ref:shellTintRef,\"aria-hidden\":true,style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",opacity:0,mixBlendMode:blend,pointerEvents:\"none\",WebkitMaskImage:\"url(\"+shell+\")\",maskImage:\"url(\"+shell+\")\",WebkitMaskSize:\"100% 100%\",maskSize:\"100% 100%\",WebkitMaskRepeat:\"no-repeat\",maskRepeat:\"no-repeat\"}}),shellPower?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",left:LED.left+\"%\",top:LED.top+\"%\",width:\"0.9%\",aspectRatio:\"1\",transform:\"translate(-50%,-50%)\",borderRadius:\"50%\",background:power?\"#8dff3a\":SHELL_PLASTIC,pointerEvents:\"none\"}}),/*#__PURE__*/_jsx(\"div\",{ref:makeWire(\"power\"),title:\"Power\",style:{position:\"absolute\",left:powerX+\"%\",top:powerY+\"%\",width:powerSize+\"%\",aspectRatio:\"1\",transform:\"translate(-50%,-50%)\",borderRadius:\"50%\",cursor:\"pointer\",touchAction:\"none\",background:pressed===\"power\"?\"rgba(0,0,0,0.16)\":\"transparent\",outline:debug?\"1px solid #D0FF00\":\"none\"}})]}):null,remote?/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:remoteX+\"%\",top:remoteY+\"%\",width:remoteW+\"%\",zIndex:2},children:[/*#__PURE__*/_jsx(\"img\",{src:remote,alt:\"Remote\",draggable:false,style:{display:\"block\",width:\"100%\",height:\"auto\",userSelect:\"none\",pointerEvents:\"none\",filter:shadowFilter}}),/*#__PURE__*/_jsx(\"div\",{ref:remoteTintRef,\"aria-hidden\":true,style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",opacity:0,mixBlendMode:blend,pointerEvents:\"none\",WebkitMaskImage:\"url(\"+remote+\")\",maskImage:\"url(\"+remote+\")\",WebkitMaskSize:\"100% 100%\",maskSize:\"100% 100%\",WebkitMaskRepeat:\"no-repeat\",maskRepeat:\"no-repeat\"}}),REMOTE_BUTTONS.map(b=>{const isCh=b.key.indexOf(\"ch\")===0;const n=isCh?parseInt(b.key.slice(2),10):-1;const lit=b.key===\"mute\"&&!muted||isCh&&n===channel&&power;return /*#__PURE__*/_jsx(\"div\",{ref:makeWire(b.key),title:b.key,style:{position:\"absolute\",left:b.x+hitX+\"%\",top:b.y+hitY+\"%\",width:b.r*2*hitScale+\"%\",aspectRatio:\"1\",transform:\"translate(-50%,-50%)\",borderRadius:\"50%\",cursor:\"pointer\",touchAction:\"none\",background:pressed===b.key?\"rgba(0,0,0,0.18)\":lit?\"rgba(208,255,0,0.16)\":\"transparent\",outline:debug?\"1px solid #D0FF00\":\"none\"}},b.key);})]}):null]}),debug?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:\"100%\",marginTop:8,padding:\"5px 9px\",background:\"#000\",color:\"#D0FF00\",font:\"500 11px/1.5 ui-monospace, monospace\",whiteSpace:\"pre\",pointerEvents:\"none\",zIndex:10},children:\"target \"+targetName+\"  inView \"+inView+(live.current.skipped?\"  PAUSED (\"+(live.current.pausedBy||\"idle\")+\")\":\"\")+\"\\nPERF  cap \"+fpsCap+\"fps\"+(isMobile?\" MOBILE\":\"\")+\"  actual \"+live.current.fps+\"  sample \"+live.current.hz+\"Hz\"+\"  samples/s \"+live.current.samples+\"  bg writes/s \"+live.current.bgWrites+\"\\nnoise buffer \"+Math.max(40,Math.round(160*noiseScale))+\"x\"+Math.max(15,Math.round(60*noiseScale))+\"  video \"+(live.current.playing?\"playing\":\"paused\")+\"\\nshell \"+shellVersion+\" (\"+geo.label+\")  squash \"+squash+\"\\nscreen x \"+screenX+\"  y \"+screenY+\"  scale \"+screenScale+\"\\nglass x \"+glassX+\"  y \"+glassY+\"  scale \"+glassScale+\"\\nhit x \"+hitX+\"  y \"+hitY+\"  size \"+hitScale+\"\\nwired \"+wired.current+\"/6  clicks \"+clicks.current+\"\\npower \"+(power?\"ON\":\"off\")+\"  muted \"+muted+\"  ch \"+(channel+1)+\"/\"+list.length+\"\\nsource \"+(usesFile?\"FILE\":\"NO FILE\")+\"  readyState \"+live.current.rs+\"  err \"+(live.current.err||\"none\")+\"\\nlight \"+lightMode+\" -> \"+(isNight?\"NIGHT\":\"day\")+\"\\nshadow \"+(shadowOn?\"on\":\"OFF\")+\"  contact \"+cD.toFixed(1)+\"/\"+cB.toFixed(1)+\"  cast \"+kD.toFixed(1)+\"/\"+kB.toFixed(1)+(shadowOn&&kB>kD?\"  BLUR>DIST leaks (\\xa720.40)\":\"\")+\"\\ncone \"+(canvasPreview?\"CANVAS PREVIEW\":spillMode)+(live.current.sampling?\" SAMPLING\":\" no data\")+\"  op \"+live.current.op.toFixed(3)+\"\\nglass bottom \"+SCREEN_BOTTOM.toFixed(2)+\"%  cone top \"+coneTop.toFixed(2)+\"%\"+\"\\nspread \"+spread.toFixed(2)+\"  blur \"+coneBlur+\"\\ndist \"+live.current.dist.toFixed(0)+\"px  gain \"+live.current.gain.toFixed(2)+\"  vol \"+live.current.vol.toFixed(0)}):null]});}CRTTV.displayName=\"CRTTV\";addPropertyControls(CRTTV,{shell:{type:ControlType.Image,title:\"Shell\"},shellVersion:{type:ControlType.Enum,title:\"Shell\",options:[\"v1\",\"v2\"],optionTitles:[\"v1 — 2508 square\",\"v2 — baked shadow\"],defaultValue:\"v1\",description:\"Picks the traced screen geometry. Both were measured from the PNG's own alpha.\",displaySegmentedControl:true},glass:{type:ControlType.Image,title:\"Glass\"},remote:{type:ControlType.Image,title:\"Remote\"},channels:{type:ControlType.Array,title:\"Channels\",maxCount:4,control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\"},videoSrc:{type:ControlType.File,title:\"Video file\",description:\"pre-trimmed mp4, 854x480 H.264 CRF30 24fps AAC64k mono +faststart.\",allowedFileTypes:[\"mp4\",\"webm\",\"mov\"]},tint:{type:ControlType.Color,title:\"Tint\",defaultValue:\"#3f7ad6\"}}},defaultValue:DEFAULT_CHANNELS},maxFps:{type:ControlType.Number,title:\"Frame cap\",description:\"rAF body rate on desktop. Nothing here needs 60 — the spill is a lerp and the volume a distance ramp.\",defaultValue:30,min:10,max:60,step:1,unit:\"fps\"},mobileFps:{type:ControlType.Number,title:\"Mobile cap\",defaultValue:20,min:5,max:60,step:1,unit:\"fps\"},mobileBelow:{type:ControlType.Number,title:\"Mobile below\",description:\"Under this width: lower cap, and the interference buffer drops to a third. 0 disables the tier.\",defaultValue:810,min:0,max:1440,step:10,unit:\"px\"},pauseInWindow:{type:ControlType.Boolean,title:\"Pause in window\",enabledTitle:\"Pause\",disabledTitle:\"Keep running\",description:\"Stops the video and the loop while a DeskWindow is open — it is behind an opaque backdrop.\",defaultValue:true},sampleHz:{type:ControlType.Number,title:\"Sample Hz\",description:\"picture reads per second when you are near it. Drops to 6 further away, 0 past the silence radius.\",defaultValue:15,min:2,max:30,step:1},screenX:{type:ControlType.Number,title:\"Screen X %\",description:\"moves the traced APERTURE, not the picture. Use this for a white gap at an edge.\",defaultValue:0,min:-20,max:20,step:.1},screenY:{type:ControlType.Number,title:\"Screen Y %\",defaultValue:0,min:-20,max:20,step:.1},screenScale:{type:ControlType.Number,title:\"Screen scale\",description:\"about the aperture's own centre\",defaultValue:100,min:50,max:150,step:.1,unit:\"%\"},glassOpacity:{type:ControlType.Number,title:\"Glass over\",defaultValue:.34,min:0,max:1,step:.02},glassX:{type:ControlType.Number,title:\"Glass X %\",description:\"moves the glass plate against the shell. % of the box.\",defaultValue:0,min:-50,max:50,step:.1},glassY:{type:ControlType.Number,title:\"Glass Y %\",defaultValue:0,min:-50,max:50,step:.1},glassScale:{type:ControlType.Number,title:\"Glass scale\",defaultValue:100,min:20,max:300,step:.1,unit:\"%\"},shadowOn:{type:ControlType.Boolean,title:\"Shadow\",defaultValue:true,description:\"Turn OFF if the Shell PNG already has a baked shadow (v2).\"},shadowAngle:{type:ControlType.Number,title:\"Angle\",description:\"45 = down-right. Same for every object on the desk (\\xa76.1)\",defaultValue:45,min:0,max:360,step:1,unit:\"\\xb0\",hidden:p=>!p.shadowOn},contactDist:{type:ControlType.Number,title:\"Contact dist\",defaultValue:3,min:0,max:40,step:.5,unit:\"px\",hidden:p=>!p.shadowOn},contactBlur:{type:ControlType.Number,title:\"Contact blur\",defaultValue:6,min:0,max:80,step:.5,unit:\"px\",hidden:p=>!p.shadowOn},contactOpacity:{type:ControlType.Number,title:\"Contact\",description:\"the weight. Raise it if the object looks like it floats\",defaultValue:.42,min:0,max:1,step:.01,hidden:p=>!p.shadowOn},castDist:{type:ControlType.Number,title:\"Cast dist\",description:\"keep this ABOVE Cast blur or the shadow leaks out the back\",defaultValue:30,min:0,max:300,step:1,unit:\"px\",hidden:p=>!p.shadowOn},castBlur:{type:ControlType.Number,title:\"Cast blur\",defaultValue:36,min:0,max:300,step:1,unit:\"px\",hidden:p=>!p.shadowOn},castOpacity:{type:ControlType.Number,title:\"Cast\",defaultValue:.13,min:0,max:1,step:.01,hidden:p=>!p.shadowOn},nightLength:{type:ControlType.Number,title:\"Night length\",defaultValue:1.5,min:.5,max:4,step:.05,hidden:p=>!p.shadowOn},nightFade:{type:ControlType.Number,title:\"Night fade\",defaultValue:.65,min:0,max:2,step:.05,hidden:p=>!p.shadowOn},startOn:{type:ControlType.Boolean,title:\"Start on\",defaultValue:true},startChannel:{type:ControlType.Number,title:\"Start channel\",defaultValue:1,min:1,max:4,step:1,displayStepper:true},warmOthers:{type:ControlType.Boolean,title:\"Warm others\",defaultValue:true},lazyMargin:{type:ControlType.Number,title:\"Lazy margin\",defaultValue:900,min:0,max:4e3,step:50},videoScale:{type:ControlType.Number,title:\"Video scale\",defaultValue:100,min:20,max:300,step:1},videoSquash:{type:ControlType.Number,title:\"Video squash\",description:\"0 = use this shell's measured value (v1 54.95, v2 52.48)\",defaultValue:0,min:0,max:200,step:.05},videoX:{type:ControlType.Number,title:\"Video X %\",defaultValue:0,min:-100,max:100,step:.5},videoY:{type:ControlType.Number,title:\"Video Y %\",defaultValue:0,min:-200,max:200,step:.5},videoRotate:{type:ControlType.Number,title:\"Video rotate\",defaultValue:0,min:-30,max:30,step:.1},scanlines:{type:ControlType.Number,title:\"Scanlines\",defaultValue:.2,min:0,max:.6,step:.01},curvature:{type:ControlType.Number,title:\"Curvature\",defaultValue:.5,min:0,max:1,step:.02},noiseDetail:{type:ControlType.Number,title:\"Noise detail\",defaultValue:3,min:.5,max:6,step:.25},noiseLevel:{type:ControlType.Number,title:\"Noise level\",defaultValue:.55,min:0,max:1,step:.02},lightMode:{type:ControlType.Enum,title:\"Light mode\",options:[\"auto\",\"day\",\"night\"],optionTitles:[\"auto (__deskLight)\",\"day\",\"night\"],defaultValue:\"auto\"},spillMode:{type:ControlType.Enum,title:\"Cone source\",options:[\"auto\",\"always\",\"off\"],optionTitles:[\"auto (sampled only)\",\"always (fake)\",\"off\"],defaultValue:\"auto\"},dayStrength:{type:ControlType.Number,title:\"Day strength\",description:\"0 by decision — light cannot read as light on a white desk.\",defaultValue:0,min:0,max:4,step:.05},nightStrength:{type:ControlType.Number,title:\"Night strength\",defaultValue:1.6,min:0,max:4,step:.05},nightBlend:{type:ControlType.Enum,title:\"Night blend\",options:[\"screen\",\"plus-lighter\",\"multiply\",\"normal\"],defaultValue:\"screen\"},nightSat:{type:ControlType.Number,title:\"Saturation\",defaultValue:.85,min:0,max:1,step:.02},coneNudge:{type:ControlType.Number,title:\"Cone nudge\",description:\"on top of the automatic drop past the lower bezel\",defaultValue:0,min:-20,max:20,step:.25,unit:\"%\"},coneLength:{type:ControlType.Number,title:\"Cone length %\",defaultValue:80,min:10,max:300,step:1},coneSpread:{type:ControlType.Number,title:\"Cone spread\",defaultValue:2.4,min:1,max:5,step:.05},coneReach:{type:ControlType.Number,title:\"Cone reach %\",defaultValue:58,min:10,max:100,step:1},coneBlur:{type:ControlType.Number,title:\"Cone blur\",defaultValue:80,min:0,max:300,step:2},hotSize:{type:ControlType.Number,title:\"Near-field %\",defaultValue:9,min:0,max:60,step:.5},hotLevel:{type:ControlType.Number,title:\"Near-field level\",defaultValue:1.15,min:0,max:3,step:.05},hazeLevel:{type:ControlType.Number,title:\"Haze\",defaultValue:.9,min:0,max:2,step:.05},bounce:{type:ControlType.Number,title:\"Bounce\",defaultValue:.12,min:0,max:.6,step:.01},fullRadius:{type:ControlType.Number,title:\"Full at\",defaultValue:340,min:0,max:1600,step:10},silenceRadius:{type:ControlType.Number,title:\"Silent at\",defaultValue:1300,min:100,max:4e3,step:25},maxVolume:{type:ControlType.Number,title:\"Max volume\",defaultValue:55,min:0,max:100,step:1},glitchMs:{type:ControlType.Number,title:\"Interference ms\",defaultValue:170,min:0,max:600,step:10},shellPower:{type:ControlType.Boolean,title:\"Shell power\",defaultValue:false},powerX:{type:ControlType.Number,title:\"Power X %\",defaultValue:39.5,min:0,max:100,step:.1,hidden:p=>!p.shellPower},powerY:{type:ControlType.Number,title:\"Power Y %\",defaultValue:91,min:0,max:100,step:.1,hidden:p=>!p.shellPower},powerSize:{type:ControlType.Number,title:\"Power size %\",defaultValue:3,min:.5,max:12,step:.1,hidden:p=>!p.shellPower},remoteX:{type:ControlType.Number,title:\"Remote X %\",defaultValue:84,min:-60,max:160,step:.5},remoteY:{type:ControlType.Number,title:\"Remote Y %\",defaultValue:84,min:-60,max:200,step:.5},remoteW:{type:ControlType.Number,title:\"Remote size %\",defaultValue:12,min:2,max:40,step:.25},hitScale:{type:ControlType.Number,title:\"Hit size\",defaultValue:1,min:.5,max:2.5,step:.05},hitX:{type:ControlType.Number,title:\"Hit X %\",description:\"shifts ALL six hit regions. For a residual only — re-measure on a re-render.\",defaultValue:0,min:-20,max:20,step:.1},hitY:{type:ControlType.Number,title:\"Hit Y %\",defaultValue:0,min:-20,max:20,step:.1},debug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CRTTV\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerIntrinsicWidth\":\"2508\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"2508\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CRTTV.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";import{motion,AnimatePresence,useMotionValue,useSpring}from\"framer-motion\";import{RenderTarget}from\"framer\";/**\n * CursorTip — the desk's voice, code path only. §12.4\n *\n * HOVER TRIGGERS DO NOT USE THIS FILE. They use Framer's native custom cursor\n * (§20.17): a component with one variant per message, set as a Follow cursor on\n * the desktop breakpoint, Cursor → Set Variant per element.\n *\n * This exists solely for triggers that fire from logic, which native cursors\n * cannot reach:\n *   - Turntable scratch egg (velocity threshold)\n *   - Turntable backmask egg (reverse hold)\n *   - Bumper plate refusal (fires on failed drag, not on hover)\n *\n * Its only job is to look identical to the native pill. Every token below is\n * transcribed from that component. If the design pill changes, change these.\n *\n * Drop ONE instance anywhere on the desk page. It renders nothing in place; it\n * portals a fixed overlay to document.body.\n *\n * Why a portal: the desk canvas is transformed (native Framer drag), and\n * `position: fixed` inside a transformed ancestor positions against that\n * ancestor, so the pill would pan with the desk.\n *\n * v2 — NO LAYOUT ANIMATION.\n * The pill previously used framer-motion's `layout` prop so the width could\n * morph when the copy changed. That is unusable here: the wrapper's transform\n * is rewritten every frame by the follow spring, so layout projection measures\n * against a stale frame. On exit it snapped to the last measured viewport box\n * (top-left) and flew back to the cursor while fading. Width now changes\n * instantly; only opacity and scale animate. Do not reintroduce `layout` on\n * anything parented to a per-frame transform.\n *\n * API (§20.1), version-stamped per §20.15:\n *   window.__cursorTip.flash(\"text\", 4500)   show, auto-hide after N ms\n *   window.__cursorTip.show(\"text\")          show until hide()\n *   window.__cursorTip.hide()\n *   window.__cursorTip.version               === STORE_VERSION\n *\n * Callers must guard:\n *   const w = window as any\n *   if (w.__cursorTip?.version === 2) w.__cursorTip.flash(\"...\", 4500)\n */const STORE_VERSION=2;// --- Design tokens -----------------------------------------------------------\n// Transcribed from the native pill component.\nconst T={padding:\"6px 14px 6px 14px\",radius:6,fill:\"#000000\",border:\"1px solid #000000\",color:\"#FFFFFF\",fontFamily:'\"Geist Pixel\", \"Geist Mono\", ui-monospace, monospace',fontSize:\"0.8rem\",lineHeight:1.4,letterSpacing:\"0em\",// Inner: Box · Inside · FFFFFF 40% · X0 Y2 Blur4 Spread0\ninnerShadow:\"inset 0 2px 4px rgba(255, 255, 255, 0.4)\",// Outer: Realistic · Outside · 000000 45% · X0 Y25 · Diffusion 0.25 · Focus 0.5\n// Framer's realistic shadow is a generated stack, not a single box-shadow.\n// Five-layer approximation.\ndropShadow:[\"0 2px 3px rgba(0, 0, 0, 0.045)\",\"0 5px 8px rgba(0, 0, 0, 0.055)\",\"0 10px 15px rgba(0, 0, 0, 0.065)\",\"0 17px 26px rgba(0, 0, 0, 0.075)\",\"0 25px 40px rgba(0, 0, 0, 0.09)\"].join(\", \"),// Cursor → Follow · Position Bottom · Align left · Offset X 20 Y 10\noffsetX:20,offsetY:10,// Cursor → Transition: Physics · Stiffness 500 · Damping 60 · Mass 1\n// Overdamped (critical is ~44.7 at this stiffness), so no overshoot. §20.9\nfollow:{type:\"spring\",stiffness:500,damping:60,mass:1},// Entrance/exit. Asymmetric — a symmetrical exit reads sluggish.\nenter:{duration:.18,ease:[.16,1,.3,1]},exit:{duration:.14,ease:[.4,0,1,1]}};const pillStyle={display:\"inline-flex\",alignItems:\"center\",gap:10,padding:T.padding,borderRadius:T.radius,background:T.fill,border:T.border,color:T.color,fontFamily:T.fontFamily,fontSize:T.fontSize,lineHeight:T.lineHeight,letterSpacing:T.letterSpacing,boxShadow:`${T.innerShadow}, ${T.dropShadow}`,whiteSpace:\"nowrap\"};/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 180\n * @framerIntrinsicHeight 30\n */export default function CursorTip(props){const[text,setText]=useState(null);const[host,setHost]=useState(null);const timer=useRef(null);const seen=useRef(false);const x=useMotionValue(-9999);const y=useMotionValue(-9999);const sx=useSpring(x,T.follow);const sy=useSpring(y,T.follow);const onCanvas=RenderTarget.current()===RenderTarget.canvas;// --- host element --------------------------------------------------------\nuseEffect(()=>{if(onCanvas)return;const el=document.createElement(\"div\");el.setAttribute(\"data-cursor-tip-host\",\"\");document.body.appendChild(el);setHost(el);return()=>{if(el.parentNode)el.parentNode.removeChild(el);};},[onCanvas]);// --- pointer tracking ----------------------------------------------------\nuseEffect(()=>{if(onCanvas)return;const move=e=>{const px=e.clientX+T.offsetX;const py=e.clientY+T.offsetY;// First real reading teleports rather than springs in from -9999.\nif(!seen.current){seen.current=true;x.jump?x.jump(px):x.set(px);y.jump?y.jump(py):y.set(py);sx.jump?sx.jump(px):sx.set(px);sy.jump?sy.jump(py):sy.set(py);return;}x.set(px);y.set(py);};const leave=()=>setText(null);window.addEventListener(\"pointermove\",move,{passive:true});window.addEventListener(\"pointerdown\",move,{passive:true});document.addEventListener(\"pointerleave\",leave);return()=>{window.removeEventListener(\"pointermove\",move);window.removeEventListener(\"pointerdown\",move);document.removeEventListener(\"pointerleave\",leave);};},[onCanvas,x,y,sx,sy]);// --- window store --------------------------------------------------------\nuseEffect(()=>{if(onCanvas)return;const w=window;const clear=()=>{if(timer.current){clearTimeout(timer.current);timer.current=null;}};// Rebound unconditionally on mount so a stale store from an older save\n// can never survive a code reload. §20.15\nw.__cursorTip={version:STORE_VERSION,show(t){clear();setText(t);},hide(){clear();setText(null);},flash(t,ms=4500){clear();setText(t);timer.current=setTimeout(()=>{setText(null);timer.current=null;},ms);}};return()=>{clear();if(w.__cursorTip&&w.__cursorTip.version===STORE_VERSION){delete w.__cursorTip;}};},[onCanvas]);// --- canvas placeholder --------------------------------------------------\n// §20.6: handlers don't run on the canvas. §20.16: a component with no\n// in-flow child collapses. This gives it a real box to select and place.\nif(onCanvas){return /*#__PURE__*/_jsx(\"div\",{style:pillStyle,children:\"CursorTip \\xb7 mounted\"});}const overlay=/*#__PURE__*/_jsx(motion.div,{style:{position:\"fixed\",left:0,top:0,x:sx,y:sy,zIndex:2147483e3,pointerEvents:\"none\",willChange:\"transform\"},children:/*#__PURE__*/_jsx(AnimatePresence,{initial:false,children:text!==null&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,scale:.94},animate:{opacity:1,scale:1,transition:T.enter},exit:{opacity:0,scale:.96,transition:T.exit},style:{...pillStyle,transformOrigin:\"top left\"},children:text},\"pill\")})});return /*#__PURE__*/_jsx(\"div\",{style:{width:1,height:1,opacity:0,pointerEvents:\"none\"},children:host?/*#__PURE__*/createPortal(overlay,host):null});}CursorTip.displayName=\"CursorTip\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CursorTip\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"30\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicWidth\":\"180\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CursorTip.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{forwardRef}from\"react\";// Apply to the introduction subtitle. DeskLight owns the CSS color value.\nexport function withReadableDeskCopy(Component){return /*#__PURE__*/forwardRef((props,ref)=>/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{children:`.desk-readable-copy, .desk-readable-copy * {\n                color: var(--desk-copy, #2d3640) !important;\n                --framer-text-color: var(--desk-copy, #2d3640) !important;\n                -webkit-text-fill-color: var(--desk-copy, #2d3640) !important;\n            }`}),/*#__PURE__*/_jsx(\"div\",{className:\"desk-readable-copy\",style:{display:\"contents\"},children:/*#__PURE__*/_jsx(Component,{...props,ref:ref})})]}));}\nexport const __FramerMetadata__ = {\"exports\":{\"withReadableDeskCopy\":{\"type\":\"reactHoc\",\"name\":\"withReadableDeskCopy\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DeskCopy.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";// Framer bundles react-dom; its embedded checker does not provide the declaration.\n// @ts-ignore -- same runtime import used by the portfolio's DeskWindow component.\nimport{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// Inspired by BYQ Supply's Tile Grid Dissolve. Independent, dependency-free implementation.\nfunction startDeskLoader(root,options={}){const{minDuration=3550,maxWait=12e3,revealDuration=1350,tileSize=60}=options;let disposed=false,revealing=false,finished=false;let scanTimer=0,hardTimer=0,revealTimer=0,raf=0;let discoveredAt=performance.now(),fontReady=!document.fonts;let done=0,total=0,shown=0;let lastBusy=performance.now(),lastFrame=performance.now(),settledAt=0;let pendingComponents=0,pendingVideos=0;root.style.display=\"\";delete root.dataset.phase;delete root.dataset.slow;root.classList.remove(\"jt-reduced\");const start=performance.now();const cleanupTasks=[];const jobs=new Map;const count=root.querySelector(\"[data-count]\");const status=root.querySelector(\"[data-status]\");const progress=root.querySelector(\"[data-progress]\");const grid=root.querySelector(\".jt-loader-grid\");const motion=matchMedia(\"(prefers-reduced-motion: reduce)\");const configureGrid=()=>{const size=Math.max(tileSize,Math.sqrt(innerWidth*innerHeight/720));const cols=Math.ceil(innerWidth/size),rows=Math.ceil(innerHeight/size);const farthest=Math.max(1,Math.hypot((cols-1)/2,(rows-1)/2));grid.style.gridTemplateColumns=`repeat(${cols}, ${size}px)`;grid.style.gridTemplateRows=`repeat(${rows}, ${size}px)`;const fragment=document.createDocumentFragment();for(let i=0;i<cols*rows;i++){const tile=document.createElement(\"span\");const row=Math.floor(i/cols),col=i%cols;tile.className=\"jt-loader-tile\";tile.dataset.tile=\"\";const dx=col-(cols-1)/2,dy=row-(rows-1)/2;const distance=Math.hypot(dx,dy)/farthest;tile.style.setProperty(\"--wave\",`${distance*900-1800}ms`);tile.style.setProperty(\"--drift-x\",`${dx/Math.max(1,cols/2)*12}px`);tile.style.setProperty(\"--drift-y\",`${dy/Math.max(1,rows/2)*12}px`);tile.style.setProperty(\"--reveal\",`${140+distance*revealDuration*.45}ms`);fragment.appendChild(tile);}grid.replaceChildren(fragment);};configureGrid();// The early head cover is removed only after the full tile grid exists.\ndocument.documentElement.classList.remove(\"jt-loader-boot\");// Above the portfolio's particle portal; does not change its stacking order.\nconst finish=(reason=\"ready\")=>{if(finished)return;finished=true;root.style.display=\"none\";clearInterval(scanTimer);clearTimeout(hardTimer);clearTimeout(revealTimer);cancelAnimationFrame(raf);cleanupTasks.splice(0).forEach(fn=>fn());root.dataset.result=reason;if(!disposed)window.dispatchEvent(new CustomEvent(\"jt:desk-ready\",{detail:{reason}}));};const reveal=(reason=\"ready\")=>{if(revealing||finished||disposed)return;revealing=true;clearInterval(scanTimer);root.dataset.phase=\"reveal\";if(reason===\"ready\"){count.textContent=\"100\";progress.setAttribute(\"aria-valuenow\",\"100\");}status.textContent=reason===\"ready\"?\"Your desk is ready.\":\"Opening your desk…\";const reduced=motion.matches;const duration=reduced?160:revealDuration;root.style.setProperty(\"--flip-duration\",`${duration*.55}ms`);root.style.setProperty(\"--exit-duration\",`${reduced?160:380}ms`);if(reduced)root.classList.add(\"jt-reduced\");revealTimer=window.setTimeout(()=>finish(reason),duration+190);};const onKey=e=>{if(finished)return;if(e.key===\"Escape\"){e.preventDefault();reveal(\"skip\");}if(e.key===\"Tab\"&&!revealing)e.preventDefault();};const onPageHide=()=>finish(\"navigation\");const onAnimationEnd=e=>{if(e.animationName===\"jt-loader-safety\")finish(\"timeout\");};const onMotion=()=>{if(motion.matches&&revealing)finish(\"reduced-motion\");};const onResize=()=>{if(revealing)finish(\"resize\");else configureGrid();};document.addEventListener(\"keydown\",onKey,true);window.addEventListener(\"pagehide\",onPageHide);root.addEventListener(\"animationend\",onAnimationEnd);motion.addEventListener(\"change\",onMotion);window.addEventListener(\"resize\",onResize);cleanupTasks.push(()=>window.removeEventListener(\"resize\",onResize));cleanupTasks.push(()=>document.removeEventListener(\"keydown\",onKey,true),()=>window.removeEventListener(\"pagehide\",onPageHide),()=>root.removeEventListener(\"animationend\",onAnimationEnd),()=>motion.removeEventListener(\"change\",onMotion));// No global scroll or inert mutation: failure cannot leave the desk locked.\n// The draggable desk extends well beyond the opening viewport. Opacity is\n// deliberately ignored: entrance animations must not hide assets from readiness.\nconst belongsToDesk=element=>{if(root.contains(element))return false;if(element.closest('[data-framer-name=\"DragCanvas\"]'))return true;const r=element.getBoundingClientRect();return r.width>0&&r.height>0&&r.bottom>0&&r.right>0&&r.top<innerHeight&&r.left<innerWidth;};const trackImage=image=>{const src=image.currentSrc||image.src;if(!src||jobs.has(src))return;jobs.set(src,true);total++;discoveredAt=performance.now();let settled=false;const settle=()=>{if(!settled){settled=true;done++;discoveredAt=performance.now();image.removeEventListener(\"load\",loaded);image.removeEventListener(\"error\",settle);}};const loaded=()=>{if(image.decode)image.decode().then(settle,settle);else settle();};image.addEventListener(\"load\",loaded,{once:true});image.addEventListener(\"error\",settle,{once:true});cleanupTasks.push(()=>{image.removeEventListener(\"load\",loaded);image.removeEventListener(\"error\",settle);});if(image.complete)loaded();};const scan=()=>{if(disposed||revealing||finished)return;Array.from(document.images).filter(belongsToDesk).forEach(image=>{// Start native lazy PNGs now, while the overlay is still covering the desk.\nif(image.loading===\"lazy\")image.loading=\"eager\";trackImage(image);});Array.from(document.querySelectorAll('[data-framer-name], [style*=\"background\"]')).filter(belongsToDesk).forEach(element=>{const bg=getComputedStyle(element).backgroundImage;for(const match of bg.matchAll(/url\\([\"']?([^\"')]+)[\"']?\\)/g)){if(jobs.has(match[1]))continue;const image=new Image;image.src=match[1];trackImage(image);}});pendingComponents=document.querySelectorAll('[data-desk-loading=\"pending\"]').length;// Only active opening-view video needs a frame, not complete movie downloads.\npendingVideos=Array.from(document.querySelectorAll(\"video\")).filter(video=>{const r=video.getBoundingClientRect();return video.autoplay&&r.width>1&&r.height>1&&r.bottom>0&&r.top<innerHeight&&r.right>0&&r.left<innerWidth&&!video.error&&video.readyState<2;}).length;const now=performance.now(),elapsed=now-start;const ready=document.readyState===\"complete\"&&!!document.querySelector(\"h1\")&&fontReady&&document.fonts?.status!==\"loading\"&&done===total&&pendingComponents===0&&pendingVideos===0;if(!ready||now-discoveredAt<750||now-lastBusy<600)settledAt=0;else if(!settledAt)settledAt=now;root.dataset.assets=`${done}/${total}`;root.dataset.pendingComponents=String(pendingComponents);root.dataset.pendingVideos=String(pendingVideos);// A final paint/settling interval follows decoding and heavy initialization.\nif(settledAt&&now-settledAt>=400&&elapsed>=(motion.matches?0:minDuration))reveal();};if(document.fonts)document.fonts.ready.then(()=>{fontReady=true;});const tick=()=>{if(disposed||finished)return;const now=performance.now();if(now-lastFrame>120&&document.visibilityState===\"visible\")lastBusy=now;lastFrame=now;if(!revealing){// Completed preparation steps, not a download-byte percentage.\nconst checks=total+3+pendingComponents+pendingVideos;const completed=done+(fontReady?1:0)+(document.readyState===\"complete\"?1:0)+(settledAt?1:0);const t=Math.min(1,(now-start)/Math.max(1,minDuration));const paced=(t<.5?2*t*t:1-Math.pow(-2*t+2,2)/2)*96;const target=Math.min(paced,completed/Math.max(1,checks)*96);shown=Math.max(shown,shown+(target-shown)*.09);count.textContent=String(Math.floor(shown)).padStart(2,\"0\");progress.setAttribute(\"aria-valuenow\",String(Math.floor(shown)));if(performance.now()-start>minDuration+800)root.dataset.slow=\"true\";}raf=requestAnimationFrame(tick);};// Independent deadlines: the CSS deadline also works if React never hydrates.\nhardTimer=window.setTimeout(()=>reveal(\"timeout\"),maxWait);scanTimer=window.setInterval(scan,250);scan();tick();return()=>{disposed=true;finish(\"unmount\");};}const loaderCSS='.jt-loader{position:fixed;inset:0;z-index:2147483100;color:var(--jt-ink,#181818);font-family:\"PP Neue Montreal Medium\",Arial,sans-serif;pointer-events:auto;overflow:hidden;isolation:isolate;background:var(--jt-paper,#f7fafc);animation:jt-loader-safety 15s steps(1,end) forwards}\\n.jt-loader *{box-sizing:border-box}\\n.jt-loader-grid{position:absolute;inset:0;display:grid;}\\n.jt-loader-tile{position:relative;background:var(--jt-paper,#f7fafc);border-right:1px solid rgba(122,127,130,.14);border-bottom:1px solid rgba(122,127,130,.14);transform-origin:50% 50%;backface-visibility:hidden}\\n.jt-loader-tile:after{content:\"\";position:absolute;inset:0;background:var(--jt-accent,#727b80);opacity:0;transform:scale(.88);animation:jt-loader-wave 2.4s cubic-bezier(.45,0,.2,1) var(--wave,0ms) infinite}\\n.jt-loader-copy{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;pointer-events:none;animation:jt-loader-copy-in 700ms cubic-bezier(.16,1,.3,1) both}\\n.jt-loader-number{display:flex;align-items:baseline;gap:5px;line-height:1;font-variant-numeric:tabular-nums;font-size:clamp(64px,8vw,96px);font-weight:500;letter-spacing:-.04em}\\n.jt-loader-number small{font-size:20px;letter-spacing:0}\\n.jt-loader-caption{display:flex;align-items:center;gap:9px;font-size:14px;letter-spacing:0;line-height:1.4}\\n.jt-loader-dot{width:8px;height:8px;background:var(--jt-ink,#181818);animation:jt-loader-indicator 1.8s cubic-bezier(.65,0,.35,1) infinite}\\n.jt-loader-footer{position:absolute;bottom:max(28px,env(safe-area-inset-bottom));left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;gap:24px;font-size:13px;line-height:1.4}\\n.jt-loader-slow{display:none}\\n.jt-loader[data-slow=true] .jt-loader-slow{display:block}\\n.jt-loader[data-slow=true] .jt-loader-normal{display:none}\\n.jt-loader[data-phase=reveal] .jt-loader-tile{animation:jt-loader-open var(--flip-duration,740ms) cubic-bezier(.76,0,.24,1) var(--reveal,0ms) both}\\n.jt-loader[data-phase=reveal]{background:transparent}\\n.jt-loader[data-phase=reveal] .jt-loader-copy,.jt-loader[data-phase=reveal] .jt-loader-footer{animation:jt-loader-copy-out var(--exit-duration,380ms) cubic-bezier(.4,0,.2,1) forwards}\\n.jt-loader.jt-reduced[data-phase=reveal]{transition:opacity 160ms;opacity:0}\\n.jt-loader.jt-reduced[data-phase=reveal] .jt-loader-tile{animation:none}\\n@keyframes jt-loader-wave{0%,65%,100%{opacity:0;transform:scale(.88)}28%{opacity:.13;transform:scale(1)}42%{opacity:.04;transform:scale(1)}}\\n@keyframes jt-loader-open{0%{transform:translate(0,0) scale(1);opacity:1}80%{opacity:1}100%{transform:translate(var(--drift-x,0px),var(--drift-y,0px)) scale(0);opacity:0}}\\n@keyframes jt-loader-copy-out{to{opacity:0;transform:translateY(-10px)}}\\n@keyframes jt-loader-copy-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}\\n@keyframes jt-loader-indicator{0%,100%{transform:scale(.65);opacity:.4}50%{transform:scale(1);opacity:1}}\\n@keyframes jt-loader-safety{to{visibility:hidden;pointer-events:none}}\\n@media(max-width:600px){.jt-loader-footer{left:20px;right:20px;font-size:12px}.jt-loader-caption{font-size:13px}}\\n@media(prefers-reduced-motion:reduce){.jt-loader-tile:after,.jt-loader-copy,.jt-loader-dot{animation:none}.jt-loader[data-phase=reveal] .jt-loader-tile{animation:jt-loader-copy-out 160ms linear both}.jt-loader[data-phase=reveal] .jt-loader-copy,.jt-loader[data-phase=reveal] .jt-loader-footer{animation-duration:160ms}}\\n.jt-loader[data-phase=reveal] .jt-loader-copy{animation-delay:140ms}\\n.jt-loader[data-phase=reveal] .jt-loader-dot{animation:none}\\n';/**\n * @framerIntrinsicWidth 240\n * @framerIntrinsicHeight 160\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function DeskGridLoader(props){const{paper=\"#F7FAFC\",ink=\"#181818\",accent=\"#727B80\",minDuration=3.55,maxWait=12,revealDuration=1.35,tileSize=60,label=\"Preparing your desk\",style}=props;const rootRef=React.useRef(null);const[portalHost,setPortalHost]=React.useState(null);const isCanvas=RenderTarget.current()===RenderTarget.canvas;React.useLayoutEffect(()=>{if(!isCanvas)setPortalHost(document.body);},[isCanvas]);React.useLayoutEffect(()=>{if(isCanvas||!portalHost||!rootRef.current)return;const root=rootRef.current;const cleanup=startDeskLoader(root,{minDuration:minDuration*1e3,maxWait:maxWait*1e3,revealDuration:revealDuration*1e3,tileSize});return cleanup;},[isCanvas,portalHost,minDuration,maxWait,revealDuration,tileSize]);if(isCanvas)return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:\"100%\",height:\"100%\",minWidth:24,minHeight:24,background:paper,color:ink,display:\"grid\",placeItems:\"center\",fontFamily:'\"PP Neue Montreal Medium\",Arial,sans-serif',fontSize:12,border:\"1px solid #c8cdd0\",overflow:\"hidden\"},children:\"Grid loader \\xb7 Preview to play\"});const overlay=/*#__PURE__*/_jsxs(\"div\",{style:{width:0,height:0,pointerEvents:\"none\",overflow:\"visible\"},children:[/*#__PURE__*/_jsx(\"style\",{children:loaderCSS}),/*#__PURE__*/_jsxs(\"div\",{className:\"jt-loader\",ref:rootRef,style:{\"--jt-paper\":paper,\"--jt-ink\":ink,\"--jt-accent\":accent},children:[/*#__PURE__*/_jsx(\"div\",{className:\"jt-loader-grid\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsxs(\"div\",{className:\"jt-loader-copy\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"jt-loader-number\",\"data-progress\":\"\",role:\"progressbar\",\"aria-label\":\"Preparing the opening view\",\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-valuenow\":0,children:[/*#__PURE__*/_jsx(\"span\",{\"data-count\":\"\",children:\"00\"}),/*#__PURE__*/_jsx(\"small\",{\"aria-hidden\":\"true\",children:\"%\"})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"jt-loader-caption\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"jt-loader-dot\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsx(\"span\",{\"data-status\":\"\",role:\"status\",children:label})]})]}),/*#__PURE__*/_jsx(\"div\",{className:\"jt-loader-footer\",children:/*#__PURE__*/_jsxs(\"span\",{children:[/*#__PURE__*/_jsx(\"span\",{className:\"jt-loader-normal\",children:\"Jo\\xe3o Teixeira \\xb7 Portfolio\"}),/*#__PURE__*/_jsx(\"span\",{className:\"jt-loader-slow\",children:\"A few things are still arriving.\"})]})})]})]});return portalHost?/*#__PURE__*/createPortal(overlay,portalHost):overlay;}addPropertyControls(DeskGridLoader,{paper:{type:ControlType.Color,title:\"Tiles\",defaultValue:\"#F7FAFC\"},ink:{type:ControlType.Color,title:\"Text\",defaultValue:\"#181818\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#727B80\"},tileSize:{type:ControlType.Number,title:\"Tile size\",defaultValue:60,min:32,max:120,step:4,unit:\"px\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"Preparing your desk\"},minDuration:{type:ControlType.Number,title:\"Load time\",defaultValue:3.55,min:.5,max:4,step:.1,unit:\"s\"},maxWait:{type:ControlType.Number,title:\"Max wait\",defaultValue:12,min:4,max:12,step:.5,unit:\"s\",description:\"Starts desk images behind the overlay and waits for decoding, fonts, component readiness and a settling interval. Failed or stalled assets cannot trap visitors.\"},revealDuration:{type:ControlType.Number,title:\"Reveal\",defaultValue:1.35,min:.5,max:2,step:.05,unit:\"s\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DeskGridLoader\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"240\",\"framerIntrinsicHeight\":\"160\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DeskGridLoader.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * DeskLight.tsx — the day/night store. THE ONLY THING THAT CREATES IT.\n *\n * v24.\n *\n * ── v24: THE MANIFESTO SELECTOR, AND THE SHADOW ──\n *\n * v23 matched `#__manifesto_portal > div > div > div`, which is one level too\n * deep: that is the titlebar, the body and the resize grip, not the window.\n * Each inverted on its own, so the bar went black while the paper behind it\n * stayed light. The window is `> div > div` — backdrop, then window. Invert\n * THAT and everything inside comes with it.\n *\n * THE SHADOW HAD TO BE TUNED, NOT MOVED. `filter: invert()` flips the box\n * shadow too, so a soft black drop became a soft WHITE glow — the thing that\n * makes a dark window look like it is hovering in fog. The alpha now fades\n * with `--desk-window-invert`, so by full night there is almost nothing left\n * to invert. A dark window on a dark desk needs far less shadow than a light\n * one anyway; the contrast is doing that job.\n *\n * ── v23: NIGHT WINDOWS ARE SELECTED BY HOOK, NOT BY LAYER NAME ──\n *\n * v22 inverted `[data-framer-name=\"About\"]` and never fired. The windows are\n * PORTALLED TO A HOST DIV ON THE BODY (§20.22 — `position: fixed` inside a\n * transformed ancestor resolves against that ancestor, and the desk is one\n * big transform), so by the time a window renders it is outside every canvas\n * layer and carries no data-framer-name at all. DeskWindow tags its shell\n * `data-deskwindow-shell` instead.\n *\n * ONLY THE SHELL, NEVER THE PORTAL HOST — inverting the host would invert the\n * backdrop with it, turning a dark scrim into a light one over a dark desk.\n *\n * Worth carrying: a selector written against the canvas silently misses\n * anything portalled out of it. Portalled UI needs its own hook.\n *\n * ── v22: THE WINDOWS GO DARK BY INVERSION ──\n *\n * The case studies are design components with dozens of text layers, each\n * carrying its own colour. A night VARIANT is dead (§20.55 — an override\n * cannot set one). Two mounted copies means keeping every case study in sync\n * twice. Recolouring by rule has no hook, because the colours are inline.\n *\n * So: invert the window, invert the media back.\n *\n *   filter: invert(N) hue-rotate(N * 180deg)\n *\n * invert() takes a NUMBER, so it drives straight off `progress` and grades on\n * the same curve as everything else. hue-rotate undoes the hue flip, so a red\n * traffic light does not come back cyan. The whole tonal hierarchy survives.\n *\n * The cost: inversion is indiscriminate. img, video, svg, canvas and picture\n * are inverted back. A PHOTO SET AS A FRAME'S BACKGROUND IMAGE WILL COME OUT\n * NEGATIVE — use image layers inside case studies.\n *\n * ── v21: THE HERO HIGHLIGHT MOVES FROM THE BLOCK TO THE TYPE ──\n *\n *   day    block fill 1.00, type rgb(24,24,24)\n *   night  block fill 0.00, type rgb(208,255,0)\n *\n * White type on #D0FF00 tops out around 3:1 whatever the alpha, so the mark\n * changes form instead of dimming.\n *\n * ── v18: EVERY MOUNT STARTS IN DAY (§3.4) ──\n *\n * `window` survives a preview reload (§20.15), so a stale night came straight\n * back. A fresh mount FORCES the start state with no easing — arrival, not a\n * transition.\n *\n * ── WHY THIS FILE EXISTS ──\n *\n * One creator, many readers. A reader NEVER falls back to creating the store.\n */const STORE_VERSION=1;const LIGHT_DEFAULTS={DURATION:900,// §6.11 — the window is off-canvas upper-left, so every shadow falls\n// down-right at 45°. Same angle on every object, always.\nANGLE:45,CONTACT_DIST:3,CONTACT_BLUR:3,CONTACT_OPACITY:.55,// §20.40 — DISTANCE MUST EXCEED BLUR or the blur spreads past the\n// silhouette on every side and the object floats in haze.\nCAST_DIST:22,CAST_BLUR:14,CAST_OPACITY:.22,NIGHT_LENGTH:1.5,NIGHT_FADE:.65,OBJ_BRIGHTNESS:.62,OBJ_SATURATE:.8};// The hero highlight behind \"I'm João\". Block at day, type at night.\nconst HL_FILL_DAY=1;const HL_FILL_NIGHT=0;const HL_TEXT_DAY=[24,24,24];const HL_TEXT_NIGHT=[208,255,0];const HL_PHRASE=\"jo\\xe3o\";const HL_HEADING_SELECTOR='[data-framer-name=\"Text Stack\"] h1, [data-framer-name=\"TextStack\"] h1';/**\n * Every window that should go dark. PORTALLED elements, matched by hook.\n *\n *   [data-deskwindow-shell]            DeskWindow tags its own shell\n *   #__manifesto_portal > div > div    backdrop, then window — see v24\n */const WINDOW_SELECTORS=[\"[data-deskwindow-shell]\",\"#__manifesto_portal > div > div\"];const windowSelector=suffix=>WINDOW_SELECTORS.map(s=>s+suffix).join(\", \");// Inversion strength at full night. 1 is a true invert.\nconst WINDOW_INVERT_NIGHT=1;// The drop shadow inverts with everything else, so it fades out instead of\n// becoming a white glow. Day alpha → night alpha.\nconst SHADOW_ALPHA_DAY=.4;const SHADOW_ALPHA_NIGHT=.1;function ease(t){return t<.5?4*t*t*t:1-Math.pow(-2*t+2,3)/2;}/**\n * Mark the highlighted run. Returns how many spans were tagged so Debug can\n * say MISSING out loud. The shortest matching span wins: Framer nests spans,\n * and colouring an outer wrapper would turn the whole line lime.\n */function tagHighlight(){if(typeof document===\"undefined\")return 0;let tagged=0;const headings=document.querySelectorAll(HL_HEADING_SELECTOR);headings.forEach(h=>{const spans=Array.from(h.querySelectorAll(\"span\"));const hits=spans.filter(el=>(el.textContent||\"\").toLowerCase().indexOf(HL_PHRASE)>=0);if(!hits.length)return;hits.sort((a,b)=>(a.textContent||\"\").length-(b.textContent||\"\").length);const best=hits[0];if((best.textContent||\"\").length>24)return;if(!best.hasAttribute(\"data-desk-hl\"))best.setAttribute(\"data-desk-hl\",\"\");tagged+=1;});return tagged;}function build(duration){const s={version:STORE_VERSION,LIGHT:{...LIGHT_DEFAULTS,DURATION:duration},progress:0,isNight:false,target:0,from:0,t0:0,raf:null,listeners:new Set,emit(){s.listeners.forEach(l=>l());},tick(now){const t=Math.min((now-s.t0)/Math.max(1,s.LIGHT.DURATION),1);s.progress=s.from+(s.target-s.from)*ease(t);if(t<1){s.emit();s.raf=requestAnimationFrame(s.tick);}else{s.progress=s.target;s.raf=null;s.emit();}},setNight(next){const want=next?1:0;if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches){s.reset(next);return;}if(want===s.target&&s.raf===null)return;// The SWITCH is instant. Only the grade eases.\ns.isNight=!!next;s.target=want;s.from=s.progress;s.t0=performance.now();s.emit();if(s.raf===null)s.raf=requestAnimationFrame(s.tick);},// Arrival, not a transition.\nreset(night){if(s.raf!==null){try{cancelAnimationFrame(s.raf);}catch(e){}s.raf=null;}const v=night?1:0;s.isNight=!!night;s.progress=v;s.target=v;s.from=v;s.emit();},toggle(){s.setNight(!s.isNight);},subscribe(l){s.listeners.add(l);return()=>s.listeners.delete(l);},get(){return s.progress;},getNight(){return s.isNight;}};return s;}export function deskLightStore(duration){if(typeof window===\"undefined\")return null;const w=window;if(!w.__deskLight||w.__deskLight.version!==STORE_VERSION){const old=w.__deskLight;if(old&&old.raf){try{cancelAnimationFrame(old.raf);}catch(e){}}w.__deskLight=build(duration);}else{w.__deskLight.LIGHT={...LIGHT_DEFAULTS,DURATION:duration};if(typeof w.__deskLight.reset!==\"function\"){const s=w.__deskLight;s.reset=function(night){if(s.raf!==null){try{cancelAnimationFrame(s.raf);}catch(e){}s.raf=null;}const v=night?1:0;s.isNight=!!night;s.progress=v;s.target=v;s.from=v;s.emit();};}}return w.__deskLight;}/**\n * @framerIntrinsicWidth 0\n * @framerIntrinsicHeight 0\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function DeskLight(props){const{duration=900,startNight=false,darkWindows=true,debug=false,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[,bump]=useState(0);const started=useRef(false);const taggedRef=useRef(0);useEffect(()=>{const s=deskLightStore(duration);if(!s)return;if(!started.current){started.current=true;s.reset(!!startNight);}const paint=()=>{const t=s.get();const root=document.documentElement;const mix=(a,b)=>Math.round(a+(b-a)*t);const lerp=(a,b)=>a+(b-a)*t;const rgb=(a,b)=>\"rgb(\"+mix(a[0],b[0])+\",\"+mix(a[1],b[1])+\",\"+mix(a[2],b[2])+\")\";root.style.setProperty(\"--desk-heading\",\"rgb(\"+mix(24,244)+\",\"+mix(24,247)+\",\"+mix(24,250)+\")\");root.style.setProperty(\"--desk-highlight\",String(1-t*.82));root.style.setProperty(\"--desk-hl-fill\",lerp(HL_FILL_DAY,HL_FILL_NIGHT).toFixed(3));root.style.setProperty(\"--desk-hl-text\",rgb(HL_TEXT_DAY,HL_TEXT_NIGHT));root.style.setProperty(\"--desk-copy\",\"rgb(\"+mix(54,210)+\",\"+mix(61,218)+\",\"+mix(68,228)+\")\");root.style.setProperty(\"--desk-window-invert\",(darkWindows?t*WINDOW_INVERT_NIGHT:0).toFixed(3));root.style.setProperty(\"--desk-window-shadow\",lerp(SHADOW_ALPHA_DAY,darkWindows?SHADOW_ALPHA_NIGHT:SHADOW_ALPHA_DAY).toFixed(3));if(debug)bump(v=>v+1);};// invert() takes a number, so the whole dark-window state is one\n// expression driven by `progress`. MEDIA IS INVERTED BACK so photos,\n// logos and the traffic lights survive.\nconst INV=\"invert(var(--desk-window-invert, 0)) hue-rotate(calc(var(--desk-window-invert, 0) * 180deg))\";const css=document.createElement(\"style\");css.textContent=`\n[data-framer-name=\"Text Stack\"] h1, [data-framer-name=\"TextStack\"] h1 { color: var(--desk-heading) !important; --framer-text-color: var(--desk-heading) !important; }\n[data-framer-name=\"Text Stack\"] h1 [data-desk-hl], [data-framer-name=\"TextStack\"] h1 [data-desk-hl] {\n  color: var(--desk-hl-text) !important;\n  --framer-text-color: var(--desk-hl-text) !important;\n  -webkit-text-fill-color: var(--desk-hl-text) !important;\n}\n[data-framer-name=\"Rectangle 161124842\"] {\n  opacity: 1 !important;\n  background-color: rgba(208, 255, 0, var(--desk-hl-fill, 1)) !important;\n}\n${windowSelector(\"\")} {\n  filter: ${INV};\n  box-shadow: 0 18px 60px rgba(0, 0, 0, var(--desk-window-shadow, 0.4)) !important;\n}\n${windowSelector(\" img\")}, ${windowSelector(\" video\")}, ${windowSelector(\" svg\")}, ${windowSelector(\" canvas\")}, ${windowSelector(\" picture\")} { filter: ${INV}; }\n`;document.head.appendChild(css);// Tag the highlight run, then keep tagging it — Framer re-renders text\n// on resize and drops the attribute.\ntaggedRef.current=tagHighlight();const observer=new MutationObserver(()=>{const n=tagHighlight();if(n!==taggedRef.current){taggedRef.current=n;if(debug)bump(v=>v+1);}});document.querySelectorAll(HL_HEADING_SELECTOR).forEach(h=>{observer.observe(h,{childList:true,subtree:true,characterData:true});});paint();const unsubscribe=s.subscribe(paint);return()=>{unsubscribe();observer.disconnect();css.remove();};},[duration,startNight,darkWindows,debug]);if(!debug){return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:0,height:0,pointerEvents:\"none\"}});}const s=typeof window!==\"undefined\"?window.__deskLight:null;const shells=typeof document!==\"undefined\"?document.querySelectorAll(\"[data-deskwindow-shell]\").length:0;return /*#__PURE__*/_jsx(\"div\",{style:{...style,padding:\"5px 9px\",background:\"#000\",color:\"#D0FF00\",font:\"500 11px/1.5 ui-monospace, monospace\",whiteSpace:\"pre\",pointerEvents:\"none\"},children:\"__deskLight v\"+STORE_VERSION+(isCanvas?\"  CANVAS\":\"  preview\")+\"\\nisNight \"+(s?String(s.isNight):\"—\")+\"\\nprogress \"+(s?s.progress.toFixed(3):\"—\")+\"\\nreaders \"+(s?s.listeners.size:0)+\"  fade \"+duration+\"ms\"+\"\\nhl span \"+(taggedRef.current>0?\"tagged \\xd7\"+taggedRef.current:\"MISSING — split the run in Framer\")+\"\\nwindows \"+(darkWindows?shells+\" shell(s) open\":\"dark windows OFF\")});}DeskLight.displayName=\"DeskLight\";addPropertyControls(DeskLight,{duration:{type:ControlType.Number,title:\"Fade\",description:\"grade only — the switch is always instant\",defaultValue:900,min:0,max:4e3,step:50,unit:\"ms\"},startNight:{type:ControlType.Boolean,title:\"Start at night\",description:\"testing only — every visit starts in day (\\xa73.4)\",defaultValue:false},darkWindows:{type:ControlType.Boolean,title:\"Dark windows\",description:\"inverts open DeskWindows and the Manifesto at night\",defaultValue:true},debug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DeskLight\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicWidth\":\"0\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"0\"}},\"deskLightStore\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DeskLight.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{useState,useRef,useEffect,useCallback}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType}from\"framer\";/**\n * DeskWindow: desktop window with scoped tablet and phone content layouts.\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n */const STORE_VERSION=1;const BODY_CLASS=\"__deskwindow_body\";const MIN_W=400;const MIN_H=300;const RESET_CSS=`\n.${BODY_CLASS} > * {\n  position: relative !important;\n  top: auto !important;\n  right: auto !important;\n  bottom: auto !important;\n  left: auto !important;\n  margin: 0 !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  height: auto !important;\n  transform: none !important;\n}\n`;/* ── the sheet stylesheet ─────────────────────────────────────────────── */function sheetCss(breakpoint){if(!breakpoint||breakpoint<=0)return\"\";const S=\"[data-deskwindow-shell] [data-dw-scroll]\";const A='[data-dw-window=\"about\"] [data-dw-scroll]';const C='[data-dw-window^=\"case\"] [data-dw-scroll]';const M=C+' [data-framer-name=\"Main\"]';const H=M+\" > * > :first-child\";const G=M+\" > * > :nth-child(2)\";return`\n@media (max-width: 1439px) {\n  ${S} { overflow-x: hidden; }\n  ${S} [data-framer-name=\"Main\"] {\n    box-sizing: border-box !important; width: 100% !important;\n    padding: 32px 24px 40px !important;\n  }\n  /* The case-study structure is shared by all three components. */\n  ${M} > *, ${H}, ${H} > *, ${H} > * > *,\n  ${H} > * > :nth-child(2) > * {\n    width: 100% !important; min-width: 0 !important; max-width: 100% !important;\n    height: auto !important; flex: 0 0 auto !important;\n    align-items: flex-start !important; justify-content: flex-start !important;\n  }\n  ${M} > * { gap: 32px !important; }\n  ${H} > * { gap: 24px !important; }\n  ${H} > * > :nth-child(2) {\n    flex-direction: column !important; gap: 24px !important;\n  }\n  ${H} > * > :nth-child(2) > :first-child > * {\n    width: 100% !important; max-width: 100% !important; min-width: 0 !important;\n  }\n  ${H} > * > :nth-child(2) > :last-child {\n    display: flex !important; flex-flow: row wrap !important;\n    gap: 24px 40px !important; align-items: flex-start !important;\n    justify-content: flex-start !important;\n  }\n  ${H} > * > :nth-child(2) > :last-child > * {\n    flex: 0 1 auto !important; min-width: 0 !important; gap: 8px !important;\n  }\n  ${H} h1 { font-size: clamp(32px, 5.6vw, 56px) !important; line-height: 1.05 !important; letter-spacing: -.03em !important; }\n  ${H} p { font-size: 16px !important; line-height: 1.5 !important; }\n  ${G} {\n    width: 100% !important; height: auto !important; gap: 12px !important;\n    justify-content: flex-start !important;\n  }\n  ${G} > * {\n    width: 100% !important; height: auto !important; min-height: 0 !important;\n    aspect-ratio: auto !important; gap: 12px !important;\n    align-items: flex-start !important; justify-content: flex-start !important;\n  }\n  ${G} > * > * {\n    min-width: 0 !important; height: auto !important; min-height: 0 !important;\n  }\n  ${S} [data-dw-media] {\n    width: 100% !important; height: auto !important; min-height: 0 !important;\n    aspect-ratio: var(--dw-media-ratio, 1.5) !important;\n    flex: 1 1 0 !important; overflow: hidden !important;\n  }\n  ${S} [data-dw-media] > *, ${S} [data-dw-media] div { height: 100% !important; min-height: 0 !important; max-height: 100% !important; }\n  /* About: the card is a sibling of Main, not a nested shell. */\n  ${A} > * { display: flex !important; flex-direction: column !important; }\n  ${A} [data-framer-name=\"Variant 1\"]:has(> [data-framer-name=\"Main\"]) > :nth-child(2) {\n    position: relative !important; inset: auto !important; order: -1 !important;\n    width: 100% !important; max-width: 100% !important;\n    height: 420px !important; flex: 0 0 420px !important;\n    transform: none !important; margin: 0 !important; overflow: hidden !important;\n  }\n  ${A} [data-framer-name=\"Main\"] { gap: 48px !important; }\n  ${A} [data-framer-name=\"Main\"] > [data-framer-name=\"Container\"],\n  ${A} [data-framer-name=\"Main\"] > * > [data-framer-name=\"Container\"] {\n    width: 100% !important; min-width: 0 !important; height: auto !important;\n    padding: 0 !important; gap: 24px !important; flex-direction: column !important;\n    align-items: stretch !important; justify-content: flex-start !important;\n  }\n  ${A} [data-framer-name=\"Left\"] {\n    width: 100% !important; min-width: 0 !important; height: auto !important;\n    flex: 0 0 auto !important; padding: 0 !important; gap: 28px !important;\n    justify-content: flex-start !important;\n  }\n  ${A} [data-framer-name=\"Right\"] { display: none !important; }\n  ${A} [data-framer-name=\"Description\"] { padding: 0 !important; }\n  ${A} [data-framer-name=\"Description\"] p {\n    font-family: \"PP Neue Montreal\", sans-serif !important;\n    font-size: 17px !important; line-height: 1.6 !important; letter-spacing: 0 !important;\n  }\n  ${A} h1 { font-size: 40px !important; line-height: 1.1 !important; }\n  ${A} h2 { font-size: 25px !important; line-height: 1.2 !important; }\n  ${A} h3 { font-size: 20px !important; line-height: 1.3 !important; }\n  ${A} [data-framer-name=\"Stats\"] {\n    height: auto !important; min-height: 0 !important; flex: 0 0 auto !important;\n    padding: 0 !important; gap: 0 !important; justify-content: flex-start !important;\n  }\n  ${A} [data-framer-name=\"Stats\"] > [data-framer-name=\"Stats\"] {\n    padding: 16px 0 !important; gap: 6px !important;\n  }\n  ${A} [data-framer-name=\"Main\"] > * > [data-framer-name=\"Container\"] > [data-framer-name=\"Title\"] {\n    flex-direction: column !important; align-items: flex-start !important;\n    width: 100% !important; gap: 16px !important;\n  }\n  ${A} [data-framer-name=\"Main\"] > * > [data-framer-name=\"Container\"] > [data-framer-name=\"Title\"] > * {\n    width: 100% !important; min-width: 0 !important; flex: none !important;\n  }\n  ${A} [data-framer-name=\"Download Button\"] {\n    width: 100% !important; justify-content: space-between !important;\n  }\n  ${A} [data-framer-name=\"Content\"] {\n    width: 100% !important; gap: 0 !important; height: auto !important;\n  }\n  ${A} [data-framer-name=\"Content\"] > * {\n    width: 100% !important; height: auto !important; min-height: 0 !important;\n    padding: 20px 0 !important; gap: 8px !important; flex-direction: column !important;\n    align-items: flex-start !important; justify-content: flex-start !important;\n  }\n  ${A} [data-framer-name=\"Content\"] > * > div {\n    width: 100% !important; height: auto !important; min-height: 0 !important;\n    flex: 0 0 auto !important; gap: 8px !important; padding: 0 !important;\n    align-items: flex-start !important; justify-content: flex-start !important;\n  }\n  ${A} [data-framer-name=\"Content\"] p {\n    font-size: 16px !important; line-height: 1.5 !important; text-align: left !important;\n  }\n  ${A} [data-framer-name=\"Techstack\"] {\n    width: 100% !important; min-width: 0 !important; height: auto !important;\n    flex-direction: column !important; align-items: flex-start !important;\n    gap: 24px !important; justify-content: flex-start !important;\n  }\n  ${A} [data-framer-name=\"Techstack\"] > [data-framer-name=\"Techstack\"] {\n    display: flex !important; flex-flow: row wrap !important; gap: 12px !important;\n  }\n  ${A} [data-framer-name=\"Techstack\"] > [data-framer-name=\"Techstack\"] > * {\n    flex: 0 0 48px !important; width: 48px !important; min-width: 0 !important;\n  }\n\n  ${A} [data-framer-name=\"Stats\"] > * {\n    width: 100% !important; height: auto !important; flex: none !important;\n  }\n  ${A} [data-framer-name=\"Stats\"] > * > * {\n    width: 100% !important; height: auto !important; padding: 16px 0 !important;\n    min-height: 0 !important; gap: 12px !important;\n  }\n  ${A} [data-framer-name=\"Stats\"] [data-framer-name=\"Container\"] {\n    width: 100% !important; height: auto !important; min-height: 0 !important;\n    display: flex !important; flex-direction: row !important; gap: 8px !important;\n    padding: 0 !important; align-items: center !important;\n  }\n  ${A} [data-framer-name=\"Stats\"] [data-framer-name=\"Title\"],\n  ${A} [data-framer-name=\"Stats\"] [data-framer-name=\"Title\"] > * {\n    width: auto !important; height: auto !important; flex: 1 1 auto !important;\n    min-width: 0 !important;\n  }\n  ${A} [data-framer-name=\"Content\"] div {\n    height: auto !important; min-height: 0 !important;\n    width: 100% !important; min-width: 0 !important; max-width: 100% !important;\n    flex: none !important; padding: 0 !important; gap: 8px !important;\n    flex-direction: column !important; align-items: flex-start !important;\n    justify-content: flex-start !important;\n  }\n  ${A} [data-framer-name=\"Content\"] > div { padding: 20px 0 !important; }\n}\n@media (max-width: 599px) {\n  ${S} [data-framer-name=\"Main\"] { padding: 24px 20px 32px !important; }\n  ${G} > * { flex-direction: column !important; flex-wrap: nowrap !important; }\n  ${G} > * > * { width: 100% !important; flex: none !important; }\n  ${A} [data-framer-name=\"Variant 1\"]:has(> [data-framer-name=\"Main\"]) > :nth-child(2) { height: 360px !important; flex-basis: 360px !important; }\n}\n`;}/** Tag only gallery media slots. Native media dimensions remove desktop-sized voids. */function useGallerySizing(ref,active,windowId){useEffect(()=>{const root=ref.current;if(!root||!active||!windowId.startsWith(\"case\"))return;const update=()=>{const main=root.querySelector('[data-framer-name=\"Main\"]');const gallery=main?.firstElementChild?.children[1];if(!gallery)return;Array.from(gallery.children).forEach(row=>{Array.from(row.children).forEach(slot=>{const el=slot;el.setAttribute(\"data-dw-media\",\"\");const video=el.querySelector(\"video\");const img=el.querySelector(\"img\");const w=video?.videoWidth||img?.naturalWidth;const h=video?.videoHeight||img?.naturalHeight;const ratio=w&&h?w/h:row.children.length>1?.93:1.78;el.style.setProperty(\"--dw-media-ratio\",String(ratio));});});};update();root.addEventListener(\"load\",update,true);root.addEventListener(\"loadedmetadata\",update,true);const observer=new MutationObserver(update);observer.observe(root,{childList:true,subtree:true});return()=>{observer.disconnect();root.removeEventListener(\"load\",update,true);root.removeEventListener(\"loadedmetadata\",update,true);};},[active,windowId]);}function describeSlot(content){const kids=React.Children.toArray(content);if(!kids.length)return\"EMPTY\";return kids.map((child,i)=>{if(!/*#__PURE__*/React.isValidElement(child))return i+\": \"+typeof child;const t=child.type;return i+\": \"+(t&&(t.displayName||t.name)||(typeof t===\"string\"?t:\"anonymous\"));}).join(\"  \\xb7  \");}function useIsSheet(breakpoint){const[isSheet,setIsSheet]=useState(false);useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(`(max-width: ${breakpoint-1}px)`);const read=()=>setIsSheet(mq.matches);read();if(mq.addEventListener){mq.addEventListener(\"change\",read);return()=>mq.removeEventListener(\"change\",read);}mq.addListener(read);return()=>mq.removeListener(read);},[breakpoint]);return isSheet;}function useBodyLock(active){useEffect(()=>{if(!active||typeof document===\"undefined\")return;const body=document.body;const y=window.scrollY;const prev={position:body.style.position,top:body.style.top,width:body.style.width,overflow:body.style.overflow};body.style.position=\"fixed\";body.style.top=`-${y}px`;body.style.width=\"100%\";body.style.overflow=\"hidden\";return()=>{body.style.position=prev.position;body.style.top=prev.top;body.style.width=prev.width;body.style.overflow=prev.overflow;window.scrollTo(0,y);};},[active]);}function usePortalHost(){const[host,setHost]=useState(null);useEffect(()=>{if(typeof document===\"undefined\")return;let el=document.getElementById(\"__deskwindow_portal\");if(!el){el=document.createElement(\"div\");el.id=\"__deskwindow_portal\";el.style.position=\"absolute\";el.style.left=\"0\";el.style.top=\"0\";el.style.width=\"0\";el.style.height=\"0\";document.body.appendChild(el);}setHost(el);if(!document.getElementById(\"__deskwindow_css\")){const css=document.createElement(\"style\");css.id=\"__deskwindow_css\";css.textContent=RESET_CSS;document.head.appendChild(css);}},[]);return host;}function useSheetCss(breakpoint){useEffect(()=>{if(typeof document===\"undefined\")return;let el=document.getElementById(\"__deskwindow_sheet_css\");if(!el){el=document.createElement(\"style\");el.id=\"__deskwindow_sheet_css\";document.head.appendChild(el);}const next=sheetCss(breakpoint);if(el.textContent!==next)el.textContent=next;},[breakpoint]);}function deskWindowStore(){if(typeof window===\"undefined\")return null;const w=window;if(!w.__deskWindow||w.__deskWindow.version!==STORE_VERSION){const s={version:STORE_VERSION,openId:null,registry:new Set,listeners:new Set,emit(){s.listeners.forEach(l=>l());},open(id){if(s.openId===id)return;s.openId=id;s.emit();},close(){if(s.openId===null)return;s.openId=null;s.emit();},toggle(id){s.openId=s.openId===id?null:id;s.emit();},subscribe(l){s.listeners.add(l);return()=>s.listeners.delete(l);},get(){return s.openId;}};w.__deskWindow=s;}if(!w.__deskWindow.registry)w.__deskWindow.registry=new Set;return w.__deskWindow;}export default function DeskWindow(props){const{windowId=\"about\",title=\"About\",chrome=true,content,windowWidth=1200,windowHeight=800,radius=10,backdropOpacity=.42,backdropBlur=2,sheetBelow=810,deepLink=false,resetLayout=true,debug=false,style}=props;const host=usePortalHost();const isSheet=useIsSheet(sheetBelow);useSheetCss(sheetBelow);const[openId,setOpenId]=useState(null);const[isMax,setIsMax]=useState(false);const[size,setSize]=useState({w:windowWidth,h:windowHeight});const[pos,setPos]=useState({x:0,y:0});const scrollerRef=useRef(null);const dragging=useRef(false);const dragStart=useRef({mx:0,my:0,px:0,py:0});const resizing=useRef(false);const resizeStart=useRef({x:0,y:0,w:0,h:0});const isOpen=openId===windowId;const hasContent=!!content;const furniture=chrome&&!isSheet;useBodyLock(isOpen);useGallerySizing(scrollerRef,isOpen,windowId);const close=useCallback(()=>{const s=deskWindowStore();if(s)s.close();setIsMax(false);setPos({x:0,y:0});setSize({w:windowWidth,h:windowHeight});},[windowWidth,windowHeight]);useEffect(()=>{if(!isSheet)return;setIsMax(false);setPos({x:0,y:0});},[isSheet]);const toggleMax=useCallback(()=>{setIsMax(m=>{if(!m)setPos({x:0,y:0});return!m;});},[]);const onTitleDown=useCallback(e=>{if(isMax)return;if(e.target.closest(\"svg\"))return;e.preventDefault();dragging.current=true;dragStart.current={mx:e.clientX,my:e.clientY,px:pos.x,py:pos.y};e.currentTarget.setPointerCapture(e.pointerId);},[isMax,pos]);const onTitleMove=useCallback(e=>{if(!dragging.current)return;setPos({x:dragStart.current.px+(e.clientX-dragStart.current.mx),y:dragStart.current.py+(e.clientY-dragStart.current.my)});},[]);const onTitleUp=useCallback(e=>{if(!dragging.current)return;dragging.current=false;try{e.currentTarget.releasePointerCapture(e.pointerId);}catch(err){}},[]);const onResizeDown=useCallback(e=>{e.preventDefault();e.stopPropagation();resizing.current=true;resizeStart.current={x:e.clientX,y:e.clientY,w:size.w,h:size.h};e.currentTarget.setPointerCapture(e.pointerId);},[size]);const onResizeMove=useCallback(e=>{if(!resizing.current)return;setSize({w:Math.max(MIN_W,resizeStart.current.w+(e.clientX-resizeStart.current.x)),h:Math.max(MIN_H,resizeStart.current.h+(e.clientY-resizeStart.current.y))});},[]);const onResizeUp=useCallback(e=>{resizing.current=false;try{e.currentTarget.releasePointerCapture(e.pointerId);}catch(err){}},[]);useEffect(()=>{const s=deskWindowStore();if(!s)return;const label=windowId+(hasContent?\"\":\" (NO CONTENT)\");s.registry.add(label);if(deepLink){try{const param=new URLSearchParams(window.location.search).get(\"w\");if(param&&s.get()===null)s.open(param);}catch(e){}}const paint=()=>setOpenId(s.get());paint();const unsubscribe=s.subscribe(paint);return()=>{unsubscribe();s.registry.delete(label);};},[windowId,hasContent,deepLink]);useEffect(()=>{if(!deepLink||typeof window===\"undefined\")return;try{const url=new URL(window.location.href);const current=url.searchParams.get(\"w\");if(isOpen&&current!==windowId){url.searchParams.set(\"w\",windowId);history.replaceState(null,\"\",url.toString());}else if(!isOpen&&current===windowId){url.searchParams.delete(\"w\");history.replaceState(null,\"\",url.toString());}}catch(e){}},[isOpen,windowId,deepLink]);useEffect(()=>{const handler=e=>{if(e.key===\"Escape\"&&isOpen)close();};window.addEventListener(\"keydown\",handler);return()=>window.removeEventListener(\"keydown\",handler);},[isOpen,close]);useEffect(()=>{if(isOpen&&scrollerRef.current)scrollerRef.current.scrollTop=0;},[isOpen]);const store=typeof window!==\"undefined\"?window.__deskWindow:null;const light=(fill,onClick)=>/*#__PURE__*/_jsxs(\"svg\",{onClick:onClick,style:{cursor:\"pointer\"},width:\"12\",height:\"12\",viewBox:\"0 0 12 12\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"6\",fill:fill}),/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"5.75\",stroke:\"black\",strokeOpacity:\"0.12\",strokeWidth:\"0.5\",fill:\"none\"})]},fill);const sheetClose=/*#__PURE__*/_jsx(\"div\",{onClick:close,role:\"button\",\"aria-label\":\"Close\",style:{position:\"absolute\",right:4,top:\"50%\",transform:\"translateY(-50%)\",width:44,height:44,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"pointer\",WebkitTapHighlightColor:\"transparent\"},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"16\",height:\"16\",viewBox:\"0 0 16 16\",children:[/*#__PURE__*/_jsx(\"line\",{x1:\"2\",y1:\"2\",x2:\"14\",y2:\"14\",stroke:\"#333\",strokeWidth:\"1.5\",strokeLinecap:\"round\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"14\",y1:\"2\",x2:\"2\",y2:\"14\",stroke:\"#333\",strokeWidth:\"1.5\",strokeLinecap:\"round\"})]})});const overlay=/*#__PURE__*/_jsxs(_Fragment,{children:[debug&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",left:12,bottom:12,maxWidth:520,zIndex:999998,padding:\"6px 9px\",borderRadius:4,background:\"rgba(0,0,0,0.88)\",color:\"#D0FF00\",font:\"500 11px/1.5 ui-monospace, monospace\",whiteSpace:\"pre-wrap\",pointerEvents:\"none\"},children:\"__deskWindow \"+(store?\"v\"+store.version:\"MISSING\")+\"\\nopen    \"+(store&&store.get()?store.get():\"—\")+\"\\nthis    \"+windowId+\"\\nmatch   \"+(isOpen?\"YES\":\"no\")+\"\\nmode    \"+(isSheet?\"SHEET (<\"+sheetBelow+\")\":\"WINDOW\")+\"\\nvw      \"+(typeof window!==\"undefined\"?window.innerWidth:\"—\")+\"\\nslot    \"+describeSlot(content)}),isOpen&&/*#__PURE__*/_jsx(\"div\",{onClick:isSheet?undefined:close,style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,zIndex:99999,backgroundColor:isSheet?\"transparent\":`rgba(10, 12, 16, ${backdropOpacity})`,backdropFilter:backdropBlur&&!isSheet?`blur(${backdropBlur}px)`:undefined,WebkitBackdropFilter:backdropBlur&&!isSheet?`blur(${backdropBlur}px)`:undefined,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:isSheet?\"default\":\"pointer\",touchAction:\"none\"},children:/*#__PURE__*/_jsxs(\"div\",{\"data-deskwindow-shell\":\"\",\"data-dw-window\":windowId,onClick:e=>e.stopPropagation(),style:{width:isSheet?\"100vw\":isMax?\"100vw\":size.w,height:isSheet?\"100dvh\":isMax?\"100vh\":size.h,maxWidth:isSheet||isMax?\"100vw\":\"94vw\",maxHeight:isSheet?\"100dvh\":isMax?\"100vh\":\"90vh\",display:\"flex\",flexDirection:\"column\",borderRadius:isSheet||isMax?0:radius,overflow:\"hidden\",boxShadow:isSheet?\"none\":\"0 25px 80px rgba(0,0,0,0.4)\",cursor:\"default\",position:\"relative\",backgroundColor:\"#F6F6F6\",transform:isSheet||isMax?\"none\":`translate(${pos.x}px, ${pos.y}px)`},children:[chrome&&/*#__PURE__*/_jsx(\"div\",{onPointerDown:furniture?onTitleDown:undefined,onPointerMove:furniture?onTitleMove:undefined,onPointerUp:furniture?onTitleUp:undefined,onPointerCancel:furniture?onTitleUp:undefined,style:{flex:\"0 0 auto\",display:\"flex\",alignItems:\"center\",height:isSheet?52:36,minHeight:isSheet?52:36,backgroundColor:\"#FFFFFF\",borderTopLeftRadius:isSheet||isMax?0:radius,borderTopRightRadius:isSheet||isMax?0:radius,padding:isSheet?\"0 4px 0 16px\":\"6px 8px\",position:\"relative\",userSelect:\"none\",cursor:furniture?isMax?\"default\":\"grab\":\"default\",borderBottom:isSheet?\"1px solid rgba(0,0,0,0.08)\":\"none\"},children:isSheet?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:\"'Geist Mono', 'SF Mono', monospace\",fontSize:13,color:\"#999\",pointerEvents:\"none\"},children:title}),sheetClose]}):/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8},children:[light(\"#EC6A5E\",close),light(\"#F5BF4F\",close),light(\"#61C554\",toggleMax)]}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",left:\"50%\",transform:\"translateX(-50%)\",fontFamily:\"'Geist Mono', 'SF Mono', monospace\",fontSize:13,color:\"#999\",pointerEvents:\"none\"},children:title})]})}),/*#__PURE__*/_jsx(\"div\",{ref:scrollerRef,\"data-dw-scroll\":\"\",className:resetLayout?BODY_CLASS:undefined,style:{flex:1,minHeight:0,overflowY:\"auto\",overscrollBehavior:\"contain\",WebkitOverflowScrolling:\"touch\",touchAction:\"pan-y\",position:\"relative\"},children:content}),furniture&&!isMax&&/*#__PURE__*/_jsx(\"div\",{onPointerDown:onResizeDown,onPointerMove:onResizeMove,onPointerUp:onResizeUp,onPointerCancel:onResizeUp,style:{position:\"absolute\",bottom:0,right:0,width:20,height:20,cursor:\"nwse-resize\",zIndex:10},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"10\",height:\"10\",viewBox:\"0 0 10 10\",style:{position:\"absolute\",bottom:4,right:4,opacity:.25},children:[/*#__PURE__*/_jsx(\"line\",{x1:\"9\",y1:\"1\",x2:\"1\",y2:\"9\",stroke:\"#999\",strokeWidth:\"1\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"9\",y1:\"4\",x2:\"4\",y2:\"9\",stroke:\"#999\",strokeWidth:\"1\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"9\",y1:\"7\",x2:\"7\",y2:\"9\",stroke:\"#999\",strokeWidth:\"1\"})]})})]})})]});return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:0,height:0,overflow:\"visible\",position:\"relative\"},children:host?/*#__PURE__*/createPortal(overlay,host):null});}DeskWindow.displayName=\"Desk Window\";addPropertyControls(DeskWindow,{windowId:{type:ControlType.String,title:\"Window Id\",defaultValue:\"about\",description:\"Unique. openAbout / openCase01 and ?w= use this. NOT called 'id' — Framer reserves that name.\"},content:{type:ControlType.ComponentInstance,title:\"Content\",description:\"Must be a COMPONENT, not a frame. Right-click the frame, Create Component, then pick it here.\"},chrome:{type:ControlType.Boolean,title:\"Titlebar\",enabledTitle:\"Draw\",disabledTitle:\"Content has one\",description:\"Draws the working bar: drag, maximise, close. Delete the titlebar layer inside the content.\",defaultValue:true},title:{type:ControlType.String,title:\"Title\",defaultValue:\"About\",hidden:({chrome})=>!chrome},windowWidth:{type:ControlType.Number,title:\"Width\",defaultValue:1200,min:320,max:1920,step:10,unit:\"px\"},windowHeight:{type:ControlType.Number,title:\"Height\",defaultValue:800,min:300,max:1400,step:10,unit:\"px\"},sheetBelow:{type:ControlType.Number,title:\"Sheet below\",defaultValue:810,min:0,max:1440,step:10,unit:\"px\",description:\"Under this width the window becomes a full-screen sheet: no drag, no maximise, no resize, one 44px close. 0 disables.\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:10,min:0,max:32,step:1,unit:\"px\"},backdropOpacity:{type:ControlType.Number,title:\"Backdrop\",defaultValue:.42,min:0,max:1,step:.02},backdropBlur:{type:ControlType.Number,title:\"Backdrop blur\",defaultValue:2,min:0,max:20,step:1,unit:\"px\"},resetLayout:{type:ControlType.Boolean,title:\"Reset layout\",description:\"strips canvas position off the slot's root\",defaultValue:true},deepLink:{type:ControlType.Boolean,title:\"Deep link\",description:\"writes ?w=<id> and reopens from it on load — keep OFF while building\",defaultValue:false},debug:{type:ControlType.Boolean,title:\"Debug\",description:\"prints the store, the mode, and what is in the Content slot\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"DeskWindow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DeskWindow.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useCallback,useEffect,useMemo,useRef,useState}from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer}from\"framer\";/**\n * BUTTON AND LED REGIONS\n *\n * Measured by pixel-diffing Gameboy_noscreen_power.png against\n * Gameboy_Pressed_On.png (both 1557 × 2516). The pressed render has every\n * button down and the LED lit, so each region below clips that one image to a\n * single control — press A and only A depresses. One extra asset covers all\n * four buttons plus the power LED.\n *\n * If the shell is ever re-rendered these must be re-measured.\n */const BUTTONS=[{id:\"a\",label:\"A\",rect:{left:77.46,top:61.88,width:16.83,height:9.14}},{id:\"b\",label:\"B\",rect:{left:61.08,top:65.3,width:14.52,height:9.1}},{id:\"select\",label:\"Select\",rect:{left:36.03,top:82.91,width:12.4,height:3.22}},{id:\"start\",label:\"Start\",rect:{left:51.83,top:83.11,width:11.69,height:2.82}}];const LED_RECT={left:9.51,top:17.45,width:1.8,height:1.11};/**\n * Reads the one desk light store. DeskLight.tsx is the only creator (§6.9) —\n * this never falls back to building it, so a missing store means day and says\n * so in Debug rather than silently forking the state.\n */function readDeskLight(){try{const s=window.__deskLight;if(!s)return null;if(typeof s.isNight===\"boolean\")return s.isNight;if(typeof s.night===\"boolean\")return s.night;return null;}catch(e){return null;}}const DEFAULTS={shellAltText:\"Interactive Game Boy companion\",shellAspectRatio:1557/2516,shadowOn:true,shadowLight:\"auto\",shadowAngle:45,contactDist:3,contactBlur:6,contactOpacity:.42,castDist:30,castBlur:36,castOpacity:.13,nightLength:1.5,nightFade:.65,screenX:17.8,screenY:10.3,screenWidth:64.7,screenHeight:35.9,screenRotation:0,screenSkewX:0,screenSkewY:0,screenBorderRadius:0,useQuadrilateralClip:false,clipTopLeft:{x:0,y:0},clipTopRight:{x:100,y:0},clipBottomRight:{x:100,y:100},clipBottomLeft:{x:0,y:100},showScreenDebug:false,showButtonDebug:false,screenBackground:\"#9BBC0F\",// A powered-off DMG panel is a murky grey-green, not black.\nscreenOffBackground:\"#7E8C5A\",screenForeground:\"#0F380F\",screenBrightness:100,screenContrast:96,textureOpacity:0,unlitDotOpacity:0,// Off by default — a face sitting on a dead panel reads as a mistake, not\n// as residual pixel shadow.\nghostOpacity:0,standbyFit:\"cover\",// Every inset below is now a control and defaults to 0. They were all\n// hardcoded at 12%, which made \"100%\" unreachable for standby art and the\n// logo. If breathing room is wanted, dial it in — don't bake it.\nstandbyInset:0,standbyText:\"\",standbyTextSize:9,standbyOpacity:22,logoSize:62,logoInset:0,lineWidth:84,faceScale:100,dotGap:8,// Boot, beat by beat. Each is independent so any one can be stretched\n// without disturbing the others.\nlineDuration:500,lineHold:250,openDuration:500,logoDelay:300,logoFadeIn:600,logoHold:1200,logoFadeOut:500,faceFadeIn:600,trackingRadius:480,gazeRangeX:4,gazeRangeY:3,springStrength:.14,springDamping:.86,snapHysteresis:.62,blinkSpeed:1,glanceAfter:4.5,sleepyAfter:14,enableEscalation:true,showDebugControls:false,replayBootAnimation:false};const COMPONENT_CSS=`\n.gbc-root, .gbc-root * { box-sizing: border-box; }\n.gbc-root { container-type: size; }\n\n.gbc-shell-stage { position: relative; flex: none; min-width: 0; min-height: 0; }\n\n.gbc-shell-image {\n    position: absolute; inset: 0; display: block;\n    width: 100%; height: 100%; object-fit: contain;\n    z-index: 2; pointer-events: none; user-select: none; -webkit-user-drag: none;\n}\n\n/*\n    THE SHADOW CASTER — a second copy of the shell carrying nothing but the two\n    chained drop-shadows, sitting UNDER the screen and the pressed overlays.\n\n    It cannot be a filter on .gbc-shell-image. drop-shadow follows the PNG's\n    alpha, and this shell's alpha has an interior hole where the screen is, so\n    filtering the shell itself throws that hole's shadow down-right across the\n    LCD. Painting it from a copy at z-index 0 puts the aperture's shadow behind\n    the panel, where nothing can see it, and leaves only what falls outside the\n    silhouette.\n\n    Same src as the shell, so no second request.\n*/\n.gbc-shell-shadow {\n    position: absolute; inset: 0; display: block;\n    width: 100%; height: 100%; object-fit: contain;\n    z-index: 0; pointer-events: none; user-select: none; -webkit-user-drag: none;\n}\n\n/* A window onto the pressed render, clipped to one control's bounding box. */\n.gbc-overlay {\n    position: absolute; z-index: 3; overflow: hidden;\n    pointer-events: none; opacity: 0;\n    transition: opacity 60ms linear;\n}\n.gbc-overlay[data-on=\"true\"] { opacity: 1; }\n.gbc-overlay > img {\n    position: absolute; display: block; object-fit: contain;\n    user-select: none; -webkit-user-drag: none;\n}\n\n.gbc-led { transition: opacity 260ms ease-out; }\n\n.gbc-hit {\n    position: absolute; z-index: 4;\n    appearance: none; margin: 0; padding: 0;\n    background: transparent; border: 1px solid transparent;\n    border-radius: 999px; outline: none; touch-action: manipulation;\n    transition: transform 60ms ease-out, background 60ms linear;\n}\n.gbc-hit:not(:disabled) { cursor: pointer; }\n\n/* Fallback press feedback when no Pressed render is assigned. */\n.gbc-hit[data-fallback=\"true\"][data-held=\"true\"] {\n    background: rgba(18, 26, 18, 0.22);\n    transform: translateY(0.35%) scale(0.97);\n}\n\n.gbc-hit[data-debug=\"true\"] {\n    border-color: rgba(255, 75, 75, 0.9);\n    background: rgba(255, 75, 75, 0.14);\n}\n.gbc-hit:focus-visible {\n    border-color: rgba(255, 255, 255, 0.95);\n    box-shadow: 0 0 0 3px rgba(28, 39, 31, 0.78);\n}\n\n/* The panel itself is always the dead colour. The lit layer opens on top. */\n.gbc-screen {\n    container-type: size; isolation: isolate;\n    background: var(--gbc-screen-off); color: var(--gbc-screen-fg);\n    overflow: hidden;\n    box-shadow:\n        inset 0 0 0 1px rgba(20, 30, 21, 0.14),\n        inset 0 0 18px rgba(20, 30, 21, 0.16);\n}\n\n.gbc-lit {\n    position: absolute; inset: 0; z-index: 1;\n    background: var(--gbc-screen-bg);\n    opacity: 0; pointer-events: none;\n}\n.gbc-screen[data-state=\"active\"] .gbc-lit { opacity: 1; }\n.gbc-screen[data-state=\"booting\"] .gbc-lit {\n    animation: gbc-open var(--gbc-t-open) cubic-bezier(.5, 0, .2, 1) var(--gbc-d-open) both;\n}\n\n/*\n    Anything shown on the dead panel before boot.\n\n    The art is absolutely filled to the panel and honours --gbc-standby-fit, so\n    \"cover\" genuinely reaches every edge. Text floats over the top rather than\n    sharing a grid cell with the image, which is what used to shrink it.\n*/\n.gbc-standby {\n    position: absolute; inset: var(--gbc-standby-inset); z-index: 5;\n    opacity: 0; pointer-events: none; overflow: hidden;\n    transition: opacity 220ms ease-out;\n}\n.gbc-screen[data-state=\"standby\"] .gbc-standby {\n    opacity: var(--gbc-standby-opacity);\n}\n.gbc-standby img {\n    position: absolute; inset: 0;\n    display: block; width: 100%; height: 100%;\n    object-fit: var(--gbc-standby-fit);\n    image-rendering: pixelated;\n    user-select: none; -webkit-user-drag: none;\n}\n.gbc-standby span {\n    position: absolute; left: 0; right: 0; bottom: 6%;\n    color: var(--gbc-screen-fg);\n    font: 500 var(--gbc-standby-size)/1.4 ui-monospace, SFMono-Regular, Consolas, monospace;\n    letter-spacing: 0.1em; text-align: center;\n}\n\n/* The scan line that draws before the panel opens. */\n.gbc-line-wrap {\n    position: absolute; inset: 0; z-index: 6;\n    display: grid; place-items: center;\n    opacity: 0; pointer-events: none;\n}\n.gbc-screen[data-state=\"booting\"] .gbc-line-wrap {\n    animation: gbc-fade-out var(--gbc-t-open) linear var(--gbc-d-open) both;\n}\n.gbc-line {\n    width: 0; height: max(2px, 1.1cqh);\n    background: var(--gbc-screen-fg);\n}\n.gbc-screen[data-state=\"booting\"] .gbc-line {\n    animation: gbc-line-draw var(--gbc-t-line) cubic-bezier(.2, 0, .1, 1) both;\n}\n\n.gbc-texture-image {\n    position: absolute; inset: 0; pointer-events: none;\n    z-index: 3; width: 100%; height: 100%; object-fit: cover;\n    opacity: var(--gbc-texture-opacity); mix-blend-mode: multiply;\n}\n\n/* Two nested layers so fade-in and fade-out are separate, independently timed\n   animations whose opacities simply multiply. */\n.gbc-logo-wrap {\n    position: absolute; inset: var(--gbc-logo-inset); z-index: 5;\n    display: grid; place-items: center;\n    opacity: 0; pointer-events: none;\n}\n.gbc-screen[data-state=\"booting\"] .gbc-logo-wrap {\n    animation: gbc-fade-in var(--gbc-t-logo-in) ease-out var(--gbc-d-logo-in) both;\n}\n.gbc-logo-inner { opacity: 1; display: grid; place-items: center; width: 100%; height: 100%; }\n.gbc-screen[data-state=\"booting\"] .gbc-logo-inner {\n    animation: gbc-fade-out var(--gbc-t-logo-out) ease-in var(--gbc-d-logo-out) both;\n}\n.gbc-logo-image {\n    display: block;\n    width: var(--gbc-logo-size); max-width: var(--gbc-logo-size);\n    max-height: 100%;\n    object-fit: contain; image-rendering: pixelated;\n    user-select: none; -webkit-user-drag: none;\n}\n\n.gbc-face-layer {\n    position: absolute; inset: 0; z-index: 4;\n    display: grid; place-items: center;\n    width: 100%; height: 100%;\n    padding: 0; margin: 0; border: 0;\n    appearance: none; color: inherit; background: transparent;\n    outline: none;\n    opacity: var(--gbc-ghost);\n    pointer-events: none;\n}\n.gbc-screen[data-state=\"booting\"] .gbc-face-layer {\n    animation: gbc-fade-in var(--gbc-t-face) ease-out var(--gbc-d-face) both;\n}\n.gbc-screen[data-state=\"active\"] .gbc-face-layer {\n    opacity: 1; pointer-events: auto; cursor: pointer;\n}\n.gbc-face-layer:focus-visible {\n    box-shadow: inset 0 0 0 max(2px, 1.4cqh) color-mix(in srgb, var(--gbc-screen-fg) 75%, transparent);\n}\n\n.gbc-dot-matrix { display: block; color: var(--gbc-screen-fg); }\n.gbc-unlit-dots { opacity: var(--gbc-unlit-opacity); }\n\n.gbc-debug-panel {\n    position: absolute; z-index: 10; top: 8px; left: 8px;\n    display: flex; align-items: center; gap: 6px; padding: 6px;\n    border: 1px solid rgba(255, 255, 255, 0.2); border-radius: 8px;\n    color: white; background: rgba(18, 18, 18, 0.82);\n    font: 600 10px/1 ui-sans-serif, system-ui, sans-serif;\n}\n.gbc-debug-button {\n    appearance: none; border: 1px solid rgba(255, 255, 255, 0.32);\n    border-radius: 5px; color: white; background: rgba(255, 255, 255, 0.1);\n    font: inherit; padding: 5px 7px; cursor: pointer;\n}\n\n.gbc-sr-only {\n    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;\n    overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;\n}\n\n/*\n    THE BOOT\n\n      line    a thin line draws out from the centre of the dead panel\n      hold    it sits there a beat\n      open    the panel opens vertically from that line, line fades\n      logo    fades up, holds, fades away\n      face    the companion arrives\n\n    Each beat is its own duration in milliseconds and each element gets its own\n    delay, so any single phase can be stretched without touching the rest. The\n    delays are summed in JS and handed over as CSS variables.\n\n    An earlier version had the logo drop in and get shoved off screen by the\n    face. It read as slapstick and is not coming back.\n*/\n@keyframes gbc-line-draw { from { width: 0; } to { width: var(--gbc-line-width); } }\n@keyframes gbc-fade-in { from { opacity: 0; } to { opacity: 1; } }\n@keyframes gbc-fade-out { from { opacity: 1; } to { opacity: 0; } }\n\n@keyframes gbc-open {\n    from { opacity: 1; clip-path: inset(50% 0 50% 0); }\n    to   { opacity: 1; clip-path: inset(0 0 0 0); }\n}\n\n@media (prefers-reduced-motion: reduce) {\n    .gbc-screen[data-state=\"booting\"] .gbc-line-wrap,\n    .gbc-screen[data-state=\"booting\"] .gbc-line,\n    .gbc-screen[data-state=\"booting\"] .gbc-logo-wrap,\n    .gbc-screen[data-state=\"booting\"] .gbc-logo-inner,\n    .gbc-screen[data-state=\"booting\"] .gbc-lit,\n    .gbc-screen[data-state=\"booting\"] .gbc-face-layer {\n        animation: none !important;\n    }\n    .gbc-screen[data-state=\"booting\"] .gbc-lit,\n    .gbc-screen[data-state=\"booting\"] .gbc-face-layer { opacity: 1; }\n    .gbc-screen[data-state=\"booting\"] .gbc-line-wrap,\n    .gbc-screen[data-state=\"booting\"] .gbc-logo-wrap { opacity: 0; }\n}\n`;function clamp(value,min,max){return Math.min(max,Math.max(min,value));}function normalizeImage(value){if(!value)return undefined;if(typeof value===\"string\")return{src:value};if(!value.src)return undefined;return value;}function normalizeCorner(value,fallback){return{x:clamp(value?.x??fallback.x,0,100),y:clamp(value?.y??fallback.y,0,100)};}function useReducedMotion(){const[reduced,setReduced]=useState(false);useEffect(()=>{const media=window.matchMedia(\"(prefers-reduced-motion: reduce)\");const update=()=>setReduced(media.matches);update();media.addEventListener(\"change\",update);return()=>media.removeEventListener(\"change\",update);},[]);return reduced;}// 41 × 36 cells, close to the DMG's real 10:9 panel ratio.\nconst GRID_COLUMNS=41;const GRID_ROWS=36;const CELL_SIZE=1e3;const MIRROR_AXIS=GRID_COLUMNS-1;function spansToDots(rows){const dots=[];for(const[y,firstX,lastX]of rows){for(let x=firstX;x<=lastX;x+=1)dots.push({x,y});}return dots;}// Every face is authored once for the LEFT eye and mirrored, so the two eyes\n// are identical by construction and cannot drift apart.\nfunction mirror(rows){return rows.map(([y,a,b])=>[y,MIRROR_AXIS-b,MIRROR_AXIS-a]);}/**\n * EYE SHAPES — authored for the LEFT eye, rows 8–20, columns 10–16.\n *\n * The rule that governs every shape: a FLAT top edge reads as a lowered brow,\n * i.e. angry, whatever the state is called. Sleepy therefore keeps a rounded\n * top and a level baseline; annoyed uses a top edge cut on a diagonal sloping\n * toward the centre of the face; an outer corner lower than the inner one\n * reads as sad and is avoided.\n */const EYE_NEUTRAL=[[10,11,15],[11,10,16],[12,10,16],[13,10,16],[14,10,16],[15,10,16],[16,10,16],[17,10,16],[18,11,15]];const EYE_HAPPY=[[13,12,14],[14,11,15],[15,10,16],[16,10,11],[16,15,16]];const EYE_SLEEPY=[[15,11,15],[16,10,16],[17,10,16],[18,11,15]];// Same width as neutral, six rows instead of nine, bottoms aligned. Used as the\n// right eye of the curious face and as the first blink frame.\nconst EYE_SQUINT=[[13,11,15],[14,10,16],[15,10,16],[16,10,16],[17,10,16],[18,11,15]];const EYE_SURPRISED=[[8,11,15],[9,10,16],[10,10,16],[11,10,16],[12,10,16],[13,10,16],[14,10,16],[15,10,16],[16,10,16],[17,10,16],[18,10,16],[19,11,15]];const EYE_ANNOYED=[[12,10,12],[13,10,14],[14,10,16],[15,10,16],[16,10,16],[17,10,16],[18,11,15]];// The closed frame is a rounded bowl, not a flat bar — a flat bar at this size\n// reads as a scowl.\nconst EYE_BLINK_NARROW=[[16,11,15],[17,10,16],[18,11,15]];const EYE_BLINK_SHUT=[[17,11,15],[18,10,16]];const MOUTH_NEUTRAL=[[24,17,23],[25,18,22]];const MOUTH_HAPPY=[[23,16,16],[23,24,24],[24,17,23]];const MOUTH_SLEEPY=[[25,18,22]];const MOUTH_CURIOUS=[[24,16,21],[25,17,20]];const MOUTH_SURPRISED=[[23,19,21],[24,19,21],[25,19,21]];const MOUTH_ANNOYED=[[23,18,22],[24,17,23]];function buildFace(left,right,mouth){return{left:spansToDots(left),right:spansToDots(right),mouth:spansToDots(mouth)};}const FACES={neutral:buildFace(EYE_NEUTRAL,mirror(EYE_NEUTRAL),MOUTH_NEUTRAL),happy:buildFace(EYE_HAPPY,mirror(EYE_HAPPY),MOUTH_HAPPY),sleepy:buildFace(EYE_SLEEPY,mirror(EYE_SLEEPY),MOUTH_SLEEPY),// The only asymmetric face: full-height left eye, squinted right eye.\ncurious:buildFace(EYE_NEUTRAL,mirror(EYE_SQUINT),MOUTH_CURIOUS),surprised:buildFace(EYE_SURPRISED,mirror(EYE_SURPRISED),MOUTH_SURPRISED),annoyed:buildFace(EYE_ANNOYED,mirror(EYE_ANNOYED),MOUTH_ANNOYED)};const BLINK_DOTS=[null,EYE_SQUINT,EYE_BLINK_NARROW,EYE_BLINK_SHUT].map(spans=>spans?{left:spansToDots(spans),right:spansToDots(mirror(spans))}:null);const BLINK_SEQUENCE=[{phase:1,duration:28},{phase:2,duration:28},{phase:3,duration:55},{phase:2,duration:28},{phase:1,duration:28},{phase:0,duration:0}];// Expressions whose eye shape carries the expression itself. Blinking through\n// them would erase the thing being expressed.\nconst NON_BLINKING=[\"happy\",\"sleepy\",\"annoyed\",\"surprised\"];function roundSymmetric(value){return value<0?-Math.round(-value):Math.round(value);}/**\n * The spring rings out around its target rather than arriving dead, so a value\n * settling near a cell boundary would flip the rendered cell back and forth on\n * every oscillation. Hysteresis ignores that small movement.\n */function snapWithHysteresis(value,currentCell,hysteresis){if(!Number.isFinite(currentCell))return roundSymmetric(value);if(Math.abs(value-currentCell)<=hysteresis)return currentCell;return roundSymmetric(value);}function DotMatrixCompanion({eyeGroupRef,expression,blinkPhase,dotSize,faceScale,showUnlitDots}){const face=FACES[expression];const blink=BLINK_DOTS[clamp(blinkPhase,0,BLINK_DOTS.length-1)];const leftEye=blink?blink.left:face.left;const rightEye=blink?blink.right:face.right;const unlitCells=useMemo(()=>{if(!showUnlitDots)return null;const cells=[];for(let y=0;y<GRID_ROWS;y+=1){for(let x=0;x<GRID_COLUMNS;x+=1){cells.push(/*#__PURE__*/_jsx(\"rect\",{x:x*CELL_SIZE,y:y*CELL_SIZE,width:dotSize,height:dotSize,fill:\"currentColor\"},\"u\"+x+\":\"+y));}}return cells;},[dotSize,showUnlitDots]);const renderDots=(dots,keyPrefix)=>dots.map(dot=>/*#__PURE__*/_jsx(\"rect\",{x:dot.x*CELL_SIZE,y:dot.y*CELL_SIZE,width:dotSize,height:dotSize,fill:\"currentColor\"},keyPrefix+dot.x+\":\"+dot.y));return(/*\n            No shapeRendering=\"crispEdges\" here, deliberately. It snaps every\n            rect to whole device pixels independently, so at real size — where a\n            cell is ~15px and the gap is under 1px — some gaps survive and some\n            collapse. That was the canvas/preview mismatch.\n        *//*#__PURE__*/_jsxs(\"svg\",{className:\"gbc-dot-matrix\",style:{width:`${faceScale}%`,height:`${faceScale}%`},viewBox:\"0 0 \"+GRID_COLUMNS*CELL_SIZE+\" \"+GRID_ROWS*CELL_SIZE,preserveAspectRatio:\"xMidYMid meet\",\"aria-hidden\":\"true\",focusable:\"false\",children:[unlitCells&&/*#__PURE__*/_jsx(\"g\",{className:\"gbc-unlit-dots\",\"data-gbc-part\":\"panel\",children:unlitCells}),/*#__PURE__*/_jsx(\"g\",{\"data-gbc-part\":\"mouth\",children:renderDots(face.mouth,\"m:\")}),/*#__PURE__*/_jsxs(\"g\",{ref:eyeGroupRef,\"data-gbc-part\":\"eyes\",children:[renderDots(leftEye,\"l:\"),renderDots(rightEye,\"r:\")]})]}));}// A window onto the pressed shell render, clipped to one region. The inner\n// image is scaled and offset so it lines up exactly with the base shell.\nfunction PressedRegion({image,rect,on,className}){return /*#__PURE__*/_jsx(\"div\",{className:\"gbc-overlay\"+(className?\" \"+className:\"\"),\"data-on\":on?\"true\":\"false\",\"aria-hidden\":\"true\",style:{left:`${rect.left}%`,top:`${rect.top}%`,width:`${rect.width}%`,height:`${rect.height}%`},children:/*#__PURE__*/_jsx(\"img\",{src:image.src,srcSet:image.srcSet,alt:\"\",draggable:false,style:{width:`${100/rect.width*100}%`,height:`${100/rect.height*100}%`,left:`${-(rect.left/rect.width)*100}%`,top:`${-(rect.top/rect.height)*100}%`}})});}/**\n * Interactive Game Boy Companion\n *\n * REQUIRED SETUP\n *   Shell    the base render — buttons up, LED off\n *   Pressed  the all-buttons-down, LED-on render\n *   Logo     optional; boot screen only. If empty, that beat is skipped\n *   Standby  optional image and/or text shown on the dead panel before boot\n *\n * It always starts switched OFF. Any hardware button powers it on and plays the\n * boot; once on, any button pokes the companion.\n *\n * Other desk objects can drive the face without importing anything:\n *   window.__companion.express(\"curious\", 900)\n *   window.__companion.happy()\n *\n * THE SHADOW — contact + cast, the dumbbell's model (§6.11). This is the one\n * shadow on the desk that is code rather than baked, because this shell cannot\n * be re-rendered with one. Cast distance must stay ABOVE cast blur or the\n * shadow spreads out the back and the object reads as floating in haze\n * (§20.40). The stage and the root are overflow: visible, but the FRAME in\n * Framer has to be too, and larger than the artwork, or the cast is clipped\n * (§20.49).\n *\n * @framerIntrinsicWidth 495\n * @framerIntrinsicHeight 800\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function GameBoyCompanion(props){const{shellImage,pressedImage,logoImage,standbyImage,standbyFit=DEFAULTS.standbyFit,standbyInset=DEFAULTS.standbyInset,standbyText=DEFAULTS.standbyText,standbyTextSize=DEFAULTS.standbyTextSize,standbyOpacity=DEFAULTS.standbyOpacity,screenTextureImage,shellAltText=DEFAULTS.shellAltText,shellAspectRatio=DEFAULTS.shellAspectRatio,shadowOn=DEFAULTS.shadowOn,shadowLight=DEFAULTS.shadowLight,shadowAngle=DEFAULTS.shadowAngle,contactDist=DEFAULTS.contactDist,contactBlur=DEFAULTS.contactBlur,contactOpacity=DEFAULTS.contactOpacity,castDist=DEFAULTS.castDist,castBlur=DEFAULTS.castBlur,castOpacity=DEFAULTS.castOpacity,nightLength=DEFAULTS.nightLength,nightFade=DEFAULTS.nightFade,screenX=DEFAULTS.screenX,screenY=DEFAULTS.screenY,screenWidth=DEFAULTS.screenWidth,screenHeight=DEFAULTS.screenHeight,screenRotation=DEFAULTS.screenRotation,screenSkewX=DEFAULTS.screenSkewX,screenSkewY=DEFAULTS.screenSkewY,screenBorderRadius=DEFAULTS.screenBorderRadius,useQuadrilateralClip=DEFAULTS.useQuadrilateralClip,clipTopLeft=DEFAULTS.clipTopLeft,clipTopRight=DEFAULTS.clipTopRight,clipBottomRight=DEFAULTS.clipBottomRight,clipBottomLeft=DEFAULTS.clipBottomLeft,showScreenDebug=DEFAULTS.showScreenDebug,showButtonDebug=DEFAULTS.showButtonDebug,screenBackground=DEFAULTS.screenBackground,screenOffBackground=DEFAULTS.screenOffBackground,screenForeground=DEFAULTS.screenForeground,screenBrightness=DEFAULTS.screenBrightness,screenContrast=DEFAULTS.screenContrast,textureOpacity=DEFAULTS.textureOpacity,unlitDotOpacity=DEFAULTS.unlitDotOpacity,ghostOpacity=DEFAULTS.ghostOpacity,logoSize=DEFAULTS.logoSize,logoInset=DEFAULTS.logoInset,lineWidth=DEFAULTS.lineWidth,faceScale=DEFAULTS.faceScale,dotGap=DEFAULTS.dotGap,lineDuration=DEFAULTS.lineDuration,lineHold=DEFAULTS.lineHold,openDuration=DEFAULTS.openDuration,logoDelay=DEFAULTS.logoDelay,logoFadeIn=DEFAULTS.logoFadeIn,logoHold=DEFAULTS.logoHold,logoFadeOut=DEFAULTS.logoFadeOut,faceFadeIn=DEFAULTS.faceFadeIn,trackingRadius=DEFAULTS.trackingRadius,gazeRangeX=DEFAULTS.gazeRangeX,gazeRangeY=DEFAULTS.gazeRangeY,springStrength=DEFAULTS.springStrength,springDamping=DEFAULTS.springDamping,snapHysteresis=DEFAULTS.snapHysteresis,blinkSpeed=DEFAULTS.blinkSpeed,glanceAfter=DEFAULTS.glanceAfter,sleepyAfter=DEFAULTS.sleepyAfter,enableEscalation=DEFAULTS.enableEscalation,showDebugControls=DEFAULTS.showDebugControls,replayBootAnimation=DEFAULTS.replayBootAnimation,style}=props;const isStaticRenderer=useIsStaticRenderer();const reducedMotion=useReducedMotion();// Always starts off. There is deliberately no \"start active\" prop — an\n// earlier one, saved on the instance, was silently skipping the whole boot.\nconst[companionState,setCompanionState]=useState(\"standby\");const[expression,setExpression]=useState(\"neutral\");const[blinkPhase,setBlinkPhase]=useState(0);const[heldButton,setHeldButton]=useState(null);const[autoNight,setAutoNight]=useState(false);const rootRef=useRef(null);const screenRef=useRef(null);const eyeGroupRef=useRef(null);const bootTimerRef=useRef(null);const blinkTimersRef=useRef([]);const expressionTimerRef=useRef(null);const previousReplayRef=useRef(false);const gazeModeRef=useRef({mode:\"pointer\",x:0,y:0});const squeezeRef=useRef(1);const pokeRef=useRef(()=>{});const expressionRef=useRef(\"neutral\");expressionRef.current=expression;const shell=normalizeImage(shellImage);const pressed=normalizeImage(pressedImage);const logo=normalizeImage(logoImage);const standby=normalizeImage(standbyImage);const texture=normalizeImage(screenTextureImage);const safeAspect=clamp(shellAspectRatio,.2,4);const safeFaceScale=clamp(faceScale,20,100);const dotSize=Math.round(CELL_SIZE*(1-clamp(dotGap,0,40)/100));const safeUnlit=clamp(unlitDotOpacity,0,40);const safeGhost=clamp(ghostOpacity,0,60);const safeLogoSize=clamp(logoSize,10,100);const safeLogoInset=clamp(logoInset,0,40);const safeStandbyInset=clamp(standbyInset,0,40);const safeLineWidth=clamp(lineWidth,10,100);const safeBlinkSpeed=clamp(blinkSpeed,.25,4);// Night makes every shadow on the desk longer, softer and weaker — a\n// smaller, dimmer source. Polled rather than subscribed because the store\n// is a plain object on window (§20.1) and 400ms is imperceptible for a\n// shadow that also eases.\nuseEffect(()=>{if(isStaticRenderer||shadowLight!==\"auto\")return;const tick=()=>{const n=readDeskLight();if(n!==null)setAutoNight(n);};tick();const id=setInterval(tick,400);return()=>clearInterval(id);},[isStaticRenderer,shadowLight]);const isNight=shadowLight===\"night\"?true:shadowLight===\"day\"?false:autoNight;// 45deg is measured clockwise from 3 o'clock, so it points down-right —\n// away from the window off-canvas upper-left (§6.1). Same angle on every\n// object on the desk.\nconst sRad=shadowAngle*Math.PI/180;const nL=isNight?nightLength:1;const nF=isNight?nightFade:1;const cD=contactDist*nL;const kD=castDist*nL;const shadowFilter=shadowOn?\"drop-shadow(\"+(Math.cos(sRad)*cD).toFixed(2)+\"px \"+(Math.sin(sRad)*cD).toFixed(2)+\"px \"+(contactBlur*nL).toFixed(1)+\"px rgba(0,0,0,\"+(contactOpacity*nF).toFixed(3)+\")) drop-shadow(\"+(Math.cos(sRad)*kD).toFixed(2)+\"px \"+(Math.sin(sRad)*kD).toFixed(2)+\"px \"+(castBlur*nL).toFixed(1)+\"px rgba(0,0,0,\"+(castOpacity*nF).toFixed(3)+\"))\":\"none\";// Boot timeline. Each beat is a duration; the delays are the running total.\n// With no logo assigned, its beats collapse to nothing and the panel opens\n// straight into the face.\nconst tLine=Math.max(0,lineDuration);const tLineHold=Math.max(0,lineHold);const tOpen=Math.max(1,openDuration);const hasLogo=Boolean(logo);const tLogoDelay=hasLogo?Math.max(0,logoDelay):0;const tLogoIn=hasLogo?Math.max(1,logoFadeIn):0;const tLogoHold=hasLogo?Math.max(0,logoHold):0;const tLogoOut=hasLogo?Math.max(1,logoFadeOut):0;const tFace=Math.max(1,faceFadeIn);const dOpen=tLine+tLineHold;const dLogoIn=dOpen+tOpen+tLogoDelay;const dLogoOut=dLogoIn+tLogoIn+tLogoHold;const dFace=dLogoOut+tLogoOut;const bootTotal=dFace+tFace;const topLeft=normalizeCorner(clipTopLeft,DEFAULTS.clipTopLeft);const topRight=normalizeCorner(clipTopRight,DEFAULTS.clipTopRight);const bottomRight=normalizeCorner(clipBottomRight,DEFAULTS.clipBottomRight);const bottomLeft=normalizeCorner(clipBottomLeft,DEFAULTS.clipBottomLeft);const clipPath=useQuadrilateralClip?`polygon(${topLeft.x}% ${topLeft.y}%, ${topRight.x}% ${topRight.y}%, ${bottomRight.x}% ${bottomRight.y}%, ${bottomLeft.x}% ${bottomLeft.y}%)`:undefined;const clearBlinkTimers=useCallback(()=>{for(const timer of blinkTimersRef.current)clearTimeout(timer);blinkTimersRef.current=[];},[]);const playBlink=useCallback(()=>{if(NON_BLINKING.includes(expressionRef.current))return;clearBlinkTimers();let elapsed=0;for(const step of BLINK_SEQUENCE){const at=elapsed;blinkTimersRef.current.push(setTimeout(()=>setBlinkPhase(step.phase),at));elapsed+=step.duration/safeBlinkSpeed;}},[clearBlinkTimers,safeBlinkSpeed]);const express=useCallback((next,holdMs)=>{if(expressionTimerRef.current!==null){clearTimeout(expressionTimerRef.current);expressionTimerRef.current=null;}clearBlinkTimers();setBlinkPhase(0);setExpression(next);if(holdMs&&holdMs>0){expressionTimerRef.current=setTimeout(()=>{expressionTimerRef.current=null;setExpression(\"neutral\");},holdMs);}},[clearBlinkTimers]);const clearBootTimer=useCallback(()=>{if(bootTimerRef.current!==null){clearTimeout(bootTimerRef.current);bootTimerRef.current=null;}},[]);const beginBoot=useCallback(()=>{if(isStaticRenderer)return;clearBootTimer();clearBlinkTimers();setBlinkPhase(0);setExpression(\"neutral\");setCompanionState(\"booting\");const delay=reducedMotion?160:bootTotal;bootTimerRef.current=setTimeout(()=>{bootTimerRef.current=null;setCompanionState(\"active\");},delay);},[bootTotal,clearBlinkTimers,clearBootTimer,isStaticRenderer,reducedMotion]);const powerOff=useCallback(()=>{clearBootTimer();clearBlinkTimers();setBlinkPhase(0);setExpression(\"neutral\");gazeModeRef.current={mode:\"pointer\",x:0,y:0};setCompanionState(\"standby\");},[clearBlinkTimers,clearBootTimer]);useEffect(()=>{return()=>{clearBootTimer();clearBlinkTimers();if(expressionTimerRef.current!==null){clearTimeout(expressionTimerRef.current);}};},[clearBlinkTimers,clearBootTimer]);// Toggling Replay Boot powers it off and back on, so the sequence can be\n// watched from the property panel without touching the canvas.\nuseEffect(()=>{const shouldReplay=replayBootAnimation&&!previousReplayRef.current;previousReplayRef.current=replayBootAnimation;if(!shouldReplay)return;powerOff();const id=setTimeout(beginBoot,320);return()=>clearTimeout(id);},[beginBoot,powerOff,replayBootAnimation]);// Every hardware button does the same thing: switch it on when it is off,\n// poke it when it is on. Which button you press is not the point.\nconst onButtonDown=useCallback(id=>{if(isStaticRenderer)return;setHeldButton(id);if(companionState===\"standby\"){beginBoot();return;}if(companionState!==\"active\")return;rootRef.current?.dispatchEvent(new CustomEvent(\"gbc-poke\"));},[beginBoot,companionState,isStaticRenderer]);const releaseButton=useCallback(()=>setHeldButton(null),[]);/**\n     * BEHAVIOUR\n     *\n     * Personality comes from what it does unprompted, not from how many faces\n     * exist. Everything below runs off two timers: how long since the pointer\n     * last moved, and how long since it last blinked.\n     */useEffect(()=>{if(isStaticRenderer||companionState!==\"active\")return;let cancelled=false;const timers=[];const later=(fn,ms)=>{const id=setTimeout(()=>{if(!cancelled)fn();},ms);timers.push(id);return id;};let lastMove=performance.now();let asleep=false;let glancing=false;let pokeCount=0;let lastPoke=0;let ignoreUntil=0;const glanceRange=Math.max(1,Math.round(Math.max(0,gazeRangeX)));const startGlance=()=>{if(asleep||glancing||performance.now()<ignoreUntil)return;glancing=true;// Look somewhere plausible but not at the cursor, and never dead\n// centre — centre reads as \"off\", not as \"looking at something\".\nconst dx=(Math.random()<.5?-1:1)*(glanceRange*.7);const dy=(Math.random()-.7)*Math.max(1,gazeRangeY);gazeModeRef.current={mode:\"glance\",x:dx,y:dy};pokeRef.current();later(()=>{if(Math.random()<.4)playBlink();},260);later(()=>{glancing=false;if(!asleep&&performance.now()>=ignoreUntil){gazeModeRef.current={mode:\"pointer\",x:0,y:0};pokeRef.current();}},900+Math.random()*700);};const fallAsleep=()=>{asleep=true;glancing=false;gazeModeRef.current={mode:\"centre\",x:0,y:0};express(\"sleepy\");pokeRef.current();};const wake=()=>{asleep=false;gazeModeRef.current={mode:\"pointer\",x:0,y:0};express(\"surprised\",340);pokeRef.current();};const onMove=()=>{lastMove=performance.now();if(asleep){wake();return;}if(glancing){glancing=false;gazeModeRef.current={mode:\"pointer\",x:0,y:0};pokeRef.current();}};// One slow poll drives idle and sleep — easier to reason about than a\n// web of rescheduling timeouts.\nconst loop=setInterval(()=>{if(cancelled)return;const now=performance.now();if(now<ignoreUntil)return;const still=(now-lastMove)/1e3;if(!asleep&&still>Math.max(1,sleepyAfter))fallAsleep();else if(!asleep&&still>Math.max(.5,glanceAfter)){if(Math.random()<.45)startGlance();}},1400);const scheduleBlink=()=>{if(cancelled||reducedMotion)return;later(()=>{if(!asleep)playBlink();scheduleBlink();},3200+Math.random()*4400);};scheduleBlink();const onPoke=()=>{const now=performance.now();if(now-lastPoke>8e3)pokeCount=0;lastPoke=now;pokeCount+=1;lastMove=now;asleep=false;squeezeRef.current=.7;pokeRef.current();if(!enableEscalation||pokeCount<3){express(\"surprised\",700);}else if(pokeCount<6){express(\"annoyed\",900);}else{// Persisted long enough to earn the payoff: it looks away and\n// refuses to track for a few seconds.\nexpress(\"annoyed\",4600);ignoreUntil=now+4600;gazeModeRef.current={mode:\"away\",x:-Math.max(1,gazeRangeX),y:-Math.max(1,gazeRangeY)*.6};pokeRef.current();later(()=>{pokeCount=0;gazeModeRef.current={mode:\"pointer\",x:0,y:0};pokeRef.current();},4700);}};window.addEventListener(\"pointermove\",onMove,{passive:true});const root=rootRef.current;root?.addEventListener(\"gbc-poke\",onPoke);const api={express:(name,hold)=>{lastMove=performance.now();asleep=false;express(name,hold??900);},happy:()=>api.express(\"happy\",1100),curious:()=>api.express(\"curious\",1100),surprised:()=>api.express(\"surprised\",700),blink:()=>playBlink()};window.__companion=api;return()=>{cancelled=true;for(const id of timers)clearTimeout(id);clearInterval(loop);window.removeEventListener(\"pointermove\",onMove);root?.removeEventListener(\"gbc-poke\",onPoke);if(window.__companion===api){delete window.__companion;}};},[companionState,enableEscalation,express,gazeRangeX,gazeRangeY,glanceAfter,isStaticRenderer,playBlink,reducedMotion,sleepyAfter]);// Gaze tracking. Only runs once the device is on — running it during boot\n// would fight the reveal.\nuseEffect(()=>{if(isStaticRenderer||companionState!==\"active\")return;let animationFrame=null;let lastFrameTime=performance.now();let latestPointer=null;let shouldMeasurePointer=false;const position={x:0,y:0};const velocity={x:0,y:0};const target={x:0,y:0};const rendered={eyeX:Number.NaN,eyeY:Number.NaN,squeeze:1};const safeRadius=Math.max(40,trackingRadius);const rangeX=Math.max(0,gazeRangeX);const rangeY=Math.max(0,gazeRangeY);const hysteresis=clamp(snapHysteresis,0,.9);const renderLimitX=Math.ceil(rangeX)+2;const renderLimitY=Math.ceil(rangeY)+2;const centreX=(GRID_COLUMNS-1)/2*CELL_SIZE;const centreY=14*CELL_SIZE;const applyTransform=()=>{const eyes=eyeGroupRef.current;if(!eyes)return;const eyeX=clamp(snapWithHysteresis(position.x,rendered.eyeX,hysteresis),-renderLimitX,renderLimitX);const eyeY=clamp(snapWithHysteresis(position.y,rendered.eyeY,hysteresis),-renderLimitY,renderLimitY);const squeeze=Math.round(squeezeRef.current*100)/100;if(eyeX===rendered.eyeX&&eyeY===rendered.eyeY&&squeeze===rendered.squeeze){return;}const parts=[\"translate(\"+eyeX*CELL_SIZE+\" \"+eyeY*CELL_SIZE+\")\"];if(squeeze!==1){parts.push(\"translate(\"+centreX+\" \"+centreY+\")\");parts.push(\"scale(1 \"+squeeze+\")\");parts.push(\"translate(\"+-centreX+\" \"+-centreY+\")\");}eyes.setAttribute(\"transform\",parts.join(\" \"));rendered.eyeX=eyeX;rendered.eyeY=eyeY;rendered.squeeze=squeeze;};const measureTarget=()=>{const gaze=gazeModeRef.current;if(gaze.mode!==\"pointer\"){target.x=clamp(gaze.x,-rangeX,rangeX);target.y=clamp(gaze.y,-rangeY,rangeY);return;}shouldMeasurePointer=false;const screen=screenRef.current;if(!screen||!latestPointer){target.x=0;target.y=0;return;}// Measured live against the rendered screen element, so this stays\n// correct while the desk canvas pans. No canvas coordinate system.\nconst rect=screen.getBoundingClientRect();const cx=rect.left+rect.width/2;const cy=rect.top+rect.height/2;target.x=clamp((latestPointer.x-cx)/safeRadius,-1,1)*rangeX;target.y=clamp((latestPointer.y-cy)/safeRadius,-1,1)*rangeY;};const tick=time=>{animationFrame=null;measureTarget();if(squeezeRef.current!==1){squeezeRef.current+=(1-squeezeRef.current)*.22;if(Math.abs(1-squeezeRef.current)<.01)squeezeRef.current=1;}if(reducedMotion){position.x=target.x;position.y=target.y;velocity.x=0;velocity.y=0;applyTransform();return;}const frameScale=clamp((time-lastFrameTime)/(1e3/60),.25,2);lastFrameTime=time;const damping=Math.pow(springDamping,frameScale);velocity.x+=(target.x-position.x)*springStrength*frameScale;velocity.y+=(target.y-position.y)*springStrength*frameScale;velocity.x*=damping;velocity.y*=damping;position.x+=velocity.x*frameScale;position.y+=velocity.y*frameScale;applyTransform();const settled=Math.abs(target.x-position.x)<.01&&Math.abs(target.y-position.y)<.01&&Math.abs(velocity.x)<.01&&Math.abs(velocity.y)<.01&&squeezeRef.current===1;if(settled&&!shouldMeasurePointer){position.x=target.x;position.y=target.y;velocity.x=0;velocity.y=0;applyTransform();return;}animationFrame=window.requestAnimationFrame(tick);};const poke=()=>{if(animationFrame===null){lastFrameTime=performance.now();animationFrame=window.requestAnimationFrame(tick);}};pokeRef.current=poke;const onPointerMove=event=>{latestPointer={x:event.clientX,y:event.clientY};shouldMeasurePointer=true;poke();};applyTransform();window.addEventListener(\"pointermove\",onPointerMove,{passive:true});return()=>{window.removeEventListener(\"pointermove\",onPointerMove);if(animationFrame!==null)window.cancelAnimationFrame(animationFrame);eyeGroupRef.current?.removeAttribute(\"transform\");pokeRef.current=()=>{};};},[companionState,gazeRangeX,gazeRangeY,isStaticRenderer,reducedMotion,snapHysteresis,springDamping,springStrength,trackingRadius]);const onFaceClick=useCallback(()=>{if(isStaticRenderer||companionState!==\"active\")return;rootRef.current?.dispatchEvent(new CustomEvent(\"gbc-poke\"));},[companionState,isStaticRenderer]);const powered=companionState!==\"standby\";const stateLabel=companionState===\"standby\"?\"Game Boy companion is off. Press any button to switch it on.\":companionState===\"booting\"?\"Game Boy companion is starting up.\":\"Game Boy companion is \"+expression+\".\";const rootVariables={\"--gbc-screen-bg\":screenBackground,\"--gbc-screen-off\":screenOffBackground,\"--gbc-screen-fg\":screenForeground,\"--gbc-texture-opacity\":clamp(textureOpacity,0,100)/100,\"--gbc-unlit-opacity\":safeUnlit/100,\"--gbc-ghost\":safeGhost/100,\"--gbc-standby-opacity\":clamp(standbyOpacity,0,100)/100,\"--gbc-standby-size\":`${clamp(standbyTextSize,3,30)}cqw`,\"--gbc-standby-fit\":standbyFit,\"--gbc-standby-inset\":`${safeStandbyInset}%`,\"--gbc-logo-size\":`${safeLogoSize}%`,\"--gbc-logo-inset\":`${safeLogoInset}%`,\"--gbc-line-width\":`${safeLineWidth}%`,\"--gbc-t-line\":`${tLine}ms`,\"--gbc-t-open\":`${tOpen}ms`,\"--gbc-t-logo-in\":`${Math.max(1,tLogoIn)}ms`,\"--gbc-t-logo-out\":`${Math.max(1,tLogoOut)}ms`,\"--gbc-t-face\":`${tFace}ms`,\"--gbc-d-open\":`${dOpen}ms`,\"--gbc-d-logo-in\":`${dLogoIn}ms`,\"--gbc-d-logo-out\":`${dLogoOut}ms`,\"--gbc-d-face\":`${dFace}ms`};const stageStyle={width:`min(100cqw, ${safeAspect*100}cqh)`,height:`min(100cqh, ${100/safeAspect}cqw)`,aspectRatio:String(safeAspect),overflow:\"visible\"};const screenStyle={position:\"absolute\",zIndex:1,left:`${clamp(screenX,-50,150)}%`,top:`${clamp(screenY,-50,150)}%`,width:`${clamp(screenWidth,1,150)}%`,height:`${clamp(screenHeight,1,150)}%`,borderRadius:`${Math.max(0,screenBorderRadius)}%`,clipPath,transform:`rotate(${screenRotation}deg) skew(${screenSkewX}deg, ${screenSkewY}deg)`,transformOrigin:\"50% 50%\",filter:`brightness(${Math.max(0,screenBrightness)}%) contrast(${Math.max(0,screenContrast)}%)`,outline:showScreenDebug?\"2px dashed rgba(255, 60, 160, 0.95)\":\"none\"};return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,className:\"gbc-root\",role:\"group\",\"aria-label\":shellAltText,style:{...style,...rootVariables,position:\"relative\",display:\"grid\",placeItems:\"center\",width:\"100%\",height:\"100%\",minWidth:0,minHeight:0,// Was hidden, which cut the cast shadow off at the object's own\n// box. The FRAME in Framer must be visible and oversized too.\noverflow:\"visible\",isolation:\"isolate\",background:\"transparent\",WebkitTapHighlightColor:\"transparent\"},children:[/*#__PURE__*/_jsx(\"style\",{children:COMPONENT_CSS}),/*#__PURE__*/_jsxs(\"div\",{className:\"gbc-shell-stage\",style:stageStyle,children:[shell&&shadowOn?/*#__PURE__*/_jsx(\"img\",{className:\"gbc-shell-shadow\",src:shell.src,srcSet:shell.srcSet,alt:\"\",\"aria-hidden\":\"true\",sizes:\"100vw\",draggable:false,style:{filter:shadowFilter}}):null,shell?/*#__PURE__*/_jsx(\"img\",{className:\"gbc-shell-image\",src:shell.src,srcSet:shell.srcSet,alt:shell.alt||shellAltText,sizes:\"100vw\",draggable:false}):null,pressed&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(PressedRegion,{image:pressed,rect:LED_RECT,on:powered,className:\"gbc-led\"}),BUTTONS.map(button=>/*#__PURE__*/_jsx(PressedRegion,{image:pressed,rect:button.rect,on:heldButton===button.id},button.id))]}),/*#__PURE__*/_jsxs(\"div\",{ref:screenRef,className:\"gbc-screen\",\"data-state\":companionState,style:screenStyle,children:[/*#__PURE__*/_jsx(\"div\",{className:\"gbc-lit\",\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"gbc-face-layer\",\"aria-label\":\"Poke the companion\",disabled:companionState!==\"active\",onClick:onFaceClick,children:/*#__PURE__*/_jsx(DotMatrixCompanion,{eyeGroupRef:eyeGroupRef,expression:expression,blinkPhase:blinkPhase,dotSize:dotSize,faceScale:safeFaceScale,showUnlitDots:safeUnlit>0})}),(standby||standbyText)&&/*#__PURE__*/_jsxs(\"div\",{className:\"gbc-standby\",\"aria-hidden\":\"true\",children:[standby&&/*#__PURE__*/_jsx(\"img\",{src:standby.src,srcSet:standby.srcSet,alt:\"\",sizes:\"40vw\",draggable:false}),standbyText&&/*#__PURE__*/_jsx(\"span\",{children:standbyText})]}),logo&&/*#__PURE__*/_jsx(\"div\",{className:\"gbc-logo-wrap\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"div\",{className:\"gbc-logo-inner\",children:/*#__PURE__*/_jsx(\"img\",{className:\"gbc-logo-image\",src:logo.src,srcSet:logo.srcSet,alt:\"\",sizes:\"40vw\",draggable:false})})}),/*#__PURE__*/_jsx(\"div\",{className:\"gbc-line-wrap\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"div\",{className:\"gbc-line\"})}),texture&&/*#__PURE__*/_jsx(\"img\",{className:\"gbc-texture-image\",src:texture.src,srcSet:texture.srcSet,alt:\"\",sizes:\"40vw\",\"aria-hidden\":\"true\"})]}),BUTTONS.map(button=>/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"gbc-hit\",\"data-debug\":showButtonDebug?\"true\":\"false\",\"data-fallback\":pressed?\"false\":\"true\",\"data-held\":heldButton===button.id?\"true\":\"false\",\"aria-label\":powered?button.label+\" button\":\"Switch on with \"+button.label,style:{left:`${button.rect.left}%`,top:`${button.rect.top}%`,width:`${button.rect.width}%`,height:`${button.rect.height}%`},onPointerDown:()=>onButtonDown(button.id),onPointerUp:releaseButton,onPointerLeave:releaseButton,onPointerCancel:releaseButton},button.id))]}),/*#__PURE__*/_jsx(\"span\",{className:\"gbc-sr-only\",\"aria-live\":\"polite\",\"aria-atomic\":\"true\",children:stateLabel}),showDebugControls&&/*#__PURE__*/_jsxs(\"div\",{className:\"gbc-debug-panel\",\"aria-label\":\"Companion debug\",children:[/*#__PURE__*/_jsxs(\"span\",{children:[companionState.toUpperCase(),\" \\xb7 \",bootTotal,\"ms\"]}),/*#__PURE__*/_jsxs(\"span\",{children:[\"shadow \",shadowOn?\"on\":\"OFF\",\" \\xb7\",\" \",shadowLight===\"auto\"?readDeskLight()===null?\"store MISSING\":isNight?\"NIGHT\":\"day\":shadowLight,\" \",\"\\xb7 cast \",kD.toFixed(0),\"/\",(castBlur*nL).toFixed(0),castBlur*nL>kD?\" BLUR>DIST\":\"\"]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"gbc-debug-button\",onClick:()=>{powerOff();setTimeout(beginBoot,320);},children:\"Replay boot\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"gbc-debug-button\",onClick:()=>express(\"happy\",1200),children:\"Happy\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"gbc-debug-button\",onClick:()=>express(\"curious\",1200),children:\"Curious\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"gbc-debug-button\",onClick:powerOff,children:\"Off\"})]})]});}const percentControl=defaultValue=>({type:ControlType.Number,defaultValue,min:-20,max:120,step:.1,unit:\"%\",displayStepper:true});const msControl=(title,defaultValue,description)=>({type:ControlType.Number,title,defaultValue,min:0,max:4e3,step:25,unit:\"ms\",description});const cornerControl=(title,defaultValue)=>({type:ControlType.Object,title,buttonTitle:title,icon:\"object\",defaultValue,controls:{x:{type:ControlType.Number,title:\"X\",defaultValue:defaultValue.x,min:0,max:100,step:.1,unit:\"%\"},y:{type:ControlType.Number,title:\"Y\",defaultValue:defaultValue.y,min:0,max:100,step:.1,unit:\"%\"}},hidden:({useQuadrilateralClip})=>!useQuadrilateralClip});addPropertyControls(GameBoyCompanion,{shellImage:{type:ControlType.ResponsiveImage,title:\"Shell\",description:\"Base render — buttons up, LED off.\"},pressedImage:{type:ControlType.ResponsiveImage,title:\"Pressed\",description:\"REQUIRED for the LED and button presses. All buttons down, LED on.\"},shadowOn:{type:ControlType.Boolean,title:\"Shadow\",defaultValue:DEFAULTS.shadowOn,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Contact + cast, painted from a copy of the Shell.\"},shadowLight:{type:ControlType.Enum,title:\"Shadow light\",options:[\"auto\",\"day\",\"night\"],optionTitles:[\"auto (__deskLight)\",\"day\",\"night\"],defaultValue:DEFAULTS.shadowLight,hidden:p=>!p.shadowOn},shadowAngle:{type:ControlType.Number,title:\"Angle\",defaultValue:DEFAULTS.shadowAngle,min:0,max:360,step:1,unit:\"\\xb0\",description:\"45 = down-right. Same on every object on the desk.\",hidden:p=>!p.shadowOn},contactDist:{type:ControlType.Number,title:\"Contact dist\",defaultValue:DEFAULTS.contactDist,min:0,max:40,step:.5,unit:\"px\",hidden:p=>!p.shadowOn},contactBlur:{type:ControlType.Number,title:\"Contact blur\",defaultValue:DEFAULTS.contactBlur,min:0,max:80,step:.5,unit:\"px\",hidden:p=>!p.shadowOn},contactOpacity:{type:ControlType.Number,title:\"Contact\",defaultValue:DEFAULTS.contactOpacity,min:0,max:1,step:.01,description:\"The weight. Raise it if the object looks like it floats.\",hidden:p=>!p.shadowOn},castDist:{type:ControlType.Number,title:\"Cast dist\",defaultValue:DEFAULTS.castDist,min:0,max:300,step:1,unit:\"px\",description:\"Keep ABOVE Cast blur or the shadow leaks out the back.\",hidden:p=>!p.shadowOn},castBlur:{type:ControlType.Number,title:\"Cast blur\",defaultValue:DEFAULTS.castBlur,min:0,max:300,step:1,unit:\"px\",hidden:p=>!p.shadowOn},castOpacity:{type:ControlType.Number,title:\"Cast\",defaultValue:DEFAULTS.castOpacity,min:0,max:1,step:.01,hidden:p=>!p.shadowOn},nightLength:{type:ControlType.Number,title:\"Night length\",defaultValue:DEFAULTS.nightLength,min:.5,max:4,step:.05,hidden:p=>!p.shadowOn},nightFade:{type:ControlType.Number,title:\"Night fade\",defaultValue:DEFAULTS.nightFade,min:0,max:2,step:.05,hidden:p=>!p.shadowOn},logoImage:{type:ControlType.ResponsiveImage,title:\"Logo\",description:\"Boot screen only. If empty, that whole beat is skipped.\"},logoSize:{type:ControlType.Number,title:\"Logo Size\",defaultValue:DEFAULTS.logoSize,min:10,max:100,step:1,unit:\"%\",description:\"100% now genuinely fills the panel width.\"},logoInset:{type:ControlType.Number,title:\"Logo Inset\",defaultValue:DEFAULTS.logoInset,min:0,max:40,step:1,unit:\"%\",description:\"Margin around the logo. 0 lets it reach the edges.\"},standbyImage:{type:ControlType.ResponsiveImage,title:\"Standby Art\",description:\"Shown on the dead panel before boot.\"},standbyFit:{type:ControlType.Enum,title:\"Standby Fit\",options:[\"cover\",\"contain\"],optionTitles:[\"Cover\",\"Contain\"],defaultValue:DEFAULTS.standbyFit,displaySegmentedControl:true,description:\"Cover fills the panel and crops. Contain letterboxes.\"},standbyInset:{type:ControlType.Number,title:\"Standby Inset\",defaultValue:DEFAULTS.standbyInset,min:0,max:40,step:1,unit:\"%\"},standbyText:{type:ControlType.String,title:\"Standby Text\",defaultValue:DEFAULTS.standbyText,placeholder:\"e.g. PRESS START\",description:\"Floats over the art near the bottom edge.\"},standbyTextSize:{type:ControlType.Number,title:\"Text Size\",defaultValue:DEFAULTS.standbyTextSize,min:3,max:30,step:.5,description:\"Percentage of the screen width.\"},standbyOpacity:{type:ControlType.Number,title:\"Standby Fade\",defaultValue:DEFAULTS.standbyOpacity,min:0,max:100,step:1,unit:\"%\"},screenTextureImage:{type:ControlType.ResponsiveImage,title:\"Texture\"},shellAltText:{type:ControlType.String,title:\"Alt Text\",defaultValue:DEFAULTS.shellAltText},shellAspectRatio:{type:ControlType.Number,title:\"Shell Ratio\",defaultValue:DEFAULTS.shellAspectRatio,min:.2,max:4,step:.001,displayStepper:true,description:\"PNG width divided by PNG height.\"},replayBootAnimation:{type:ControlType.Boolean,title:\"Replay Boot\",defaultValue:DEFAULTS.replayBootAnimation,enabledTitle:\"Replay\",disabledTitle:\"Ready\",description:\"Toggle to power off and boot again.\"},lineWidth:{type:ControlType.Number,title:\"Line Width\",defaultValue:DEFAULTS.lineWidth,min:10,max:100,step:1,unit:\"%\",description:\"How far the boot line draws. 100% reaches both edges.\"},lineDuration:msControl(\"1 \\xb7 Line\",DEFAULTS.lineDuration,\"The line drawing out across the dead panel.\"),lineHold:msControl(\"2 \\xb7 Line Hold\",DEFAULTS.lineHold),openDuration:msControl(\"3 \\xb7 Open\",DEFAULTS.openDuration,\"Panel opens vertically, line fades.\"),logoDelay:msControl(\"4 \\xb7 Pause\",DEFAULTS.logoDelay),logoFadeIn:msControl(\"5 \\xb7 Logo In\",DEFAULTS.logoFadeIn),logoHold:msControl(\"6 \\xb7 Logo Hold\",DEFAULTS.logoHold),logoFadeOut:msControl(\"7 \\xb7 Logo Out\",DEFAULTS.logoFadeOut),faceFadeIn:msControl(\"8 \\xb7 Face In\",DEFAULTS.faceFadeIn,\"Turn Debug on to see the total boot length.\"),showScreenDebug:{type:ControlType.Boolean,title:\"Screen Box\",defaultValue:DEFAULTS.showScreenDebug,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Outlines the screen so you can align it to the bezel.\"},showButtonDebug:{type:ControlType.Boolean,title:\"Button Boxes\",defaultValue:DEFAULTS.showButtonDebug,enabledTitle:\"Show\",disabledTitle:\"Hide\"},screenX:{...percentControl(DEFAULTS.screenX),title:\"Screen X\"},screenY:{...percentControl(DEFAULTS.screenY),title:\"Screen Y\"},screenWidth:{...percentControl(DEFAULTS.screenWidth),title:\"Screen W\",min:1},screenHeight:{...percentControl(DEFAULTS.screenHeight),title:\"Screen H\",min:1},screenRotation:{type:ControlType.Number,title:\"Rotation\",defaultValue:DEFAULTS.screenRotation,min:-30,max:30,step:.1,unit:\"\\xb0\",displayStepper:true},screenSkewX:{type:ControlType.Number,title:\"Skew X\",defaultValue:DEFAULTS.screenSkewX,min:-20,max:20,step:.1,unit:\"\\xb0\",displayStepper:true},screenSkewY:{type:ControlType.Number,title:\"Skew Y\",defaultValue:DEFAULTS.screenSkewY,min:-20,max:20,step:.1,unit:\"\\xb0\",displayStepper:true},screenBorderRadius:{type:ControlType.Number,title:\"Radius\",defaultValue:DEFAULTS.screenBorderRadius,min:0,max:30,step:.1,unit:\"%\"},useQuadrilateralClip:{type:ControlType.Boolean,title:\"Quad Clip\",defaultValue:DEFAULTS.useQuadrilateralClip,enabledTitle:\"On\",disabledTitle:\"Off\"},clipTopLeft:cornerControl(\"Top Left\",DEFAULTS.clipTopLeft),clipTopRight:cornerControl(\"Top Right\",DEFAULTS.clipTopRight),clipBottomRight:cornerControl(\"Bottom Right\",DEFAULTS.clipBottomRight),clipBottomLeft:cornerControl(\"Bottom Left\",DEFAULTS.clipBottomLeft),screenBackground:{type:ControlType.Color,title:\"Screen On\",defaultValue:DEFAULTS.screenBackground},screenOffBackground:{type:ControlType.Color,title:\"Screen Off\",defaultValue:DEFAULTS.screenOffBackground,description:\"Dead LCD colour before boot.\"},screenForeground:{type:ControlType.Color,title:\"Screen Ink\",defaultValue:DEFAULTS.screenForeground},screenBrightness:{type:ControlType.Number,title:\"Brightness\",defaultValue:DEFAULTS.screenBrightness,min:40,max:160,step:1,unit:\"%\"},screenContrast:{type:ControlType.Number,title:\"Contrast\",defaultValue:DEFAULTS.screenContrast,min:40,max:160,step:1,unit:\"%\"},ghostOpacity:{type:ControlType.Number,title:\"Ghost Face\",defaultValue:DEFAULTS.ghostOpacity,min:0,max:60,step:1,unit:\"%\",description:\"Residual face on the dead panel. 0 is off.\"},unlitDotOpacity:{type:ControlType.Number,title:\"Unlit Dots\",defaultValue:DEFAULTS.unlitDotOpacity,min:0,max:40,step:1,unit:\"%\",description:\"The panel's own pixel grid. 0 hides it entirely.\"},textureOpacity:{type:ControlType.Number,title:\"Texture\",defaultValue:DEFAULTS.textureOpacity,min:0,max:60,step:1,unit:\"%\",description:\"Only applies if a Texture image is assigned.\"},faceScale:{type:ControlType.Number,title:\"Face Size\",defaultValue:DEFAULTS.faceScale,min:20,max:100,step:1,unit:\"%\"},dotGap:{type:ControlType.Number,title:\"Dot Gap\",defaultValue:DEFAULTS.dotGap,min:0,max:40,step:1,unit:\"%\",description:\"Below ~6% the gap is sub-pixel at real size and fades.\"},trackingRadius:{type:ControlType.Number,title:\"Track Radius\",defaultValue:DEFAULTS.trackingRadius,min:100,max:2e3,step:10,unit:\"px\",description:\"Cursor distance at which gaze reaches full range.\"},gazeRangeX:{type:ControlType.Number,title:\"Gaze X\",defaultValue:DEFAULTS.gazeRangeX,min:0,max:10,step:.5,displayStepper:true},gazeRangeY:{type:ControlType.Number,title:\"Gaze Y\",defaultValue:DEFAULTS.gazeRangeY,min:0,max:10,step:.5,displayStepper:true},springStrength:{type:ControlType.Number,title:\"Spring\",defaultValue:DEFAULTS.springStrength,min:.02,max:.6,step:.01},springDamping:{type:ControlType.Number,title:\"Damping\",defaultValue:DEFAULTS.springDamping,min:.5,max:.99,step:.01,description:\"Lower overshoots more. 0.86 is a soft settle.\"},snapHysteresis:{type:ControlType.Number,title:\"Snap Deadzone\",defaultValue:DEFAULTS.snapHysteresis,min:0,max:.9,step:.02,description:\"Stops the spring's ring-out flickering across cells.\"},blinkSpeed:{type:ControlType.Number,title:\"Blink Speed\",defaultValue:DEFAULTS.blinkSpeed,min:.25,max:4,step:.05},glanceAfter:{type:ControlType.Number,title:\"Glance After\",defaultValue:DEFAULTS.glanceAfter,min:1,max:30,step:.5,unit:\"s\",description:\"Stillness before it looks away of its own accord.\"},sleepyAfter:{type:ControlType.Number,title:\"Sleepy After\",defaultValue:DEFAULTS.sleepyAfter,min:3,max:120,step:1,unit:\"s\"},enableEscalation:{type:ControlType.Boolean,title:\"Escalate\",defaultValue:DEFAULTS.enableEscalation,enabledTitle:\"On\",disabledTitle:\"Off\",description:\"Repeated pokes go surprised, annoyed, then looks away.\"},showDebugControls:{type:ControlType.Boolean,title:\"Debug\",defaultValue:DEFAULTS.showDebugControls,enabledTitle:\"Show\",disabledTitle:\"Hide\"}});GameBoyCompanion.displayName=\"Game Boy Companion\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"GameBoyCompanion\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"800\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"495\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./GameBoyCompanion.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useRef,useState,useSyncExternalStore}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * Lamp.tsx — the day/night switch, and the only warm light on the desk. v23.\n *\n * ── v23: MOSTLY CUT, SLIGHTLY WRAPPED ──\n *\n * v22 cut the lamp out of its own pool cleanly and the result was worse: a\n * pale slab with a hard edge along the shade. Light that stops dead at an\n * object reads as a SHAPE. Real light wraps — a shade sitting in its own pool\n * catches bounce off the desk, and that gradient around the dome is half of\n * why the earlier version looked like light at all.\n *\n * So the pool is drawn TWICE:\n *\n *   CUT    the full-strength pool, with the lamp's alpha subtracted. This is\n *          the light on the desk and it must not paint over the object.\n *   WRAP   the same ellipse, uncut, at `Wrap` of the strength. This is the\n *          bounce on the shade and the arm. At 0 it is the hard v22 cut.\n *\n * `Pool throw` is back to 0 by default — symmetric, as it was in the version\n * that looked right. It stays available because a shade does throw further\n * one way than the other; it just should not be the default.\n *\n * ── v22: THE MASK NEEDS A BLEED ──\n *\n * A mask is clipped to its element's own border box, so light falling outside\n * the artwork's frame was erased along a hard edge — a visible rectangle. The\n * wrapper is grown by POOL_BLEED on every side and the lamp mask layer is\n * scaled by the same factor so the silhouette still lands on the artwork. An\n * inner frame restores the artwork's coordinate space, so `Pool X/Y/W/H` keep\n * meaning what they meant.\n *\n *     wrapper       (1 + 2b) x the artwork box, inset -b\n *     artwork box   b/(1+2b) from each edge, 1/(1+2b) wide  — the pool's frame\n *     lamp mask     size 1/(1+2b), centred                  — lands on the art\n *\n * ── v21: THE LAMP OCCLUDES ITS OWN LIGHT ──\n *\n * The pool sits at POOL_Z 60 because `Ambience` is a full-canvas multiply at\n * z 50 and anything under it gets darkened (§6.10). Above the room also means\n * above the artwork, which is z 1 — so the light landed on the object\n * throwing it. Fixed by subtracting the lamp's own alpha, not by moving it.\n *\n * WHY THE MASK IS ON A WRAPPER, not on the ellipse:\n *\n *   - the ellipse is ROTATED by `Pool angle`, and a mask rotates with its\n *     element, so the lamp silhouette would arrive tilted.\n *   - a mask CREATES A STACKING CONTEXT, so `mix-blend-mode` left on the\n *     child inside it would blend against a transparent backdrop and become\n *     a silent no-op (§20.38). The blend lives on the wrapper.\n *\n * ── v20: THE BLOOM BLENDS ──\n *\n * The bloom was `mix-blend-mode: normal` while the pool was `screen`. A warm\n * translucent gradient painted normally over a dark room does not read as\n * light — it reads as FOG (§20.31). Both layers are `screen` now.\n *\n * The bloom stays at z 0, BEHIND the artwork, so the opaque shade masks it —\n * a bloom painted over the shade reads as the shade being translucent. It\n * therefore loses a little to Ambience's multiply, the accepted trade (§6.10).\n *\n * ── NO SHADOW IN THIS FILE ──\n *\n * A drop-shadow was added and removed. drop-shadow reads the PNG's alpha and\n * throws ONE shadow for the whole silhouette, as if every part were flat on\n * the desk at one height. The base touches the desk; the arm and shade are\n * hundreds of millimetres above it. The arm gets a tight rim along its whole\n * length and no distance/blur/opacity removes it. The lamp's shadow lives in\n * the render. Do not put a filter back on the img.\n */const STORE_VERSION=1;// Measured against the artwork bounds in the Workshop screenshots.\nconst BUTTON_X=55.5;const BUTTON_Y=73.7;const BUTTON_W=2.2;const BUTTON_H=2.1;const HIT_SCALE=3;// High enough to clear Ambience, low enough to stay under anything that\n// genuinely belongs on top later.\nconst POOL_Z=60;// How far past the artwork the light is allowed to reach, as a fraction of\n// the artwork box on EVERY side. A mask is clipped to its own element, so\n// this is what stops the pool being cut into a rectangle.\nconst POOL_BLEED=.5;const SPAN=1+POOL_BLEED*2;const INNER_OFFSET=POOL_BLEED/SPAN*100;const INNER_SIZE=1/SPAN*100;function readStore(){if(typeof window===\"undefined\")return null;const value=window.__deskLight;if(!value||value.version!==STORE_VERSION)return null;return value;}const NOOP=()=>()=>{};const FALSE=()=>false;function useIsNight(){const value=readStore();return useSyncExternalStore(value?value.subscribe:NOOP,value?value.getNight:FALSE,FALSE);}/**\n * @framerIntrinsicWidth 655\n * @framerIntrinsicHeight 612\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function Lamp(props){const{src,force=\"auto\",glow=1,headX=30,headY=62,headW=22,headH=13,headLevel=1,poolX=30,poolY=74,poolW=62,poolH=34,poolAngle=-9,poolBlur=16,poolThrow=0,cutLamp=true,wrap=.35,debug=false,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const liveNight=useIsNight();const[localNight,setLocalNight]=useState(false);const handlers=useRef({});const activeStore=readStore();const isNight=force===\"night\"?true:force===\"day\"?false:activeStore?liveNight:localNight;handlers.current.toggle=()=>{const value=readStore();if(value)value.toggle();else setLocalNight(current=>!current);};const wireControl=element=>{if(!element||isCanvas||element.__lampWired)return;element.__lampWired=true;element.addEventListener(\"pointerdown\",event=>{event.preventDefault();event.stopPropagation();handlers.current.toggle();},{passive:false});element.addEventListener(\"mousedown\",event=>event.stopPropagation(),{passive:false});element.addEventListener(\"touchstart\",event=>event.stopPropagation(),{passive:false});element.addEventListener(\"dragstart\",event=>event.preventDefault());element.addEventListener(\"keydown\",event=>{if(event.key!==\"Enter\"&&event.key!==\" \")return;event.preventDefault();event.stopPropagation();handlers.current.toggle();});};if(!src){return /*#__PURE__*/_jsx(\"div\",{style:{...style,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"rgba(0,0,0,0.04)\",border:\"1px dashed rgba(0,0,0,0.2)\",borderRadius:4,color:\"rgba(0,0,0,0.45)\",font:\"500 12px/1.3 sans-serif\",padding:8,textAlign:\"center\"},children:\"Lamp — assign the Image property\"});}// Debug forces the light on so both layers can be placed in daylight,\n// where they are actually visible against the artwork.\nconst on=isNight||debug?1:0;const rot=\"rotate(\"+poolAngle+\"deg)\";// Falloff ALONG the pool, in the element's own rotated space. The radial\n// handles the falloff ACROSS. 0 = symmetric, which is the default.\nconst t=Math.max(0,Math.min(100,poolThrow))/100;const throwMask=t<=0?undefined:\"linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,\"+(1-.25*t).toFixed(2)+\") \"+(18+10*t).toFixed(0)+\"%, rgba(0,0,0,\"+(1-.62*t).toFixed(2)+\") \"+(52+8*t).toFixed(0)+\"%, rgba(0,0,0,\"+(1-.9*t).toFixed(2)+\") \"+(78+6*t).toFixed(0)+\"%, rgba(0,0,0,0) 100%)\";// Everything, MINUS the lamp's own silhouette. The solid covers the whole\n// bled wrapper; the artwork layer is scaled to the artwork's share of it\n// and centred, so the silhouette lands exactly on the lamp.\nconst artLayer=INNER_SIZE.toFixed(4)+\"% \"+INNER_SIZE.toFixed(4)+\"%\";const occluder=cutLamp?{WebkitMaskImage:\"linear-gradient(#000,#000), url(\"+src+\")\",maskImage:\"linear-gradient(#000,#000), url(\"+src+\")\",WebkitMaskSize:\"100% 100%, \"+artLayer,maskSize:\"100% 100%, \"+artLayer,WebkitMaskRepeat:\"no-repeat, no-repeat\",maskRepeat:\"no-repeat, no-repeat\",WebkitMaskPosition:\"0 0, 50% 50%\",maskPosition:\"0 0, 50% 50%\",// Safari takes `xor` where the spec says `subtract`; with two\n// layers and an opaque source the two agree.\nWebkitMaskComposite:\"xor\",maskComposite:\"subtract\"}:{};const wrapAmount=cutLamp?Math.max(0,Math.min(1,wrap)):0;// One ellipse, drawn at whatever strength the caller wants. The CUT copy\n// and the WRAP copy are identical except for their mask and their level,\n// so the two can never drift apart.\nconst ellipse=(level,tag)=>/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:INNER_OFFSET+\"%\",top:INNER_OFFSET+\"%\",width:INNER_SIZE+\"%\",height:INNER_SIZE+\"%\",outline:debug&&tag===\"cut\"?\"1px dashed #00E5FF\":\"none\"},children:/*#__PURE__*/_jsx(\"div\",{className:\"desk-lamp__light\",style:{position:\"absolute\",left:poolX+\"%\",top:poolY+\"%\",pointerEvents:\"none\",borderRadius:\"50%\",opacity:on*glow*level,width:poolW+\"%\",height:poolH+\"%\",transform:\"translate(-50%, -50%) \"+rot,background:\"radial-gradient(ellipse at 50% 50%, rgba(255,229,186,.58) 0%, rgba(255,218,164,.30) 18%, rgba(252,205,137,.12) 36%, rgba(248,197,126,.035) 52%, rgba(248,197,126,0) 72%)\",filter:\"blur(\"+poolBlur+\"px)\",WebkitMaskImage:throwMask,maskImage:throwMask,outline:debug&&tag===\"cut\"?\"1px solid #00E5FF\":\"none\"}})});const poolFrame={position:\"absolute\",left:-POOL_BLEED*100+\"%\",top:-POOL_BLEED*100+\"%\",width:SPAN*100+\"%\",height:SPAN*100+\"%\",zIndex:POOL_Z,pointerEvents:\"none\",mixBlendMode:\"screen\"};return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",overflow:\"visible\",lineHeight:0,background:\"transparent\"},children:[/*#__PURE__*/_jsx(\"style\",{children:`\n                .desk-lamp-switch:focus-visible { outline: 2px solid #d0ff00 !important; outline-offset: 4px; }\n                .desk-lamp__light {\n                    transition: opacity 380ms cubic-bezier(.16, 1, .3, 1);\n                }\n                @media (prefers-reduced-motion: reduce) {\n                    .desk-lamp__light { transition: none; }\n                }\n            `}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\"},children:[/*#__PURE__*/_jsx(\"div\",{className:\"desk-lamp__light\",\"aria-hidden\":true,style:{position:\"absolute\",left:headX+\"%\",top:headY+\"%\",zIndex:0,pointerEvents:\"none\",borderRadius:\"50%\",mixBlendMode:\"screen\",opacity:on*glow*headLevel,width:headW+\"%\",height:headH+\"%\",transform:\"translate(-50%, -50%) \"+rot,background:\"radial-gradient(ellipse at 50% 30%, rgba(255,236,201,.72) 0%, rgba(255,222,170,.36) 40%, rgba(255,214,152,.12) 66%, rgba(255,214,152,0) 84%)\",filter:\"blur(\"+poolBlur*.45+\"px)\",outline:debug?\"1px solid #FF00AA\":\"none\"}}),/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"Adjustable desk lamp\",draggable:false,style:{display:\"block\",position:\"relative\",zIndex:1,width:\"100%\",height:\"auto\",userSelect:\"none\",pointerEvents:\"none\"}}),wrapAmount>0?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:poolFrame,children:ellipse(wrapAmount,\"wrap\")}):null,/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{...poolFrame,...occluder},children:ellipse(1,\"cut\")}),/*#__PURE__*/_jsx(\"div\",{ref:wireControl,className:\"desk-lamp-switch\",role:\"button\",tabIndex:0,\"aria-label\":\"Toggle day and night\",\"aria-pressed\":isNight,title:\"Toggle day and night\",style:{position:\"absolute\",zIndex:POOL_Z+2,left:BUTTON_X+\"%\",top:BUTTON_Y+\"%\",width:BUTTON_W*HIT_SCALE+\"%\",minWidth:44,minHeight:44,height:BUTTON_H*HIT_SCALE+\"%\",transform:\"translate(-50%,-50%)\",borderRadius:\"50%\",background:\"transparent\",cursor:\"pointer\",touchAction:\"none\",outline:debug?\"1px solid #D0FF00\":\"none\"}})]})]});}Lamp.displayName=\"Lamp\";addPropertyControls(Lamp,{src:{type:ControlType.Image,title:\"Image\"},force:{type:ControlType.Enum,title:\"Preview\",options:[\"auto\",\"day\",\"night\"],optionTitles:[\"Live\",\"Day\",\"Night\"],defaultValue:\"auto\",displaySegmentedControl:true},debug:{type:ControlType.Boolean,title:\"Place light\",description:\"forces the light on and outlines both layers so they can be positioned\",defaultValue:false},cutLamp:{type:ControlType.Boolean,title:\"Cut lamp\",description:\"the lamp occludes its own pool. Off = the light paints over the shade and arm\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},wrap:{type:ControlType.Number,title:\"Wrap\",description:\"how much light survives ON the lamp. 0 = a hard cut at the silhouette\",defaultValue:.35,min:0,max:1,step:.01,hidden:p=>!p.cutLamp},glow:{type:ControlType.Number,title:\"Glow\",defaultValue:1,min:0,max:2,step:.05},headX:{type:ControlType.Number,title:\"Head X\",description:\"the bloom at the shade opening\",defaultValue:30,min:-20,max:120,step:.5,unit:\"%\"},headY:{type:ControlType.Number,title:\"Head Y\",defaultValue:62,min:-20,max:140,step:.5,unit:\"%\"},headW:{type:ControlType.Number,title:\"Head W\",defaultValue:22,min:2,max:120,step:.5,unit:\"%\"},headH:{type:ControlType.Number,title:\"Head H\",defaultValue:13,min:2,max:120,step:.5,unit:\"%\"},headLevel:{type:ControlType.Number,title:\"Head level\",description:\"the bloom alone. Drop it if the shade halo is too wide\",defaultValue:1,min:0,max:2,step:.05},poolX:{type:ControlType.Number,title:\"Pool X\",description:\"the light on the desk — put it under the shade\",defaultValue:30,min:-40,max:140,step:.5,unit:\"%\"},poolY:{type:ControlType.Number,title:\"Pool Y\",defaultValue:74,min:-40,max:180,step:.5,unit:\"%\"},poolW:{type:ControlType.Number,title:\"Pool W\",defaultValue:62,min:5,max:250,step:1,unit:\"%\"},poolH:{type:ControlType.Number,title:\"Pool H\",defaultValue:34,min:5,max:250,step:1,unit:\"%\"},poolAngle:{type:ControlType.Number,title:\"Pool angle\",defaultValue:-9,min:-90,max:90,step:1,unit:\"\\xb0\"},poolBlur:{type:ControlType.Number,title:\"Pool blur\",defaultValue:16,min:0,max:120,step:1,unit:\"px\"},poolThrow:{type:ControlType.Number,title:\"Pool throw\",description:\"falloff along the pool. 0 = symmetric, which is how it looked right\",defaultValue:0,min:0,max:100,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Lamp\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"612\",\"framerIntrinsicWidth\":\"655\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Lamp.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useState,useRef,useCallback,useEffect}from\"react\";import{createPortal}from\"react-dom\";import{motion,AnimatePresence}from\"framer-motion\";import{addPropertyControls}from\"framer\";/**\n * ManifestoWindow.tsx — v2.\n *\n * ── WHAT CHANGED, AND WHY IT WAS OPENING IN THE WRONG PLACE ──\n *\n * The backdrop is `position: fixed`. A fixed element inside a TRANSFORMED\n * ancestor is positioned against that ancestor, not the viewport (§20.22).\n * This instance lives inside DragCanvas, which native drag transforms every\n * frame — so \"centred\" meant centred on the 2880x2600 desk, not on the\n * screen. You clicked the floppy and had to pan to find the window.\n *\n * Fix: the overlay is portalled into a div appended to document.body, exactly\n * like CursorTip. It now centres on the viewport wherever this component\n * happens to sit in the layer tree, so it does NOT need to be dragged out of\n * DragCanvas by hand.\n *\n * The link preview is portalled for the same reason — it was fixed too.\n */const S1=\"I got fired.\\n\\nOver a decade as a graphic designer at IKEA, until COVID wiped my position overnight. No warning, no transition, just done.\";const S2=\"After that I poured everything into a personal project with some friends. We believed in it. It was different from anything out there, and it could’ve been life-changing. Then a team member scammed us, and the whole thing collapsed. I walked away. From social media, from design communities, from the internet. I lost my passion for design. I went to a dark place and wanted to stay away from creative fields altogether.\\n\\nI took a job that had nothing to do with design and sat with it for a while. Long enough to realize I had to reinvent myself, but the spark wasn’t there.\\n\\nI started learning web design. Landed a role at a startup. At first it felt like freedom. Then the titles piled up: graphic designer, web designer, video editor, social media manager, Discord mod, Telegram admin, Twitter guy. All of it.\";const S3_P1=\"Then AI happened. Instead of seeing a threat, I saw a door, a chance to experiment, to build, to have fun again. I started learning. Around the same time I stumbled onto \";const S3_P1_LINK=\"a content creator\";const S3_P1_AFTER=\" who, without knowing it, pointed me toward design Twitter, new podcasts, newsletters, and an entire community I’d cut myself off from. The spark for design came back and this website is the proof.\";const S3_P2_BOLD=\"It’s not a portfolio. It’s a playground.\";const S3_P2_REST=\" Built with headaches, sleepless nights, new tools I’d never touched, and more fun than I’ve had in years. I’m not sure how far this goes, but I’m here for it.\";const S3_P3=\"I hope you have some fun with it too.\";const TOMMY_URL=\"https://x.com/designertom\";const TOMMY_IMG=\"https://framerusercontent.com/images/crHQ6xn7jYnY7BjblnvEcuRb9c.jpg\";const DEFAULT_W=980;const DEFAULT_H=760;const MIN_W=400;const MIN_H=300;// One host div on the body, shared by every instance of this component.\n// Created lazily so nothing runs during SSR.\nfunction usePortalHost(){const[host,setHost]=useState(null);useEffect(()=>{if(typeof document===\"undefined\")return;let el=document.getElementById(\"__manifesto_portal\");if(!el){el=document.createElement(\"div\");el.id=\"__manifesto_portal\";el.style.position=\"absolute\";el.style.left=\"0\";el.style.top=\"0\";el.style.width=\"0\";el.style.height=\"0\";document.body.appendChild(el);}setHost(el);},[]);return host;}function LinkPreview({show,x,y}){return /*#__PURE__*/_jsx(AnimatePresence,{children:show&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0,y:6,scale:.97},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:3,scale:.98},transition:{duration:.15},style:{position:\"fixed\",left:x,top:y,zIndex:999999,pointerEvents:\"none\",transform:\"translateX(-50%) translateY(-100%)\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{width:140,backgroundColor:\"rgb(28, 28, 28)\",borderRadius:10,overflow:\"hidden\",boxShadow:\"0 12px 40px rgba(0,0,0,0.45), 0 0 0 1px rgba(255,255,255,0.06)\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:100,backgroundImage:`url(${TOMMY_IMG})`,backgroundSize:\"cover\",backgroundPosition:\"center 10%\",borderBottom:\"1px solid rgba(255,255,255,0.06)\"}}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"10px 14px 12px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"'Inter', -apple-system, sans-serif\",fontSize:13,fontWeight:600,color:\"#FFFFFF\",marginBottom:2},children:\"Tommy Geoco\"}),/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:\"'Inter', -apple-system, sans-serif\",fontSize:11,color:\"rgba(255,255,255,0.4)\"},children:\"@designertom on X\"})]})]})})});}/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 1\n * @framerIntrinsicHeight 1\n */export default function ManifestoWindow(props){const{style}=props;const host=usePortalHost();const[isOpen,setIsOpen]=useState(false);const[isMax,setIsMax]=useState(false);const[size,setSize]=useState({w:DEFAULT_W,h:DEFAULT_H});const[pos,setPos]=useState({x:0,y:0});const dragging=useRef(false);const dragStart=useRef({mx:0,my:0,px:0,py:0});const resizing=useRef(false);const resizeStart=useRef({x:0,y:0,w:0,h:0});const[preview,setPreview]=useState({show:false,x:0,y:0});const close=useCallback(()=>{setIsOpen(false);setIsMax(false);setSize({w:DEFAULT_W,h:DEFAULT_H});setPos({x:0,y:0});},[]);const toggleMax=useCallback(()=>{setIsMax(m=>{if(!m)setPos({x:0,y:0});return!m;});},[]);const onTitleDown=useCallback(e=>{if(isMax)return;if(e.target.closest(\"svg\"))return;e.preventDefault();dragging.current=true;dragStart.current={mx:e.clientX,my:e.clientY,px:pos.x,py:pos.y};e.currentTarget.setPointerCapture(e.pointerId);},[isMax,pos]);const onTitleMove=useCallback(e=>{if(!dragging.current)return;setPos({x:dragStart.current.px+(e.clientX-dragStart.current.mx),y:dragStart.current.py+(e.clientY-dragStart.current.my)});},[]);const onTitleUp=useCallback(e=>{if(!dragging.current)return;dragging.current=false;e.currentTarget.releasePointerCapture(e.pointerId);},[]);const onResizeDown=useCallback(e=>{e.preventDefault();e.stopPropagation();resizing.current=true;resizeStart.current={x:e.clientX,y:e.clientY,w:size.w,h:size.h};e.currentTarget.setPointerCapture(e.pointerId);},[size]);const onResizeMove=useCallback(e=>{if(!resizing.current)return;setSize({w:Math.max(MIN_W,resizeStart.current.w+(e.clientX-resizeStart.current.x)),h:Math.max(MIN_H,resizeStart.current.h+(e.clientY-resizeStart.current.y))});},[]);const onResizeUp=useCallback(e=>{resizing.current=false;e.currentTarget.releasePointerCapture(e.pointerId);},[]);const onLinkEnter=useCallback(e=>{const rect=e.currentTarget.getBoundingClientRect();setPreview({show:true,x:rect.left+rect.width/2,y:rect.top-8});},[]);const onLinkLeave=useCallback(()=>{setPreview({show:false,x:0,y:0});},[]);useEffect(()=>{const handler=e=>{if(e.key===\"Escape\"&&isOpen)close();};window.addEventListener(\"keydown\",handler);return()=>window.removeEventListener(\"keydown\",handler);},[isOpen,close]);useEffect(()=>{if(typeof window!==\"undefined\"){window.__manifesto={version:2,open:()=>setIsOpen(true),close:()=>setIsOpen(false)};}},[]);const textStyle={fontFamily:\"'Geist Mono', 'SF Mono', 'Courier New', monospace\",fontSize:14,lineHeight:\"170%\",color:\"#1a1a1a\",margin:0,whiteSpace:\"pre-wrap\",fontWeight:400};// Everything fixed-positioned goes through here. Portalled to the body so\n// it is measured against the VIEWPORT, not against DragCanvas's transform.\nconst overlay=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(LinkPreview,{show:preview.show,x:preview.x,y:preview.y}),/*#__PURE__*/_jsx(AnimatePresence,{children:isOpen&&/*#__PURE__*/_jsx(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.25},onClick:close,style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,zIndex:99999,backgroundColor:\"rgba(0, 0, 0, 0.16)\",backdropFilter:\"blur(0px)\",WebkitBackdropFilter:\"blur(0px)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",cursor:\"pointer\"},children:/*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},onClick:e=>e.stopPropagation(),style:{width:isMax?\"100vw\":size.w,height:isMax?\"100vh\":size.h,backgroundColor:\"rgb(246, 246, 246)\",borderRadius:isMax?0:10,boxShadow:\"0 25px 80px rgba(0,0,0,0.4)\",display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",cursor:\"default\",position:\"relative\",transform:isMax?\"none\":`translate(${pos.x}px, ${pos.y}px)`},children:[/*#__PURE__*/_jsxs(\"div\",{onPointerDown:onTitleDown,onPointerMove:onTitleMove,onPointerUp:onTitleUp,onPointerCancel:onTitleUp,style:{display:\"flex\",alignItems:\"center\",height:36,minHeight:36,backgroundColor:\"#FFFFFF\",borderRadius:isMax?\"0\":\"10px 10px 0 0\",padding:\"6px 8px\",position:\"relative\",userSelect:\"none\",cursor:isMax?\"default\":\"grab\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8,alignItems:\"center\"},children:[/*#__PURE__*/_jsxs(\"svg\",{onClick:close,style:{cursor:\"pointer\"},width:\"12\",height:\"12\",viewBox:\"0 0 12 12\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"6\",fill:\"#EC6A5E\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"5.75\",stroke:\"black\",strokeOpacity:\"0.12\",strokeWidth:\"0.5\",fill:\"none\"})]}),/*#__PURE__*/_jsxs(\"svg\",{onClick:close,style:{cursor:\"pointer\"},width:\"12\",height:\"12\",viewBox:\"0 0 12 12\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"6\",fill:\"#F5BF4F\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"5.75\",stroke:\"black\",strokeOpacity:\"0.12\",strokeWidth:\"0.5\",fill:\"none\"})]}),/*#__PURE__*/_jsxs(\"svg\",{onClick:toggleMax,style:{cursor:\"pointer\"},width:\"12\",height:\"12\",viewBox:\"0 0 12 12\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"6\",fill:\"#61C554\"}),/*#__PURE__*/_jsx(\"circle\",{cx:\"6\",cy:\"6\",r:\"5.75\",stroke:\"black\",strokeOpacity:\"0.12\",strokeWidth:\"0.5\",fill:\"none\"})]})]}),/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",left:\"50%\",transform:\"translateX(-50%)\",fontFamily:\"'Geist Mono', 'SF Mono', 'Courier New', monospace\",fontSize:13,fontWeight:400,color:\"#999\"},children:\"MANIFESTO.TXT\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:1,overflowY:\"auto\",padding:\"40px 35px\",display:\"flex\",flexDirection:\"column\",gap:20,WebkitOverflowScrolling:\"touch\"},children:[/*#__PURE__*/_jsx(\"div\",{children:S1.split(\"\\n\\n\").map((p,i)=>/*#__PURE__*/_jsx(\"p\",{style:{...textStyle,fontWeight:i===0?700:400,marginBottom:i<S1.split(\"\\n\\n\").length-1?20:0},children:p},i))}),/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:2,flexShrink:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:1,backgroundColor:\"#D8D8D8\"}}),/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:1,backgroundColor:\"#FFFFFF\"}})]}),/*#__PURE__*/_jsx(\"div\",{children:S2.split(\"\\n\\n\").map((p,i)=>/*#__PURE__*/_jsx(\"p\",{style:{...textStyle,marginBottom:i<S2.split(\"\\n\\n\").length-1?20:0},children:p},i))}),/*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",height:2,flexShrink:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:1,backgroundColor:\"#D8D8D8\"}}),/*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:1,backgroundColor:\"#FFFFFF\"}})]}),/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(\"p\",{style:{...textStyle,marginBottom:20},children:[S3_P1,/*#__PURE__*/_jsx(\"a\",{href:TOMMY_URL,target:\"_blank\",rel:\"noopener noreferrer\",onMouseEnter:onLinkEnter,onMouseLeave:onLinkLeave,style:{color:\"#1a1a1a\",fontWeight:700,textDecoration:\"underline\",textDecorationColor:\"rgba(0,0,0,0.3)\",textUnderlineOffset:\"3px\",cursor:\"pointer\",transition:\"text-decoration-color 0.2s\"},onMouseOver:e=>e.currentTarget.style.textDecorationColor=\"rgba(0,0,0,0.8)\",onMouseOut:e=>e.currentTarget.style.textDecorationColor=\"rgba(0,0,0,0.3)\",children:S3_P1_LINK}),S3_P1_AFTER]}),/*#__PURE__*/_jsxs(\"p\",{style:{...textStyle,marginBottom:20},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:700},children:S3_P2_BOLD}),S3_P2_REST]}),/*#__PURE__*/_jsx(\"p\",{style:{...textStyle,fontWeight:700},children:S3_P3})]})]}),!isMax&&/*#__PURE__*/_jsx(\"div\",{onPointerDown:onResizeDown,onPointerMove:onResizeMove,onPointerUp:onResizeUp,onPointerCancel:onResizeUp,style:{position:\"absolute\",bottom:0,right:0,width:20,height:20,cursor:\"nwse-resize\",zIndex:10},children:/*#__PURE__*/_jsxs(\"svg\",{width:\"10\",height:\"10\",viewBox:\"0 0 10 10\",style:{position:\"absolute\",bottom:4,right:4,opacity:.25},children:[/*#__PURE__*/_jsx(\"line\",{x1:\"9\",y1:\"1\",x2:\"1\",y2:\"9\",stroke:\"#999\",strokeWidth:\"1\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"9\",y1:\"4\",x2:\"4\",y2:\"9\",stroke:\"#999\",strokeWidth:\"1\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"9\",y1:\"7\",x2:\"7\",y2:\"9\",stroke:\"#999\",strokeWidth:\"1\"})]})})]},\"window\")},\"backdrop\")})]});return /*#__PURE__*/_jsx(\"div\",{style:{...style,width:0,height:0,overflow:\"visible\",position:\"relative\"},children:host?/*#__PURE__*/createPortal(overlay,host):null});}ManifestoWindow.defaultProps={};addPropertyControls(ManifestoWindow,{});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ManifestoWindow\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"1\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ManifestoWindow.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * MobileNotice.tsx — \"for the full experience, open on desktop\". v2.\n *\n * ── v2: A DRAWER, NOT A PILL ──\n *\n * v1 was a CursorTip-styled pill at the bottom. This is a bottom sheet: grab\n * handle, message, one button, swipe down to dismiss.\n *\n * WRITTEN RATHER THAN REMIXED, deliberately. A drawer is a box that slides up\n * — there is nothing in it worth inheriting a dependency for, and every\n * marketplace component in this project has broken at least once.\n *\n * ── IT IS NOT A GATE ──\n *\n * The backdrop is tappable and light. Nothing is blocked, the desk keeps\n * running underneath, and it never comes back in the same session. A blocking\n * \"best viewed on desktop\" interstitial is the most common usability\n * deduction on interactive-desk sites and it puts the joke on the visitor,\n * which §5.4 rules out.\n *\n * ── THE TOKENS ARE THE NAV'S ──\n *\n * Black, 20px top radius, white text. Matches the mobile menu, not the\n * CursorTip pill, because at this size it reads as chrome and chrome on this\n * site is the nav.\n *\n * ── ONCE PER SESSION ──\n *\n * sessionStorage, not localStorage. Someone back next week has forgotten and\n * should be told; someone who reloads twice in a minute has not. A\n * private-mode throw is swallowed — it shows every load rather than crashing.\n *\n * ── SAFE AREA AND dvh ──\n *\n * env(safe-area-inset-bottom) or it sits under the iOS home indicator. The\n * backdrop is 100dvh, not 100vh: vh on mobile Safari includes the address bar\n * that is currently covering the screen.\n *\n * ── §20.22 ──\n *\n * Portalled to body. position: fixed inside the transformed desk resolves\n * against the desk and would pan away with it.\n *\n * DROP ONE INSTANCE on the desk page, any breakpoint. It decides for itself\n * by viewport width and renders nothing above it.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 320\n * @framerIntrinsicHeight 160\n */const SEEN_KEY=\"__desk_mobile_notice_seen\";const DISMISS_PX=90;export default function MobileNotice(props){const{text=\"for the full experience, open on desktop\",buttonLabel=\"got it\",showBelow=810,delay=1200,oncePerSession=true,fill=\"rgb(0,0,0)\",color=\"rgb(255,255,255)\",accent=\"rgb(208,255,0)\",radius=20,style}=props;const[host,setHost]=useState(null);const[open,setOpen]=useState(false);const[mounted,setMounted]=useState(false);const[drag,setDrag]=useState(0);const dragging=useRef(false);const startY=useRef(0);const onCanvas=RenderTarget.current()===RenderTarget.canvas;useEffect(()=>{if(onCanvas)return;const el=document.createElement(\"div\");el.setAttribute(\"data-mobile-notice-host\",\"\");document.body.appendChild(el);setHost(el);return()=>{if(el.parentNode)el.parentNode.removeChild(el);};},[onCanvas]);useEffect(()=>{if(onCanvas||typeof window===\"undefined\")return;if(showBelow<=0||window.innerWidth>=showBelow)return;if(oncePerSession){try{if(sessionStorage.getItem(SEEN_KEY))return;}catch(e){// private mode — show it rather than throw\n}}const t=setTimeout(()=>{setMounted(true);// Two frames: mount at translateY(100%), then transition in.\nrequestAnimationFrame(()=>requestAnimationFrame(()=>setOpen(true)));try{sessionStorage.setItem(SEEN_KEY,\"1\");}catch(e){}},delay);return()=>clearTimeout(t);},[onCanvas,showBelow,delay,oncePerSession]);const close=()=>{setOpen(false);setDrag(0);setTimeout(()=>setMounted(false),280);};const onDown=e=>{dragging.current=true;startY.current=e.clientY;e.currentTarget.setPointerCapture?.(e.pointerId);};const onMove=e=>{if(!dragging.current)return;const dy=e.clientY-startY.current;setDrag(dy>0?dy:dy/4);};const onUp=e=>{if(!dragging.current)return;dragging.current=false;try{e.currentTarget.releasePointerCapture?.(e.pointerId);}catch(err){}if(drag>DISMISS_PX)close();else setDrag(0);};// A real box on the canvas so the instance can be selected (§20.16).\nif(onCanvas){return /*#__PURE__*/_jsx(\"div\",{style:{...style,background:fill,color,borderRadius:radius,padding:\"18px 20px 20px\",font:'500 15px/1.45 \"PP Neue Montreal\", system-ui, sans-serif'},children:text});}const sheet=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{onClick:close,style:{position:\"fixed\",inset:0,height:\"100dvh\",zIndex:2147482e3,background:\"rgba(0,0,0,0.32)\",opacity:open?1:0,transition:\"opacity 260ms ease\",pointerEvents:open?\"auto\":\"none\"}}),/*#__PURE__*/_jsxs(\"div\",{role:\"dialog\",\"aria-label\":\"Viewing note\",style:{position:\"fixed\",left:0,right:0,bottom:0,zIndex:2147482001,background:fill,color,borderTopLeftRadius:radius,borderTopRightRadius:radius,padding:`10px 22px calc(26px + env(safe-area-inset-bottom, 0px))`,transform:open?`translateY(${drag}px)`:\"translateY(110%)\",transition:dragging.current?\"none\":\"transform 300ms cubic-bezier(0.16,1,0.3,1)\",boxShadow:\"0 -18px 50px rgba(0,0,0,0.35)\",touchAction:\"none\",userSelect:\"none\"},onPointerDown:onDown,onPointerMove:onMove,onPointerUp:onUp,onPointerCancel:onUp,children:[/*#__PURE__*/_jsx(\"div\",{style:{width:38,height:4,borderRadius:2,background:\"rgba(255,255,255,0.28)\",margin:\"0 auto 18px\"}}),/*#__PURE__*/_jsx(\"div\",{style:{font:'500 17px/1.4 \"PP Neue Montreal\", system-ui, sans-serif',letterSpacing:\"-0.01em\",marginBottom:18},children:text}),/*#__PURE__*/_jsx(\"button\",{onClick:close,onPointerDown:e=>e.stopPropagation(),style:{width:\"100%\",height:48,border:\"none\",borderRadius:12,background:accent,color:\"#000\",font:'500 15px/1 \"PP Neue Montreal\", system-ui, sans-serif',cursor:\"pointer\",WebkitTapHighlightColor:\"transparent\"},children:buttonLabel})]})]});return /*#__PURE__*/_jsx(\"div\",{style:{width:1,height:1,opacity:0,pointerEvents:\"none\"},children:host&&mounted?/*#__PURE__*/createPortal(sheet,host):null});}MobileNotice.displayName=\"Mobile Notice\";addPropertyControls(MobileNotice,{text:{type:ControlType.String,title:\"Text\",defaultValue:\"for the full experience, open on desktop\",displayTextArea:true},buttonLabel:{type:ControlType.String,title:\"Button\",defaultValue:\"got it\"},showBelow:{type:ControlType.Number,title:\"Show below\",defaultValue:810,min:0,max:1440,step:10,unit:\"px\",description:\"Viewport width under which it appears. 0 disables.\"},delay:{type:ControlType.Number,title:\"Delay\",defaultValue:1200,min:0,max:6e3,step:100,unit:\"ms\",description:\"Let the desk land first. Nothing should greet you.\"},oncePerSession:{type:ControlType.Boolean,title:\"Once per session\",enabledTitle:\"Once\",disabledTitle:\"Every load\",defaultValue:true,description:\"Turn OFF while building or you will only see it once.\"},fill:{type:ControlType.Color,title:\"Sheet\",defaultValue:\"rgb(0,0,0)\"},color:{type:ControlType.Color,title:\"Text colour\",defaultValue:\"rgb(255,255,255)\"},accent:{type:ControlType.Color,title:\"Button\",defaultValue:\"rgb(208,255,0)\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:20,min:0,max:40,step:1,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"MobileNotice\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./MobileNotice.map","import{jsx as _jsx}from\"react/jsx-runtime\";export function withOpenManifesto(Component){return props=>{return /*#__PURE__*/_jsx(Component,{...props,onClick:()=>{if(typeof window!==\"undefined\"&&window.__manifesto){window.__manifesto.open();}},style:{...props.style,cursor:\"pointer\"}});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withOpenManifesto\":{\"type\":\"reactHoc\",\"name\":\"withOpenManifesto\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OpenManifesto.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useMemo,useState}from\"react\";/**\n * PlantNight.tsx — drives the plant's Rive state machine from the lamp.\n *\n * v1.\n *\n * ── WHY THIS IS AN OVERRIDE AND NOT A CUSTOM PLAYER ──\n *\n * The first plan was to replace the Rive layer with our own @rive-app/canvas\n * component, on the assumption that the plugin's inputs were reachable only\n * from its own panel. Reading the canvas XML killed that: the layer exposes\n *\n *     inputsJSON=\"[{\"name\":\"isNight\",\"type\":\"Boolean\",\"value\":false}, …]\"\n *\n * as an ordinary instance prop, and a prop is exactly what an override can\n * write. So the plugin's own player stays and this rewrites one field in that\n * JSON. `PlantRive.tsx` is dead — delete it.\n *\n * §20.50 again: one read of the actual structure replaced a whole rebuild.\n *\n * ── READER, NOT CREATOR (§6.9) ──\n *\n * DeskLight.tsx owns __deskLight. This WAITS for it rather than guarding once:\n * DeskLight creates the store inside a useEffect and React runs CHILD effects\n * before PARENT ones, so a bare guard fails closed on a race it should have\n * survived. That is the bug that made the Polaroid sit in permanent day.\n *\n * ── ONLY isNight IS TOUCHED ──\n *\n * BugSeen and ShowBug are parsed out of the incoming JSON and written back\n * unchanged. Rebuilding the array from scratch would reset ShowBug on every\n * lamp press and re-fire the trigger.\n *\n * Apply to the plant's Rive layer. One override per layer (§20.41) — this is\n * its only one.\n */const DESK_LIGHT_VERSION=1;const ATTACH_INTERVAL=120;const ATTACH_TIMEOUT=6e3;const NIGHT_INPUT=\"isNight\";export function withPlantNight(Component){return props=>{const[isNight,setIsNight]=useState(false);useEffect(()=>{if(typeof window===\"undefined\")return;let unsubscribe=null;let timer=null;let waited=0;let cancelled=false;const attach=()=>{if(cancelled)return true;const store=window.__deskLight;if(!store||store.version!==DESK_LIGHT_VERSION)return false;const read=()=>setIsNight(!!store.isNight);read();unsubscribe=store.subscribe(read);return true;};if(!attach()){timer=setInterval(()=>{waited+=ATTACH_INTERVAL;if(attach()||waited>=ATTACH_TIMEOUT){clearInterval(timer);timer=null;}},ATTACH_INTERVAL);}return()=>{cancelled=true;if(timer)clearInterval(timer);if(unsubscribe)unsubscribe();};},[]);const inputsJSON=useMemo(()=>{const incoming=props?.inputsJSON;let parsed=[];try{parsed=typeof incoming===\"string\"?JSON.parse(incoming):Array.isArray(incoming)?incoming:[];}catch(e){parsed=[];}if(!Array.isArray(parsed)||!parsed.length){// The layer has not been configured yet. Send the one input we\n// own rather than nothing, so the night state still works.\nreturn JSON.stringify([{name:NIGHT_INPUT,type:\"Boolean\",value:isNight}]);}let touched=false;const next=parsed.map(input=>{if(input&&input.name===NIGHT_INPUT){touched=true;return{...input,value:isNight};}return input;});// A missing input fails SILENTLY in Rive — nothing throws, the\n// input simply is not there. If the name ever changes in the .riv,\n// add it rather than quietly doing nothing.\nif(!touched){next.push({name:NIGHT_INPUT,type:\"Boolean\",value:isNight});}return JSON.stringify(next);},[props?.inputsJSON,isNight]);return /*#__PURE__*/_jsx(Component,{...props,inputsJSON:inputsJSON});};}\nexport const __FramerMetadata__ = {\"exports\":{\"withPlantNight\":{\"type\":\"reactHoc\",\"name\":\"withPlantNight\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./PlantNight.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useEffect,useRef,useState,useCallback,useSyncExternalStore}from\"react\";/**\n * Turntable.tsx — JoaoTex desk  (v14)\n *\n * ════════════════════════════════════════════════════════════════════════\n * v14 — THE TRACKS ARE LAZY. §6.7's PRELOAD RULE IS NARROWED, ON PURPOSE.\n * ════════════════════════════════════════════════════════════════════════\n *\n * MEASURED: 11.55MB of audio was fetched on EVERY page load, by every\n * visitor, whether or not they ever touched the record. Framer's usage panel\n * billed 171MB against a 7.47MB file and 89MB against a 4.08MB one — 22 and\n * 21 downloads against ~21 page loads. One per visit, each.\n *\n * That was two thirds of the entire site's weight, for an object most people\n * never press.\n *\n * §6.7 SAID PRELOAD BOTH TAKES. That rule still holds for the IMAGES — both\n * records stay mounted and crossfade, because a blank frame while a PNG\n * decodes is visible and ugly. It no longer holds for the AUDIO, because the\n * cost is 11.55MB and the thing it buys is a gap nobody can see. The brief\n * should record the split: preload what is seen, fetch what is heard.\n *\n * THE CUE ANIMATION PAYS FOR THE FETCH. `cueDuration` is 2200ms of tonearm\n * swinging out to the record. The download starts the instant Play is pressed\n * and runs underneath that swing, so on any reasonable connection the buffer\n * is decoded before the arm lands. Nothing is added to hide the latency —\n * the object already had a two-second physical gesture in front of it.\n *\n * If the fetch IS slower than the arm, the loop simply produces no sound\n * until the buffer arrives: `setRate` returns early on a null `S.fwd`, and\n * the tick calls it every frame, so playback starts by itself the moment the\n * decode finishes. No retry, no state machine.\n *\n * THE OTHER TAKE IS PREFETCHED ONCE PLAYBACK STARTS, on an idle callback. So\n * day/night switching stays instant for anyone actually listening, and costs\n * nothing for everyone else. Switching to a take that somehow is not loaded\n * yet requests it rather than falling silent.\n *\n * THE NEEDLE STAYS EAGER. 0.19MB, and it has to be exact at the moment the\n * arm touches down.\n *\n * ════════════════════════════════════════════════════════════════════════\n * v13a — §11.4\n * ════════════════════════════════════════════════════════════════════════\n *\n *   IMAGE   both records are MOUNTED AT LOAD and crossfaded by opacity.\n *           Nothing is swapped in on the toggle, so the first night visit\n *           cannot show a blank frame while a PNG decodes.\n *   AUDIO   fetched on first interaction (v14). Switching between two\n *           already-decoded buffers is still a buffer change, not a fetch.\n *\n * The image reads `isNight`, not `progress` — a record swaps AT the press,\n * because a record is a thing, not a grade (§6.3).\n *\n * Switching while playing keeps the playhead: the position carries across and\n * the node restarts on the other buffer at the same elapsed time, clamped to\n * whichever track is shorter. The two takes are one record in two lights\n * (§11.5), so the same moment in each is the point.\n *\n * ════════════════════════════════════════════════════════════════════════\n * v13b — ART SCALE, FOR A RE-RENDERED PLINTH\n * ════════════════════════════════════════════════════════════════════════\n *\n * Every coordinate here — record, tonearm pivot, play, pause — is a percentage\n * of the PLINTH IMAGE'S BOX, not of the plinth object inside it. A re-render\n * with a baked shadow puts the same object in a canvas with more margin, so\n * the object shrinks within the frame and every percentage is wrong by one\n * uniform factor about the centre (§20.33).\n *\n * `Art scale` corrects exactly that, on a wrapper holding everything EXCEPT\n * the plinth image. Scaling the plinth instead would fix nothing — the box is\n * what the percentages resolve against.\n *\n * Measured on Turntabletop_shadow.png (2652 x 2695): the plinth body spans\n * 83.5% x 72.8% of the canvas. If the old render was a tight crop, start at\n * about 84 and nudge with Calibrate on.\n *\n * ── v12: CANVAS DRAG BLOCKING ──\n *\n * You cannot mix `stopPropagation` in a native listener with React synthetic\n * handlers on the same element — React attaches at the app ROOT, so stopping\n * at the target means the synthetic handler never fires (§20.20). The record\n * and both buttons are wired entirely natively. Only pointerdown / mousedown /\n * touchstart are stopped; pointermove and pointerup still propagate so\n * CursorTip's window listeners keep working. The PLINTH stays pannable on\n * purpose.\n *\n * Handlers are read through a ref so once-attached listeners never close over\n * a stale `phase`.\n *\n * Arm PNG landmarks: pivot screw 49.5 / 19.5 · stylus tip 48.0 / 93.0\n * §20.15 window stores need a version stamp. §20.6 nothing animates on canvas.\n */const BUS_VERSION=8;const TIP_VERSION=2;const LIGHT_VERSION=1;const ARM_PIVOT_X=49.5;const ARM_PIVOT_Y=19.5;const ARM_REACH=Math.hypot(48-ARM_PIVOT_X,93-ARM_PIVOT_Y)/100;const ROUNDNESS=1.0105;const DEG_PER_SEC=(33+1/3)/60*360;const srcOf=v=>(v&&typeof v===\"object\"?v.src:v)||\"\";const NOOP=()=>()=>{};const FALSE=()=>false;/** The switch, not the grade. A record changes AT the press (§6.3). */function useIsNight(){const s=typeof window!==\"undefined\"?window.__deskLight:null;const ok=s&&s.version===LIGHT_VERSION;return useSyncExternalStore(ok?s.subscribe:NOOP,ok?s.getNight:FALSE,FALSE);}/**\n * Fire the shared cursor pill. Silently no-ops if CursorTip is not on the page\n * or is an older version — never throw from inside the rAF loop. §20.15\n */function tip(text,ms){if(typeof window===\"undefined\")return;const w=window;const t=w.__cursorTip;if(!t||t.version!==TIP_VERSION||typeof t.flash!==\"function\")return;if(!text)return;t.flash(text,ms);}function reverseBuffer(ctx,buf){const out=ctx.createBuffer(buf.numberOfChannels,buf.length,buf.sampleRate);for(let c=0;c<buf.numberOfChannels;c++){const s=buf.getChannelData(c);const d=out.getChannelData(c);for(let i=0,n=s.length;i<n;i++)d[i]=s[n-1-i];}return out;}/** Run when the browser is idle, or shortly after. Used for the second take. */function whenIdle(fn,timeout=5e3){if(typeof window===\"undefined\")return;const ric=window.requestIdleCallback;if(typeof ric===\"function\")ric(fn,{timeout});else setTimeout(fn,2e3);}function getBus(){if(typeof window===\"undefined\")return null;const w=window;if(!w.__deskAudio||w.__deskAudio.version!==BUS_VERSION){const old=w.__deskAudio;if(old&&old.ctx&&typeof old.ctx.close===\"function\"){try{old.ctx.close();}catch(e){}}w.__deskAudio={version:BUS_VERSION,ctx:null,buffers:{},ensureCtx(){if(!this.ctx){const AC=window.AudioContext||window.webkitAudioContext;if(AC)this.ctx=new AC;}return this.ctx;},unlock(){const ctx=this.ensureCtx();if(ctx&&ctx.state===\"suspended\")ctx.resume();return ctx;},async load(url){if(!url)return null;if(this.buffers[url])return this.buffers[url];const ctx=this.ensureCtx();if(!ctx)return null;const res=await fetch(url);if(!res.ok)throw new Error(\"HTTP \"+res.status);const buf=await ctx.decodeAudioData(await res.arrayBuffer());this.buffers[url]=buf;return buf;},async loadReversed(url){if(!url)return null;const key=url+\"::rev\";if(this.buffers[key])return this.buffers[key];const fwd=await this.load(url);if(!fwd)return null;const rev=reverseBuffer(this.ensureCtx(),fwd);this.buffers[key]=rev;return rev;},/**\n             * maxMs > 0 hard-limits the clip: it fades over the last 180ms and\n             * stops exactly at maxMs, so the arm-return sound cannot run on\n             * after the arm has landed.\n             */async oneShot(url,gain,reversed,maxMs){if(!url)return;const ctx=this.unlock();if(!ctx)return;const buf=reversed?await this.loadReversed(url):await this.load(url);if(!buf)return;const n=ctx.createBufferSource();n.buffer=buf;const g=ctx.createGain();const vol=gain==null?1:gain;g.gain.value=vol;n.connect(g);g.connect(ctx.destination);const t0=ctx.currentTime;if(maxMs&&maxMs/1e3<buf.duration){const end=t0+maxMs/1e3;const fade=Math.min(.18,maxMs/1e3);g.gain.setValueAtTime(vol,Math.max(t0,end-fade));g.gain.linearRampToValueAtTime(1e-4,end);n.start(t0);n.stop(end+.02);}else{n.start(t0);}}};}return w.__deskAudio;}/**\n * @framerIntrinsicWidth 520\n * @framerIntrinsicHeight 520\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function Turntable(props){const{plinth,plinthActiveOn,plinthActive,record,recordNight,tonearm,trackUrl,trackNightUrl,needleUrl,returnUrl,reverseNeedleOnStop,backmaskUrl,needleGain,musicGain,cueDuration,returnDuration,spinSpeed,tilt,artScale,artX,artY,recordX,recordY,recordSize,armPivotX,armPivotY,armLength,armRestAngle,armLeadIn,armRunOut,playX,playY,pauseX,pauseY,buttonSize,scrubSensitivity,maxRate,weddingsCopy,weddingsThreshold,weddingsHold,weddingsShow,backmaskHold,prefetchOtherTake,forceLight,calibrate,showDebug,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const liveNight=useIsNight();const isNight=forceLight===\"night\"?true:forceLight===\"day\"?false:liveNight;const rootRef=useRef(null);const spinRef=useRef(null);const armRef=useRef(null);const armAngle=useRef(armRestAngle);const wedFlag=useRef(false);const bmFlag=useRef(false);const cueTimer=useRef(null);const wedTimer=useRef(null);// One in-flight promise per take. Survives re-renders, so a second press\n// during the first fetch joins it rather than starting another.\nconst reqRef=useRef({});const alive=useRef(true);const[phase,setPhase]=useState(\"idle\");const[load,setLoad]=useState({day:\"idle\",night:\"idle\",needle:\"none\"});const[dbg,setDbg]=useState({a:0,r:0,p:0,arm:0,hold:0});const S=useRef({angle:0,rate:0,pos:0,dur:0,scrub:false,lastA:0,lastT:0,fast:0,rev:0,ctx:null,// active buffers\nfwd:null,bwd:null,// both takes, decoded on demand (v14)\nday:null,night:null,node:null,gain:null,dir:1}).current;// Native listeners are attached once per node, so they must read the\n// current handlers through a ref or they close over a stale `phase`.\nconst H=useRef({});useEffect(()=>{alive.current=true;return()=>{alive.current=false;};},[]);// ---- the needle only. 0.19MB, and it must be exact on touchdown. ------\nuseEffect(()=>{if(isCanvas)return;const bus=getBus();if(!bus||typeof bus.ensureCtx!==\"function\")return;const ctx=bus.ensureCtx();if(!ctx)return;S.ctx=ctx;if(needleUrl){bus.load(needleUrl).then(()=>alive.current&&setLoad(l=>({...l,needle:\"ok\"}))).catch(e=>alive.current&&setLoad(l=>({...l,needle:\"ERR \"+e.message})));}else setLoad(l=>({...l,needle:\"none\"}));// eslint-disable-next-line react-hooks/exhaustive-deps\n},[needleUrl,isCanvas]);/**\n     * Fetch and decode one take, at most once. Returns the in-flight promise\n     * on a repeat call, so pressing Play twice cannot start two downloads.\n     *\n     * Whichever side is live when the buffer lands takes the active slot —\n     * and if nothing is active yet, the first one to arrive does.\n     */function ensureTrack(key){const url=key===\"night\"?trackNightUrl:trackUrl;if(!url){setLoad(l=>({...l,[key]:\"none\"}));return Promise.resolve(null);}if(reqRef.current[key])return reqRef.current[key];const bus=getBus();if(!bus)return Promise.resolve(null);const ctx=bus.ensureCtx();if(!ctx)return Promise.resolve(null);S.ctx=ctx;setLoad(l=>({...l,[key]:\"loading\"}));const p=bus.load(url).then(buf=>{if(!alive.current||!buf)return null;const set={fwd:buf,bwd:reverseBuffer(ctx,buf),dur:buf.duration};S[key]=set;const wantNight=H.current.isNight;if(key===\"night\"===!!wantNight||!S.fwd){S.fwd=set.fwd;S.bwd=set.bwd;S.dur=set.dur;}setLoad(l=>({...l,[key]:\"ok\"}));return set;}).catch(e=>{// Clear the slot so a later press can retry rather than\n// returning a permanently rejected promise.\nreqRef.current[key]=null;if(alive.current)setLoad(l=>({...l,[key]:\"ERR \"+e.message}));return null;});reqRef.current[key]=p;return p;}/** The take you are not listening to, once you are listening. */function prefetchOther(key){if(!prefetchOtherTake)return;const other=key===\"day\"?\"night\":\"day\";whenIdle(()=>{if(alive.current)ensureTrack(other);});}/** Any real interaction with the record starts the download. */function wakeAudio(){const key=H.current.isNight?\"night\":\"day\";ensureTrack(key).then(()=>prefetchOther(key));}function stopNode(){if(!S.node)return;try{S.node.stop();}catch(e){}try{S.node.disconnect();}catch(e){}S.node=null;}useEffect(()=>{return()=>{clearTimeout(cueTimer.current);clearTimeout(wedTimer.current);stopNode();S.rate=0;};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[]);function setRate(rate){S.rate=rate;// No buffer yet — the tick calls this every frame, so playback starts\n// by itself the moment the decode finishes.\nif(!S.ctx||!S.fwd)return;if(Math.abs(rate)<.02)return stopNode();const dir=rate<0?-1:1;if(dir!==S.dir||!S.node){stopNode();const buf=dir===1?S.fwd:S.bwd;const lim=Math.max(.02,S.dur-.01);const off=Math.max(0,Math.min(lim,dir===1?S.pos:S.dur-S.pos));const n=S.ctx.createBufferSource();n.buffer=buf;n.playbackRate.value=Math.max(.02,Math.abs(rate));if(!S.gain){S.gain=S.ctx.createGain();S.gain.connect(S.ctx.destination);}S.gain.gain.value=musicGain==null?1:musicGain;n.connect(S.gain);n.start(0,off);S.node=n;S.dir=dir;return;}const want=Math.abs(rate);if(Math.abs(S.node.playbackRate.value-want)>.01)S.node.playbackRate.setTargetAtTime(want,S.ctx.currentTime,.02);}// ---- the lamp changes the record (§11.4) ------------------------------\n// If the other take is already decoded this is a buffer swap and the\n// playhead carries across. If it is not — because nobody has pressed play\n// yet, or the prefetch has not run — it is requested rather than silent.\nuseEffect(()=>{if(isCanvas)return;const key=isNight?\"night\":\"day\";const set=S[key];if(!set||!set.fwd){if(phase!==\"idle\"||S.fwd)ensureTrack(key);return;}S.fwd=set.fwd;S.bwd=set.bwd;S.dur=set.dur;S.pos=Math.max(0,Math.min(S.pos,S.dur-.05));if(phase===\"playing\"&&S.node){stopNode();setRate(S.rate);}// eslint-disable-next-line react-hooks/exhaustive-deps\n},[isNight,isCanvas]);function startPlay(){if(isCanvas||phase!==\"idle\")return;const bus=getBus();if(bus){S.ctx=bus.unlock()||S.ctx;bus.oneShot(needleUrl,needleGain,false,cueDuration);}// The fetch runs underneath the cue animation — `cueDuration` is\n// 2200ms of tonearm travel, which is the latency cover.\nwakeAudio();setPhase(\"cueing\");clearTimeout(cueTimer.current);cueTimer.current=setTimeout(()=>setPhase(\"playing\"),cueDuration);}function stopPlay(){if(isCanvas)return;clearTimeout(cueTimer.current);const wasOn=phase!==\"idle\";setPhase(\"idle\");stopNode();S.rate=0;if(wasOn){const bus=getBus();if(bus){if(returnUrl)bus.oneShot(returnUrl,needleGain,false,returnDuration);else if(reverseNeedleOnStop)bus.oneShot(needleUrl,needleGain,true,returnDuration);}}}// ---- loop -------------------------------------------------------------\nuseEffect(()=>{if(isCanvas)return;let raf=0;let last=performance.now();const tick=now=>{const dt=Math.min(.05,(now-last)/1e3);last=now;if(!S.scrub){const t=phase===\"playing\"?1:0;S.rate+=(t-S.rate)*Math.min(1,dt*6);if(Math.abs(S.rate-t)<.01)S.rate=t;if(phase===\"playing\")setRate(S.rate);else if(S.node)stopNode();}S.angle+=S.rate*DEG_PER_SEC*spinSpeed*dt;if(phase===\"playing\")S.pos=Math.max(0,Math.min(S.dur||1e9,S.pos+S.rate*dt));if(S.dur&&S.pos>=S.dur-.02&&phase===\"playing\"){S.pos=0;stopPlay();}const prog=S.dur?S.pos/S.dur:0;let goal=armRestAngle;let ms=returnDuration;if(phase===\"cueing\"){goal=armLeadIn;ms=cueDuration;}else if(phase===\"playing\"){goal=armLeadIn+(armRunOut-armLeadIn)*prog;ms=400;}const k=1e3/Math.max(120,ms)*4.2;armAngle.current+=(goal-armAngle.current)*Math.min(1,dt*k);// ---- scratch egg → shared CursorTip pill (§12.4) ----------------\nif(S.scrub&&Math.abs(S.rate)>weddingsThreshold){S.fast+=dt*1e3;if(S.fast>weddingsHold&&!wedFlag.current){wedFlag.current=true;tip(weddingsCopy,weddingsShow);clearTimeout(wedTimer.current);wedTimer.current=setTimeout(()=>{wedFlag.current=false;S.fast=0;},weddingsShow);}}else S.fast=Math.max(0,S.fast-dt*400);if(S.rate<-.15){S.rev+=dt*1e3;if(S.rev>backmaskHold&&!bmFlag.current){bmFlag.current=true;const bus=getBus();if(bus)bus.oneShot(backmaskUrl,1,false,0);window.setTimeout(()=>bmFlag.current=false,4e3);}}else S.rev=0;if(spinRef.current)spinRef.current.style.transform=`rotate(${S.angle}deg) scaleY(${ROUNDNESS})`;if(armRef.current)armRef.current.style.transform=`rotate(${armAngle.current}deg)`;if(showDebug)setDbg({a:Math.round(S.angle%360),r:Math.round(S.rate*100)/100,p:Math.round(S.pos*10)/10,arm:Math.round(armAngle.current),hold:Math.round(S.fast)});raf=requestAnimationFrame(tick);};raf=requestAnimationFrame(tick);return()=>cancelAnimationFrame(raf);// eslint-disable-next-line react-hooks/exhaustive-deps\n},[phase,isCanvas,armRestAngle,armLeadIn,armRunOut,showDebug,spinSpeed,cueDuration,returnDuration,weddingsCopy,weddingsThreshold,weddingsHold,weddingsShow]);// ---- scrub ------------------------------------------------------------\nfunction angleAt(e){const el=spinRef.current;if(!el)return 0;const r=el.getBoundingClientRect();const dx=e.clientX-(r.left+r.width/2);const dy=(e.clientY-(r.top+r.height/2))/Math.max(.2,Math.cos(tilt*Math.PI/180));return Math.atan2(dy,dx)*180/Math.PI;}function down(e){if(isCanvas)return;const bus=getBus();if(bus)S.ctx=bus.unlock()||S.ctx;// Scratching is an interaction too — it needs the buffer just as much\n// as Play does, and it is often the first thing anyone tries.\nwakeAudio();try{e.currentTarget.setPointerCapture(e.pointerId);}catch(err){}S.scrub=true;S.lastA=angleAt(e);S.lastT=performance.now();}function move(e){if(!S.scrub)return;const now=performance.now();const dt=Math.max(.008,(now-S.lastT)/1e3);const a=angleAt(e);let d=a-S.lastA;while(d>180)d-=360;while(d<-180)d+=360;S.lastA=a;S.lastT=now;S.angle+=d;const rate=d/dt/DEG_PER_SEC/Math.max(.05,spinSpeed)*scrubSensitivity;setRate(Math.max(-maxRate,Math.min(maxRate,rate)));}function up(e){if(!S.scrub)return;S.scrub=false;try{e.currentTarget.releasePointerCapture(e.pointerId);}catch(err){}if(phase!==\"playing\"){stopNode();S.rate=0;}}// Refresh on every render so the once-attached native listeners always call\n// the current closures — and so the loader can see the live light state.\nH.current={down,move,up,startPlay,stopPlay,isNight};const wireRecord=useCallback(el=>{if(!el||isCanvas||el.__wired)return;el.__wired=true;el.addEventListener(\"pointerdown\",e=>{e.stopPropagation();H.current.down(e);});el.addEventListener(\"pointermove\",e=>H.current.move(e));el.addEventListener(\"pointerup\",e=>H.current.up(e));el.addEventListener(\"pointercancel\",e=>H.current.up(e));el.addEventListener(\"mousedown\",e=>e.stopPropagation());el.addEventListener(\"touchstart\",e=>e.stopPropagation(),{passive:false});},[isCanvas]);const wirePlay=useCallback(el=>{if(!el||isCanvas||el.__wired)return;el.__wired=true;el.addEventListener(\"pointerdown\",e=>{e.stopPropagation();H.current.startPlay();});el.addEventListener(\"mousedown\",e=>e.stopPropagation());el.addEventListener(\"touchstart\",e=>e.stopPropagation(),{passive:false});},[isCanvas]);const wirePause=useCallback(el=>{if(!el||isCanvas||el.__wired)return;el.__wired=true;el.addEventListener(\"pointerdown\",e=>{e.stopPropagation();H.current.stopPlay();});el.addEventListener(\"mousedown\",e=>e.stopPropagation());el.addEventListener(\"touchstart\",e=>e.stopPropagation(),{passive:false});},[isCanvas]);// ---- layout -----------------------------------------------------------\nconst armW=armLength/ARM_REACH;const lit=phase!==\"idle\";const showActive=plinthActiveOn&&plinthActive;const nightSrc=srcOf(recordNight);const buttonStyle={position:\"absolute\",width:`${buttonSize}%`,aspectRatio:\"1 / 1\",transform:\"translate(-50%, -50%)\",borderRadius:\"50%\",cursor:\"pointer\",background:calibrate?\"rgba(0,229,255,0.45)\":\"transparent\",zIndex:6};// Everything except the plinth lives in here, so one number corrects a\n// re-rendered plinth's margin (§20.33).\nconst artStyle={position:\"absolute\",inset:0,transform:`translate(${artX}%, ${artY}%) scale(${artScale/100})`,transformOrigin:\"50% 50%\",pointerEvents:\"none\"};const discImg={position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",display:\"block\",pointerEvents:\"none\"};return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{...style,position:\"relative\",overflow:\"visible\",userSelect:\"none\",WebkitUserSelect:\"none\",touchAction:\"none\",perspective:tilt?\"1200px\":undefined,lineHeight:0},children:[/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",transform:tilt?`rotateX(${tilt}deg)`:undefined,transformOrigin:\"50% 50%\"},children:[/*#__PURE__*/_jsx(\"img\",{src:srcOf(plinth),draggable:false,style:{display:\"block\",width:\"100%\",height:\"auto\",pointerEvents:\"none\"}}),showActive&&/*#__PURE__*/_jsx(\"img\",{src:srcOf(plinthActive),draggable:false,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",opacity:lit?1:0,transition:\"opacity 140ms ease\",pointerEvents:\"none\",zIndex:1}}),/*#__PURE__*/_jsxs(\"div\",{style:artStyle,children:[/*#__PURE__*/_jsx(\"div\",{ref:wireRecord,style:{position:\"absolute\",left:`${recordX}%`,top:`${recordY}%`,width:`${recordSize}%`,aspectRatio:\"1 / 1\",transform:\"translate(-50%, -50%)\",borderRadius:\"50%\",cursor:\"grab\",pointerEvents:\"auto\",zIndex:2},children:/*#__PURE__*/_jsxs(\"div\",{ref:spinRef,style:{position:\"relative\",width:\"100%\",height:\"100%\",willChange:\"transform\",pointerEvents:\"none\"},children:[/*#__PURE__*/_jsx(\"img\",{src:srcOf(record),draggable:false,style:{...discImg,opacity:isNight&&nightSrc?0:1,transition:\"opacity 220ms ease\"}}),nightSrc?/*#__PURE__*/_jsx(\"img\",{src:nightSrc,draggable:false,style:{...discImg,opacity:isNight?1:0,transition:\"opacity 220ms ease\"}}):null]})}),/*#__PURE__*/_jsx(\"img\",{ref:armRef,src:srcOf(tonearm),draggable:false,style:{position:\"absolute\",left:`${armPivotX-armW*ARM_PIVOT_X/100}%`,top:`${armPivotY-armW*ARM_PIVOT_Y/100}%`,width:`${armW}%`,transformOrigin:`${ARM_PIVOT_X}% ${ARM_PIVOT_Y}%`,transform:`rotate(${armRestAngle}deg)`,willChange:\"transform\",pointerEvents:\"none\",zIndex:4}}),/*#__PURE__*/_jsx(\"div\",{ref:wirePlay,style:{...buttonStyle,left:`${playX}%`,top:`${playY}%`,pointerEvents:\"auto\"}}),/*#__PURE__*/_jsx(\"div\",{ref:wirePause,style:{...buttonStyle,left:`${pauseX}%`,top:`${pauseY}%`,pointerEvents:\"auto\"}}),calibrate&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${recordX}%`,top:`${recordY}%`,width:`${recordSize}%`,aspectRatio:\"1 / 1\",transform:\"translate(-50%,-50%)\",border:\"1px solid #FF00E5\",borderRadius:\"50%\",pointerEvents:\"none\",zIndex:5}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:`${armPivotX}%`,top:`${armPivotY}%`,width:`${armLength*2}%`,aspectRatio:\"1 / 1\",transform:\"translate(-50%,-50%)\",border:\"1px dashed #00E5FF\",borderRadius:\"50%\",pointerEvents:\"none\",zIndex:5}})]})]})]}),showDebug&&/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:6,top:6,width:220,font:\"11px/1.45 ui-monospace, monospace\",background:\"rgba(255,255,255,0.92)\",padding:\"4px 6px\",borderRadius:4,pointerEvents:\"none\",zIndex:20},children:[isCanvas?\"CANVAS (idle)\":\"PREVIEW\",\" \\xb7 \",phase,/*#__PURE__*/_jsx(\"br\",{}),\"light \",forceLight,\" → \",isNight?\"NIGHT\":\"day\",/*#__PURE__*/_jsx(\"br\",{}),\"day \",load.day,\" \\xb7 night \",load.night,/*#__PURE__*/_jsx(\"br\",{}),\"needle \",load.needle,/*#__PURE__*/_jsx(\"br\",{}),\"art \",artScale,\"% \",artX,\"/\",artY,/*#__PURE__*/_jsx(\"br\",{}),\"angle \",dbg.a,\"\\xb0 \\xb7 rate \",dbg.r,\"\\xd7\",/*#__PURE__*/_jsx(\"br\",{}),\"pos \",dbg.p,\"s / \",Math.round(S.dur),\"s\",/*#__PURE__*/_jsx(\"br\",{}),\"arm \",dbg.arm,\"\\xb0 \\xb7 egg \",dbg.hold,\"/\",weddingsHold,\"ms\",/*#__PURE__*/_jsx(\"br\",{}),\"tip\",\" \",typeof window!==\"undefined\"&&window.__cursorTip?.version===TIP_VERSION?\"ready v\"+TIP_VERSION:\"MISSING\"]})]});}addPropertyControls(Turntable,{plinth:{type:ControlType.ResponsiveImage,title:\"Plinth\"},plinthActiveOn:{type:ControlType.Boolean,title:\"Lit plinth\",defaultValue:false,description:\"Only turn on with a real buttons-lit plinth render\"},plinthActive:{type:ControlType.ResponsiveImage,title:\"Plinth Active\",hidden:p=>!p.plinthActiveOn},record:{type:ControlType.ResponsiveImage,title:\"Record\"},recordNight:{type:ControlType.ResponsiveImage,title:\"Record night\",description:\"Mounted at load and crossfaded — never swapped (\\xa76.7)\"},tonearm:{type:ControlType.ResponsiveImage,title:\"Tonearm\"},forceLight:{type:ControlType.Enum,title:\"Preview\",options:[\"auto\",\"day\",\"night\"],optionTitles:[\"Live\",\"Day\",\"Night\"],defaultValue:\"auto\",displaySegmentedControl:true,description:\"the canvas has no light store — use this to check night\"},artScale:{type:ControlType.Number,title:\"Art scale\",description:\"Corrects a re-rendered plinth's margin. Turntabletop_shadow.png measures ~84.\",defaultValue:100,min:40,max:160,step:.25,unit:\"%\"},artX:{type:ControlType.Number,title:\"Art X\",defaultValue:0,min:-40,max:40,step:.1,unit:\"%\"},artY:{type:ControlType.Number,title:\"Art Y\",defaultValue:0,min:-40,max:40,step:.1,unit:\"%\"},trackUrl:{type:ControlType.File,title:\"Track\",allowedFileTypes:[\"mp3\",\"wav\",\"m4a\",\"ogg\"],description:\"Fetched on first play or scratch, not on page load (v14).\"},trackNightUrl:{type:ControlType.File,title:\"Track night\",allowedFileTypes:[\"mp3\",\"wav\",\"m4a\",\"ogg\"],description:\"Prefetched once playback starts. The lamp switches it.\"},prefetchOtherTake:{type:ControlType.Boolean,title:\"Prefetch 2nd take\",enabledTitle:\"On idle\",disabledTitle:\"Never\",defaultValue:true,description:\"After play starts, quietly loads the other take so day/night switching is instant. Costs nothing for visitors who never press play.\"},needleUrl:{type:ControlType.File,title:\"Needle drop\",allowedFileTypes:[\"mp3\",\"wav\",\"m4a\",\"ogg\"],description:\"Loaded eagerly — it is small and must be exact on touchdown.\"},returnUrl:{type:ControlType.File,title:\"Arm return\",allowedFileTypes:[\"mp3\",\"wav\",\"m4a\",\"ogg\"],description:\"Plays on pause. Leave empty to reverse the needle clip\"},reverseNeedleOnStop:{type:ControlType.Boolean,title:\"Reverse needle\",defaultValue:true},backmaskUrl:{type:ControlType.File,title:\"Backmask\",allowedFileTypes:[\"mp3\",\"wav\",\"m4a\",\"ogg\"]},needleGain:{type:ControlType.Number,title:\"Needle vol\",defaultValue:.8,min:0,max:1,step:.05},musicGain:{type:ControlType.Number,title:\"Music vol\",defaultValue:.9,min:0,max:1,step:.05},cueDuration:{type:ControlType.Number,title:\"Cue time\",defaultValue:2200,min:200,max:6e3,step:50,unit:\"ms\",description:\"Arm out to the record. Also trims the needle clip, and covers the track fetch\"},returnDuration:{type:ControlType.Number,title:\"Return time\",defaultValue:800,min:150,max:4e3,step:50,unit:\"ms\",description:\"Arm back to rest. Also trims the return clip\"},spinSpeed:{type:ControlType.Number,title:\"Spin speed\",defaultValue:.45,min:.05,max:1.5,step:.05},tilt:{type:ControlType.Number,title:\"Tilt\",defaultValue:0,min:0,max:60,step:1,unit:\"\\xb0\"},recordX:{type:ControlType.Number,title:\"Record X\",defaultValue:49.4,min:0,max:100,step:.1,unit:\"%\"},recordY:{type:ControlType.Number,title:\"Record Y\",defaultValue:46.5,min:0,max:100,step:.1,unit:\"%\"},recordSize:{type:ControlType.Number,title:\"Record size\",defaultValue:66.5,min:10,max:95,step:.5,unit:\"%\"},armPivotX:{type:ControlType.Number,title:\"Arm X\",defaultValue:81.9,min:0,max:100,step:.1,unit:\"%\"},armPivotY:{type:ControlType.Number,title:\"Arm Y\",defaultValue:19.6,min:0,max:100,step:.1,unit:\"%\"},armLength:{type:ControlType.Number,title:\"Arm reach\",defaultValue:39.5,min:10,max:90,step:.5,unit:\"%\"},armRestAngle:{type:ControlType.Number,title:\"Arm rest\",defaultValue:-8,min:-120,max:120,step:.5,unit:\"\\xb0\"},armLeadIn:{type:ControlType.Number,title:\"Arm lead-in\",defaultValue:4.3,min:-120,max:120,step:.1,unit:\"\\xb0\"},armRunOut:{type:ControlType.Number,title:\"Arm run-out\",defaultValue:32,min:-120,max:120,step:.1,unit:\"\\xb0\"},playX:{type:ControlType.Number,title:\"Play X\",defaultValue:45.5,min:0,max:100,step:.1,unit:\"%\"},playY:{type:ControlType.Number,title:\"Play Y\",defaultValue:82.8,min:0,max:100,step:.1,unit:\"%\"},pauseX:{type:ControlType.Number,title:\"Pause X\",defaultValue:55.2,min:0,max:100,step:.1,unit:\"%\"},pauseY:{type:ControlType.Number,title:\"Pause Y\",defaultValue:82.8,min:0,max:100,step:.1,unit:\"%\"},buttonSize:{type:ControlType.Number,title:\"Button size\",defaultValue:5,min:1,max:20,step:.1,unit:\"%\"},scrubSensitivity:{type:ControlType.Number,title:\"Scrub feel\",defaultValue:1,min:.2,max:3,step:.05},maxRate:{type:ControlType.Number,title:\"Max rate\",defaultValue:4,min:1,max:8,step:.1},weddingsCopy:{type:ControlType.String,title:\"Scratch egg\",defaultValue:\"do you do weddings?\",description:\"Shown in the shared CursorTip pill. Needs CursorTip on the page\"},weddingsThreshold:{type:ControlType.Number,title:\"Egg speed\",defaultValue:1.4,min:.5,max:6,step:.1},weddingsHold:{type:ControlType.Number,title:\"Egg hold\",defaultValue:450,min:100,max:3e3,step:50,unit:\"ms\"},weddingsShow:{type:ControlType.Number,title:\"Egg on screen\",defaultValue:4500,min:500,max:8e3,step:100,unit:\"ms\"},backmaskHold:{type:ControlType.Number,title:\"Backmask hold\",defaultValue:3e3,min:500,max:8e3,step:100,unit:\"ms\"},calibrate:{type:ControlType.Boolean,title:\"Calibrate\",defaultValue:false},showDebug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Turntable\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"any\",\"framerIntrinsicHeight\":\"520\",\"framerIntrinsicWidth\":\"520\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Turntable.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const DEFAULT_IMAGE={src:\"https://framerusercontent.com/images/Gzbvf9CDFDzJ3UMypoCtmUuafg.png\",alt:\"Vaporize image\"};const STORE_VERSION=1;const FONTS={pixel:\"'Geist Pixel', ui-monospace, monospace\",mono:\"'Geist Mono', ui-monospace, 'SF Mono', monospace\",sans:\"'Geist', Inter, system-ui, sans-serif\"};const clamp=(v,min,max)=>Math.max(min,Math.min(max,v));function containRect(boxW,boxH,imgW,imgH){if(boxW<=0||boxH<=0||imgW<=0||imgH<=0){return{x:0,y:0,width:boxW,height:boxH};}const scale=Math.min(boxW/imgW,boxH/imgH);const width=imgW*scale;const height=imgH*scale;return{x:(boxW-width)/2,y:(boxH-height)/2,width,height};}/**\n * ControlType.Color hands back whatever the panel holds — `#RGB`, `#RRGGBB`,\n * `#RRGGBBAA`, `rgb()`, `rgba()`, or a Framer colour token. Anything that does\n * not parse falls back to white, which is the identity multiplier: an\n * unreadable value leaves the dust exactly as it was rather than tinting it\n * black.\n */function parseRGB(input){const fallback=[1,1,1];if(!input||typeof input!==\"string\")return fallback;const s=input.trim();if(s[0]===\"#\"){let hex=s.slice(1);if(hex.length===3||hex.length===4){hex=hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2];}if(hex.length<6)return fallback;const n=parseInt(hex.slice(0,6),16);if(!isFinite(n))return fallback;return[(n>>16&255)/255,(n>>8&255)/255,(n&255)/255];}const m=s.match(/rgba?\\(([^)]+)\\)/i);if(m){const parts=m[1].split(/[,\\s/]+/).filter(Boolean);if(parts.length<3)return fallback;const chan=raw=>{const v=parseFloat(raw);if(!isFinite(v))return 1;return raw.indexOf(\"%\")>=0?clamp(v/100,0,1):clamp(v/255,0,1);};return[chan(parts[0]),chan(parts[1]),chan(parts[2])];}return fallback;}const VERT=`#version 300 es\nprecision highp float;\n\nuniform sampler2D uTex;\nuniform int   uTexW;\nuniform vec2  uTexSize;\nuniform vec2  uSizeCss;\nuniform vec2  uViewport;\nuniform vec2  uOrigin;\nuniform float uHomeScale;\nuniform float uDpr;\n\nuniform float uProgress;\nuniform vec2  uEntry;\nuniform vec2  uCursor;\nuniform float uCursorActive;\nuniform float uTime;\nuniform float uSeed;\n\nuniform float uCluster;\nuniform float uNoiseAmount;\nuniform float uSoftness;\nuniform float uSwirl;\nuniform float uSpread;\nuniform float uRise;\nuniform float uTurbulence;\nuniform float uPointSize;\nuniform float uCursorForce;\nuniform float uCursorRadius;\n\nout vec4  vColor;\nout float vSoft;\n\nfloat hash(vec2 p, float s) {\n    return fract(sin(dot(p, vec2(127.1, 311.7)) + s * 74.7) * 43758.5453123);\n}\n\nfloat vnoise(vec2 p, float s) {\n    vec2 i = floor(p);\n    vec2 f = fract(p);\n    vec2 u = f * f * (3.0 - 2.0 * f);\n    float a = hash(i, s);\n    float b = hash(i + vec2(1.0, 0.0), s);\n    float c = hash(i + vec2(0.0, 1.0), s);\n    float d = hash(i + vec2(1.0, 1.0), s);\n    return mix(mix(a, b, u.x), mix(c, d, u.x), u.y);\n}\n\nfloat fbm(vec2 p, float s) {\n    return vnoise(p, s) * 0.55\n         + vnoise(p * 2.07 + 13.7, s + 19.0) * 0.29\n         + vnoise(p * 4.13 + 31.3, s + 47.0) * 0.16;\n}\n\nvoid main() {\n    int id = gl_VertexID;\n    float px = float(id % uTexW);\n    float py = float(id / uTexW);\n    vec2 texel = vec2(px, py) + 0.5;\n\n    vec4 c = texture(uTex, texel / uTexSize);\n    if (c.a < 0.004) {\n        gl_Position = vec4(2.0, 2.0, 2.0, 1.0);\n        gl_PointSize = 0.0;\n        vColor = vec4(0.0);\n        vSoft = 0.0;\n        return;\n    }\n\n    vec2 home = texel * uHomeScale;\n    vec2 homeCss = home / uDpr;\n\n    float t = 0.0;\n    if (uProgress > 0.0) {\n        float dmax = max(1.0, length(uSizeCss));\n        float d = clamp(distance(homeCss, uEntry) / dmax, 0.0, 1.0);\n        float radial = pow(d, 1.25);\n        float n = fbm(homeCss / max(4.0, uCluster), uSeed);\n        float threshold = clamp(radial + (n - 0.5) * uNoiseAmount, 0.0, 1.0);\n        t = smoothstep(threshold, threshold + max(0.004, uSoftness), uProgress);\n    }\n\n    vec2 pos = home;\n    float size = uHomeScale;\n    float alpha = 1.0;\n\n    if (t > 0.0) {\n        float a = fbm(homeCss / max(8.0, uSwirl), uSeed + 101.0) * 12.5664;\n        vec2 dir = vec2(cos(a), sin(a));\n        vec2 away = homeCss - uEntry;\n        float awayLen = max(0.001, length(away));\n        dir = normalize(mix(dir, away / awayLen, 0.5));\n\n        float travel = 1.0 - exp(-t * 3.2);\n        float jitter = hash(home, uSeed + 7.0) * 0.6 + 0.7;\n        vec2 offCss = dir * uSpread * travel * jitter;\n\n        offCss.y -= uRise * t * t;\n\n        float w1 = fbm(homeCss / 26.0 + vec2(uTime * 0.35, -uTime * 0.28), uSeed + 211.0) - 0.5;\n        float w2 = fbm(homeCss / 26.0 + vec2(-uTime * 0.31, uTime * 0.40), uSeed + 313.0) - 0.5;\n        offCss += vec2(w1, w2) * uTurbulence * t;\n\n        if (uCursorActive > 0.5 && uCursorForce > 0.0) {\n            vec2 delta = homeCss + offCss - uCursor;\n            float dist = max(1.0, length(delta));\n            float f = pow(clamp(1.0 - dist / max(12.0, uCursorRadius), 0.0, 1.0), 2.0);\n            offCss += (delta / dist) * f * uCursorForce * t;\n        }\n\n        pos = home + offCss * uDpr;\n        size = mix(uHomeScale, max(uHomeScale, uPointSize * uDpr), smoothstep(0.0, 0.18, t));\n        alpha = 1.0 - smoothstep(0.45, 1.0, t);\n    }\n\n    vec2 screenPos = pos + uOrigin;\n    vec2 clip = (screenPos / uViewport) * 2.0 - 1.0;\n    gl_Position = vec4(clip.x, -clip.y, 0.0, 1.0);\n    gl_PointSize = max(1.0, size);\n    vColor = c * alpha;\n    vSoft = smoothstep(0.0, 0.25, t);\n}\n`;/**\n * uTint grades the dust to the room. It is a MULTIPLY IN THE SHADER, not a CSS\n * filter on the canvas: v18 set `canvas.style.filter` once per frame, which\n * forces a full-viewport filter pass every frame and dropped the whole effect\n * to single-figure fps. That is what made the reassemble look slow — the\n * animation was fine, the frame rate was not. Colour is premultiplied, so only\n * rgb is scaled; alpha is left alone.\n *\n * ── v21: IT IS A COLOUR, NOT A SCALAR ──\n *\n * It was a single float, and that float was the whole night-hover colour bug.\n * The dust canvas is portalled to document.body ABOVE everything; the room\n * (Ambience, zIndex 50, inside DragCanvas) never touches it. At rest you see\n * the <img> UNDER the room's coloured multiply; on hover you see the dust\n * OUTSIDE it. A grey dim can match the room's brightness but never its hue, so\n * the object shifted tone on hover and shifted back on leave. Three states, one\n * object. Now the multiplier is a vec3: set `Dust night tint` to the Ambience\n * night tint and the two grades land on the same colour. White is the identity\n * — it reproduces the old grey-dim behaviour exactly.\n */const FRAG=`#version 300 es\nprecision mediump float;\nin vec4 vColor;\nin float vSoft;\nuniform vec3 uTint;\nout vec4 outColor;\n\nvoid main() {\n    float soft = 1.0 - smoothstep(0.34, 0.5, length(gl_PointCoord - 0.5));\n    float m = mix(1.0, soft, vSoft);\n    if (m <= 0.002) discard;\n    outColor = vec4(vColor.rgb * uTint, vColor.a) * m;\n}\n`;function compile(gl,type,source){const shader=gl.createShader(type);if(!shader)return null;gl.shaderSource(shader,source);gl.compileShader(shader);if(!gl.getShaderParameter(shader,gl.COMPILE_STATUS)){console.warn(\"[VaporizeImageGL]\",gl.getShaderInfoLog(shader));gl.deleteShader(shader);return null;}return shader;}function readNight(){try{const s=window.__deskLight;if(!s||s.version!==STORE_VERSION)return 0;return s.progress||0;}catch(e){return 0;}}/**\n * Vaporize Image (GPU)\n *\n * Drop in an image. It renders as itself, and dissolves on hover.\n *\n * ── v21: THE TEXT HAS A NIGHT COLOUR ──\n *\n * The line under the object was one fixed colour. Tuned dark against a white\n * desk it disappears completely once the room goes dark — the copy was there\n * the whole time and unreadable. Two colours now, crossfaded by the light\n * store's `progress`, so it tracks the same 900ms grade as everything else.\n * The two layers are stacked and cross-faded rather than interpolated, because\n * ControlType.Color can hand back a token this file cannot parse.\n *\n * §20.56: the store is created in a useEffect, so a reader that guards once at\n * mount loses the race and stays in permanent day. This one WAITS for it.\n *\n * ── v20: THE OBJECT AND THE TEXT CAN BOTH BE PLACED ──\n *\n * A re-rendered PNG puts the object somewhere else inside its canvas, so type\n * centred in the FRAME is no longer centred under the OBJECT (§20.33). Two\n * separate controls, because they are two separate problems:\n *\n *   Image scale / X / Y   moves the artwork inside the frame\n *   Text nudge X / Y      moves the type under it\n *\n * The image transform is applied in ONE place — the fit rect — and both paths\n * read it: the resting `<img>` gets the matching CSS transform, and the GPU\n * texture is composited with the same numbers. They cannot drift, which is the\n * same guarantee `object-fit: contain` was giving before. The alpha hit map is\n * derived from that composite, so the hover area follows the artwork for free.\n *\n * ── v19a: THE TEXT IS ALWAYS THERE ──\n *\n * It does not fade in. It sits under the object permanently at a fixed opacity\n * and is simply UNCOVERED as the pixels leave. Fading it made it an effect.\n *\n * ── v19b: THE DUST DIM IS A SHADER UNIFORM ──\n *\n * See the note on FRAG. A per-frame CSS filter on a viewport-sized canvas is a\n * full-screen pass per frame; as a uniform it costs nothing.\n *\n * THE OBJECT IS THE HIT AREA. A low-resolution alpha map of the composed image\n * is kept on the CPU, and the pointer only arms the effect over non-transparent\n * pixels.\n *\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 600\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function VaporizeImageGL(props){const{image=DEFAULT_IMAGE,imageScale=100,imageX=0,imageY=0,text=\"\",textFont=\"mono\",textSize=28,textWeight=\"500\",textColor=\"#D0FF00\",textColorNight=\"#E6EEF6\",textTracking=0,textLine=1.3,textAlign=\"center\",textOffsetX=0,textOffsetY=0,textOpacity=1,hitTestAlpha=true,duration=1.4,reverseOnLeave=true,reverseDuration=1,clusterSize=90,noiseAmount=.42,softness=.16,swirlScale=130,spread=90,rise=70,turbulence=34,particleSize=2.2,cursorForce=46,cursorRadius=150,overlayZIndex=2147483e3,dustNightDim=.62,dustNightTint=\"#FFFFFF\",maxPoints=24e5,seed=7,showDebug=false,style}=props;const frameRef=React.useRef(null);const imgRef=React.useRef(null);const canvasRef=React.useRef(null);const glRef=React.useRef(null);const programRef=React.useRef(null);const uniformsRef=React.useRef({});const textureRef=React.useRef(null);const vaoRef=React.useRef(null);const sourceRef=React.useRef(null);const readyRef=React.useRef(false);const pointCountRef=React.useRef(0);const alphaRef=React.useRef(null);const geomRef=React.useRef({texW:0,texH:0,homeScale:1,cssW:0,cssH:0,dpr:1});const progressRef=React.useRef(0);const targetRef=React.useRef(0);const entryRef=React.useRef({x:0,y:0});const cursorRef=React.useRef({x:0,y:0});const cursorActiveRef=React.useRef(false);const activeRef=React.useRef(false);const rafRef=React.useRef(null);const lastTimeRef=React.useRef(0);const startTimeRef=React.useRef(0);const rebuildRafRef=React.useRef(null);const dirtyRef=React.useRef(true);const[info,setInfo]=React.useState(\"\");// The TEXT's night value. React state, because two DOM layers cross-fade.\n// The DUST's night value is read per-frame in render() instead — it is\n// already inside a rAF loop and must not re-render anything.\nconst[textNight,setTextNight]=React.useState(0);const onFramerCanvas=RenderTarget.current()===RenderTarget.canvas;const canAnimate=typeof window!==\"undefined\"&&!onFramerCanvas;const normalizedImage=image?.src?image:DEFAULT_IMAGE;const tintRGB=React.useMemo(()=>parseRGB(dustNightTint),[dustNightTint]);const setOverlayVisible=React.useCallback(visible=>{const canvas=canvasRef.current;const img=imgRef.current;if(canvas)canvas.style.opacity=visible?\"1\":\"0\";if(img)img.style.visibility=visible?\"hidden\":\"visible\";activeRef.current=visible;},[]);const syncOverlaySize=React.useCallback(()=>{const canvas=canvasRef.current;if(!canvas)return;const root=document.documentElement;const vw=Math.max(root.clientWidth,window.innerWidth||0);const vh=Math.max(root.clientHeight,window.innerHeight||0);const dpr=clamp(window.devicePixelRatio||1,1,2);canvas.style.width=`${vw}px`;canvas.style.height=`${vh}px`;const w=Math.max(1,Math.ceil(vw*dpr));const h=Math.max(1,Math.ceil(vh*dpr));if(canvas.width!==w)canvas.width=w;if(canvas.height!==h)canvas.height=h;},[]);const render=React.useCallback(()=>{const gl=glRef.current;const program=programRef.current;const u=uniformsRef.current;const g=geomRef.current;const frame=frameRef.current;const canvas=canvasRef.current;if(!gl||!program||!canvas||!frame)return;if(!readyRef.current||pointCountRef.current===0)return;syncOverlaySize();const rect=frame.getBoundingClientRect();gl.viewport(0,0,gl.drawingBufferWidth,gl.drawingBufferHeight);gl.clearColor(0,0,0,0);gl.clear(gl.COLOR_BUFFER_BIT);gl.useProgram(program);gl.bindVertexArray(vaoRef.current);gl.activeTexture(gl.TEXTURE0);gl.bindTexture(gl.TEXTURE_2D,textureRef.current);gl.uniform1i(u.uTex,0);gl.uniform1i(u.uTexW,g.texW);gl.uniform2f(u.uTexSize,g.texW,g.texH);gl.uniform2f(u.uSizeCss,g.cssW,g.cssH);gl.uniform2f(u.uViewport,gl.drawingBufferWidth,gl.drawingBufferHeight);gl.uniform2f(u.uOrigin,rect.left*g.dpr,rect.top*g.dpr);gl.uniform1f(u.uHomeScale,g.homeScale);gl.uniform1f(u.uDpr,g.dpr);gl.uniform1f(u.uProgress,progressRef.current);gl.uniform2f(u.uEntry,entryRef.current.x,entryRef.current.y);gl.uniform2f(u.uCursor,cursorRef.current.x,cursorRef.current.y);gl.uniform1f(u.uCursorActive,cursorActiveRef.current?1:0);gl.uniform1f(u.uTime,(performance.now()-startTimeRef.current)/1e3);gl.uniform1f(u.uSeed,seed);// One vec3. This is the whole night grade. At night the dust is\n// multiplied by `tint * (1 - dim)`; in day it is multiplied by white.\nconst n=readNight();const k=1-dustNightDim;gl.uniform3f(u.uTint,1+n*(tintRGB[0]*k-1),1+n*(tintRGB[1]*k-1),1+n*(tintRGB[2]*k-1));gl.uniform1f(u.uCluster,clusterSize);gl.uniform1f(u.uNoiseAmount,noiseAmount);gl.uniform1f(u.uSoftness,softness);gl.uniform1f(u.uSwirl,swirlScale);gl.uniform1f(u.uSpread,spread);gl.uniform1f(u.uRise,rise);gl.uniform1f(u.uTurbulence,turbulence);gl.uniform1f(u.uPointSize,particleSize);gl.uniform1f(u.uCursorForce,cursorForce);gl.uniform1f(u.uCursorRadius,cursorRadius);gl.drawArrays(gl.POINTS,0,pointCountRef.current);gl.bindVertexArray(null);},[clusterSize,cursorForce,cursorRadius,dustNightDim,noiseAmount,particleSize,rise,seed,softness,spread,swirlScale,syncOverlaySize,tintRGB,turbulence]);const animate=React.useCallback(timestamp=>{if(!lastTimeRef.current)lastTimeRef.current=timestamp;const dt=clamp((timestamp-lastTimeRef.current)/1e3,0,.05);lastTimeRef.current=timestamp;const previous=progressRef.current;const target=targetRef.current;let next=previous;if(target>previous){next=Math.min(target,previous+dt/Math.max(.05,duration));}else if(target<previous){next=Math.max(target,previous-dt/Math.max(.05,reverseDuration));}progressRef.current=next;render();const settled=Math.abs(next-target)<1e-5;if(!settled||next>0&&next<1||next>0&&cursorActiveRef.current){rafRef.current=window.requestAnimationFrame(animate);return;}rafRef.current=null;lastTimeRef.current=0;if(next<=0)setOverlayVisible(false);},[duration,render,reverseDuration,setOverlayVisible]);const start=React.useCallback(()=>{if(!canAnimate||rafRef.current!==null)return;lastTimeRef.current=0;rafRef.current=window.requestAnimationFrame(animate);},[animate,canAnimate]);const rebuild=React.useCallback(()=>{const frame=frameRef.current;const source=sourceRef.current;const gl=glRef.current;if(!frame||!source||!gl||!readyRef.current)return;const cssW=Math.max(1,frame.clientWidth);const cssH=Math.max(1,frame.clientHeight);const dpr=clamp(window.devicePixelRatio||1,1,2);const idealW=Math.ceil(cssW*dpr);const idealH=Math.ceil(cssH*dpr);const maxTex=gl.getParameter(gl.MAX_TEXTURE_SIZE);let sampleScale=dpr;const budget=Math.max(5e4,Math.round(maxPoints));if(idealW*idealH>budget){sampleScale=dpr*Math.sqrt(budget/(idealW*idealH));}sampleScale=Math.min(sampleScale,maxTex/Math.max(1,cssW),maxTex/Math.max(1,cssH));const texW=Math.max(1,Math.ceil(cssW*sampleScale));const texH=Math.max(1,Math.ceil(cssH*sampleScale));const composite=document.createElement(\"canvas\");composite.width=texW;composite.height=texH;const ctx=composite.getContext(\"2d\");if(!ctx)return;ctx.setTransform(texW/cssW,0,0,texH/cssH,0,0);ctx.clearRect(0,0,cssW,cssH);ctx.imageSmoothingEnabled=true;ctx.imageSmoothingQuality=\"high\";// ONE fit rule, used by both paths. The <img> gets the matching CSS\n// transform below, so the resting frame and the dissolve cannot drift.\nconst base=containRect(cssW,cssH,source.naturalWidth,source.naturalHeight);const s=Math.max(.01,imageScale/100);const dw=base.width*s;const dh=base.height*s;const cx=cssW/2+imageX/100*cssW;const cy=cssH/2+imageY/100*cssH;const fit={x:cx-dw/2,y:cy-dh/2,width:dw,height:dh};ctx.drawImage(source,fit.x,fit.y,fit.width,fit.height);gl.bindTexture(gl.TEXTURE_2D,textureRef.current);gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL,true);gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,false);gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,composite);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE);gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE);const hitMax=220;const hitScale=Math.min(1,hitMax/Math.max(cssW,cssH));const hw=Math.max(1,Math.round(cssW*hitScale));const hh=Math.max(1,Math.round(cssH*hitScale));const probe=document.createElement(\"canvas\");probe.width=hw;probe.height=hh;const pctx=probe.getContext(\"2d\",{willReadFrequently:true});if(pctx){pctx.clearRect(0,0,hw,hh);pctx.drawImage(composite,0,0,hw,hh);try{const px=pctx.getImageData(0,0,hw,hh).data;const map=new Uint8Array(hw*hh);for(let i=0;i<hw*hh;i++)map[i]=px[i*4+3];alphaRef.current={data:map,w:hw,h:hh};}catch(error){console.warn(\"[VaporizeImageGL] Alpha hit map unavailable.\",error);alphaRef.current=null;}}geomRef.current={texW,texH,homeScale:dpr/sampleScale,cssW,cssH,dpr};pointCountRef.current=texW*texH;entryRef.current={x:cssW/2,y:cssH/2};cursorRef.current={x:cssW/2,y:cssH/2};dirtyRef.current=false;frame.setAttribute(\"data-desk-loading\",\"ready\");const canvas=canvasRef.current;const naturalRatio=source.naturalWidth/Math.max(1,source.naturalHeight);const n=readNight();const k=1-dustNightDim;setInfo([`img ${source.naturalWidth}\\xd7${source.naturalHeight} r${naturalRatio.toFixed(3)}`,`frame ${cssW}\\xd7${cssH} → set h=${Math.round(cssW/naturalRatio)}`,`object ${Math.round(fit.width)}\\xd7${Math.round(fit.height)} at ${Math.round(fit.x)},${Math.round(fit.y)}`,`scale ${imageScale}%  x ${imageX}  y ${imageY}`,canvas?`dust css ${canvas.clientWidth}\\xd7${canvas.clientHeight} buf ${canvas.width}\\xd7${canvas.height}`:\"dust canvas MISSING\",`night ${n.toFixed(2)}`,`tint ${tintRGB.map(c=>(1+n*(c*k-1)).toFixed(2)).join(\"/\")}`].join(\"  \\xb7  \"));syncOverlaySize();if(activeRef.current)render();},[dustNightDim,imageScale,imageX,imageY,maxPoints,render,syncOverlaySize,tintRGB]);// --- The text's night value -------------------------------------------\n// §20.56: __deskLight is built in DeskLight's useEffect, so it may not\n// exist yet when this mounts. Guarding once fails closed and leaves the\n// copy in permanent day. Wait for it instead.\nReact.useEffect(()=>{if(!canAnimate)return;let raf=null;let unsubscribe=null;let alive=true;const attach=()=>{if(!alive)return;const s=window.__deskLight;if(!s||s.version!==STORE_VERSION){raf=requestAnimationFrame(attach);return;}raf=null;const paint=()=>{// Quantised: the grade eases over ~900ms and a raw float would\n// re-render this component on every one of those frames.\nconst v=Math.round((s.progress||0)*50)/50;setTextNight(prev=>prev===v?prev:v);};paint();unsubscribe=s.subscribe(paint);};attach();return()=>{alive=false;if(raf!==null)cancelAnimationFrame(raf);if(unsubscribe)unsubscribe();};},[canAnimate]);// --- Overlay canvas + WebGL -------------------------------------------\nReact.useEffect(()=>{if(!canAnimate)return;const canvas=document.createElement(\"canvas\");canvas.setAttribute(\"aria-hidden\",\"true\");canvas.setAttribute(\"data-vaporize-dust\",\"\");canvas.style.cssText=[\"position:fixed\",\"left:0\",\"top:0\",\"pointer-events:none\",\"opacity:0\",\"background:transparent\",`z-index:${Math.round(overlayZIndex)}`].join(\";\");document.body.appendChild(canvas);canvasRef.current=canvas;const gl=canvas.getContext(\"webgl2\",{alpha:true,premultipliedAlpha:true,antialias:false,depth:false,stencil:false});const fail=()=>{canvas.remove();canvasRef.current=null;};if(!gl){console.warn(\"[VaporizeImageGL] WebGL2 unavailable — static image only.\");fail();return;}const vs=compile(gl,gl.VERTEX_SHADER,VERT);const fs=compile(gl,gl.FRAGMENT_SHADER,FRAG);const program=vs&&fs?gl.createProgram():null;if(!vs||!fs||!program){fail();return;}gl.attachShader(program,vs);gl.attachShader(program,fs);gl.linkProgram(program);gl.deleteShader(vs);gl.deleteShader(fs);if(!gl.getProgramParameter(program,gl.LINK_STATUS)){console.warn(\"[VaporizeImageGL]\",gl.getProgramInfoLog(program));fail();return;}const names=[\"uTex\",\"uTexW\",\"uTexSize\",\"uSizeCss\",\"uViewport\",\"uOrigin\",\"uHomeScale\",\"uDpr\",\"uProgress\",\"uEntry\",\"uCursor\",\"uCursorActive\",\"uTime\",\"uSeed\",\"uTint\",\"uCluster\",\"uNoiseAmount\",\"uSoftness\",\"uSwirl\",\"uSpread\",\"uRise\",\"uTurbulence\",\"uPointSize\",\"uCursorForce\",\"uCursorRadius\"];const uniforms={};for(const name of names)uniforms[name]=gl.getUniformLocation(program,name);gl.disable(gl.DEPTH_TEST);gl.enable(gl.BLEND);gl.blendFunc(gl.ONE,gl.ONE_MINUS_SRC_ALPHA);glRef.current=gl;programRef.current=program;uniformsRef.current=uniforms;textureRef.current=gl.createTexture();vaoRef.current=gl.createVertexArray();startTimeRef.current=performance.now();dirtyRef.current=true;syncOverlaySize();const onViewport=()=>{syncOverlaySize();if(activeRef.current)render();};window.addEventListener(\"resize\",onViewport);window.addEventListener(\"scroll\",onViewport,{passive:true});return()=>{window.removeEventListener(\"resize\",onViewport);window.removeEventListener(\"scroll\",onViewport);gl.deleteProgram(program);if(textureRef.current)gl.deleteTexture(textureRef.current);if(vaoRef.current)gl.deleteVertexArray(vaoRef.current);glRef.current=null;programRef.current=null;canvas.remove();canvasRef.current=null;};// eslint-disable-next-line react-hooks/exhaustive-deps\n},[canAnimate,overlayZIndex,syncOverlaySize]);React.useEffect(()=>{const canvas=canvasRef.current;if(!canvas)return;canvas.style.outline=showDebug?\"2px solid rgba(255,0,0,0.9)\":\"none\";canvas.style.outlineOffset=\"-2px\";},[showDebug,info]);// --- Image load. CORS is required; no silent non-CORS retry ------------\nReact.useEffect(()=>{frameRef.current?.setAttribute(\"data-desk-loading\",\"pending\");const next=new Image;next.crossOrigin=\"anonymous\";next.decoding=\"async\";const onLoad=()=>{sourceRef.current=next;readyRef.current=true;dirtyRef.current=true;rebuild();};const onError=()=>{console.warn(\"[VaporizeImageGL] Image failed to load with CORS. The host must send \"+\"Access-Control-Allow-Origin.\",normalizedImage.src);readyRef.current=false;frameRef.current?.setAttribute(\"data-desk-loading\",\"error\");};next.addEventListener(\"load\",onLoad);next.addEventListener(\"error\",onError);next.src=normalizedImage.src;return()=>{next.removeEventListener(\"load\",onLoad);next.removeEventListener(\"error\",onError);};},[normalizedImage.src,rebuild]);React.useEffect(()=>{if(!canAnimate||!frameRef.current)return;const queue=()=>{dirtyRef.current=true;if(rebuildRafRef.current!==null)cancelAnimationFrame(rebuildRafRef.current);rebuildRafRef.current=requestAnimationFrame(()=>{rebuildRafRef.current=null;rebuild();});};const observer=new ResizeObserver(queue);observer.observe(frameRef.current);return()=>{observer.disconnect();if(rebuildRafRef.current!==null)cancelAnimationFrame(rebuildRafRef.current);};},[canAnimate,rebuild]);React.useEffect(()=>{return()=>{if(rafRef.current!==null)cancelAnimationFrame(rafRef.current);};},[]);// --- Pointer -----------------------------------------------------------\nconst readPointer=event=>{const native=event.nativeEvent;const{cssW,cssH}=geomRef.current;return{x:clamp(native.offsetX,0,cssW||1),y:clamp(native.offsetY,0,cssH||1)};};const isOnObject=(x,y)=>{if(!hitTestAlpha)return true;const map=alphaRef.current;const{cssW,cssH}=geomRef.current;if(!map||cssW<=0||cssH<=0)return true;const mx=clamp(Math.floor(x/cssW*map.w),0,map.w-1);const my=clamp(Math.floor(y/cssH*map.h),0,map.h-1);return map.data[my*map.w+mx]>12;};const engage=React.useCallback(point=>{cursorActiveRef.current=true;cursorRef.current=point;if(progressRef.current<=.02)entryRef.current=point;targetRef.current=1;render();setOverlayVisible(true);start();},[render,setOverlayVisible,start]);const disengage=React.useCallback(()=>{cursorActiveRef.current=false;if(!reverseOnLeave)return;targetRef.current=0;start();},[reverseOnLeave,start]);const handlePointerMove=React.useCallback(event=>{if(!canAnimate||!readyRef.current||!glRef.current)return;if(dirtyRef.current)rebuild();if(pointCountRef.current===0)return;const point=readPointer(event);const over=isOnObject(point.x,point.y);if(over&&!cursorActiveRef.current){engage(point);}else if(over){cursorRef.current=point;start();}else if(cursorActiveRef.current){disengage();}},[canAnimate,disengage,engage,rebuild,start]);const handlePointerLeave=React.useCallback(()=>{if(!canAnimate)return;disengage();},[canAnimate,disengage]);const showText=!!text&&text.trim().length>0;// Two identical layers, one per colour, cross-faded by the light store.\nconst textLayer=(color,layerOpacity,key)=>/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",zIndex:0,display:\"flex\",alignItems:\"center\",justifyContent:textAlign===\"left\"?\"flex-start\":textAlign===\"right\"?\"flex-end\":\"center\",textAlign:textAlign,padding:\"0 4%\",transform:`translate(${textOffsetX}%, ${textOffsetY}%)`,opacity:textOpacity*layerOpacity,pointerEvents:\"none\",fontFamily:FONTS[textFont]||FONTS.mono,fontSize:textSize,fontWeight:Number(textWeight),letterSpacing:textTracking+\"em\",lineHeight:textLine,color,whiteSpace:\"pre-wrap\",outline:showDebug?\"1px dashed rgba(0,229,255,0.9)\":\"none\"},children:text},key);return /*#__PURE__*/_jsxs(\"div\",{ref:frameRef,\"data-desk-loading\":canAnimate?\"pending\":undefined,role:\"img\",\"aria-label\":normalizedImage.alt||\"Vaporizing image\",onPointerMove:handlePointerMove,onPointerLeave:handlePointerLeave,style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",overflow:\"visible\",background:\"transparent\",userSelect:\"none\",WebkitUserSelect:\"none\",touchAction:\"manipulation\",outline:showDebug?\"1px dashed rgba(255,60,160,0.95)\":\"none\"},children:[showText?textLayer(textColor,1-textNight,\"day\"):null,showText&&textNight>0?textLayer(textColorNight,textNight,\"night\"):null,/*#__PURE__*/_jsx(\"img\",{ref:imgRef,src:normalizedImage.src,srcSet:normalizedImage.srcSet,alt:\"\",draggable:false,style:{display:\"block\",position:\"relative\",zIndex:1,width:\"100%\",height:\"100%\",objectFit:\"contain\",// Same numbers the composite uses, so the resting frame and\n// the dissolve cannot drift apart.\ntransform:`translate(${imageX}%, ${imageY}%) scale(${imageScale/100})`,transformOrigin:\"50% 50%\",pointerEvents:\"none\"}}),showDebug&&/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:0,top:\"100%\",marginTop:4,padding:\"3px 5px\",borderRadius:3,background:\"rgba(18,18,18,0.88)\",color:\"white\",font:\"600 10px/1.5 ui-monospace, SFMono-Regular, monospace\",whiteSpace:\"pre-wrap\",maxWidth:460,pointerEvents:\"none\",zIndex:5},children:info||\"loading…\"})]});}VaporizeImageGL.displayName=\"Vaporize Image GL\";addPropertyControls(VaporizeImageGL,{image:{type:ControlType.ResponsiveImage,title:\"Image\",description:\"Set the frame to this image's ratio and it fills edge to edge.\"},imageScale:{type:ControlType.Number,title:\"Image scale\",defaultValue:100,min:20,max:250,step:.5,unit:\"%\",description:\"Moves the artwork, the GPU texture and the hover area together.\"},imageX:{type:ControlType.Number,title:\"Image X\",defaultValue:0,min:-50,max:50,step:.25,unit:\"%\"},imageY:{type:ControlType.Number,title:\"Image Y\",defaultValue:0,min:-50,max:50,step:.25,unit:\"%\"},text:{type:ControlType.String,title:\"Text\",defaultValue:\"\",displayTextArea:true,description:\"Sits under the image permanently. Uncovered as it dissolves.\"},textFont:{type:ControlType.Enum,title:\"Font\",options:[\"mono\",\"pixel\",\"sans\"],optionTitles:[\"Geist Mono\",\"Geist Pixel\",\"Geist Sans\"],defaultValue:\"mono\",hidden:({text})=>!text},textSize:{type:ControlType.Number,title:\"Size\",defaultValue:28,min:6,max:200,step:1,unit:\"px\",hidden:({text})=>!text},textWeight:{type:ControlType.Enum,title:\"Weight\",options:[\"300\",\"400\",\"500\",\"600\",\"700\",\"800\"],optionTitles:[\"Light\",\"Regular\",\"Medium\",\"Semibold\",\"Bold\",\"Black\"],defaultValue:\"500\",hidden:({text})=>!text},textColor:{type:ControlType.Color,title:\"Colour day\",defaultValue:\"#D0FF00\",hidden:({text})=>!text},textColorNight:{type:ControlType.Color,title:\"Colour night\",defaultValue:\"#E6EEF6\",description:\"Crossfades with the day colour on the lamp press.\",hidden:({text})=>!text},textOpacity:{type:ControlType.Number,title:\"Text opacity\",defaultValue:1,min:0,max:1,step:.05,hidden:({text})=>!text},textTracking:{type:ControlType.Number,title:\"Tracking\",defaultValue:0,min:-.15,max:.8,step:.01,unit:\"em\",hidden:({text})=>!text},textLine:{type:ControlType.Number,title:\"Line height\",defaultValue:1.3,min:.8,max:3,step:.05,unit:\"em\",hidden:({text})=>!text},textAlign:{type:ControlType.Enum,title:\"Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Centre\",\"Right\"],defaultValue:\"center\",displaySegmentedControl:true,hidden:({text})=>!text},textOffsetX:{type:ControlType.Number,title:\"Nudge X\",defaultValue:0,min:-60,max:60,step:.5,unit:\"%\",hidden:({text})=>!text},textOffsetY:{type:ControlType.Number,title:\"Nudge Y\",defaultValue:0,min:-60,max:60,step:.5,unit:\"%\",hidden:({text})=>!text},hitTestAlpha:{type:ControlType.Boolean,title:\"Hover Area\",defaultValue:true,enabledTitle:\"Object\",disabledTitle:\"Whole Box\",description:\"Object: only the visible pixels react. Empty frame does nothing.\"},showDebug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Outlines the frame, the text box and the dust canvas, and prints all sizes.\"},duration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.4,min:.2,max:6,step:.05,unit:\"s\"},reverseOnLeave:{type:ControlType.Boolean,title:\"Reverse\",defaultValue:true,enabledTitle:\"On Leave\",disabledTitle:\"Off\"},reverseDuration:{type:ControlType.Number,title:\"Reverse Time\",defaultValue:1,min:.15,max:6,step:.05,unit:\"s\",hidden:({reverseOnLeave})=>!reverseOnLeave},clusterSize:{type:ControlType.Number,title:\"Tear Scale\",defaultValue:90,min:8,max:400,step:1,unit:\"px\"},noiseAmount:{type:ControlType.Number,title:\"Tear Amount\",defaultValue:.42,min:0,max:1.2,step:.01},softness:{type:ControlType.Number,title:\"Edge Softness\",defaultValue:.16,min:.004,max:.6,step:.004},swirlScale:{type:ControlType.Number,title:\"Swirl Scale\",defaultValue:130,min:12,max:500,step:1,unit:\"px\"},spread:{type:ControlType.Number,title:\"Spread\",defaultValue:90,min:0,max:600,step:1,unit:\"px\"},rise:{type:ControlType.Number,title:\"Rise\",defaultValue:70,min:-200,max:600,step:1,unit:\"px\"},turbulence:{type:ControlType.Number,title:\"Turbulence\",defaultValue:34,min:0,max:200,step:1,unit:\"px\"},particleSize:{type:ControlType.Number,title:\"Dust Size\",defaultValue:2.2,min:1,max:10,step:.1,unit:\"px\"},cursorForce:{type:ControlType.Number,title:\"Cursor Push\",defaultValue:46,min:0,max:300,step:1,unit:\"px\"},cursorRadius:{type:ControlType.Number,title:\"Cursor Radius\",defaultValue:150,min:20,max:500,step:1,unit:\"px\"},dustNightTint:{type:ControlType.Color,title:\"Dust night tint\",defaultValue:\"#FFFFFF\",description:\"Set to the Ambience night tint. White = brightness dim only, no hue match.\"},dustNightDim:{type:ControlType.Number,title:\"Dust night dim\",defaultValue:.62,min:0,max:.95,step:.02,description:\"Extra darkening on top of the tint. Drop this as the tint darkens.\"},overlayZIndex:{type:ControlType.Number,title:\"Dust Layer\",defaultValue:2147483e3,min:0,max:2147483e3,step:1e3},maxPoints:{type:ControlType.Number,title:\"Point Budget\",defaultValue:24e5,min:5e4,max:4e6,step:5e4},seed:{type:ControlType.Number,title:\"Seed\",defaultValue:7,min:1,max:999,step:1,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"VaporizeImageGL\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"600\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./VaporizeImageGL.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useState,useSyncExternalStore}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * Watch.tsx — the digital watch, showing the REAL time in Portugal. v4.\n *\n * Europe/Lisbon via Intl, so DST is handled by the browser and never by us.\n * It reads the visitor's clock, not a server, which is correct: it is João's\n * local time and it is right whatever timezone you are looking from.\n *\n * ════════════════════════════════════════════════════════════════════════\n * v4 — THE NIGHT SCREEN\n * ════════════════════════════════════════════════════════════════════════\n *\n * WHY THE OLD GLOW DID ALMOST NOTHING. It was ONE `text-shadow` at\n * `blur = glow x 6px` in a HARDCODED colour — `rgba(185,190,147,...)` —\n * which ignored `Digits colour` entirely. At the watch's real size on the\n * desk, 6px of blur at half alpha is a fraction of a digit stroke. It was\n * working; there was just nothing there to see.\n *\n * WHAT REPLACES IT: a three-stop bloom, the way an emissive thing actually\n * falls off — a tight core, a mid halo, a wide wash — with its own colour and\n * its own radius, both crossfading day to night.\n *\n *     core   0.6x radius, full alpha      the segment itself\n *     halo   2.2x radius, 0.55 alpha      the glass in front of it\n *     wash   6.0x radius, 0.22 alpha      the case around it\n *\n * `Glow radius` is in % OF THE WATCH'S WIDTH, not pixels, so it survives\n * `Scale` — the same reason `Digits` is in `cqw` (§20.44).\n *\n * NEW, all day/night pairs:\n *\n *   Digits colour / Digits night     the LCD ink. A real backlit LCD shifts\n *                                    warmer and brighter when lit.\n *   Glow colour / Glow night         defaults to following the digits.\n *   Glow day / Glow night            strength, as before.\n *   Glow radius                      how far it reaches. This is the one\n *                                    that was missing.\n *   LCD fill / LCD fill night        the covered panel darkens at night.\n *   Backlight                        a soft pool BEHIND the digits, inside\n *                                    the screen box, `screen` blended. This\n *                                    is what makes it read as lit rather\n *                                    than as pale text.\n *\n * Every one of these crossfades on `progress`, not `isNight` — a screen\n * warming up is a grade, not a switch (§6.3).\n *\n * ── v3 FIXES ──\n *\n * 1. `Scale` ABOVE 100% DID NOTHING. The artwork wrapper is a flex item with\n *    an explicit `width: N%`, and `flex-shrink: 1` let the row shrink it back\n *    to fit. Anything at or below 100% looked correct, which is why it read\n *    as \"the prop is ignored\" rather than as a layout bug. `flexShrink: 0`.\n *\n * 2. `Digits` and `Screen H` RENAMED. Both were tuned while `cqw` was inert\n *    (§20.44) and the saved values survived the fix (§20.5). Renaming is the\n *    documented way to force a stale saved value out.\n *\n * 3. `containerType` is CAST. React's CSSProperties has no entry for it.\n *\n * ── THE SCREEN IS TYPESET, NOT RENDERED (§7) ──\n *\n *   Cover ON   (default, current asset) — a flat LCD-coloured rectangle over\n *              the baked digits, live time on top.\n *   Cover OFF  (correct) — for a re-render with an EMPTY dark screen.\n *\n * Screen geometry is props because it was read off a screenshot, not measured\n * on the delivered file (§20.33). Re-measure if the watch is re-rendered.\n *\n * ── NOT INTERACTIVE ──\n *\n * It does NOT block the canvas drag (§2.1) — pressing it and dragging pans\n * the desk. Nothing here has a pointer handler at all.\n */const STORE_VERSION=1;const FONTS={pixel:\"'Geist Pixel', ui-monospace, monospace\",mono:\"'Geist Mono', ui-monospace, 'SF Mono', monospace\",system:\"ui-monospace, 'SF Mono', Menlo, monospace\"};function useNight(){const s=typeof window!==\"undefined\"?window.__deskLight:null;const ok=s&&s.version===STORE_VERSION;return useSyncExternalStore(ok?s.subscribe:()=>()=>{},ok?s.get:()=>0,()=>0);}function mix(a,b,t){return a+(b-a)*t;}function hexToRgb(hex){if(!hex)return[185,190,147];const s=hex.trim();if(s.indexOf(\"rgb\")===0){const m=s.match(/(\\d+)[^\\d]+(\\d+)[^\\d]+(\\d+)/);if(m)return[+m[1],+m[2],+m[3]];return[185,190,147];}let h=s.replace(\"#\",\"\");if(h.length===3)h=h[0]+h[0]+h[1]+h[1]+h[2]+h[2];const n=parseInt(h.slice(0,6),16);if(isNaN(n))return[185,190,147];return[n>>16&255,n>>8&255,n&255];}// Crossfade two colours in RGB. Good enough for two nearby LCD greens; a\n// perceptual space would be overkill for a 40px screen.\nfunction mixHex(a,b,t){const A=hexToRgb(a);const B=hexToRgb(b);return\"rgb(\"+Math.round(mix(A[0],B[0],t))+\",\"+Math.round(mix(A[1],B[1],t))+\",\"+Math.round(mix(A[2],B[2],t))+\")\";}function rgbaOf(hex,alpha){const c=hexToRgb(hex);return\"rgba(\"+c[0]+\",\"+c[1]+\",\"+c[2]+\",\"+alpha.toFixed(3)+\")\";}function mixRgba(a,b,t,alpha){const A=hexToRgb(a);const B=hexToRgb(b);return\"rgba(\"+Math.round(mix(A[0],B[0],t))+\",\"+Math.round(mix(A[1],B[1],t))+\",\"+Math.round(mix(A[2],B[2],t))+\",\"+alpha.toFixed(3)+\")\";}// Intl does the timezone AND the DST. Never compute an offset by hand.\nfunction lisbonParts(){const now=new Date;try{const f=new Intl.DateTimeFormat(\"en-GB\",{timeZone:\"Europe/Lisbon\",hour:\"2-digit\",minute:\"2-digit\",second:\"2-digit\",hour12:false});const p={};for(const part of f.formatToParts(now))p[part.type]=part.value;return{h:p.hour||\"00\",m:p.minute||\"00\",s:p.second||\"00\"};}catch(e){const pad=n=>String(n).padStart(2,\"0\");return{h:pad(now.getHours()),m:pad(now.getMinutes()),s:pad(now.getSeconds())};}}/**\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 381\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function Watch(props){const{src,scale=100,align=\"center\",cover=true,coverColor=\"#22231C\",coverNight=\"#141610\",screenX=45.5,screenY=46.5,screenW=27,screenBoxH=7.5,digitPct=5.4,digitsColor=\"#B9BE93\",digitsNight=\"#D8FFA8\",secondsSize=.62,fontFace=\"pixel\",fontWeight=\"700\",tracking=0,showSeconds=true,blinkColon=true,glow=.35,nightGlow=1,glowRadius=1.6,glowColor=\"#B9BE93\",glowNight=\"#CDFF7A\",glowFollows=true,backlight=0,backlightNight=.55,lightMode=\"auto\",debug=false,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const live=useNight();const night=lightMode===\"night\"?1:lightMode===\"day\"?0:live;const[t,setT]=useState(()=>lisbonParts());useEffect(()=>{if(isCanvas)return;let id=null;let stop=false;const tick=()=>{if(stop)return;setT(lisbonParts());// Re-align to the next wall-clock second instead of drifting.\nconst ms=1e3-Date.now()%1e3;id=setTimeout(tick,ms+5);};tick();return()=>{stop=true;if(id)clearTimeout(id);};},[isCanvas]);if(!src){return /*#__PURE__*/_jsx(\"div\",{style:{...style,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",background:\"rgba(0,0,0,0.04)\",border:\"1px dashed rgba(0,0,0,0.2)\",borderRadius:4,color:\"rgba(0,0,0,0.45)\",font:\"500 12px/1.3 sans-serif\",padding:8,textAlign:\"center\"},children:\"Watch — assign the Image property\"});}// The colon holds its width whether it is lit or not, so nothing shifts\n// on the beat. A real LCD turns the segment off; it does not reflow.\nconst colonLit=!blinkColon||Number(t.s)%2===0;const ink=mixHex(digitsColor,digitsNight,night);const glowA=glowFollows?digitsColor:glowColor;const glowB=glowFollows?digitsNight:glowNight;const g=mix(glow,nightGlow,night);// In % of the WATCH's own width, so it survives Scale — pixels would not.\nconst r=glowRadius;// Three stops: core, halo, wash. One shadow cannot fall off like light.\nconst textShadow=g>.01?[\"0 0 \"+(r*.6*g).toFixed(2)+\"cqw \"+mixRgba(glowA,glowB,night,Math.min(1,g*.9)),\"0 0 \"+(r*2.2*g).toFixed(2)+\"cqw \"+mixRgba(glowA,glowB,night,Math.min(1,g*.55)),\"0 0 \"+(r*6*g).toFixed(2)+\"cqw \"+mixRgba(glowA,glowB,night,Math.min(1,g*.22))].join(\", \"):\"none\";const family=FONTS[fontFace]||FONTS.pixel;const digitStyle={fontFamily:family,fontWeight:Number(fontWeight),letterSpacing:tracking+\"em\",color:ink,textShadow,lineHeight:1,fontVariantNumeric:\"tabular-nums\",whiteSpace:\"nowrap\",position:\"relative\",zIndex:1};const bl=mix(backlight,backlightNight,night);// containerType is real CSS with no entry in React's type table.\nconst wrapStyle={position:\"relative\",width:scale+\"%\",flexShrink:0,flexGrow:0,containerType:\"inline-size\"};return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",width:\"100%\",height:\"100%\",display:\"flex\",alignItems:align===\"top\"?\"flex-start\":align===\"bottom\"?\"flex-end\":\"center\",justifyContent:\"center\",overflow:\"visible\",lineHeight:0,background:\"transparent\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:wrapStyle,children:[/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"Digital watch\",draggable:false,style:{display:\"block\",position:\"relative\",width:\"100%\",height:\"auto\",userSelect:\"none\",pointerEvents:\"none\"}}),/*#__PURE__*/_jsxs(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",left:screenX+\"%\",top:screenY+\"%\",width:screenW+\"%\",height:screenBoxH+\"%\",transform:\"translate(-50%,-50%)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:\"0.35em\",background:cover?mixHex(coverColor,coverNight,night):\"transparent\",borderRadius:cover?\"2px\":0,pointerEvents:\"none\",outline:debug?\"1px solid #FF00AA\":\"none\"},children:[bl>.01?/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",inset:\"-10%\",zIndex:0,borderRadius:\"50%\",mixBlendMode:\"screen\",opacity:Math.min(1,bl),background:\"radial-gradient(ellipse at 50% 55%, \"+mixRgba(glowA,glowB,night,.55)+\" 0%, \"+mixRgba(glowA,glowB,night,.22)+\" 45%, \"+rgbaOf(\"#000000\",0)+\" 78%)\",filter:\"blur(1.4cqw)\"}}):null,/*#__PURE__*/_jsxs(\"span\",{style:{...digitStyle,fontSize:digitPct+\"cqw\"},children:[t.h,/*#__PURE__*/_jsx(\"span\",{style:{opacity:colonLit?1:0},children:\":\"}),t.m]}),showSeconds?/*#__PURE__*/_jsx(\"span\",{style:{...digitStyle,fontSize:digitPct*secondsSize+\"cqw\",alignSelf:\"flex-end\",paddingBottom:\"0.12em\"},children:t.s}):null]})]}),debug?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,top:\"100%\",marginTop:6,padding:\"4px 8px\",background:\"#000\",color:\"#D0FF00\",font:\"500 10px/1.4 ui-monospace, monospace\",whiteSpace:\"pre\",pointerEvents:\"none\",zIndex:10},children:`target ${isCanvas?\"CANVAS (clock paused)\":\"preview\"}\nLisbon ${t.h}:${t.m}:${t.s}\nscale  ${scale}%   digit ${digitPct}cqw\nlight  ${lightMode} -> ${night.toFixed(2)}\nink    ${ink}\nglow   ${g.toFixed(2)}  radius ${(r*6*g).toFixed(2)}cqw outer\nback   ${bl.toFixed(2)}`}):null]});}Watch.displayName=\"Watch\";addPropertyControls(Watch,{src:{type:ControlType.Image,title:\"Image\"},lightMode:{type:ControlType.Enum,title:\"Preview\",options:[\"auto\",\"day\",\"night\"],optionTitles:[\"Live\",\"Day\",\"Night\"],defaultValue:\"auto\",displaySegmentedControl:true,description:\"the canvas has no store — use this to tune night\"},scale:{type:ControlType.Number,title:\"Scale\",description:\"size of the watch inside its frame\",defaultValue:100,min:10,max:400,step:1,unit:\"%\"},align:{type:ControlType.Enum,title:\"Align\",options:[\"top\",\"center\",\"bottom\"],optionTitles:[\"Top\",\"Centre\",\"Bottom\"],defaultValue:\"center\",displaySegmentedControl:true},cover:{type:ControlType.Boolean,title:\"Cover LCD\",description:\"ON for the current render — the digits are baked in. OFF once the screen is re-rendered empty.\",defaultValue:true},coverColor:{type:ControlType.Color,title:\"LCD fill\",defaultValue:\"#22231C\",hidden:p=>!p.cover},coverNight:{type:ControlType.Color,title:\"LCD fill night\",description:\"the panel itself darkens once the room does\",defaultValue:\"#141610\",hidden:p=>!p.cover},screenX:{type:ControlType.Number,title:\"Screen X\",defaultValue:45.5,min:0,max:100,step:.1,unit:\"%\"},screenY:{type:ControlType.Number,title:\"Screen Y\",defaultValue:46.5,min:0,max:100,step:.1,unit:\"%\"},screenW:{type:ControlType.Number,title:\"Screen W\",defaultValue:27,min:1,max:100,step:.1,unit:\"%\"},screenBoxH:{type:ControlType.Number,title:\"Screen H\",description:\"renamed in v3 to drop the stale 0.5 saved on the instance\",defaultValue:7.5,min:.5,max:100,step:.1,unit:\"%\"},digitPct:{type:ControlType.Number,title:\"Digits\",description:\"% of the watch's own width, so it survives any scale\",defaultValue:5.4,min:.5,max:30,step:.1},secondsSize:{type:ControlType.Number,title:\"Seconds size\",description:\"relative to the main digits\",defaultValue:.62,min:.2,max:1,step:.01},digitsColor:{type:ControlType.Color,title:\"Digits colour\",defaultValue:\"#B9BE93\"},digitsNight:{type:ControlType.Color,title:\"Digits night\",description:\"a backlit LCD goes brighter and cooler-green when lit\",defaultValue:\"#D8FFA8\"},fontFace:{type:ControlType.Enum,title:\"Font\",options:[\"pixel\",\"mono\",\"system\"],optionTitles:[\"Geist Pixel\",\"Geist Mono\",\"System mono\"],defaultValue:\"pixel\"},fontWeight:{type:ControlType.Enum,title:\"Weight\",options:[\"400\",\"500\",\"600\",\"700\",\"800\"],optionTitles:[\"Regular\",\"Medium\",\"Semibold\",\"Bold\",\"Black\"],defaultValue:\"700\"},tracking:{type:ControlType.Number,title:\"Tracking\",defaultValue:0,min:-.2,max:.6,step:.01,unit:\"em\"},showSeconds:{type:ControlType.Boolean,title:\"Show seconds\",defaultValue:true},blinkColon:{type:ControlType.Boolean,title:\"Blink colon\",description:\"one second on, one second off — like a real LCD\",defaultValue:true},glow:{type:ControlType.Number,title:\"Glow day\",defaultValue:.35,min:0,max:2,step:.05},nightGlow:{type:ControlType.Number,title:\"Glow night\",defaultValue:1,min:0,max:3,step:.05},glowRadius:{type:ControlType.Number,title:\"Glow radius\",description:\"% of the watch's width. THIS is the one that was missing — the old glow was 6px and invisible at desk scale.\",defaultValue:1.6,min:0,max:12,step:.05},glowFollows:{type:ControlType.Boolean,title:\"Glow = digits\",description:\"off to give the bloom its own colour\",defaultValue:true,enabledTitle:\"Follow\",disabledTitle:\"Custom\"},glowColor:{type:ControlType.Color,title:\"Glow colour\",defaultValue:\"#B9BE93\",hidden:p=>p.glowFollows},glowNight:{type:ControlType.Color,title:\"Glow night\",defaultValue:\"#CDFF7A\",hidden:p=>p.glowFollows},backlight:{type:ControlType.Number,title:\"Backlight day\",description:\"a pool BEHIND the digits, screen-blended. This is what makes the panel read as lit rather than pale.\",defaultValue:0,min:0,max:1,step:.01},backlightNight:{type:ControlType.Number,title:\"Backlight night\",defaultValue:.55,min:0,max:1,step:.01},debug:{type:ControlType.Boolean,title:\"Debug\",defaultValue:false}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Watch\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicHeight\":\"381\",\"framerIntrinsicWidth\":\"200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Watch.map","// Generated by Framer (a1faaee)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;PP Neue Montreal Bold\",\"CUSTOMV2;PP Neue Montreal Bold Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Bold\",source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/Bktf1XlGHU3P9GuKlHnVHDFZyBQ.woff2\",weight:\"700\"},{cssFamilyName:\"PP Neue Montreal Bold Italic\",source:\"custom\",style:\"italic\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/NqofpUDol8dZlRupwCGg5UzzY.woff2\",weight:\"700\"}]}];export const css=[\".framer-epmRL .framer-styles-preset-1q43dbh:not(.rich-text-wrapper), .framer-epmRL .framer-styles-preset-1q43dbh.rich-text-wrapper h1 { --framer-font-family: \\\"PP Neue Montreal Bold\\\", \\\"PP Neue Montreal Bold Placeholder\\\", sans-serif; --framer-font-family-italic: \\\"PP Neue Montreal Bold Italic\\\", \\\"PP Neue Montreal Bold Italic Placeholder\\\", sans-serif; --framer-font-open-type-features: 'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 4); --framer-font-style: normal; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 700; --framer-font-weight-italic: 700; --framer-letter-spacing: -0.03em; --framer-line-height: 1em; --framer-paragraph-spacing: 0px; --framer-text-alignment: left; --framer-text-color: var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, #181818); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }\"];export const className=\"framer-epmRL\";\nexport const __FramerMetadata__ = {\"exports\":{\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0e6a859)\nimport{fontStore}from\"framer\";fontStore.loadFonts([\"CUSTOMV2;PP Neue Montreal Regular\",\"CUSTOMV2;PP Neue Montreal Bold\",\"CUSTOMV2;PP Neue Montreal Bold Italic\",\"CUSTOMV2;PP Neue Montreal Italic\"]);export const fonts=[{explicitInter:true,fonts:[{cssFamilyName:\"PP Neue Montreal Regular\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/3gm4DsZ7u2KhLZZCBZesuW1ClMw.woff2\",weight:\"400\"},{cssFamilyName:\"PP Neue Montreal Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/eiALb3Ac2OPorMgJIBVNZMBzpg.woff2\",weight:\"700\"},{cssFamilyName:\"PP Neue Montreal Bold Italic\",openType:true,source:\"custom\",style:\"italic\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/tkCsaaCXDwIfIe5P7I9Rkgy0rW4.woff2\",weight:\"700\"},{cssFamilyName:\"PP Neue Montreal Italic\",openType:true,source:\"custom\",style:\"italic\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/owNkf1R9jU7u0EwUBB4RFfwfXc.woff2\",weight:\"400\"}]}];export const css=['.framer-U8MGI .framer-styles-preset-5la5l8:not(.rich-text-wrapper), .framer-U8MGI .framer-styles-preset-5la5l8.rich-text-wrapper p { --framer-font-family: \"PP Neue Montreal Regular\", \"PP Neue Montreal Regular Placeholder\", sans-serif; --framer-font-family-bold: \"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif; --framer-font-family-bold-italic: \"PP Neue Montreal Bold Italic\", \"PP Neue Montreal Bold Italic Placeholder\", sans-serif; --framer-font-family-italic: \"PP Neue Montreal Italic\", \"PP Neue Montreal Italic Placeholder\", sans-serif; --framer-font-open-type-features: \\'blwf\\' on, \\'cv03\\' on, \\'cv04\\' on, \\'cv09\\' on, \\'cv11\\' on; --framer-font-size: calc(var(--framer-root-font-size, 1rem) * 1); --framer-font-style: normal; --framer-font-style-bold: normal; --framer-font-style-bold-italic: italic; --framer-font-style-italic: italic; --framer-font-variation-axes: normal; --framer-font-weight: 400; --framer-font-weight-bold: 700; --framer-font-weight-bold-italic: 700; --framer-font-weight-italic: 400; --framer-letter-spacing: -0.02em; --framer-line-height: 1.6em; --framer-paragraph-spacing: 20px; --framer-text-alignment: left; --framer-text-color: var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, #181818); --framer-text-decoration: none; --framer-text-stroke-color: initial; --framer-text-stroke-width: initial; --framer-text-transform: none; }'];export const className=\"framer-U8MGI\";\nexport const __FramerMetadata__ = {\"exports\":{\"css\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"className\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fonts\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (ddc5e5f)\nexport default function metadata(params,activeLocale){return{description:\"Product and web designer based in Porto. Fifteen years building interfaces people don't need a manual for. Not really a portfolio. More of a desk you can mess with.\",favicon:\"https://framerusercontent.com/assets/T9Or5ziyEnaMyvMyOBQti5Y9Q.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/qCcOVeQChEs809HhG8Mc6orcNN4.png\",title:\"Jo\\xe3o Teixeira — Product & Web Designer\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (99770fa)\nimport siteMetadata from\"#framer/local/siteMetadata/siteMetadata/siteMetadata.js\";export default function metadata(params,activeLocale){return{breakpoints:[{hash:\"72rtr7\",mediaQuery:\"(min-width: 1440px)\"},{hash:\"188tvpu\",mediaQuery:\"(min-width: 810px) and (max-width: 1439.98px)\"},{hash:\"1510isg\",mediaQuery:\"(max-width: 809.98px)\"}],description:siteMetadata(params,activeLocale).description,elements:{zdQcWU85s:\"container\"},robots:\"max-image-preview:large\",serializationId:\"framer-IRAS4\",title:siteMetadata(params,activeLocale).title||\"Home\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (99770fa)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,forwardLoader,GeneratedComponentContext,getFonts,getFontsFromSharedStyle,getLoadingLazyAtYPosition,Image as Image1,Link,PropertyOverrides,RichText,runTasksWithYield,SVG,useComponentViewport,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,useMetadata,useRouteElementId,withCodeBoundaryForOverrides,withCSS,withFX}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import RivePlayer_vX from\"https://framerusercontent.com/modules/FYhRUfK47x1b4scDC0wi/ldRgwsJeGArd2bf0gWfV/RivePlayer_vX.js\";import StickerPeeling from\"https://framerusercontent.com/modules/vrPzkqvimRd4wsTD6LxB/ATOQMEYyoBdJLNx7e6fj/Sticker_prod.js\";import Case_Nebularis from\"#framer/local/canvasComponent/bg2TieKfw/bg2TieKfw.js\";import Polaroid from\"#framer/local/canvasComponent/CN54g_ttF/CN54g_ttF.js\";import Portefolio_V2 from\"#framer/local/canvasComponent/E1OqLRJyc/E1OqLRJyc.js\";import Case_Streva from\"#framer/local/canvasComponent/EKP6NpKo4/EKP6NpKo4.js\";import Case_Lausanne from\"#framer/local/canvasComponent/FM4N8dqRT/FM4N8dqRT.js\";import Eyebrow from\"#framer/local/canvasComponent/OzNKd05yb/OzNKd05yb.js\";import About from\"#framer/local/canvasComponent/RzNEenUYo/RzNEenUYo.js\";import Navbar from\"#framer/local/canvasComponent/T43_9icFM/T43_9icFM.js\";import EasterEgg from\"#framer/local/canvasComponent/V_54WsRbm/V_54WsRbm.js\";import Ambience from\"#framer/local/codeFile/V3FbFo9/Ambience.js\";import BlankZone from\"#framer/local/codeFile/wEbfb5h/BlankZone.js\";import BumperPlate from\"#framer/local/codeFile/TAuWyyN/BumperPlate.js\";import CRTTV from\"#framer/local/codeFile/wux0lP1/CRTTV.js\";import CursorTip from\"#framer/local/codeFile/GzUDcoN/CursorTip.js\";import{withReadableDeskCopy}from\"#framer/local/codeFile/XYnmiii/DeskCopy.js\";import DeskGridLoader from\"#framer/local/codeFile/BHQvlj1/DeskGridLoader.js\";import DeskLight from\"#framer/local/codeFile/Psv5QU_/DeskLight.js\";import DeskWindow from\"#framer/local/codeFile/eT2lkxe/DeskWindow.js\";import GameBoyCompanion from\"#framer/local/codeFile/ZrFYjaM/GameBoyCompanion.js\";import Lamp from\"#framer/local/codeFile/gl4Gti2/Lamp.js\";import ManifestoWindow from\"#framer/local/codeFile/uxNfQzW/ManifestoWindow.js\";import MobileNotice from\"#framer/local/codeFile/jh9vRda/MobileNotice.js\";import{withOpenManifesto}from\"#framer/local/codeFile/o8AFqYd/OpenManifesto.js\";import{withPlantNight}from\"#framer/local/codeFile/BWmV0cM/PlantNight.js\";import Turntable from\"#framer/local/codeFile/R4MPWRJ/Turntable.js\";import VaporizeImageGL from\"#framer/local/codeFile/xHMN2cd/VaporizeImageGL.js\";import Watch from\"#framer/local/codeFile/KNGUL6J/Watch.js\";import*as sharedStyle from\"#framer/local/css/rVui4dYUr/rVui4dYUr.js\";import*as sharedStyle1 from\"#framer/local/css/UN9fN7mvA/UN9fN7mvA.js\";import metadataProvider from\"#framer/local/webPageMetadata/augiA20Il/augiA20Il.js\";const DeskGridLoaderFonts=getFonts(DeskGridLoader);const DeskLightFonts=getFonts(DeskLight);const NavbarFonts=getFonts(Navbar);const ManifestoWindowFonts=getFonts(ManifestoWindow);const CursorTipFonts=getFonts(CursorTip);const AmbienceFonts=getFonts(Ambience);const EyebrowFonts=getFonts(Eyebrow);const RichTextWithReadableDeskCopy5jn9kw=withCodeBoundaryForOverrides(RichText,{nodeId:\"D0CBTgtAq\",override:withReadableDeskCopy,scopeId:\"augiA20Il\"});const BlankZoneFonts=getFonts(BlankZone);const Portefolio_V2Fonts=getFonts(Portefolio_V2);const TurntableFonts=getFonts(Turntable);const BumperPlateFonts=getFonts(BumperPlate);const GameBoyCompanionFonts=getFonts(GameBoyCompanion);const VaporizeImageGLFonts=getFonts(VaporizeImageGL);const Image1WithOpenManifestoeis5ak=withCodeBoundaryForOverrides(Image1,{nodeId:\"TISfUyO8T\",override:withOpenManifesto,scopeId:\"augiA20Il\"});const CRTTVFonts=getFonts(CRTTV);const WatchFonts=getFonts(Watch);const LampFonts=getFonts(Lamp);const PolaroidFonts=getFonts(Polaroid);const RivePlayer_vXFonts=getFonts(RivePlayer_vX);const RivePlayer_vXWithPlantNight1nhkwlu=withCodeBoundaryForOverrides(RivePlayer_vX,{nodeId:\"hwYyeBTnn\",override:withPlantNight,scopeId:\"augiA20Il\"});const AboutFonts=getFonts(About);const DeskWindowFonts=getFonts(DeskWindow);const Case_LausanneFonts=getFonts(Case_Lausanne);const Case_StrevaFonts=getFonts(Case_Streva);const Case_NebularisFonts=getFonts(Case_Nebularis);const StickerPeelingFonts=getFonts(StickerPeeling);const MobileNoticeFonts=getFonts(MobileNotice);const MotionDivWithFX=withFX(motion.div);const EasterEggFonts=getFonts(EasterEgg);const breakpoints={nhUOQ5KpC:\"(max-width: 809.98px)\",PSXe8aWmM:\"(min-width: 810px) and (max-width: 1439.98px)\",WQLkyLRf1:\"(min-width: 1440px)\"};const isBrowser=()=>typeof document!==\"undefined\";export const queryParamNames=[];const serializationHash=\"framer-IRAS4\";const variantClassNames={nhUOQ5KpC:\"framer-v-1510isg\",PSXe8aWmM:\"framer-v-188tvpu\",WQLkyLRf1:\"framer-v-72rtr7\"};const getRootLayoutProp=(hasLayoutTemplate,hasInheritedFlowEffect,fallback)=>{if(!hasLayoutTemplate)return fallback;return hasInheritedFlowEffect?\"position\":fallback;};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const inertia={bounceDamping:30,bounceStiffness:400,delay:0,type:\"inertia\"};const preventDefault=e=>e.preventDefault();const animation={cursor:\"grabbing\"};const addImageAlt=(image,alt)=>{if(!image||typeof image!==\"object\"){return;}return{...image,alt};};const transformTemplate1=(_,t)=>`translateX(-50%) ${t}`;const transformTemplate2=(_,t)=>`translateY(-50%) ${t}`;const humanReadableVariantMap={Desktop:\"WQLkyLRf1\",Phone:\"nhUOQ5KpC\",Tablet:\"PSXe8aWmM\"};const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"WQLkyLRf1\"};};const transition1={damping:60,delay:0,mass:1,stiffness:500,type:\"spring\"};const cursor={alignment:\"start\",component:EasterEgg,offset:{x:20,y:10},placement:\"bottom\",transition:transition1,variant:\"MTM1ic1Fz\"};const cursor1={alignment:\"start\",component:EasterEgg,offset:{x:22,y:20},placement:\"bottom\",transition:transition1,variant:\"cN9Be69yv\"};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const metadata=React.useMemo(()=>metadataProvider({},activeLocale),[activeLocale]);useMetadata(metadata);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[sharedStyle.className,sharedStyle1.className];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);const hasLayoutTemplate=React.useContext(GeneratedComponentContext)?.isLayoutTemplate;const hasInheritedFlowEffect=Boolean(React.useContext(MotionConfigContext)?.transition?.layout);const motionLayout=getRootLayoutProp(hasLayoutTemplate,hasInheritedFlowEffect);const elementId=useRouteElementId(\"zdQcWU85s\");const ref1=React.useRef(null);useCustomCursors({\"1h4x2wg\":cursor1,kd4bbx:cursor,m6ka04:{...cursor,variant:\"SmNSQf9Un\"}});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{activeVariantId:baseVariant,humanReadableVariantMap,primaryVariantId:\"WQLkyLRf1\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??defaultLayoutId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\"html body { background: rgb(255, 255, 255); }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-72rtr7\",className),\"data-framer-cursor\":\"kd4bbx\",ref:refBinding,style:{...style},children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-142iip3-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,layout:motionLayout,layoutScroll:true,nodeId:\"SVxLbNx3z\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(DeskGridLoader,{accent:\"rgb(114, 123, 128)\",height:\"100%\",id:\"SVxLbNx3z\",ink:\"rgb(24, 24, 24)\",label:\"Preparing your desk\",layoutId:\"SVxLbNx3z\",maxWait:12,minDuration:3.55,paper:\"rgb(247, 250, 252)\",revealDuration:1.35,style:{height:\"100%\",width:\"100%\"},tileSize:60,width:\"100%\"})})}),/*#__PURE__*/_jsxs(motion.div,{className:\"framer-8z057v\",\"data-framer-name\":\"Main\",id:elementId,layout:motionLayout,ref:ref1,children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-bwfqf-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"npIw6uqTA\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(DeskLight,{darkWindows:true,debug:false,duration:900,height:\"100%\",id:\"npIw6uqTA\",layoutId:\"npIw6uqTA\",startNight:false,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:52,y:(componentViewport?.y||0)+0+0+40,children:/*#__PURE__*/_jsx(Container,{className:\"framer-4xfky4-container\",nodeId:\"t1XxyxdwX\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{variant:matchVariant(\"sxd_bZuVW\")}},children:/*#__PURE__*/_jsx(Navbar,{height:\"100%\",id:\"t1XxyxdwX\",layoutId:\"t1XxyxdwX\",variant:matchVariant(\"ZipXYqhyk\"),width:\"100%\"})})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{style:{scale:.7}}},children:/*#__PURE__*/_jsxs(MotionDivWithFX,{__perspectiveFX:false,__targetOpacity:1,className:\"framer-v38rot\",\"data-framer-name\":\"Drag Canvas\",drag:true,dragConstraints:ref1,dragMomentum:false,dragTransition:inertia,onMouseDown:preventDefault,whileTap:animation,children:[/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",backgroundSize:1.42,fit:\"tile\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+-400),pixelHeight:126,pixelWidth:126,positionX:\"center\",positionY:\"center\",sizes:\"3940px\",src:\"https://framerusercontent.com/images/9c47fOR3CNoSsEtr6IEYJoKM.svg?width=126&height=126\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",backgroundSize:1.42,fit:\"tile\",loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+-400),pixelHeight:126,pixelWidth:126,positionX:\"center\",positionY:\"center\",sizes:\"3940px\",src:\"https://framerusercontent.com/images/9c47fOR3CNoSsEtr6IEYJoKM.svg?width=126&height=126\"},className:\"framer-1fffyxu\"})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-19dkbrf-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"vHOyxizPY\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(ManifestoWindow,{height:\"100%\",id:\"vHOyxizPY\",layoutId:\"vHOyxizPY\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-xq77mx-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"J_QP_eqHw\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(CursorTip,{height:\"100%\",id:\"J_QP_eqHw\",layoutId:\"J_QP_eqHw\",width:\"100%\"})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1395,intrinsicWidth:1314,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+2600-942),pixelHeight:1395,pixelWidth:1314,sizes:\"146px\",src:\"https://framerusercontent.com/images/05V5X5EnfrMKEyOHDMndm9s5mO8.png?width=1314&height=1395\",srcSet:\"https://framerusercontent.com/images/05V5X5EnfrMKEyOHDMndm9s5mO8.png?scale-down-to=1024&width=1314&height=1395 964w,https://framerusercontent.com/images/05V5X5EnfrMKEyOHDMndm9s5mO8.png?width=1314&height=1395 1314w\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1395,intrinsicWidth:1314,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+2600-942),pixelHeight:1395,pixelWidth:1314,sizes:\"146px\",src:\"https://framerusercontent.com/images/05V5X5EnfrMKEyOHDMndm9s5mO8.png?width=1314&height=1395\",srcSet:\"https://framerusercontent.com/images/05V5X5EnfrMKEyOHDMndm9s5mO8.png?scale-down-to=1024&width=1314&height=1395 964w,https://framerusercontent.com/images/05V5X5EnfrMKEyOHDMndm9s5mO8.png?width=1314&height=1395 1314w\"},className:\"framer-a18dhc\",\"data-framer-cursor\":\"m6ka04\",\"data-framer-name\":\"Allenkey\"})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1lelo4w-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"CxVAPrEfe\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(Ambience,{blindsOn:false,boxH:2600,boxW:2880,dayBlend:\"multiply\",dayStrength:1,debug:false,driftAmount:.6,driftOn:false,driftSeconds:82,force:\"auto\",gap:280,goboBlur:48,goboColor:\"142, 174, 222\",goboStrength:.32,height:\"100%\",id:\"CxVAPrEfe\",layoutId:\"CxVAPrEfe\",nightImage:addImageAlt({pixelHeight:1300,pixelWidth:1440,src:\"https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?width=1440&height=1300\",srcSet:\"https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?scale-down-to=512&width=1440&height=1300 512w,https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?scale-down-to=1024&width=1440&height=1300 1024w,https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?width=1440&height=1300 1440w\"},\"\"),nightImageBlend:\"screen\",nightImageStrength:1,nightStrength:.7,nightTint:\"rgb(26, 36, 51)\",role:\"over\",slat:96,slatAngle:-21,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-nn4xc5-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"GlYWEscbv\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(Ambience,{blindsOn:false,boxH:2600,boxW:2880,dayBlend:\"multiply\",dayStrength:1,debug:false,driftAmount:.6,driftOn:false,driftSeconds:82,force:\"auto\",gap:280,goboBlur:48,goboColor:\"142, 174, 222\",goboStrength:.32,height:\"100%\",id:\"GlYWEscbv\",layoutId:\"GlYWEscbv\",nightImage:addImageAlt({pixelHeight:1300,pixelWidth:1440,src:\"https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?width=1440&height=1300\",srcSet:\"https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?scale-down-to=512&width=1440&height=1300 512w,https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?scale-down-to=1024&width=1440&height=1300 1024w,https://framerusercontent.com/images/PbIvocmgAXH6FLiynAixiDaG2k.png?width=1440&height=1300 1440w\"},\"\"),nightImageBlend:\"screen\",nightImageStrength:1,nightStrength:1,nightTint:\"rgb(26, 37, 54)\",role:\"under\",slat:96,slatAngle:-21,style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-vuqyfb\",\"data-framer-name\":\"Text Stack\",children:[/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{y:(componentViewport?.y||0)+0+0+0+-800+1118.5+0+0}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:32,y:(componentViewport?.y||0)+0+0+-800+1184.5+0+0,children:/*#__PURE__*/_jsx(Container,{className:\"framer-q6tybw-container\",\"data-framer-cursor\":\"1h4x2wg\",nodeId:\"NeKb7CFeI\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(Eyebrow,{height:\"100%\",id:\"NeKb7CFeI\",layoutId:\"NeKb7CFeI\",NxEhNufuH:\"Powered by AI\",rByT1b8Bq:true,RT6VrKKJB:\"Sparkle\",style:{height:\"100%\"},width:\"100%\"})})})}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1ibzczp\",\"data-framer-name\":\"Hero Text\",children:[/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"h1\",{dir:\"auto\",style:{\"--font-selector\":\"Q1VTVE9NVjI7UFAgTmV1ZSBNb250cmVhbCBCb2xk\",\"--framer-font-family\":'\"PP Neue Montreal Bold\", \"PP Neue Montreal Bold Placeholder\", sans-serif',\"--framer-font-open-type-features\":\"'blwf' on, 'cv03' on, 'cv04' on, 'cv09' on, 'cv11' on\",\"--framer-font-size\":\"calc(var(--framer-root-font-size, 1rem) * 3.3)\",\"--framer-font-weight\":\"700\",\"--framer-letter-spacing\":\"-0.03em\",\"--framer-line-height\":\"1em\",\"--framer-text-alignment\":\"center\",\"--framer-text-color\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\"},children:\"Hi, I'm Jo\\xe3o. Welcome to my corner of the internet\"})}),fonts:[\"CUSTOMV2;PP Neue Montreal Bold\"]}},children:/*#__PURE__*/_jsx(RichText,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsxs(\"h1\",{className:\"framer-styles-preset-1q43dbh\",\"data-styles-preset\":\"rVui4dYUr\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:[\"Hi, \",/*#__PURE__*/_jsx(\"span\",{style:{\"--framer-text-color\":\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\"},children:\"I'm Jo\\xe3o.\"}),\" Welcome to my corner of the internet\"]})}),className:\"framer-1bm3vfp\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})}),/*#__PURE__*/_jsx(\"div\",{className:\"framer-k1tg68\",\"data-framer-name\":\"Rectangle 161124842\"}),/*#__PURE__*/_jsx(RichTextWithReadableDeskCopy5jn9kw,{__fromCanvasComponent:true,children:/*#__PURE__*/_jsx(React.Fragment,{children:/*#__PURE__*/_jsx(\"p\",{className:\"framer-styles-preset-5la5l8\",\"data-styles-preset\":\"UN9fN7mvA\",dir:\"auto\",style:{\"--framer-text-alignment\":\"center\"},children:\"Senior Product & Web Designer at Prismatico. Previously IKEA. 15+ years building interfaces people don't need a manual for.\"})}),className:\"framer-5jn9kw\",fonts:[\"Inter\"],verticalAlignment:\"top\",withExternalLayout:true})]})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1il4oji-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"GellN7EeS\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(BlankZone,{dayText:\"Why are you hovering here?\",debug:false,height:\"100%\",holdMs:0,id:\"GellN7EeS\",layoutId:\"GellN7EeS\",nightText:\"Same nothing, worse lighting.\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{y:(componentViewport?.y||0)+0+0+0+-800+2600-1164.5},PSXe8aWmM:{y:(componentViewport?.y||0)+0+0+-800+2600-1144.5}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:437,width:\"322px\",y:(componentViewport?.y||0)+0+0+-800+2600-1204.5,children:/*#__PURE__*/_jsx(Container,{className:\"framer-146rh1a-container\",nodeId:\"ToQntxN5d\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:-15,transformPerspective:1500},children:/*#__PURE__*/_jsx(Portefolio_V2,{height:\"100%\",id:\"ToQntxN5d\",layoutId:\"ToQntxN5d\",style:{height:\"100%\",width:\"100%\"},variant:matchVariant(\"gBXh4jR0d\"),width:\"100%\"})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-sg84sk-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"fgnFxoWj6\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:-9},children:/*#__PURE__*/_jsx(Turntable,{armLeadIn:4.3,armLength:39.5,armPivotX:81.9,armPivotY:19.6,armRestAngle:-8,armRunOut:32,artScale:100,artX:0,artY:0,backmaskHold:3e3,buttonSize:5,calibrate:false,cueDuration:2200,forceLight:\"auto\",height:\"100%\",id:\"fgnFxoWj6\",layoutId:\"fgnFxoWj6\",maxRate:4,musicGain:.9,needleGain:.8,needleUrl:\"https://framerusercontent.com/assets/TRuDcjPy2QJv3MCAPkmUapqYGI.mp3\",pauseX:55.2,pauseY:82.8,playX:45.5,playY:82.8,plinth:addImageAlt({pixelHeight:2508,pixelWidth:2508,src:\"https://framerusercontent.com/images/ob0MasDihEOxJcCiBgY1bup6jqc.png?width=2508&height=2508\",srcSet:\"https://framerusercontent.com/images/ob0MasDihEOxJcCiBgY1bup6jqc.png?scale-down-to=512&width=2508&height=2508 512w,https://framerusercontent.com/images/ob0MasDihEOxJcCiBgY1bup6jqc.png?scale-down-to=1024&width=2508&height=2508 1024w,https://framerusercontent.com/images/ob0MasDihEOxJcCiBgY1bup6jqc.png?scale-down-to=2048&width=2508&height=2508 2048w,https://framerusercontent.com/images/ob0MasDihEOxJcCiBgY1bup6jqc.png?width=2508&height=2508 2508w\"},\"\"),plinthActive:addImageAlt({pixelHeight:1254,pixelWidth:1254,src:\"https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?width=1254&height=1254 1254w\"},\"\"),plinthActiveOn:false,prefetchOtherTake:true,record:addImageAlt({pixelHeight:2508,pixelWidth:2508,src:\"https://framerusercontent.com/images/BLVyc10WPl8RB2P5h5yWMbkUAe4.png?width=2508&height=2508\",srcSet:\"https://framerusercontent.com/images/BLVyc10WPl8RB2P5h5yWMbkUAe4.png?scale-down-to=512&width=2508&height=2508 512w,https://framerusercontent.com/images/BLVyc10WPl8RB2P5h5yWMbkUAe4.png?scale-down-to=1024&width=2508&height=2508 1024w,https://framerusercontent.com/images/BLVyc10WPl8RB2P5h5yWMbkUAe4.png?scale-down-to=2048&width=2508&height=2508 2048w,https://framerusercontent.com/images/BLVyc10WPl8RB2P5h5yWMbkUAe4.png?width=2508&height=2508 2508w\"},\"\"),recordNight:addImageAlt({pixelHeight:2508,pixelWidth:2508,src:\"https://framerusercontent.com/images/flfbNcJbC6JZEMbawohW1fFx8M.png?width=2508&height=2508\",srcSet:\"https://framerusercontent.com/images/flfbNcJbC6JZEMbawohW1fFx8M.png?scale-down-to=512&width=2508&height=2508 512w,https://framerusercontent.com/images/flfbNcJbC6JZEMbawohW1fFx8M.png?scale-down-to=1024&width=2508&height=2508 1024w,https://framerusercontent.com/images/flfbNcJbC6JZEMbawohW1fFx8M.png?scale-down-to=2048&width=2508&height=2508 2048w,https://framerusercontent.com/images/flfbNcJbC6JZEMbawohW1fFx8M.png?width=2508&height=2508 2508w\"},\"\"),recordSize:66.5,recordX:49.4,recordY:46.5,returnDuration:800,reverseNeedleOnStop:true,scrubSensitivity:1,showDebug:false,spinSpeed:.45,style:{height:\"100%\",width:\"100%\"},tilt:0,tonearm:addImageAlt({pixelHeight:1254,pixelWidth:1254,src:\"https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/AC5URkOyOc1MAbFuvPk4Ex6eHY.png?width=1254&height=1254 1254w\"},\"\"),trackNightUrl:\"https://framerusercontent.com/assets/s4cPORL6lJUTnNR1I4hrmTfak.mp3\",trackUrl:\"https://framerusercontent.com/assets/CuS9WRSNMM1LpZyK9YOA4bX7e4.mp3\",weddingsCopy:\"Oh Wow! Do you do weddings?\",weddingsHold:450,weddingsShow:2600,weddingsThreshold:1.4,width:\"100%\"})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:2309,intrinsicWidth:2954,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+2600-1199),pixelHeight:2309,pixelWidth:2954,sizes:\"516px\",src:\"https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?width=2954&height=2309\",srcSet:\"https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?scale-down-to=512&width=2954&height=2309 512w,https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?scale-down-to=1024&width=2954&height=2309 1024w,https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?scale-down-to=2048&width=2954&height=2309 2048w,https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?width=2954&height=2309 2954w\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:2309,intrinsicWidth:2954,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+2600-1140),pixelHeight:2309,pixelWidth:2954,sizes:\"516px\",src:\"https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?width=2954&height=2309\",srcSet:\"https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?scale-down-to=512&width=2954&height=2309 512w,https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?scale-down-to=1024&width=2954&height=2309 1024w,https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?scale-down-to=2048&width=2954&height=2309 2048w,https://framerusercontent.com/images/9RctKBtIdW4JLb7x3ClsHtBs0mk.png?width=2954&height=2309 2954w\"},className:\"framer-17r461f\",\"data-framer-name\":\"Manga\",style:{rotate:-17}})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-i96dlr-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"qxiNIHTTw\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(BumperPlate,{breakaway:28,castBlur:14,castDist:22,castOpacity:.22,contactBlur:3,contactDist:4,contactOpacity:.54,debug:false,givePx:12,height:\"100%\",id:\"qxiNIHTTw\",lag:.09,layoutId:\"qxiNIHTTw\",lines:[\"Yeah, it's real.\",\"Still not moving.\",\"It lives here now.\",\"I thought you'd quit.\"],nightFade:.65,nightLength:1.5,nightLine:\"Even I don't lift at this hour.\",roundness:1,shadowAngle:45,shadowOn:true,softness:95,src:\"https://framerusercontent.com/images/8vwaUiCawy5VAlAuetPSJBCO1N0.png?width=2508&height=2508\",strain:1,style:{height:\"100%\",width:\"100%\"},tipMs:3200,unlockAfter:3,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-qteoyz-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"DuiihG180\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:15},children:/*#__PURE__*/_jsx(GameBoyCompanion,{blinkSpeed:1,castBlur:4,castDist:5,castOpacity:.24,clipBottomLeft:{x:0,y:100},clipBottomRight:{x:100,y:100},clipTopLeft:{x:0,y:0},clipTopRight:{x:100,y:0},contactBlur:7.5,contactDist:5.5,contactOpacity:.22,dotGap:8,enableEscalation:true,faceFadeIn:600,faceScale:100,gazeRangeX:4,gazeRangeY:3,ghostOpacity:0,glanceAfter:4.5,height:\"100%\",id:\"DuiihG180\",layoutId:\"DuiihG180\",lineDuration:500,lineHold:250,lineWidth:84,logoDelay:300,logoFadeIn:600,logoFadeOut:500,logoHold:1200,logoImage:addImageAlt({pixelHeight:16,pixelWidth:79,src:\"https://framerusercontent.com/images/YiQwfobHbzPu6nE8WxHgSC2lbg.svg?width=79&height=16\"},\"\"),logoInset:0,logoSize:52,nightFade:.65,nightLength:1.5,openDuration:500,pressedImage:addImageAlt({pixelHeight:2516,pixelWidth:1557,src:\"https://framerusercontent.com/images/D2mWJjgyiiGUPz4ExOqGaFM9w.png?width=1557&height=2516\",srcSet:\"https://framerusercontent.com/images/D2mWJjgyiiGUPz4ExOqGaFM9w.png?scale-down-to=1024&width=1557&height=2516 633w,https://framerusercontent.com/images/D2mWJjgyiiGUPz4ExOqGaFM9w.png?scale-down-to=2048&width=1557&height=2516 1267w,https://framerusercontent.com/images/D2mWJjgyiiGUPz4ExOqGaFM9w.png?width=1557&height=2516 1557w\"},\"\"),replayBootAnimation:false,screenBackground:\"rgb(155, 188, 15)\",screenBorderRadius:0,screenBrightness:100,screenContrast:108,screenForeground:\"rgb(15, 56, 15)\",screenHeight:35.9,screenOffBackground:\"rgb(133, 153, 83)\",screenRotation:0,screenSkewX:0,screenSkewY:0,screenWidth:64.7,screenX:17.8,screenY:10.3,shadowAngle:45,shadowLight:\"auto\",shadowOn:true,shellAltText:\"Interactive Game Boy companion\",shellAspectRatio:.6188394276629571,shellImage:addImageAlt({pixelHeight:2516,pixelWidth:1557,src:\"https://framerusercontent.com/images/HUDkQ3QLCjjuAqTtyjrhYtkK3s.png?width=1557&height=2516\",srcSet:\"https://framerusercontent.com/images/HUDkQ3QLCjjuAqTtyjrhYtkK3s.png?scale-down-to=1024&width=1557&height=2516 633w,https://framerusercontent.com/images/HUDkQ3QLCjjuAqTtyjrhYtkK3s.png?scale-down-to=2048&width=1557&height=2516 1267w,https://framerusercontent.com/images/HUDkQ3QLCjjuAqTtyjrhYtkK3s.png?width=1557&height=2516 1557w\"},\"\"),showButtonDebug:false,showDebugControls:false,showScreenDebug:false,sleepyAfter:9,snapHysteresis:.62,springDamping:.86,springStrength:.14,standbyFit:\"cover\",standbyImage:addImageAlt({pixelHeight:1254,pixelWidth:1254,src:\"https://framerusercontent.com/images/JryKdcIsctakAoqYwM658ecRR8.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/JryKdcIsctakAoqYwM658ecRR8.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/JryKdcIsctakAoqYwM658ecRR8.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/JryKdcIsctakAoqYwM658ecRR8.png?width=1254&height=1254 1254w\"},\"\"),standbyInset:0,standbyOpacity:20,standbyText:\"\",standbyTextSize:8.5,style:{height:\"100%\",width:\"100%\"},textureOpacity:6,trackingRadius:480,unlitDotOpacity:0,useQuadrilateralClip:false,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-13scdep-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"ooudqWC_B\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(VaporizeImageGL,{clusterSize:46,cursorForce:46,cursorRadius:150,duration:4,dustNightDim:.62,dustNightTint:\"rgb(255, 255, 255)\",height:\"100%\",hitTestAlpha:true,id:\"ooudqWC_B\",image:addImageAlt({pixelHeight:1541,pixelWidth:1508,src:\"https://framerusercontent.com/images/13UEjZ67AhmtZqQhoZ2ipTS7e4.png?width=1508&height=1541\",srcSet:\"https://framerusercontent.com/images/13UEjZ67AhmtZqQhoZ2ipTS7e4.png?scale-down-to=1024&width=1508&height=1541 1002w,https://framerusercontent.com/images/13UEjZ67AhmtZqQhoZ2ipTS7e4.png?width=1508&height=1541 1508w\"},\"\"),imageScale:100,imageX:0,imageY:0,layoutId:\"ooudqWC_B\",maxPoints:24e5,noiseAmount:.19,overlayZIndex:2147483e3,particleSize:1.9,reverseDuration:3,reverseOnLeave:true,rise:70,seed:7,showDebug:false,softness:.16,spread:90,style:{height:\"100%\",width:\"100%\"},swirlScale:130,text:\"Perfectly balanced, as all things should be\",textAlign:\"center\",textColor:\"var(--token-391d712f-525d-40ca-94cc-a24bc401aa74, rgb(24, 24, 24))\",textColorNight:\"rgb(240, 244, 247)\",textFont:\"mono\",textLine:.8,textOffsetX:0,textOffsetY:0,textOpacity:1,textSize:13,textTracking:0,textWeight:\"500\",turbulence:34,width:\"100%\"})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1433,intrinsicWidth:1355,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+2600-321.9995),pixelHeight:1433,pixelWidth:1355,sizes:\"198px\",src:\"https://framerusercontent.com/images/7Cpr96vQZ9QAvE0n825WIXMb4.png?width=1355&height=1433\",srcSet:\"https://framerusercontent.com/images/7Cpr96vQZ9QAvE0n825WIXMb4.png?scale-down-to=1024&width=1355&height=1433 968w,https://framerusercontent.com/images/7Cpr96vQZ9QAvE0n825WIXMb4.png?width=1355&height=1433 1355w\"}}},children:/*#__PURE__*/_jsx(Image1WithOpenManifestoeis5ak,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1433,intrinsicWidth:1355,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+2600-321.9995),pixelHeight:1433,pixelWidth:1355,sizes:\"198px\",src:\"https://framerusercontent.com/images/7Cpr96vQZ9QAvE0n825WIXMb4.png?width=1355&height=1433\",srcSet:\"https://framerusercontent.com/images/7Cpr96vQZ9QAvE0n825WIXMb4.png?scale-down-to=1024&width=1355&height=1433 968w,https://framerusercontent.com/images/7Cpr96vQZ9QAvE0n825WIXMb4.png?width=1355&height=1433 1355w\"},className:\"framer-eis5ak\",\"data-framer-name\":\"DieterRams - Floppydisk 1\",style:{rotate:-8}})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1r1os8n-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"EyxhrXDM5\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(CRTTV,{bounce:.12,castBlur:36,castDist:30,castOpacity:.13,channels:[{id:\"FxFm40pW4\",label:\"ch 1\",tint:\"rgb(63, 122, 214)\",videoSrc:\"https://framerusercontent.com/assets/y1H3ykFbsZgQ65xb7eYSlSMuSkw.mp4\"},{id:\"IXOP9LNwR\",label:\"ch 2\",tint:\"rgb(214, 74, 47)\",videoSrc:\"https://framerusercontent.com/assets/cCiT4qLKBmAsjHltKPcio7Kst8.mp4\"},{id:\"lS00aFk9b\",label:\"ch 3\",tint:\"rgb(176, 138, 90)\",videoSrc:\"https://framerusercontent.com/assets/FTrTi3oahh7Icue5tC7yzPfmp4.mp4\"},{id:\"GWU50cw77\",label:\"ch 4\",tint:\"rgb(74, 111, 122)\",videoSrc:\"https://framerusercontent.com/assets/qLqCJ6BivcFloiUCfWYL9DnNS3w.mp4\"}],coneBlur:80,coneLength:80,coneNudge:0,coneReach:58,coneSpread:2.4,contactBlur:6,contactDist:2,contactOpacity:.42,curvature:.4,dayStrength:0,debug:false,fullRadius:340,glass:\"https://framerusercontent.com/images/yCJd14vFMIoGdUkhw8KUyQW46kI.png?width=2679&height=2650\",glassOpacity:.28,glassScale:100,glassX:0,glassY:0,glitchMs:170,hazeLevel:.9,height:\"100%\",hitScale:1.1,hitX:0,hitY:0,hotLevel:1.15,hotSize:9,id:\"EyxhrXDM5\",layoutId:\"EyxhrXDM5\",lazyMargin:900,lightMode:\"auto\",maxFps:30,maxVolume:55,mobileBelow:810,mobileFps:20,nightBlend:\"screen\",nightFade:.65,nightLength:1.5,nightSat:.85,nightStrength:1.6,noiseDetail:3.75,noiseLevel:.06,pauseInWindow:true,powerSize:3.2,powerX:39.9,powerY:91,remote:\"https://framerusercontent.com/images/ieuTbnaeRXNMwCnPvLCZYtuuJg.png?width=1067&height=1703\",remoteW:25.5,remoteX:83,remoteY:81.5,sampleHz:15,scanlines:.31,screenScale:100,screenX:-1.7,screenY:-3.5,shadowAngle:45,shadowOn:false,shell:\"https://framerusercontent.com/images/hK7lmXv97DriHwaoWMvMDUB7KT4.png?width=2679&height=2650\",shellPower:false,shellVersion:\"v1\",silenceRadius:1300,spillMode:\"auto\",startChannel:1,startOn:true,style:{height:\"100%\",width:\"100%\"},videoRotate:0,videoScale:100,videoSquash:55.5,videoX:-2,videoY:-6.5,warmOthers:true,width:\"100%\"})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+476),pixelHeight:2508,pixelWidth:2508,sizes:\"293px\",src:\"https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?width=2508&height=2508\",srcSet:\"https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?scale-down-to=512&width=2508&height=2508 512w,https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?scale-down-to=1024&width=2508&height=2508 1024w,https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?scale-down-to=2048&width=2508&height=2508 2048w,https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?width=2508&height=2508 2508w\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+586),pixelHeight:2508,pixelWidth:2508,sizes:\"293px\",src:\"https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?width=2508&height=2508\",srcSet:\"https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?scale-down-to=512&width=2508&height=2508 512w,https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?scale-down-to=1024&width=2508&height=2508 1024w,https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?scale-down-to=2048&width=2508&height=2508 2048w,https://framerusercontent.com/images/g5wXxYPbjbD6xhRkAy7SuthxuNY.png?width=2508&height=2508 2508w\"},className:\"framer-mrsrxg\",\"data-framer-name\":\"Paper\",transformTemplate:transformTemplate1})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+491.9961),pixelHeight:1254,pixelWidth:1254,sizes:\"170px\",src:\"https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?width=1254&height=1254 1254w\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1254,intrinsicWidth:1254,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+491.9961),pixelHeight:1254,pixelWidth:1254,sizes:\"170px\",src:\"https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/gUeViftGWLKl32HQAjeqgPBZds.png?width=1254&height=1254 1254w\"},className:\"framer-epo7p5\",\"data-framer-name\":\"Postit\",style:{rotate:-29}})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1491,intrinsicWidth:1354,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+2600-433),pixelHeight:1491,pixelWidth:1354,sizes:\"244px\",src:\"https://framerusercontent.com/images/YqYdxYeck7Qavxxya9oInZ25hQ.png?width=1354&height=1491\",srcSet:\"https://framerusercontent.com/images/YqYdxYeck7Qavxxya9oInZ25hQ.png?scale-down-to=1024&width=1354&height=1491 929w,https://framerusercontent.com/images/YqYdxYeck7Qavxxya9oInZ25hQ.png?width=1354&height=1491 1354w\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1491,intrinsicWidth:1354,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+2600-433),pixelHeight:1491,pixelWidth:1354,sizes:\"244px\",src:\"https://framerusercontent.com/images/YqYdxYeck7Qavxxya9oInZ25hQ.png?width=1354&height=1491\",srcSet:\"https://framerusercontent.com/images/YqYdxYeck7Qavxxya9oInZ25hQ.png?scale-down-to=1024&width=1354&height=1491 929w,https://framerusercontent.com/images/YqYdxYeck7Qavxxya9oInZ25hQ.png?width=1354&height=1491 1354w\"},className:\"framer-173rnc3\",\"data-framer-name\":\"Goku\"})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1363,intrinsicWidth:1383,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+0+-800+1047),pixelHeight:1363,pixelWidth:1383,sizes:\"506px\",src:\"https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?width=1383&height=1363\",srcSet:\"https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?scale-down-to=512&width=1383&height=1363 512w,https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?scale-down-to=1024&width=1383&height=1363 1024w,https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?width=1383&height=1363 1383w\"}}},children:/*#__PURE__*/_jsx(Image1,{background:{alt:\"\",fit:\"fill\",intrinsicHeight:1363,intrinsicWidth:1383,loading:getLoadingLazyAtYPosition((componentViewport?.y||0)+0+0+-800+1047),pixelHeight:1363,pixelWidth:1383,sizes:\"506px\",src:\"https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?width=1383&height=1363\",srcSet:\"https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?scale-down-to=512&width=1383&height=1363 512w,https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?scale-down-to=1024&width=1383&height=1363 1024w,https://framerusercontent.com/images/miBA8XSDI4Cm1Whjw4rJvjoa2wE.png?width=1383&height=1363 1383w\"},className:\"framer-1kx04wz\",\"data-framer-name\":\"Shaker\",style:{rotate:-1},transformTemplate:transformTemplate2})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-18uoqm4-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"Xjk81Q24t\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:4},children:/*#__PURE__*/_jsx(Watch,{align:\"center\",backlight:0,backlightNight:.55,blinkColon:true,cover:false,coverColor:\"rgb(34, 35, 28)\",coverNight:\"rgb(20, 22, 16)\",debug:false,digitPct:5.4,digitsColor:\"rgb(185, 190, 147)\",digitsNight:\"rgb(216, 255, 168)\",fontFace:\"pixel\",fontWeight:\"700\",glow:.35,glowColor:\"rgb(185, 190, 147)\",glowFollows:true,glowNight:\"rgb(205, 255, 122)\",glowRadius:1.6,height:\"100%\",id:\"Xjk81Q24t\",layoutId:\"Xjk81Q24t\",lightMode:\"auto\",nightGlow:1,scale:208,screenBoxH:7.6,screenW:27.1,screenX:45.9,screenY:48.3,secondsSize:.62,showSeconds:false,src:\"https://framerusercontent.com/images/wafJeztMnjzG98Twt9IabW4Wo8.png?width=2318&height=2958\",style:{height:\"100%\",width:\"100%\"},tracking:0,width:\"100%\"})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1shgxio-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"k8kLVs9_O\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(Lamp,{cutLamp:true,debug:false,force:\"auto\",glow:1.1,headH:13,headLevel:.6,headW:22,headX:30,headY:62,height:\"100%\",id:\"k8kLVs9_O\",layoutId:\"k8kLVs9_O\",poolAngle:-12,poolBlur:42,poolH:66,poolThrow:0,poolW:110,poolX:20,poolY:85,src:\"https://framerusercontent.com/images/9xc4LzEP1oFg0vMUE4T4mk5P7g.png?width=2005&height=1875\",style:{height:\"100%\",width:\"100%\"},width:\"100%\",wrap:.1})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{y:(componentViewport?.y||0)+0+0+0+-800+2600-1133}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:249,width:\"260px\",y:(componentViewport?.y||0)+0+0+-800+2600-1144,children:/*#__PURE__*/_jsx(Container,{className:\"framer-1pvnr13-container\",nodeId:\"xdnZQ56ZA\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:9},children:/*#__PURE__*/_jsx(Polaroid,{height:\"100%\",id:\"xdnZQ56ZA\",layoutId:\"xdnZQ56ZA\",style:{height:\"100%\",width:\"100%\"},variant:matchVariant(\"dy4miUGva\"),width:\"100%\"})})})}),/*#__PURE__*/_jsxs(\"div\",{className:\"framer-1ydru4x\",children:[/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{nhUOQ5KpC:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 234 234\" overflow=\"visible\"><g><defs><path d=\"M 117 0 C 181.617 0 234 52.383 234 117 C 234 181.617 181.617 234 117 234 C 52.383 234 0 181.617 0 117 C 0 52.383 52.383 0 117 0 Z\" id=\"a1016z\"></path><filter id=\"a1018z\" filterUnits=\"objectBoundingBox\" x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\"><feOffset dx=\"21\" dy=\"6\" in=\"SourceAlpha\" result=\"a1021z\"></feOffset><feGaussianBlur stdDeviation=\"4\" in=\"a1021z\" result=\"a1022z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.43)\" result=\"a1023z\"></feFlood><feComposite in=\"a1023z\" in2=\"a1022z\" operator=\"in\" result=\"a1019z\"></feComposite></filter></defs><mask id=\"a1020z\" x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\"><rect x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\" fill=\"white\"></rect><use href=\"#a1016z\" fill=\"black\"></use></mask><g filter=\"url(#a1018z)\" mask=\"url(#a1020z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1016z\" clip-path=\"url(#a1017z)\"></use></g><use xlink:href=\"#a1016z\" fill=\"#CCC\" clip-path=\"url(#a1017z)\"></use></g></svg>'},PSXe8aWmM:{svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 234 234\" overflow=\"visible\"><g><defs><path d=\"M 117 0 C 181.617 0 234 52.383 234 117 C 234 181.617 181.617 234 117 234 C 52.383 234 0 181.617 0 117 C 0 52.383 52.383 0 117 0 Z\" id=\"a1008z\"></path><filter id=\"a1010z\" filterUnits=\"objectBoundingBox\" x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\"><feOffset dx=\"21\" dy=\"6\" in=\"SourceAlpha\" result=\"a1013z\"></feOffset><feGaussianBlur stdDeviation=\"4\" in=\"a1013z\" result=\"a1014z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.43)\" result=\"a1015z\"></feFlood><feComposite in=\"a1015z\" in2=\"a1014z\" operator=\"in\" result=\"a1011z\"></feComposite></filter></defs><mask id=\"a1012z\" x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\"><rect x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\" fill=\"white\"></rect><use href=\"#a1008z\" fill=\"black\"></use></mask><g filter=\"url(#a1010z)\" mask=\"url(#a1012z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1008z\" clip-path=\"url(#a1009z)\"></use></g><use xlink:href=\"#a1008z\" fill=\"#CCC\" clip-path=\"url(#a1009z)\"></use></g></svg>'}},children:/*#__PURE__*/_jsx(SVG,{className:\"framer-1rhv6ch\",requiresOverflowVisible:true,svg:'<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 234 234\" overflow=\"visible\"><g><defs><path d=\"M 117 0 C 181.617 0 234 52.383 234 117 C 234 181.617 181.617 234 117 234 C 52.383 234 0 181.617 0 117 C 0 52.383 52.383 0 117 0 Z\" id=\"a1000z\"></path><filter id=\"a1002z\" filterUnits=\"objectBoundingBox\" x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\"><feOffset dx=\"21\" dy=\"6\" in=\"SourceAlpha\" result=\"a1005z\"></feOffset><feGaussianBlur stdDeviation=\"4\" in=\"a1005z\" result=\"a1006z\"></feGaussianBlur><feFlood flood-color=\"rgba(0, 0, 0, 0.43)\" result=\"a1007z\"></feFlood><feComposite in=\"a1007z\" in2=\"a1006z\" operator=\"in\" result=\"a1003z\"></feComposite></filter></defs><mask id=\"a1004z\" x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\"><rect x=\"-16.2%\" y=\"-9.7%\" width=\"132.3%\" height=\"119.5%\" fill=\"white\"></rect><use href=\"#a1000z\" fill=\"black\"></use></mask><g filter=\"url(#a1002z)\" mask=\"url(#a1004z)\"><use fill=\"black\" stroke=\"black\" stroke-opacity=\"0\" stroke-width=\"0\" xlink:href=\"#a1000z\" clip-path=\"url(#a1001z)\"></use></g><use xlink:href=\"#a1000z\" fill=\"#CCC\" clip-path=\"url(#a1001z)\"></use></g></svg>',withExternalLayout:true})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1nhkwlu-container\",\"data-framer-name\":\"plant (1).riv\",isAuthoredByUser:true,isModuleExternal:true,name:\"plant (1).riv\",nodeId:\"hwYyeBTnn\",rendersWithMotion:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(RivePlayer_vXWithPlantNight1nhkwlu,{alignment:\"center\",artboard:\"Artboard\",autoBind:true,autoplay:true,fit:\"cover\",handleEvents:true,height:\"100%\",id:\"hwYyeBTnn\",inputsJSON:'[{\"name\":\"isNight\",\"type\":\"Boolean\",\"value\":false},{\"name\":\"BugSeen\",\"type\":\"Boolean\",\"value\":false},{\"name\":\"ShowBug\",\"type\":\"Trigger\",\"value\":false}]',isTouchScrollEnabled:false,layoutId:\"hwYyeBTnn\",layoutScaleFactor:1,name:\"plant (1).riv\",play:true,playOnCanvas:true,riveRenderer:false,src:\"https://framerusercontent.com/assets/4ghJlA3uPdljDPE2ruuaUOMpipQ.riv\",stateMachines:\"State Machine 2\",style:{height:\"100%\",width:\"100%\"},width:\"100%\"})})})]}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-4rah09-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"h8DaEvE1b\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(DeskWindow,{backdropBlur:2,backdropOpacity:.42,chrome:true,content:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:2639,width:\"1200px\",children:/*#__PURE__*/_jsx(Container,{className:\"framer-qr1fu2-container\",inComponentSlot:true,nodeId:\"qazyMexRh\",rendersWithMotion:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(About,{height:\"100%\",id:\"qazyMexRh\",layoutId:\"qazyMexRh\",style:{width:\"100%\"},width:\"100%\"})})})],debug:false,deepLink:false,height:\"100%\",id:\"h8DaEvE1b\",layoutId:\"h8DaEvE1b\",radius:10,resetLayout:true,sheetBelow:810,title:\"About\",width:\"100%\",windowHeight:800,windowId:\"about\",windowWidth:1200})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1xjqyny-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"ObCBj65bI\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(DeskWindow,{backdropBlur:2,backdropOpacity:.42,chrome:true,content:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:4932,width:\"1200px\",children:/*#__PURE__*/_jsx(Container,{className:\"framer-ekqaqc-container\",inComponentSlot:true,nodeId:\"dlDBQBIE3\",rendersWithMotion:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(Case_Lausanne,{height:\"100%\",id:\"dlDBQBIE3\",layoutId:\"dlDBQBIE3\",style:{width:\"100%\"},width:\"100%\"})})})],debug:false,deepLink:false,height:\"100%\",id:\"ObCBj65bI\",layoutId:\"ObCBj65bI\",radius:10,resetLayout:true,sheetBelow:810,title:\"Team Lausanne\",width:\"100%\",windowHeight:800,windowId:\"case02\",windowWidth:1200})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1vu9uru-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"qzhHleh_K\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(DeskWindow,{backdropBlur:2,backdropOpacity:.42,chrome:true,content:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:5964,width:\"1200px\",children:/*#__PURE__*/_jsx(Container,{className:\"framer-1t6699u-container\",\"data-framer-name\":\"Case MultichainZ\",inComponentSlot:true,name:\"Case MultichainZ\",nodeId:\"RPqiViEju\",rendersWithMotion:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(Case_Streva,{height:\"100%\",id:\"RPqiViEju\",layoutId:\"RPqiViEju\",name:\"Case MultichainZ\",style:{width:\"100%\"},width:\"100%\"})})})],debug:false,deepLink:false,height:\"100%\",id:\"qzhHleh_K\",layoutId:\"qzhHleh_K\",radius:10,resetLayout:true,sheetBelow:810,title:\"MultichainZ\",width:\"100%\",windowHeight:800,windowId:\"case01\",windowWidth:1200})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-sp3esb-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"c8wr6ImVP\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(DeskWindow,{backdropBlur:2,backdropOpacity:.42,chrome:true,content:[/*#__PURE__*/_jsx(ComponentViewportProvider,{height:4988,width:\"1200px\",children:/*#__PURE__*/_jsx(Container,{className:\"framer-1iv1gez-container\",\"data-framer-name\":\"Case_PagodaTravel\",inComponentSlot:true,name:\"Case_PagodaTravel\",nodeId:\"FGuRHrFvw\",rendersWithMotion:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(Case_Nebularis,{height:\"100%\",id:\"FGuRHrFvw\",layoutId:\"FGuRHrFvw\",name:\"Case_PagodaTravel\",style:{width:\"100%\"},width:\"100%\"})})})],debug:false,deepLink:false,height:\"100%\",id:\"c8wr6ImVP\",layoutId:\"c8wr6ImVP\",radius:10,resetLayout:true,sheetBelow:810,title:\"Pagoda Travel\",width:\"100%\",windowHeight:800,windowId:\"case03\",windowWidth:1200})})}),/*#__PURE__*/_jsx(Link,{href:\"x.com/Jegtex\",motionChild:true,nodeId:\"JgUm_SWU3\",openInNewTab:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-1qzu1e0 framer-lux5qc\",\"data-framer-name\":\"X Link\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-wtkkhm-container\",isAuthoredByUser:true,isModuleExternal:true,nodeId:\"tRIkVB3Ym\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:10,rotateX:9},children:/*#__PURE__*/_jsx(StickerPeeling,{animation:{curlAmountEnd:.65,curlAmountStart:.25,curlRadiusEnd:.3,curlRadiusStart:.3,curlStartEnd:.4,curlStartStart:.95,show:\"final\"},backColor:\"rgb(255, 255, 255)\",borderRadius:\"0px\",castShadowOpacity:.25,curlMode:\"spiral\",curlRotation:270,height:\"100%\",id:\"tRIkVB3Ym\",image:addImageAlt({pixelHeight:1254,pixelWidth:1254,src:\"https://framerusercontent.com/images/vn9qEbfq9hwgH3J3gayderzaCzg.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/vn9qEbfq9hwgH3J3gayderzaCzg.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/vn9qEbfq9hwgH3J3gayderzaCzg.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/vn9qEbfq9hwgH3J3gayderzaCzg.png?width=1254&height=1254 1254w\"},\"\"),layoutId:\"tRIkVB3Ym\",refresh:false,shadowBgColor:\"rgba(0, 0, 0, 0)\",shadowPositionX:-500,shadowPositionY:270,style:{height:\"100%\",width:\"100%\"},transition:{delay:0,duration:.6,ease:[.12,.23,.5,1],type:\"tween\"},width:\"100%\"})})})})}),/*#__PURE__*/_jsx(Link,{href:\"instagram.com/jegte\",motionChild:true,nodeId:\"syGfklHGX\",openInNewTab:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-gw8zol framer-lux5qc\",\"data-framer-name\":\"Instagram Link\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-19npixu-container\",isAuthoredByUser:true,isModuleExternal:true,nodeId:\"nKtFoe21b\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:28,rotateX:9},children:/*#__PURE__*/_jsx(StickerPeeling,{animation:{curlAmountEnd:.65,curlAmountStart:.25,curlRadiusEnd:.3,curlRadiusStart:.3,curlStartEnd:.4,curlStartStart:.95,show:\"final\"},backColor:\"rgb(255, 255, 255)\",borderRadius:\"0px\",castShadowOpacity:.25,curlMode:\"spiral\",curlRotation:330,height:\"100%\",id:\"nKtFoe21b\",image:addImageAlt({pixelHeight:1254,pixelWidth:1254,src:\"https://framerusercontent.com/images/ftZygc3K4siEXagxhoZOB9N8A.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/ftZygc3K4siEXagxhoZOB9N8A.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/ftZygc3K4siEXagxhoZOB9N8A.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/ftZygc3K4siEXagxhoZOB9N8A.png?width=1254&height=1254 1254w\"},\"\"),layoutId:\"nKtFoe21b\",refresh:false,shadowBgColor:\"rgba(0, 0, 0, 0)\",shadowPositionX:-500,shadowPositionY:270,style:{height:\"100%\",width:\"100%\"},transition:{delay:0,duration:.6,ease:[.12,.23,.5,1],type:\"tween\"},width:\"100%\"})})})})}),/*#__PURE__*/_jsx(Link,{href:\"linkedin.com/in/joaoegteixeira\",motionChild:true,nodeId:\"fExc0vn0A\",openInNewTab:true,scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(motion.a,{className:\"framer-xey23c framer-lux5qc\",\"data-framer-name\":\"Linkedin Link\",children:/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-18ifmxo-container\",isAuthoredByUser:true,isModuleExternal:true,nodeId:\"MJJocgmDr\",rendersWithMotion:true,scopeId:\"augiA20Il\",style:{rotate:-11,rotateX:9},children:/*#__PURE__*/_jsx(StickerPeeling,{animation:{curlAmountEnd:.65,curlAmountStart:.25,curlRadiusEnd:.3,curlRadiusStart:.3,curlStartEnd:.4,curlStartStart:.95,show:\"final\"},backColor:\"rgb(255, 255, 255)\",borderRadius:\"0px\",castShadowOpacity:.25,curlMode:\"spiral\",curlRotation:240,height:\"100%\",id:\"MJJocgmDr\",image:addImageAlt({pixelHeight:1254,pixelWidth:1254,src:\"https://framerusercontent.com/images/5qjgO68S4lo6rWL84g96RqOICnw.png?width=1254&height=1254\",srcSet:\"https://framerusercontent.com/images/5qjgO68S4lo6rWL84g96RqOICnw.png?scale-down-to=512&width=1254&height=1254 512w,https://framerusercontent.com/images/5qjgO68S4lo6rWL84g96RqOICnw.png?scale-down-to=1024&width=1254&height=1254 1024w,https://framerusercontent.com/images/5qjgO68S4lo6rWL84g96RqOICnw.png?width=1254&height=1254 1254w\"},\"\"),layoutId:\"MJJocgmDr\",refresh:false,shadowBgColor:\"rgba(0, 0, 0, 0)\",shadowPositionX:-500,shadowPositionY:270,style:{height:\"100%\",width:\"100%\"},transition:{delay:0,duration:.6,ease:[.12,.23,.5,1],type:\"tween\"},width:\"100%\"})})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-19d9qri-container\",\"data-code-component-plugin-id\":\"mcp001\",isAuthoredByUser:true,nodeId:\"KjZNIkdhY\",scopeId:\"augiA20Il\",children:/*#__PURE__*/_jsx(MobileNotice,{accent:\"rgb(208, 255, 0)\",buttonLabel:\"got it\",color:\"rgb(255, 255, 255)\",delay:1200,fill:\"rgb(0, 0, 0)\",height:\"100%\",id:\"KjZNIkdhY\",layoutId:\"KjZNIkdhY\",oncePerSession:true,radius:20,showBelow:810,text:\"For the full experience, open on desktop\",width:\"100%\"})})})]})})]})]}),/*#__PURE__*/_jsx(\"div\",{id:\"overlay\"})]})});});const css=[\".framer-IRAS4.framer-lux5qc, .framer-IRAS4 .framer-lux5qc { display: block; }\",\".framer-IRAS4.framer-72rtr7 { align-content: center; align-items: center; background-color: #ffffff; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 1440px; }\",\".framer-IRAS4 .framer-142iip3-container { flex: none; height: 0px; left: -820px; position: fixed; top: 0px; width: 0px; }\",\".framer-IRAS4 .framer-8z057v { align-content: center; align-items: center; background-color: var(--token-792316f4-4b02-4a05-9681-8e65b436039e, #f7fafc); display: flex; flex: none; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: 100vh; justify-content: center; overflow: visible; padding: 0px; position: relative; width: 100%; }\",\".framer-IRAS4 .framer-bwfqf-container { flex: none; height: 0px; left: 720px; position: absolute; top: 0px; width: 0px; }\",\".framer-IRAS4 .framer-4xfky4-container { flex: none; height: auto; left: 50%; position: absolute; top: 40px; transform: translateX(-50%); width: auto; z-index: 10; }\",\".framer-IRAS4 .framer-v38rot { background-color: #f7fafc; cursor: grab; flex: none; height: 2600px; overflow: visible; position: relative; width: 2880px; }\",\".framer-IRAS4 .framer-1fffyxu { bottom: -800px; flex: none; left: -400px; opacity: 0.03; position: absolute; right: -660px; top: -400px; z-index: 1; }\",\".framer-IRAS4 .framer-19dkbrf-container { bottom: -465px; flex: none; height: 0px; left: calc(50.11990407673863% - 0px / 2); position: absolute; width: 0px; }\",\".framer-IRAS4 .framer-xq77mx-container { flex: none; height: auto; left: 736px; position: absolute; top: 1364px; width: auto; }\",\".framer-IRAS4 .framer-a18dhc { aspect-ratio: 1 / 1; bottom: 796px; flex: none; height: auto; left: 260px; overflow: visible; position: absolute; width: 146px; z-index: 1; }\",\".framer-IRAS4 .framer-1lelo4w-container { bottom: -600px; flex: none; left: -530px; position: absolute; right: -530px; top: -600px; z-index: 10; }\",\".framer-IRAS4 .framer-nn4xc5-container { bottom: -600px; flex: none; left: -530px; position: absolute; right: -530px; top: -600px; }\",\".framer-IRAS4 .framer-vuqyfb { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 16px; height: min-content; justify-content: center; left: 50%; overflow: visible; padding: 0px; position: absolute; top: 1185px; transform: translateX(-50%); width: 1440px; z-index: 70; }\",\".framer-IRAS4 .framer-q6tybw-container { flex: none; height: 32px; position: relative; width: auto; }\",\".framer-IRAS4 .framer-1ibzczp { align-content: center; align-items: center; display: flex; flex: none; flex-direction: column; flex-wrap: nowrap; gap: 10px; height: min-content; justify-content: center; overflow: hidden; padding: 0px; position: relative; width: 678px; }\",\".framer-IRAS4 .framer-1bm3vfp { --framer-link-text-color: #0099ff; --framer-link-text-decoration: underline; flex: none; height: auto; position: relative; white-space: pre-wrap; width: 100%; word-break: break-word; word-wrap: break-word; }\",\".framer-IRAS4 .framer-k1tg68 { background-color: rgba(208, 255, 0, 0.58); flex: none; height: 41px; left: 86px; position: absolute; top: 16px; width: 247px; z-index: -1; }\",\".framer-IRAS4 .framer-5jn9kw { --framer-link-text-color: #0099ff; --framer-link-text-decoration: underline; flex: none; height: auto; position: relative; white-space: pre-wrap; width: 516px; word-break: break-word; word-wrap: break-word; }\",\".framer-IRAS4 .framer-1il4oji-container { flex: none; height: 141px; left: 2533px; position: absolute; top: 1061px; width: 141px; z-index: 1; }\",\".framer-IRAS4 .framer-146rh1a-container { bottom: 768px; flex: none; height: 437px; left: 695px; position: absolute; transform-style: preserve-3d; width: 322px; z-index: 1; }\",\".framer-IRAS4 .framer-sg84sk-container { bottom: -48px; flex: none; height: 671px; left: -30px; position: absolute; width: 671px; z-index: 1; }\",\".framer-IRAS4 .framer-17r461f { aspect-ratio: 1.3333333333333333 / 1; bottom: 753px; flex: none; height: auto; left: 1702px; overflow: visible; position: absolute; width: 516px; z-index: 1; }\",\".framer-IRAS4 .framer-i96dlr-container { flex: none; height: 418px; left: 2361px; position: absolute; top: 52px; width: 444px; z-index: 1; }\",\".framer-IRAS4 .framer-qteoyz-container { flex: none; height: 332px; left: 728px; position: absolute; top: 864px; width: 207px; z-index: 1; }\",\".framer-IRAS4 .framer-13scdep-container { bottom: -59px; flex: none; height: 607px; position: absolute; right: -60px; width: 853px; z-index: 1; }\",\".framer-IRAS4 .framer-eis5ak { -webkit-filter: drop-shadow(2px 1px 1px rgba(0, 0, 0, 0.38)); aspect-ratio: 0.9455686938643231 / 1; bottom: 113px; filter: drop-shadow(2px 1px 1px rgba(0, 0, 0, 0.38)); flex: none; height: auto; left: 1121px; position: absolute; width: 198px; z-index: 1; }\",\".framer-IRAS4 .framer-1r1os8n-container { flex: none; height: 662px; left: calc(50.55555555555558% - 720px / 2); position: absolute; top: -303px; width: 720px; z-index: 1; }\",\".framer-IRAS4 .framer-mrsrxg { aspect-ratio: 1 / 1; flex: none; height: auto; left: 49%; overflow: visible; position: absolute; top: 586px; transform: translateX(-50%); width: 293px; z-index: 1; }\",\".framer-IRAS4 .framer-epo7p5 { flex: none; height: 170px; left: 537px; overflow: visible; position: absolute; top: 492px; width: 170px; z-index: 1; }\",\".framer-IRAS4 .framer-173rnc3 { aspect-ratio: 1 / 1; bottom: 189px; flex: none; height: auto; left: 1657px; overflow: visible; position: absolute; width: 244px; z-index: 1; }\",\".framer-IRAS4 .framer-1kx04wz { aspect-ratio: 1 / 1; flex: none; height: auto; left: -185px; overflow: visible; position: absolute; top: 50%; transform: translateY(-50%); width: 506px; z-index: 1; }\",\".framer-IRAS4 .framer-18uoqm4-container { bottom: 658px; flex: none; height: 381px; left: 2513px; position: absolute; width: 200px; z-index: 1; }\",\".framer-IRAS4 .framer-1shgxio-container { flex: none; height: 594px; left: 1779px; position: absolute; top: 591px; width: 636px; z-index: 1; }\",\".framer-IRAS4 .framer-1pvnr13-container { bottom: 895px; flex: none; height: 249px; left: 1889px; position: absolute; width: 260px; z-index: 2; }\",\".framer-IRAS4 .framer-1ydru4x { flex: none; height: 865px; left: -226px; overflow: var(--overflow-clip-fallback, clip); position: absolute; top: 6px; width: 865px; }\",\".framer-IRAS4 .framer-1rhv6ch { height: 234px; left: 329px; position: absolute; top: 478px; width: 234px; }\",\".framer-IRAS4 .framer-1nhkwlu-container { bottom: 29px; flex: none; height: 694px; left: calc(51.791907514450884% - 694px / 2); position: absolute; width: 694px; z-index: 2; }\",\".framer-IRAS4 .framer-4rah09-container, .framer-IRAS4 .framer-1xjqyny-container, .framer-IRAS4 .framer-1vu9uru-container, .framer-IRAS4 .framer-sp3esb-container { flex: none; height: auto; left: 1103px; position: absolute; top: 1432px; width: auto; }\",\".framer-IRAS4 .framer-qr1fu2-container, .framer-IRAS4 .framer-ekqaqc-container, .framer-IRAS4 .framer-1t6699u-container, .framer-IRAS4 .framer-1iv1gez-container { height: auto; position: relative; width: 1200px; }\",\".framer-IRAS4 .framer-1qzu1e0 { bottom: 431px; flex: none; height: 153px; left: calc(47.986111111111136% - 154px / 2); overflow: var(--overflow-clip-fallback, clip); position: absolute; text-decoration: none; width: 154px; }\",\".framer-IRAS4 .framer-wtkkhm-container { flex: none; height: 132px; left: calc(50.00000000000002% - 132px / 2); pointer-events: auto; position: absolute; top: calc(49.67320261437911% - 132px / 2); transform-style: preserve-3d; width: 132px; z-index: 6; }\",\".framer-IRAS4 .framer-gw8zol { bottom: 526px; flex: none; height: 179px; left: calc(45.381944444444464% - 178px / 2); overflow: var(--overflow-clip-fallback, clip); position: absolute; text-decoration: none; width: 178px; }\",\".framer-IRAS4 .framer-19npixu-container { flex: none; height: 132px; left: calc(50.00000000000002% - 132px / 2); pointer-events: auto; position: absolute; top: calc(49.720670391061475% - 132px / 2); transform-style: preserve-3d; width: 132px; z-index: 6; }\",\".framer-IRAS4 .framer-xey23c { bottom: 558px; flex: none; height: 155px; left: calc(51.250000000000014% - 156px / 2); overflow: var(--overflow-clip-fallback, clip); position: absolute; text-decoration: none; width: 156px; }\",\".framer-IRAS4 .framer-18ifmxo-container { flex: none; height: 132px; left: calc(50.00000000000002% - 132px / 2); pointer-events: auto; position: absolute; top: calc(49.67741935483873% - 132px / 2); transform-style: preserve-3d; width: 132px; z-index: 6; }\",\".framer-IRAS4 .framer-19d9qri-container { bottom: 936px; flex: none; height: auto; left: 50%; position: absolute; transform: translateX(-50%); width: auto; }\",...sharedStyle.css,...sharedStyle1.css,\"@media (min-width: 810px) and (max-width: 1439.98px) { .framer-IRAS4.framer-72rtr7 { width: 810px; } .framer-IRAS4 .framer-146rh1a-container { bottom: 708px; left: 825px; } .framer-IRAS4 .framer-qteoyz-container { left: 908px; top: 804px; } .framer-IRAS4 .framer-1shgxio-container { left: 1679px; top: 581px; }}\",\"@media (max-width: 809.98px) { .framer-IRAS4.framer-72rtr7 { width: 390px; } .framer-IRAS4 .framer-8z057v { flex-direction: column; } .framer-IRAS4 .framer-vuqyfb { top: 1119px; width: 484px; } .framer-IRAS4 .framer-1ibzczp { width: 100%; } .framer-IRAS4 .framer-k1tg68 { left: 172px; top: 7px; width: 213px; } .framer-IRAS4 .framer-146rh1a-container { bottom: 728px; left: 935px; } .framer-IRAS4 .framer-17r461f { bottom: 812px; left: 1501px; } .framer-IRAS4 .framer-qteoyz-container { left: 1025px; top: 820px; } .framer-IRAS4 .framer-mrsrxg { top: 476px; } .framer-IRAS4 .framer-1shgxio-container { left: 1543px; top: 509px; } .framer-IRAS4 .framer-1pvnr13-container { bottom: 884px; left: 1599px; }}\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 800\n * @framerIntrinsicWidth 1440\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"PSXe8aWmM\":{\"layout\":[\"fixed\",\"auto\"]},\"nhUOQ5KpC\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerAcceptsLayoutTemplate true\n * @framerScrollSections {\"zdQcWU85s\":{\"pattern\":\":zdQcWU85s\",\"name\":\"container\"}}\n * @framerResponsiveScreen true\n * @framerLayoutTemplateFlowEffect true\n */const FrameraugiA20Il=withCSS(Component,css,\"framer-IRAS4\");export default FrameraugiA20Il;FrameraugiA20Il.displayName=\"Home\";FrameraugiA20Il.defaultProps={height:800,width:1440};addFonts(FrameraugiA20Il,[{explicitInter:true,fonts:[{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F\",url:\"https://framerusercontent.com/assets/5vvr9Vy74if2I6bQbJvbw7SY1pQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116\",url:\"https://framerusercontent.com/assets/EOr0mi4hNtlgWNn9if640EZzXCo.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+1F00-1FFF\",url:\"https://framerusercontent.com/assets/Y9k9QrlZAqio88Klkmbd8VoMQc.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0370-03FF\",url:\"https://framerusercontent.com/assets/OYrD2tBIBPvoJXiIHnLoOXnY9M.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF\",url:\"https://framerusercontent.com/assets/JeYwfuaPfZHQhEG8U5gtPDZ7WQ.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2070, U+2074-207E, U+2080-208E, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD\",url:\"https://framerusercontent.com/assets/GrgcKwrN6d3Uz8EwcLHZxwEfC4.woff2\",weight:\"400\"},{cssFamilyName:\"Inter\",source:\"framer\",style:\"normal\",uiFamilyName:\"Inter\",unicodeRange:\"U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB\",url:\"https://framerusercontent.com/assets/b6Y37FthZeALduNqHicBT6FutY.woff2\",weight:\"400\"},{cssFamilyName:\"PP Neue Montreal Bold\",openType:true,source:\"custom\",style:\"normal\",uiFamilyName:\"PP Neue Montreal\",url:\"https://framerusercontent.com/assets/eiALb3Ac2OPorMgJIBVNZMBzpg.woff2\",weight:\"700\"}]},...DeskGridLoaderFonts,...DeskLightFonts,...NavbarFonts,...ManifestoWindowFonts,...CursorTipFonts,...AmbienceFonts,...EyebrowFonts,...BlankZoneFonts,...Portefolio_V2Fonts,...TurntableFonts,...BumperPlateFonts,...GameBoyCompanionFonts,...VaporizeImageGLFonts,...CRTTVFonts,...WatchFonts,...LampFonts,...PolaroidFonts,...RivePlayer_vXFonts,...AboutFonts,...DeskWindowFonts,...Case_LausanneFonts,...Case_StrevaFonts,...Case_NebularisFonts,...StickerPeelingFonts,...MobileNoticeFonts,...EasterEggFonts,...getFontsFromSharedStyle(sharedStyle.fonts),...getFontsFromSharedStyle(sharedStyle1.fonts)],{supportsExplicitInterCodegen:true});FrameraugiA20Il.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(Navbar,{},context),()=>forwardLoader(Eyebrow,{},context),()=>forwardLoader(Portefolio_V2,{},context),()=>forwardLoader(Polaroid,{},context),()=>forwardLoader(About,{},context),()=>forwardLoader(Case_Lausanne,{},context),()=>forwardLoader(Case_Streva,{},context),()=>forwardLoader(Case_Nebularis,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FrameraugiA20Il\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1440\",\"framerScrollSections\":\"{\\\"zdQcWU85s\\\":{\\\"pattern\\\":\\\":zdQcWU85s\\\",\\\"name\\\":\\\"container\\\"}}\",\"framerIntrinsicHeight\":\"800\",\"framerResponsiveScreen\":\"true\",\"framerImmutableVariables\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerAcceptsLayoutTemplate\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"PSXe8aWmM\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"nhUOQ5KpC\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerColorSyntax\":\"true\",\"framerLayoutTemplateFlowEffect\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"queryParamNames\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Generated by Framer (0e6a859)\nconst snippets=[];const queryLoaders={};export const snippetsSorting={bodyEnd:[],bodyStart:[],headEnd:[],headStart:[\"ctg1p8Eku\"]};export async function getSnippets(pageId,pathVariables,activeLocale){const queryLoader=queryLoaders[pageId];const params=queryLoader?await queryLoader(pathVariables,activeLocale):undefined;const result={bodyEnd:[],bodyStart:[],headEnd:[],headStart:[]};for(const snippet of snippets){if(snippet.pageIds&&!snippet.pageIds.has(pageId))continue;const code=snippet.code(params);if(code){result[snippet.placement].push({...snippet,code});}}return result;}\nexport const __FramerMetadata__ = {\"exports\":{\"snippetsSorting\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getSnippets\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{withCSS}from\"framer\";const NotFoundPage=()=>{React.useEffect(()=>{let robotsTag=document.querySelector('meta[name=\"robots\"]');if(robotsTag){robotsTag.setAttribute(\"content\",\"noindex\");}else{robotsTag=document.createElement(\"meta\");robotsTag.setAttribute(\"name\",\"robots\");robotsTag.setAttribute(\"content\",\"noindex\");document.head.appendChild(robotsTag);}},[]);return /*#__PURE__*/_jsx(\"div\",{className:\"__framer-not-found-page\",style:{display:\"flex\",height:\"100vh\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:\"var(--color-primary)\",background:\"var(--color-background)\",fontSize:\"var(--font-size-body)\",boxSizing:\"border-box\",fontFeatureSettings:'\"liga\", \"clig\"',fontVariantLigatures:\"common-ligatures\",textRendering:\"optimizeLegibility\"},children:/*#__PURE__*/_jsxs(\"main\",{style:{boxSizing:\"border-box\",fontFamily:'\"Inter\", sans-serif',fontWeight:500,maxWidth:\"240px\",width:\"100%\",display:\"flex\",alignItems:\"center\",flexDirection:\"column\",padding:\"0 20px\",textWrap:\"balance\"},children:[/*#__PURE__*/_jsx(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:\"14\",height:\"21\",style:{verticalAlign:\"middle\",color:\"var(--color-primary)\",marginBottom:\"20px\"},children:/*#__PURE__*/_jsx(\"path\",{d:\"M 14 0 L 14 7 L 7 7 L 0 0 Z M 14 14 L 7 14 L 7 21 L 0 14 L 0 7 L 7 7 Z\",fill:\"currentColor\"})}),/*#__PURE__*/_jsx(\"h1\",{style:{margin:\"0 0 10px 0\",fontSize:\"var(--font-size-title)\",color:\"var(--color-primary)\",textAlign:\"center\"},children:\"Page Not Found\"}),/*#__PURE__*/_jsx(\"div\",{style:{color:\"var(--color-secondary)\",marginBottom:\"20px\",lineHeight:\"1.5em\",textAlign:\"center\"},children:\"The page you are looking for does not exist or may have been moved.\"}),/*#__PURE__*/_jsx(\"a\",{href:\"/\",role:\"button\",style:{backgroundColor:\"var(--color-tint)\",color:\"#ffffff\",paddingLeft:\"8px\",paddingRight:\"8px\",borderRadius:\"8px\",lineHeight:\"30px\",height:\"30px\",textDecoration:\"none\",verticalAlign:\"baseline\"},children:\"Back to Home\"})]})});};const css=[`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/hyOgCu0Xnghbimh0pE8QTvtt2AU.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 600;\n      unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n        U+FE2E-FE2F;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/NeGmSOXrPBfEFIy5YZeHq17LEDA.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 600;\n      unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/oYaAX5himiTPYuN8vLWnqBbfD2s.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 600;\n      unicode-range: U+1F00-1FFF;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/lEJLP4R0yuCaMCjSXYHtJw72M.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 600;\n      unicode-range: U+0370-03FF;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/cRJyLNuTJR5jbyKzGi33wU9cqIQ.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 600;\n      unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n        U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/1ZFS7N918ojhhd0nQWdj3jz4w.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 600;\n      unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,\n        U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,\n        U+2212, U+2215, U+FEFF, U+FFFD;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/A0Wcc7NgXMjUuFdquHDrIZpzZw0.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 600;\n      unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169,\n        U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/5A3Ce6C9YYmCjpQx9M4inSaKU.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 500;\n      unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n        U+FE2E-FE2F;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/Qx95Xyt0Ka3SGhinnbXIGpEIyP4.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 500;\n      unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/6mJuEAguuIuMog10gGvH5d3cl8.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 500;\n      unicode-range: U+1F00-1FFF;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/xYYWaj7wCU5zSQH0eXvSaS19wo.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 500;\n      unicode-range: U+0370-03FF;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/otTaNuNpVK4RbdlT7zDDdKvQBA.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 500;\n      unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n        U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/d3tHnaQIAeqiE5hGcRw4mmgWYU.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 500;\n      unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,\n        U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193,\n        U+2212, U+2215, U+FEFF, U+FFFD;\n    }`,`@font-face {\n      font-family: Inter;\n      src: url(https://framerusercontent.com/assets/DolVirEGb34pEXEp8t8FQBSK4.woff2);\n      font-display: swap;\n      font-style: normal;\n      font-weight: 500;\n      unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169,\n        U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n    }`,`@font-face {\n      font-family: Inter Placeholder;\n      src: local(\"Arial\");\n      ascent-override: 89.79%;\n      descent-override: 22.36%;\n      line-gap-override: 0%;\n      size-adjust: 107.89%;\n    }`,`.__framer-not-found-page {\n      --color-background: #ffffff;\n      --color-primary: #333;\n      --color-secondary: #888;\n      --color-tint: #0099ff;\n      --font-size-body: 12px;\n      --font-size-title: 12px;\n    }`,`@media (prefers-color-scheme: dark) {\n      .__framer-not-found-page {\n        --color-background: #000000;\n        --color-primary: #fff;\n        --color-secondary: #888;\n      }\n    }`];const component=withCSS(NotFoundPage,css);export default component;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"component\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NotFoundPage.map","/*\n * NotFoundPage (framer/SitesNotFoundPage@1.4.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/7cPhjQw0EGNBHRZlzbhH/4hSO1fMoujYmMhk8FjXZ/NotFoundPage.js\"\nexport { default } from \"https://framerusercontent.com/modules/7cPhjQw0EGNBHRZlzbhH/4hSO1fMoujYmMhk8FjXZ/NotFoundPage.js\"\n"],"mappings":"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D,EACA,CAAC,EACD,EACA,EACA,EACA,CAAC,EACD,EACA,EACA,EAEA,CAAC,EACD,CAAC,EACD,EACA,CAAC,EACD,EACA,EACA,EACA,CAAC,EACD,EACA,EACA,EACA,EAEA,CAAC,EACD,EACA,CAAC,EACD,EACA,EACA,CAAC,EACD,CAAC,EACD,EACA,EACA,EACA,EACA,CACF,EA+GA,MAAM,EAAU,CA7Gd,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,GACA,GACA,EACA,GACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,CAEoB,EAAG,EAAQ,CAAM,EACvC,KAAK,KAAO,uBACZ,KAAK,WAAa,CAChB,SACA,QACF,CACF,CACA,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAqB,EAAK,OAAQ,EAAK,MAAM,CAC1D,CACF,EACM,GAAsB,IAAI,EAC1B,GAAwB,IAAI,EAC5B,GAA0B,IAAI,EAC9B,GAA4B,IAAI,GAChC,GAAN,cAA4B,EAAe,CACzC,YAAY,EAAW,KAAM,EAAiB,EAAG,CAO/C,GANA,MAAM,EACN,KAAK,KAAO,gBACZ,KAAK,WAAa,CAChB,WACA,gBACF,EACI,IAAa,KAAM,CAErB,IAAM,EAAqB,IAAI,EACzB,EAAe,KAAK,IAAI,GAAU,CAAc,EAChD,EAAY,EAAS,SAAS,EAC9B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AAG,CAC1B,CAEJ,CACF,EAeM,GAAN,MAAM,UAA4B,EAAmB,CACnD,YAAY,EAAS,EAAG,EAAS,EAAG,CAClC,IAAM,GAAM,EAAI,KAAK,KAAK,CAAC,GAAK,EAC1B,EAAW,CACf,GACA,EACA,EACA,EACA,EACA,EACA,GACA,CAAC,EACD,EACA,EACA,CAAC,EACD,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,GACA,CAAC,EACD,EACA,EACA,CAAC,EACD,EACA,EACA,GACA,EACA,EACA,EACA,CAAC,EACD,EACA,GACA,CAAC,EACD,EACA,CACF,EA+DA,MAAM,EAAU,CA7Dd,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,EACA,EACA,EACA,GACA,EACA,GACA,GACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,CAEoB,EAAG,EAAQ,CAAM,EACvC,KAAK,KAAO,sBACZ,KAAK,WAAa,CAChB,SACA,QACF,CACF,CACA,OAAO,SAAS,EAAM,CACpB,OAAO,IAAI,EAAoB,EAAK,OAAQ,EAAK,MAAM,CACzD,CACF,EACM,GAAN,MAAM,UAA2B,EAAmB,CAClD,YAAY,EAAS,EAAG,EAAS,EAAG,CA+ClC,MAAM,CA7CJ,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EA4BW,EAAG,CAzBd,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,CAEoB,EAAG,EAAQ,CAAM,EACvC,KAAK,KAAO,qBACZ,KAAK,WAAa,CAChB,SACA,QACF,CACF,CACA,OAAO,SAAS,EAAM,CACp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QACA,QACA,cACA,eACA,aACA,mBACA,kBACA,wBACA,YACA,SACA,UACA,gBACA,iBACA,mBACA,oBACA,qBACA,kBACA,uBACA,SACA,SACA,sBACA,mBACA,0BACA,yBACA,qBACA,2BACA,gBACA,uBACA,uBACA,cACA,yBACA,yBACA,eACA,qBACA,2BACA,oBACA,qBACA,oBACA,gBACA,iBACA,qBACA,gBACA,SACA,aACA,kBACA,qBACA,oBACA,eACA,iBACA,oBACA,eACA,qBACA,aACA,sBACA,0BACA,yBACA,eACA,sBACA,gBACA,oBACA,oBACA,0BACA,uBACA,uBACA,wBACA,cACA,kBACA,kBACA,oBACA,oBACA,oBACA,iBACA,gBACA,gBACA,cACA,oBACA,oCACA,oCACA,SACA,mBACA,mBACA,cACA,0BACA,0BACA,0BACA,aACA,OACA,WACA,sBACA,aACA,WACA,qBACA,SACA,SACA,kBACA,gBACA,uBACA,qBACA,2BACA,sBACA,cACA,SACA,iBACA,mBACA,yBACA,uBACA,qBACA,eACA,cACA,sBACA,0BACA,4BACA,2BACA,8BACA,iBACA,wBACA,wBACA,uBACA,WACA,qBACA,8BACA,eACA,uBACA,qBACA,qBACA,mBACA,iBACA,iBACA,OACA,iBACA,UACA,eACA,aACA,oBACA,kBACA,wBACA,mBACA,SACA,cACA,QACA,SACA,qBACA,aACA,cACA,sBACA,YACA,gBACA,6BACA,eAAgB,GAChB,gBACA,qBACA,4BACA,6BACA,4BACA,6BACA,qBAAsB,GACtB,qBACA,kBACA,UACA,eACA,kBACA,YACA,gBACA,cACA,wBACA,mBACA,SACA,YACA,kBACA,aACA,WACA,WACA,eACA,QACA,qBACA,qBACA,wBACA,uBACA,sBACA,sBACA,qBACA,wBACA,wBACA,oBACA,eACA,0BACA,gBACA,oBACA,qBACA,iBACA,6BACA,8BACA,6BACA,8BACA,gBACA,cACA,oBACA,cACA,gBACA,iBACA,4BACA,kBACA,mBACA,iBACA,uBACA,uBACA,YACA,gBACA,wBACA,sBACA,aACA,+BACA,+BACA,0BACA,0BACA,0BACA,0BACA,sBACA,eACA,gBACA,oBACA,kBACA,QACA,qBACA,SACA,iBACA,eACA,cACA,oBACA,UACA,kBACA,mBACA,sBACA,mBACA,mBACA,iBACA,wBACA,yBACA,cACA,2BACA,+BACA,0BACA,oBACA,YACA,oBACA,cACA,qBACA,0BACA,yBACA,yBACA,yBACA,0BACA,0BACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,wBACA,oBACA,wBACA,4BACA,4BACA,yBACA,yBACA,yBACA,0BACA,4BACA,mBACA,mBACA,2BACA,2BACA,wBACA,YACA,mBACA,qBACA,OACA,aACA,mBACA,iBACA,aACA,oBACA,uBACA,gBACA,kBACA,oBACA,2BACA,gBACA,iCACA,2BACA,eAAgB,GAChB,gBACA,SACA,eACA,aACA,kBACA,kBACA,SACA,iBACA,aACA,cACA,aACA,YACA,kBACA,eACA,UACA,UACA,kBACA,aACA,uBACA,eACA,aACA,mBACA,UACA,kBACA,kBACA,0BACA,kBACA,mBACA,mBACA,mBACA,gBACA,mBACA,mBACA,mBACA,uBACA,oBACA,uBACA,SACA,yBACA,uBACA,WACA,iBACA,iBACA,qBACA,YACA,uBACA,yBACA,qBACA,gBACA,aACA,yBACA,yBACA,wBACA,+BACA,WACA,iBACA,eACA,iBACA,oBACA,sBACA,mBACA,yBACA,yBACA,qBACA,gBACA,WACA,UACA,WACA,uBACA,gBACA,kBACA,uBACA,0BACA,yBACA,yBACA,8BACA,qBACA,iBACA,cACA,0BACA,qBACA,oBACA,uBACA,cACA,mBACA,iBACA,gBACA,uBACA,aAAc,EAChB,EAAG,OAAO,YAAa,CAAE,MAAO,QAAS,CAAC,CAAC,EAIvC,GAAY,CAAE,QAAS,CAAC,CAAE,EAC1B,GAA0C,CAAC,EAiF3C,GAAmB,GAAiB,EAuClC,GADe,IAAW,QAAe,CAAC,EAAO,WAAa,8BAA8B,KAAK,EAAO,UAAU,SAAS,EACrFa,EAAYK,E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IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,EAC/B,EAAI,IAAM,GAAc,EAAI,GAAG,CA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"}